@@ -114,39 +114,35 @@ set(swift_runtime_library_compile_flags ${swift_runtime_compile_flags})
114
114
list (APPEND swift_runtime_library_compile_flags -DswiftCore_EXPORTS )
115
115
list (APPEND swift_runtime_library_compile_flags -I${SWIFT_SOURCE_DIR}/stdlib/include/llvm/Support -I${SWIFT_SOURCE_DIR}/include )
116
116
117
- if (SWIFT_BUILD_STATIC_STDLIB )
118
- set (static_binary_lnk_file_list )
117
+ set (static_binary_lnk_file_list )
119
118
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 ()
124
123
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" )
127
127
128
128
# 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" )
130
130
add_custom_command_target (swift_static_binary_${sdk}_args
131
131
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} "
135
135
OUTPUT
136
- "${SWIFTSTATICLIB_DIR} /${linkfile} "
136
+ "${SWIFTSTATICLIB_DIR} /${linkfile} "
137
137
DEPENDS
138
- "${static_binary_lnk_src} " )
138
+ "${static_binary_lnk_src} " )
139
139
140
140
list (APPEND static_binary_lnk_file_list ${swift_static_binary_${sdk}_args} )
141
141
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 )
148
144
endif ()
149
- endif ()
145
+ endforeach ()
150
146
151
147
add_swift_target_library (swiftRuntime OBJECT_LIBRARY
152
148
${swift_runtime_sources}
@@ -248,15 +244,15 @@ foreach(sdk ${SWIFT_SDKS})
248
244
"${static_runtime_registrar} "
249
245
DEPENDS
250
246
"${swiftrtObject} " )
251
- if (SWIFT_BUILD_DYNAMIC_STDLIB )
247
+ if (SWIFT_BUILD_DYNAMIC_STDLIB AND NOT SWIFT_SDK_${sdk}_STATIC_ONLY )
252
248
swift_install_in_component (FILES
253
249
"${shared_runtime_registrar} "
254
250
DESTINATION
255
251
"lib/swift/${arch_subdir} "
256
252
COMPONENT
257
253
stdlib )
258
254
endif ()
259
- if (SWIFT_BUILD_STATIC_STDLIB )
255
+ if (SWIFT_BUILD_STATIC_STDLIB OR SWIFT_SDK_${sdk}_STATIC_ONLY )
260
256
swift_install_in_component (FILES
261
257
"${static_runtime_registrar} "
262
258
DESTINATION
@@ -273,10 +269,26 @@ foreach(sdk ${SWIFT_SDKS})
273
269
add_dependencies (stdlib swift-stdlib-${arch_suffix} swiftImageRegistration-${arch_suffix} )
274
270
endif ()
275
271
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 ()
280
292
set (libpthread -lpthread )
281
293
set (concurrency_libs )
282
294
set (android_libraries )
@@ -287,7 +299,6 @@ foreach(sdk ${SWIFT_SDKS})
287
299
set (concurrency_libs "-ldispatch -lBlocksRuntime" )
288
300
endif ()
289
301
290
- set (linkfile ${lowercase_sdk} /static-stdlib-args.lnk )
291
302
file (WRITE "${SWIFTSTATICLIB_DIR} /${linkfile} " "
292
303
-ldl
293
304
${libpthread}
@@ -299,10 +310,17 @@ ${concurrency_libs}
299
310
-Xlinker -export-dynamic
300
311
-Xlinker --exclude-libs
301
312
-Xlinker ALL" )
302
-
303
- swift_install_in_component (FILES "${SWIFTSTATICLIB_DIR} /${linkfile} "
304
- DESTINATION "lib/swift_static/${lowercase_sdk} "
305
- COMPONENT stdlib )
306
313
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
+
308
320
endforeach ()
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