From 7352085dca54837fb60dbba4328ee0bc069bca16 Mon Sep 17 00:00:00 2001 From: onelin Date: Tue, 1 Apr 2025 11:45:43 +0200 Subject: Fetch GLFW3 if not installed locally --- CMakeLists.txt | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) (limited to 'CMakeLists.txt') 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 -- cgit v1.3