-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
157 lines (125 loc) · 3.78 KB
/
Copy pathCMakeLists.txt
File metadata and controls
157 lines (125 loc) · 3.78 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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
cmake_minimum_required(VERSION 3.27)
project(nikola)
### Project Options ###
############################################################
option(NIKOLA_BUILD_SHARED "Build Nikola as a shared library" OFF)
option(NIKOLA_BUILD_TESTBED "Build the testbeds with Nikola" OFF)
option(NIKOLA_BUILD_NBR "Build the NBR tool with Nikola" ON)
option(NIKOLA_DISTRIBUTE "Enable the distribution build" OFF)
if(NIKOLA_BUILD_SHARED)
set(NIKOLA_BUILD_TYPE SHARED)
set(BUILD_SHARED_LIBS ON)
else()
set(NIKOLA_BUILD_TYPE STATIC)
set(BUILD_SHARED_LIBS OFF)
endif()
if(NIKOLA_DISTRIBUTE)
add_definitions("-DNIKOLA_BUILD_DISTRIBUTION")
endif()
############################################################
### FetchContent ###
############################################################
include(FetchContent)
if(WIN32)
if(USE_STATIC_MSVC_RUNTIME_LIBRARY)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif()
endif()
# GLFW
FetchContent_Declare(
glfw-3.4
URL https://github.com/glfw/glfw/releases/download/3.4/glfw-3.4.zip
)
# GLM
set(GLM_ENABLE_SIMD_AVX ON)
FetchContent_Declare(
glm
URL https://github.com/g-truc/glm/archive/refs/tags/1.0.1.zip
)
# OpenAL-Soft
set(ALSOFT_EXAMPLES OFF)
set(LIBTYPE STATIC)
FetchContent_Declare(
OpenAL
URL https://github.com/kcat/openal-soft/archive/refs/tags/latest.zip
)
# JoltPhysics
FetchContent_Declare(
jolt
URL https://github.com/jrouwe/JoltPhysics/archive/refs/tags/v5.3.0.zip
SOURCE_SUBDIR "Build"
)
# Tracy
FetchContent_Declare(
tracy
URL https://github.com/wolfpld/tracy/archive/refs/tags/v0.12.2.zip
)
# RmlUI (fork)
FetchContent_Declare(
rmlui
GIT_REPOSITORY https://github.com/FrodoAlaska/RmlUi.git
GIT_TAG f6875a7c13fddd23e79b378065211eaeef5f9509
)
# OZZ Animation
set(ozz_build_tools OFF)
set(ozz_build_fbx OFF)
set(ozz_build_gltf OFF)
set(ozz_build_data OFF)
set(ozz_build_samples OFF)
set(ozz_build_howtos OFF)
set(ozz_build_tests OFF)
set(ozz_build_simd_ref ON)
FetchContent_Declare(
ozz
URL https://github.com/guillaumeblanc/ozz-animation/archive/refs/tags/0.16.0.zip
)
FetchContent_MakeAvailable(glfw-3.4 glm OpenAL jolt tracy rmlui ozz)
############################################################
### Project Variables ###
############################################################
set(NIKOLA_SRC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/nikola/src)
set(NIKOLA_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/nikola/include)
set(NIKOLA_LIBS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libs)
set(NIKOLA_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/nikola)
set(NIKOLA_INCLUDES
${NIKOLA_INCLUDE_DIR}
${NIKOLA_LIBS_DIR}
${glfw-3.4_SOURCE_DIR}/include
${glm_SOURCE_DIR}
${OpenAL_SOURCE_DIR}/include
${jolt_SOURCE_DIR}/Jolt
${tracy_SOURCE_DIR}/public
${rmlui_SOURCE_DIR}/Include
${ozz_SOURCE_DIR}/include
)
set(NIKOLA_LIBRARIES
glfw
OpenAL
Jolt
rmlui
rmlui_debugger
ozz_animation
ozz_animation_offline
)
# This script includes a bunch of platform-specific variables
# and definitions that will be helpful later on.
include(cmake/utils.cmake)
############################################################
### Sub Directories ###
############################################################
add_subdirectory(nikola)
if(NIKOLA_BUILD_TESTBED)
add_subdirectory(testbed)
endif()
if(NIKOLA_BUILD_NBR)
add_subdirectory(NBR)
endif()
############################################################
### Library Install ###
############################################################
install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/${PROJECT_NAME})
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/nikola/include DESTINATION include)
############################################################