diff options
| author | onelin <oscar@nelin.dk> | 2025-04-01 09:45:43 +0000 |
|---|---|---|
| committer | onelin <oscar@nelin.dk> | 2025-04-09 09:55:17 +0000 |
| commit | 7352085dca54837fb60dbba4328ee0bc069bca16 (patch) | |
| tree | d5cbd648aea5abebc17627294e49a383e7323e0d /CMakeLists.txt | |
| parent | e97750ce116cbcd67a8718c646e3af6415a4247e (diff) | |
Fetch GLFW3 if not installed locally
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 40 |
1 files changed, 34 insertions, 6 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index fb9659d..96d25e0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -108,18 +108,46 @@ else() endif() ## Packages -set(GLFW_USE_WAYLAND ON) -find_package(glfw3 3.3 REQUIRED) +set(GLFW_BUILD_WAYLAND ON) +find_package(glfw3 3.4) find_package(OpenGL REQUIRED) + +set(BUILD_PACKAGES cglm stb) + +if(NOT glfw3_FOUND) + message(STATUS "Local GLFW3 installation not found, will be downloaded and built") + + set(GLFW3_PREFIX ${CMAKE_BINARY_DIR}/glfw3) + set(GLFW3_INCLUDE_DIR ${GLFW3_PREFIX}/include) + set(GLFW3_LIBRARY ${GLFW3_PREFIX}/lib/libglfw3.a) + + # Build only the library + set(GLFW_BUILD_DOCS OFF CACHE BOOL "") + set(GLFW_BUILD_TESTS OFF CACHE BOOL "") + set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "") + + # Download and build + FetchContent_Declare(glfw3 + GIT_REPOSITORY "https://github.com/glfw/glfw.git" + GIT_TAG 3.4 + ) + + # Set glfw specific include directory to the downloaded one + set(GLFW_INCLUDE_DIR "${CMAKE_BINARY_DIR}/glfw3-src/include") + + list(APPEND BUILD_PACKAGES glfw3) +endif() + FetchContent_Declare(cglm - GIT_REPOSITORY https://github.com/recp/cglm.git + GIT_REPOSITORY "https://github.com/recp/cglm.git" GIT_TAG v0.9.6 ) FetchContent_Declare(stb - GIT_REPOSITORY https://github.com/nothings/stb.git + GIT_REPOSITORY "https://github.com/nothings/stb.git" GIT_TAG master - ) -FetchContent_MakeAvailable(cglm stb) +) + +FetchContent_MakeAvailable("${BUILD_PACKAGES}") ## Glad # TODO: make sure the glad command is run before building |
