summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authoronelin <oscar@nelin.dk>2025-04-01 09:45:43 +0000
committeronelin <oscar@nelin.dk>2025-04-09 09:55:17 +0000
commit7352085dca54837fb60dbba4328ee0bc069bca16 (patch)
treed5cbd648aea5abebc17627294e49a383e7323e0d /CMakeLists.txt
parente97750ce116cbcd67a8718c646e3af6415a4247e (diff)
Fetch GLFW3 if not installed locally
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt40
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