2
2
3
3
### Options
4
4
5
- set (CMAKE_CONFIGURATION_TYPES "template_debug;editor;template_release " )
5
+ set (CONFIGS_WITH_DEBUG "Debug;RelWithDebInfo" CACHE STRING "Configurations that should have debug symbols (Modify if support for custom configurations is needed) " )
6
6
7
+ # Default config
7
8
if ("${CMAKE_BUILD_TYPE} " STREQUAL "" )
8
- set (CMAKE_BUILD_TYPE template_debug )
9
+ set (CMAKE_BUILD_TYPE "Debug" )
9
10
endif ()
10
11
12
+ set (TARGET "TEMPLATE_DEBUG" CACHE STRING "Target platform (EDITOR, TEMPLATE_DEBUG, TEMPLATE_RELEASE)" )
11
13
# Auto-detect platform
12
14
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
13
15
set (DEFAULT_PLATFORM "LINUX" )
@@ -40,7 +42,7 @@ set(GODOT_CPP_LIBRARY_TYPE "STATIC" CACHE STRING "[Experimental] Library type (S
40
42
41
43
option (DEV_BUILD "Developer build with dev-only debugging code" OFF )
42
44
43
- option (DEBUG_SYMBOLS "Build with debugging symbols" ON )
45
+ option (DEBUG_SYMBOLS "Force build with debugging symbols" OFF )
44
46
45
47
option (USE_HOT_RELOAD "Enable the extra accounting required to support hot reload" ON )
46
48
@@ -69,7 +71,8 @@ option(GENERATE_TEMPLATE_GET_NODE "Generate a template version of the Node class
69
71
# Compiler warnings and compiler check generators
70
72
include (GodotCompilerWarnings )
71
73
72
- # Create the correct name (godot-cpp.platform.target.arch)
74
+ # Create the correct name (godot-cpp.platform.target)
75
+ # See more prefix appends in platform-specific configs
73
76
if (${DEV_BUILD} )
74
77
string (APPEND LIBRARY_SUFFIX ".dev" )
75
78
endif ()
@@ -81,13 +84,21 @@ endif()
81
84
# Workaround of $<CONFIG> expanding to "" when default build set
82
85
set (CONFIG "$<IF:$<STREQUAL:,$<CONFIG>>,${CMAKE_BUILD_TYPE} ,$<CONFIG>>" )
83
86
84
- string (TOLOWER ".${PLATFORM} " platform )
85
- string (PREPEND LIBRARY_SUFFIX " ${platform} . ${CONFIG} " )
87
+ string (TOLOWER ".${PLATFORM} . ${TARGET} " platform_target )
88
+ string (PREPEND LIBRARY_SUFFIX ${platform_target} )
86
89
87
90
# Default optimization levels if OPTIMIZE=AUTO, for multi-config support
88
- set (DEFAULT_OPTIMIZATION_DEV "$<AND:$<STREQUAL:${OPTIMIZE} ,AUTO>,$<BOOL:${DEV_BUILD} >>" )
89
- set (DEFAULT_OPTIMIZATION_DEBUG_FEATURES "$<AND:$<NOT:${DEFAULT_OPTIMIZATION_DEV} >,$<STREQUAL:${OPTIMIZE} ,AUTO>,$<OR:$<STREQUAL:${CONFIG} ,editor>,$<STREQUAL:${CONFIG} ,template_debug>>>" )
90
- set (DEFAULT_OPTIMIZATION "$<$<AND:$<NOT:$<OR:${DEFAULT_OPTIMIZATION_DEV} ,${DEFAULT_OPTIMIZATION_DEBUG_FEATURES} >>,STREQUAL:${OPTIMIZE} ,AUTO>>" )
91
+ set (DEFAULT_OPTIMIZATION_DEBUG_FEATURES "$<OR:$<STREQUAL:${TARGET} ,EDITOR>,$<STREQUAL:${TARGET} ,TEMPLATE_DEBUG>>" )
92
+ set (DEFAULT_OPTIMIZATION "$<NOT:${DEFAULT_OPTIMIZATION_DEBUG_FEATURES} >" )
93
+
94
+ set (DEBUG_SYMBOLS_ENABLED "$<OR:$<BOOL:${DEBUG_SYMBOLS} >,$<IN_LIST:${CONFIG} ,${CONFIGS_WITH_DEBUG} >>" )
95
+
96
+ # Clean default options
97
+ set (CMAKE_CXX_FLAGS "" )
98
+ set (CMAKE_CXX_FLAGS_DEBUG "" )
99
+ set (CMAKE_CXX_FLAGS_RELEASE "" )
100
+ set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "" )
101
+ set (CMAKE_CXX_FLAGS_MINSIZEREL "" )
91
102
92
103
list (APPEND GODOT_DEFINITIONS
93
104
GDEXTENSION
@@ -101,10 +112,10 @@ list(APPEND GODOT_DEFINITIONS
101
112
$< $< STREQUAL:${FLOAT_PRECISION} ,DOUBLE> :
102
113
REAL_T_IS_DOUBLE
103
114
>
104
- $< $< AND:$< NOT:$< STREQUAL:${CONFIG} ,template_release > > ,$< BOOL:${USE_HOT_RELOAD} > > :
115
+ $< $< AND:$< NOT:$< STREQUAL:${TARGET} ,TEMPLATE_RELEASE > > ,$< BOOL:${USE_HOT_RELOAD} > > :
105
116
HOT_RELOAD_ENABLE
106
117
>
107
- $< $< STREQUAL:${CONFIG} ,editor > :
118
+ $< $< STREQUAL:${TARGET} ,EDITOR > :
108
119
TOOLS_ENABLED
109
120
>
110
121
@@ -115,36 +126,48 @@ list(APPEND GODOT_DEFINITIONS
115
126
NDEBUG
116
127
>
117
128
118
- $< $< NOT:$< STREQUAL:${CONFIG} ,template_release > > :
129
+ $< $< NOT:$< STREQUAL:${TARGET} ,TEMPLATE_RELEASE > > :
119
130
DEBUG_ENABLED
120
131
DEBUG_METHODS_ENABLED
121
132
>
122
133
)
123
134
124
135
list (APPEND GODOT_CC_FLAGS
125
136
$< ${compiler_is_msvc} :
126
- $< $< BOOL: ${DEBUG_SYMBOLS} > :
137
+ $< ${DEBUG_SYMBOLS_ENABLED} :
127
138
/Zi
128
139
/FS
129
140
>
130
141
131
- $< $< OR:$< STREQUAL:${OPTIMIZE} ,SPEED> ,${DEFAULT_OPTIMIZATION} > :
132
- /O2
133
- >
134
- $< $< OR:$< STREQUAL:${OPTIMIZE} ,SPEED_TRACE> ,${DEFAULT_OPTIMIZATION_DEBUG_FEATURES} > :
135
- /O2
136
- >
137
- $< $< STREQUAL:${OPTIMIZE} ,SIZE> :
138
- /O1
142
+ $< $< STREQUAL:${OPTIMIZE} ,AUTO> :
143
+ $< $< CONFIG:Release,RelWithDebInfo> :
144
+ $< ${DEFAULT_OPTIMIZATION} :
145
+ /O2
146
+ >
147
+ $< ${DEFAULT_OPTIMIZATION_DEBUG_FEATURES} :
148
+ /O2
149
+ >
150
+ >
151
+ $< $< CONFIG:MinSizeRel> :
152
+ /O1
153
+ >
154
+ $< $< CONFIG:Debug,> :
155
+ /Od
156
+ >
139
157
>
140
- $< $< OR:$< STREQUAL:${OPTIMIZE} ,DEBUG> ,$< STREQUAL:${OPTIMIZE} ,NONE> ,${DEFAULT_OPTIMIZATION_DEV} > :
141
- /Od
158
+ $< $< NOT:$< STREQUAL:${OPTIMIZE} ,AUTO> > :
159
+ $< $< STREQUAL:${OPTIMIZE} ,SPEED> :/O2>
160
+ $< $< STREQUAL:${OPTIMIZE} ,SPEED_TRACE> :/O2>
161
+ $< $< STREQUAL:${OPTIMIZE} ,SIZE> :/O1>
162
+ $< $< STREQUAL:${OPTIMIZE} ,DEBUG> :/Od>
163
+ $< $< STREQUAL:${OPTIMIZE} ,NONE> :/Od>
142
164
>
165
+
143
166
>
144
167
$< $< NOT:${compiler_is_msvc} > :
145
- $< $< BOOL: ${DEBUG_SYMBOLS} > :
168
+ $< ${DEBUG_SYMBOLS_ENABLED} :
146
169
-gdwarf-4
147
-
170
+
148
171
$< $< BOOL:${DEV_BUILD} > :
149
172
-g3
150
173
>
@@ -160,20 +183,28 @@ list(APPEND GODOT_CC_FLAGS
160
183
-fvisibility=hidden
161
184
>
162
185
163
- $< $< OR:$< STREQUAL:${OPTIMIZE} ,SPEED> > :
164
- -O3
165
- >
166
- $< $< OR:$< STREQUAL:${OPTIMIZE} ,SPEED_TRACE> ,${DEFAULT_OPTIMIZATION_DEBUG_FEATURES} > :
167
- -O2
168
- >
169
- $< $< STREQUAL:${OPTIMIZE} ,SIZE> :
170
- -Os
171
- >
172
- $< $< STREQUAL:${OPTIMIZE} ,DEBUG> :
173
- -Og
186
+ $< $< STREQUAL:${OPTIMIZE} ,AUTO> :
187
+ $< $< CONFIG:Release,RelWithDebInfo> :
188
+ $< ${DEFAULT_OPTIMIZATION} :
189
+ -O3
190
+ >
191
+ $< ${DEFAULT_OPTIMIZATION_DEBUG_FEATURES} :
192
+ -O2
193
+ >
194
+ >
195
+ $< $< CONFIG:MinSizeRel> :
196
+ -Os
197
+ >
198
+ $< $< CONFIG:Debug,> :
199
+ -Og
200
+ >
174
201
>
175
- $< $< OR:$< STREQUAL:${OPTIMIZE} ,NONE> ,${DEFAULT_OPTIMIZATION_DEV} > :
176
- -O0
202
+ $< $< NOT:$< STREQUAL:${OPTIMIZE} ,AUTO> > :
203
+ $< $< STREQUAL:${OPTIMIZE} ,SPEED> :-O3>
204
+ $< $< STREQUAL:${OPTIMIZE} ,SPEED_TRACE> :-O2>
205
+ $< $< STREQUAL:${OPTIMIZE} ,SIZE> :-Os>
206
+ $< $< STREQUAL:${OPTIMIZE} ,DEBUG> :-Og>
207
+ $< $< STREQUAL:${OPTIMIZE} ,NONE> :-O0>
177
208
>
178
209
>
179
210
)
@@ -186,26 +217,35 @@ list(APPEND GODOT_CXX_FLAGS
186
217
>
187
218
$< $< NOT:${compiler_is_msvc} > :
188
219
$< $< BOOL:${GODOT_DISABLE_EXCEPTIONS} > :
189
- -fno-exceptions
220
+ -fno-exceptions
190
221
>
191
222
>
192
223
)
193
224
194
225
list (APPEND GODOT_LINK_FLAGS
195
226
$< ${compiler_is_msvc} :
196
- $< $< BOOL: ${DEBUG_SYMBOLS} > :
227
+ $< ${DEBUG_SYMBOLS_ENABLED} :
197
228
/DEBUG:FULL
198
229
>
199
230
200
- $< $< STREQUAL:${OPTIMIZE} ,SPEED> :
201
- /OPT:REF
202
- >
203
- $< $< OR:$< STREQUAL:${OPTIMIZE} ,SPEED_TRACE> ,${DEFAULT_OPTIMIZATION_DEBUG_FEATURES} > :
204
- /OPT:REF
205
- /OPT:NOICF
231
+ $< $< STREQUAL:${OPTIMIZE} ,AUTO> :
232
+ $< $< CONFIG:Release,RelWithDebInfo> :
233
+ $< ${DEFAULT_OPTIMIZATION} :
234
+ /OPT:REF
235
+ >
236
+ $< ${DEFAULT_OPTIMIZATION_DEBUG_FEATURES} :
237
+ /OPT:REF
238
+ /OPT:NOICF
239
+ >
240
+ >
241
+ $< $< CONFIG:MinSizeRel> :
242
+ /OPT:REF
243
+ >
206
244
>
207
- $< $< STREQUAL:${OPTIMIZE} ,SIZE> :
208
- /OPT:REF
245
+ $< $< NOT:$< STREQUAL:${OPTIMIZE} ,AUTO> > :
246
+ $< $< STREQUAL:${OPTIMIZE} ,SPEED> :/OPT:REF>
247
+ $< $< STREQUAL:${OPTIMIZE} ,SPEED_TRACE> :/OPT:REF /OPT:NOICF>
248
+ $< $< STREQUAL:${OPTIMIZE} ,SIZE> :/OPT:REF>
209
249
>
210
250
>
211
251
$< $< NOT:${compiler_is_msvc} > :
@@ -216,7 +256,7 @@ list(APPEND GODOT_LINK_FLAGS
216
256
-fvisibility=hidden
217
257
>
218
258
219
- $< $< NOT:$< BOOL: ${DEBUG_SYMBOLS} > > :
259
+ $< $< NOT:${DEBUG_SYMBOLS_ENABLED} > :
220
260
$< $< CXX_COMPILER_ID:AppleClang> : # SCons: not is_vanilla_clang(env)
221
261
"-Wl,-S"
222
262
"-Wl,-x"
@@ -246,9 +286,15 @@ else()
246
286
message (FATAL_ERROR "Platform not supported: ${PLATFORM} " )
247
287
endif ()
248
288
289
+ string (APPEND LIBRARY_SUFFIX ".${ARCH} " )
290
+
291
+ if (${IOS_SIMULATOR} )
292
+ string (APPEND LIBRARY_SUFFIX ".simulator" )
293
+ endif ()
294
+
249
295
# Write all flags to file for cmake configuration debug
250
- file (GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR} /flags.txt"
296
+ file (GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR} /flags- ${CONFIG} .txt"
251
297
CONTENT
252
- "C_FLAGS '${GODOT_CC_FLAGS} '\n CXX_FLAGS '${GODOT_CXX_FLAGS} '\n LINK_FLAGS '${GODOT_LINK_FLAGS} '\n COMPILE_WARNING_FLAGS '${GODOT_COMPILE_WARNING_FLAGS} '\n "
298
+ "C_FLAGS '${GODOT_CC_FLAGS} '\n CXX_FLAGS '${GODOT_CXX_FLAGS} '\n LINK_FLAGS '${GODOT_LINK_FLAGS} '\n COMPILE_WARNING_FLAGS '${GODOT_COMPILE_WARNING_FLAGS} '\n DEFINITIONS ' ${GODOT_DEFINITIONS} ' "
253
299
TARGET ${PROJECT_NAME}
254
300
)
0 commit comments