feat(glfw): adapter and 1 MS/s streaming demo
This commit is contained in:
1 parent
1f5aa11de2
commit
4b649a2783
7 files changed
+884
-2
No files matched your search
@@ -0,0 +1,51 @@
|
||||
# The GLFW adapter: the reference host for the library. It owns the window, the
|
||||
# context and the loop, and translates GLFW's events into plot::input events.
|
||||
#
|
||||
# Dependency discovery follows the design spec's order: find_package first,
|
||||
# pkg-config next, FetchContent only when neither can supply GLFW (the last
|
||||
# resort, because it needs the network).
|
||||
set(plot_glfw_dep "")
|
||||
|
||||
find_package(glfw3 3.3 QUIET)
|
||||
if(TARGET glfw)
|
||||
set(plot_glfw_dep glfw)
|
||||
elseif(TARGET glfw3::glfw3)
|
||||
set(plot_glfw_dep glfw3::glfw3)
|
||||
endif()
|
||||
|
||||
if(NOT plot_glfw_dep)
|
||||
find_package(PkgConfig QUIET)
|
||||
if(PkgConfig_FOUND)
|
||||
pkg_check_modules(GLFW_PC QUIET IMPORTED_TARGET glfw3)
|
||||
if(TARGET PkgConfig::GLFW_PC)
|
||||
set(plot_glfw_dep PkgConfig::GLFW_PC)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT plot_glfw_dep)
|
||||
message(STATUS "plot: glfw3 not found via find_package or pkg-config; fetching it")
|
||||
include(FetchContent)
|
||||
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
|
||||
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
|
||||
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
||||
set(GLFW_INSTALL OFF CACHE BOOL "" FORCE)
|
||||
FetchContent_Declare(glfw
|
||||
GIT_REPOSITORY https://github.com/glfw/glfw.git
|
||||
GIT_TAG 3.4
|
||||
GIT_SHALLOW TRUE)
|
||||
FetchContent_MakeAvailable(glfw)
|
||||
set(plot_glfw_dep glfw)
|
||||
endif()
|
||||
|
||||
message(STATUS "plot: GLFW adapter dependency: ${plot_glfw_dep}")
|
||||
|
||||
add_library(plot_glfw STATIC glfw_host.cpp)
|
||||
add_library(plot::glfw ALIAS plot_glfw)
|
||||
# The public include root is `adapters/`, so the header is reached as
|
||||
# <glfw/glfw_host.hpp> -- the toolkit's name first, like every other adapter's.
|
||||
target_include_directories(plot_glfw PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/..")
|
||||
# GLFW stays PRIVATE: the header forward-declares GLFWwindow and includes no GLFW
|
||||
# header, so a consumer of plot::glfw does not inherit the toolkit.
|
||||
target_link_libraries(plot_glfw PUBLIC plot::core PRIVATE ${plot_glfw_dep})
|
||||
plot_apply_warnings(plot_glfw)
|
||||
Reference in new issue
Block a user