@@ -107,7 +107,8 @@ function( godotcpp_options )
107
107
set ( GODOT_ARCH "" CACHE STRING "Target CPU Architecture" )
108
108
set_property ( CACHE GODOT_ARCH PROPERTY STRINGS ${ARCH_LIST} )
109
109
110
- #TODO threads
110
+ set ( GODOT_THREADS ON CACHE BOOL "Enable threading support" )
111
+
111
112
#TODO compiledb
112
113
#TODO compiledb_file
113
114
@@ -240,16 +241,15 @@ function( godotcpp_generate )
240
241
241
242
### Platform is derived from the toolchain target
242
243
# See GeneratorExpressions PLATFORM_ID and CMAKE_SYSTEM_NAME
243
- set ( SYSTEM_NAME
244
- $<$<PLATFORM_ID:Android>:android>
245
- $<$<PLATFORM_ID:iOS>:ios>
246
- $<$<PLATFORM_ID:Linux>:linux>
247
- $<$<PLATFORM_ID:Darwin>:macos>
248
- $<$<PLATFORM_ID:Emscripten>:web>
249
- $<$<PLATFORM_ID:Windows>:windows>
250
- $<$<PLATFORM_ID:Msys>:windows>
244
+ string ( CONCAT SYSTEM_NAME
245
+ " $<$<PLATFORM_ID:Android>:android. ${ANDROID_ABI} >"
246
+ " $<$<PLATFORM_ID:iOS>:ios>"
247
+ " $<$<PLATFORM_ID:Linux>:linux>"
248
+ " $<$<PLATFORM_ID:Darwin>:macos>"
249
+ " $<$<PLATFORM_ID:Emscripten>:web>"
250
+ " $<$<PLATFORM_ID:Windows>:windows>"
251
+ " $<$<PLATFORM_ID:Msys>:windows>"
251
252
)
252
- string (REPLACE ";" "" SYSTEM_NAME "${SYSTEM_NAME} " )
253
253
254
254
### Use the arch from the toolchain if it isn't set manually
255
255
if ( GODOT_ARCH )
@@ -263,6 +263,8 @@ function( godotcpp_generate )
263
263
264
264
set ( DISABLE_EXCEPTIONS "$<BOOL:${GODOT_DISABLE_EXCEPTIONS} >" )
265
265
266
+ set ( THREADS_ENABLED "$<BOOL:${GODOT_THREADS} >" )
267
+
266
268
# GODOT_DEV_BUILD
267
269
set ( RELEASE_TYPES "Release;MinSizeRel" )
268
270
get_property ( IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG )
@@ -272,8 +274,6 @@ function( godotcpp_generate )
272
274
message ( WARNING "=> GODOT_DEV_BUILD implies a Debug-like build but CMAKE_BUILD_TYPE is '${CMAKE_BUILD_TYPE} '" )
273
275
endif ()
274
276
set ( IS_DEV_BUILD "$<BOOL:${GODOT_DEV_BUILD} >" )
275
- # The .dev portion of the name if GODOT_DEV_BUILD is true.
276
- set ( DEV_TAG "$<${IS_DEV_BUILD} :.dev>" )
277
277
278
278
### Define our godot-cpp library targets
279
279
foreach ( TARGET_ALIAS template_debug template_release editor )
@@ -283,6 +283,17 @@ function( godotcpp_generate )
283
283
set ( DEBUG_FEATURES "$<NOT:$<STREQUAL:${TARGET_ALIAS} ,template_release>>" )
284
284
set ( HOT_RELOAD "$<IF:${HOT_RELOAD-UNSET},${DEBUG_FEATURES} ,$<BOOL:${GODOT_USE_HOT_RELOAD} >>" )
285
285
286
+ # Suffix
287
+ string ( CONCAT GODOT_SUFFIX
288
+ "$<1:.${SYSTEM_NAME} >"
289
+ "$<1:.${TARGET_ALIAS} >"
290
+ "$<${IS_DEV_BUILD} :.dev>"
291
+ "$<$<STREQUAL:${GODOT_PRECISION} ,double>:.double>"
292
+ "$<1:.${SYSTEM_ARCH} >"
293
+ # TODO IOS_SIMULATOR
294
+ "$<$<NOT:${THREADS_ENABLED} >:.nothreads>"
295
+ )
296
+
286
297
# the godot-cpp.* library targets
287
298
add_library ( ${TARGET_NAME} STATIC EXCLUDE_FROM_ALL )
288
299
add_library ( godot-cpp::${TARGET_ALIAS} ALIAS ${TARGET_NAME} )
@@ -311,14 +322,17 @@ function( godotcpp_generate )
311
322
POSITION_INDEPENDENT_CODE ON
312
323
BUILD_RPATH_USE_ORIGIN ON
313
324
314
- PREFIX lib
315
- OUTPUT_NAME "${PROJECT_NAME} .${SYSTEM_NAME} .${TARGET_ALIAS}${DEV_TAG} .${SYSTEM_ARCH} "
325
+ PREFIX "lib"
326
+ OUTPUT_NAME "${PROJECT_NAME}${GODOT_SUFFIX} "
327
+
316
328
ARCHIVE_OUTPUT_DIRECTORY "$<1:${CMAKE_BINARY_DIR} /bin>"
317
329
318
330
# Things that are handy to know for dependent targets
319
- GODOT_PLATFORM "${SYSTEM_NAME} "
320
- GODOT_TARGET "${TARGET_ALIAS} "
321
- GODOT_ARCH "${SYSTEM_ARCH} "
331
+ GODOT_PLATFORM "${SYSTEM_NAME} "
332
+ GODOT_TARGET "${TARGET_ALIAS} "
333
+ GODOT_ARCH "${SYSTEM_ARCH} "
334
+ GODOT_PRECISION "${GODOT_PRECISION} "
335
+ GODOT_SUFFIX "${GODOT_SUFFIX} "
322
336
323
337
# Some IDE's respect this property to logically group targets
324
338
FOLDER "godot-cpp"
0 commit comments