@@ -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 ( APPEND 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 ( JOIN "" 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