@@ -114,39 +114,35 @@ set(swift_runtime_library_compile_flags ${swift_runtime_compile_flags})
114114list (APPEND swift_runtime_library_compile_flags -DswiftCore_EXPORTS)
115115list (APPEND swift_runtime_library_compile_flags -I${SWIFT_SOURCE_DIR} /stdlib/include /llvm/Support -I${SWIFT_SOURCE_DIR} /include )
116116
117- if (SWIFT_BUILD_STATIC_STDLIB)
118- set (static_binary_lnk_file_list)
117+ set (static_binary_lnk_file_list)
119118
120- foreach (sdk ${SWIFT_SDKS} )
121- if (NOT " ${sdk} " STREQUAL "LINUX" AND NOT " ${sdk} " STREQUAL "WASI" )
122- continue ()
123- endif ()
119+ foreach (sdk ${SWIFT_SDKS} )
120+ if (NOT SWIFT_SDK_ ${sdk} _STATIC_LINKING_SUPPORTED )
121+ continue ()
122+ endif ()
124123
125- string (TOLOWER "${sdk} " lowercase_sdk)
126- set (static_binary_lnk_src "${SWIFT_SOURCE_DIR} /stdlib/public/Resources/${lowercase_sdk} /static-executable-args.lnk" )
124+ if (SWIFT_BUILD_STATIC_STDLIB OR SWIFT_SDK_${sdk} _STATIC_ONLY)
125+ set (lib_dir "${SWIFT_SDK_${sdk} _LIB_SUBDIR}" )
126+ set (static_binary_lnk_src "${SWIFT_SOURCE_DIR} /stdlib/public/Resources/${lib_dir} /static-executable-args.lnk" )
127127
128128 # Generate the static-executable-args.lnk file used for ELF systems (eg linux)
129- set (linkfile "${lowercase_sdk } /static-executable-args.lnk" )
129+ set (linkfile "${lib_dir } /static-executable-args.lnk" )
130130 add_custom_command_target(swift_static_binary_${sdk} _args
131131 COMMAND
132- "${CMAKE_COMMAND} " -E copy
133- "${static_binary_lnk_src} "
134- "${SWIFTSTATICLIB_DIR} /${linkfile} "
132+ "${CMAKE_COMMAND} " -E copy
133+ "${static_binary_lnk_src} "
134+ "${SWIFTSTATICLIB_DIR} /${linkfile} "
135135 OUTPUT
136- "${SWIFTSTATICLIB_DIR} /${linkfile} "
136+ "${SWIFTSTATICLIB_DIR} /${linkfile} "
137137 DEPENDS
138- "${static_binary_lnk_src} " )
138+ "${static_binary_lnk_src} " )
139139
140140 list (APPEND static_binary_lnk_file_list ${swift_static_binary_${sdk} _args})
141141 swift_install_in_component(FILES "${SWIFTSTATICLIB_DIR} /${linkfile} "
142- DESTINATION "lib/swift_static/${lowercase_sdk} "
143- COMPONENT stdlib)
144- endforeach ()
145- if (static_binary_lnk_file_list)
146- add_dependencies (stdlib ${static_binary_lnk_file_list} )
147- add_custom_target (static_binary_magic ALL DEPENDS ${static_binary_lnk_file_list} )
142+ DESTINATION "lib/swift_static/${lib_dir} "
143+ COMPONENT stdlib)
148144 endif ()
149- endif ()
145+ endforeach ()
150146
151147add_swift_target_library(swiftRuntime OBJECT_LIBRARY
152148 ${swift_runtime_sources}
@@ -248,15 +244,15 @@ foreach(sdk ${SWIFT_SDKS})
248244 "${static_runtime_registrar} "
249245 DEPENDS
250246 "${swiftrtObject} " )
251- if (SWIFT_BUILD_DYNAMIC_STDLIB)
247+ if (SWIFT_BUILD_DYNAMIC_STDLIB AND NOT SWIFT_SDK_ ${sdk} _STATIC_ONLY )
252248 swift_install_in_component(FILES
253249 "${shared_runtime_registrar} "
254250 DESTINATION
255251 "lib/swift/${arch_subdir} "
256252 COMPONENT
257253 stdlib)
258254 endif ()
259- if (SWIFT_BUILD_STATIC_STDLIB)
255+ if (SWIFT_BUILD_STATIC_STDLIB OR SWIFT_SDK_ ${sdk} _STATIC_ONLY )
260256 swift_install_in_component(FILES
261257 "${static_runtime_registrar} "
262258 DESTINATION
@@ -273,10 +269,26 @@ foreach(sdk ${SWIFT_SDKS})
273269 add_dependencies (stdlib swift-stdlib-${arch_suffix} swiftImageRegistration-${arch_suffix} )
274270 endif ()
275271
276- # Generate the static-stdlib-args.lnk file used by -static-stdlib option for
277- # 'GenericUnix' (eg linux)
278- if (SWIFT_SDK_${sdk} _OBJECT_FORMAT STREQUAL "ELF" )
279- string (TOLOWER "${sdk} " lowercase_sdk)
272+ endforeach ()
273+
274+ # Generate the static-stdlib-args.lnk file used by -static-stdlib option for
275+ # 'GenericUnix' (eg linux)
276+ if (SWIFT_SDK_${sdk} _OBJECT_FORMAT STREQUAL "ELF" )
277+ set (lib_dir "${SWIFT_SDK_${sdk} _LIB_SUBDIR}" )
278+ set (static_stdlib_lnk_src "${SWIFT_SOURCE_DIR} /stdlib/public/Resources/${lib_dir} /static-stdlib-args.lnk" )
279+ set (linkfile ${lib_dir} /static -stdlib-args.lnk)
280+ if (EXISTS "${static_stdlib_lnk_src} " )
281+ add_custom_command_target(swift_static_stdlib_${sdk} _args
282+ COMMAND
283+ "${CMAKE_COMMAND} " -E copy
284+ "${static_stdlib_lnk_src} "
285+ "${SWIFTSTATICLIB_DIR} /${linkfile} "
286+ OUTPUT
287+ "${SWIFTSTATICLIB_DIR} /${linkfile} "
288+ DEPENDS
289+ "${static_stdlib_lnk_src} " )
290+ list (APPEND static_binary_lnk_file_list ${swift_static_stdlib_${sdk} _args})
291+ else ()
280292 set (libpthread -lpthread)
281293 set (concurrency_libs)
282294 set (android_libraries)
@@ -287,7 +299,6 @@ foreach(sdk ${SWIFT_SDKS})
287299 set (concurrency_libs "-ldispatch -lBlocksRuntime" )
288300 endif ()
289301
290- set (linkfile ${lowercase_sdk} /static -stdlib-args.lnk)
291302 file (WRITE "${SWIFTSTATICLIB_DIR} /${linkfile} " "
292303-ldl
293304${libpthread}
@@ -299,10 +310,17 @@ ${concurrency_libs}
299310-Xlinker -export-dynamic
300311-Xlinker --exclude-libs
301312-Xlinker ALL" )
302-
303- swift_install_in_component(FILES "${SWIFTSTATICLIB_DIR} /${linkfile} "
304- DESTINATION "lib/swift_static/${lowercase_sdk} "
305- COMPONENT stdlib)
306313 endif ()
307- endforeach ()
314+
315+ swift_install_in_component(FILES "${SWIFTSTATICLIB_DIR} /${linkfile} "
316+ DESTINATION "lib/swift_static/${lib_dir} "
317+ COMPONENT stdlib)
318+ endif ()
319+
308320endforeach ()
321+
322+ if (static_binary_lnk_file_list)
323+ add_dependencies (stdlib ${static_binary_lnk_file_list} )
324+ add_custom_target (static_binary_magic ALL DEPENDS ${static_binary_lnk_file_list} )
325+ endif ()
326+
0 commit comments