@@ -107,7 +107,8 @@ function( godotcpp_options )
107107 set ( GODOT_ARCH "" CACHE STRING "Target CPU Architecture" )
108108 set_property ( CACHE GODOT_ARCH PROPERTY STRINGS ${ARCH_LIST} )
109109
110- #TODO threads
110+ set ( GODOT_THREADS ON CACHE BOOL "Enable threading support" )
111+
111112 #TODO compiledb
112113 #TODO compiledb_file
113114
@@ -240,16 +241,15 @@ function( godotcpp_generate )
240241
241242 ### Platform is derived from the toolchain target
242243 # 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>"
251252 )
252- string (REPLACE ";" "" SYSTEM_NAME "${SYSTEM_NAME} " )
253253
254254 ### Use the arch from the toolchain if it isn't set manually
255255 if ( GODOT_ARCH )
@@ -263,6 +263,8 @@ function( godotcpp_generate )
263263
264264 set ( DISABLE_EXCEPTIONS "$<BOOL:${GODOT_DISABLE_EXCEPTIONS} >" )
265265
266+ set ( THREADS_ENABLED "$<BOOL:${GODOT_THREADS} >" )
267+
266268 # GODOT_DEV_BUILD
267269 set ( RELEASE_TYPES "Release;MinSizeRel" )
268270 get_property ( IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG )
@@ -272,8 +274,6 @@ function( godotcpp_generate )
272274 message ( WARNING "=> GODOT_DEV_BUILD implies a Debug-like build but CMAKE_BUILD_TYPE is '${CMAKE_BUILD_TYPE} '" )
273275 endif ()
274276 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>" )
277277
278278 ### Define our godot-cpp library targets
279279 foreach ( TARGET_ALIAS template_debug template_release editor )
@@ -283,6 +283,17 @@ function( godotcpp_generate )
283283 set ( DEBUG_FEATURES "$<NOT:$<STREQUAL:${TARGET_ALIAS} ,template_release>>" )
284284 set ( HOT_RELOAD "$<IF:${HOT_RELOAD-UNSET},${DEBUG_FEATURES} ,$<BOOL:${GODOT_USE_HOT_RELOAD} >>" )
285285
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+
286297 # the godot-cpp.* library targets
287298 add_library ( ${TARGET_NAME} STATIC EXCLUDE_FROM_ALL )
288299 add_library ( godot-cpp::${TARGET_ALIAS} ALIAS ${TARGET_NAME} )
@@ -311,14 +322,17 @@ function( godotcpp_generate )
311322 POSITION_INDEPENDENT_CODE ON
312323 BUILD_RPATH_USE_ORIGIN ON
313324
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+
316328 ARCHIVE_OUTPUT_DIRECTORY "$<1:${CMAKE_BINARY_DIR} /bin>"
317329
318330 # 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} "
322336
323337 # Some IDE's respect this property to logically group targets
324338 FOLDER "godot-cpp"
0 commit comments