-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
95 lines (75 loc) · 2.72 KB
/
CMakeLists.txt
File metadata and controls
95 lines (75 loc) · 2.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
cmake_minimum_required(VERSION 3.31)
project(glimmerite CXX)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
include(FeatureSummary)
option(BUILD_EXAMPLES "Build example games" ON)
option(BUILD_CLIENT "Build client library" ON)
# set the output directory for built objects.
# This makes sure that the dynamic library goes into the build directory automatically.
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$<CONFIGURATION>")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/$<CONFIGURATION>")
set(GMI_DIR "${glimmerite_SOURCE_DIR}" CACHE PATH "Root directory of Glimmerite")
set(GMI_SRC_DIR "${GMI_DIR}/src")
set(GMI_INCLUDE_DIR "${GMI_DIR}/include")
# libraries only used by the client
if (BUILD_CLIENT)
#
# BGFX
#
set(BGFX_DIR "${GMI_DIR}/vendored/bgfx.cmake/bgfx")
set(BX_DIR "${GMI_DIR}/vendored/bgfx.cmake/bx")
set(BIMG_DIR "${GMI_DIR}/vendored/bgfx.cmake/bimg")
# makes cmake shut up about bgfx.cmake's use of add_custom_command
set(CMAKE_POLICY_DEFAULT_CMP0175 "OLD")
set(CMAKE_POLICY_VERSION_MINIMUM 3.5)
#
# SDL3
#
add_subdirectory(vendored/bgfx.cmake EXCLUDE_FROM_ALL)
find_package(SDL3 3.4 CONFIG COMPONENTS SDL3-shared)
if (NOT SDL3_FOUND)
# disable SDL subsystems we don't need
set(SDL_GPU OFF CACHE INTERNAL "" FORCE)
set(SDL_RENDER OFF CACHE INTERNAL "" FORCE)
set(SDL_CAMERA OFF CACHE INTERNAL "" FORCE)
set(SDL_POWER OFF CACHE INTERNAL "" FORCE)
set(SDL_SENSOR OFF CACHE INTERNAL "" FORCE)
set(SDL_DIALOG OFF CACHE INTERNAL "" FORCE)
set(SDL_TRAY OFF CACHE INTERNAL "" FORCE)
add_subdirectory(vendored/SDL EXCLUDE_FROM_ALL)
endif()
#
# SDL3 Mixer, TODO: use system package when SDL3 Mixer has a stable release
#
add_subdirectory(vendored/SDL_mixer EXCLUDE_FROM_ALL)
#
# Earcut, used for rendering polygons
#
set(EARCUT_BUILD_TESTS OFF CACHE INTERNAL "" FORCE)
set(EARCUT_BUILD_BENCH OFF CACHE INTERNAL "" FORCE)
set(EARCUT_BUILD_VIZ OFF CACHE INTERNAL "" FORCE)
add_subdirectory(vendored/earcut.hpp EXCLUDE_FROM_ALL)
endif() # BUILD_CLIENT
# JSON library
find_package(glaze CONFIG)
if (NOT glaze_FOUND)
add_subdirectory(vendored/glaze EXCLUDE_FROM_ALL)
endif()
add_subdirectory(src)
if (BUILD_EXAMPLES AND BUILD_CLIENT)
add_subdirectory(examples)
endif()
if (BUILD_TESTING)
include(CTest)
enable_testing()
add_subdirectory(tests)
endif()
feature_summary(WHAT ALL)
add_library(glimmerite_glimmerite INTERFACE)
add_library(glimmerite::glimmerite ALIAS glimmerite_glimmerite)
target_link_libraries(glimmerite_glimmerite
INTERFACE
glimmerite::math
glimmerite::client
)