@@ -161,8 +161,9 @@ add_swift_target_library(swiftMusl ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OV
161161 ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
162162 ${swift_platform_compile_flags}
163163 LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS} "
164- TARGET_SDKS MUSL
165- INSTALL_IN_COMPONENT sdk-overlay)
164+ TARGET_SDKS LINUX_STATIC
165+ INSTALL_IN_COMPONENT sdk-overlay
166+ DEPENDS musl_modulemap)
166167
167168add_swift_target_library(swiftWASILibc ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
168169 ${swift_platform_sources}
@@ -198,6 +199,80 @@ add_swift_target_library(swiftCRT ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVE
198199 TARGET_SDKS WINDOWS
199200 INSTALL_IN_COMPONENT sdk-overlay)
200201
202+ foreach (sdk ${SWIFT_SDKS} )
203+ # Add more platforms supporting Musl to these checks,
204+ if (NOT "${sdk} " STREQUAL "LINUX_STATIC" )
205+ continue ()
206+ endif ()
207+
208+ set (musl_modulemap "musl.modulemap" )
209+ set (musl_header "SwiftMusl.h" )
210+
211+ foreach (arch ${SWIFT_SDK_${sdk} _ARCHITECTURES})
212+ set (arch_subdir "${SWIFT_SDK_${sdk} _LIB_SUBDIR}/${arch} " )
213+ set (module_dir "${SWIFTLIB_DIR} /${arch_subdir} " )
214+ set (module_dir_static "${SWIFTSTATICLIB_DIR} /${arch_subdir} " )
215+
216+ set (musl_modulemap_out "${module_dir} /${musl_modulemap} " )
217+ set (musl_modulemap_out_static "${module_dir_static} /${musl_modulemap} " )
218+ set (musl_header_out "${module_dir} /${musl_header} " )
219+ set (musl_header_out_static "${module_dir_static} /${musl_header} " )
220+
221+ add_custom_command_target(
222+ copy_musl_modulemap
223+ COMMAND
224+ "${CMAKE_COMMAND} " "-E" "make_directory" ${module_dir}
225+ COMMAND
226+ "${CMAKE_COMMAND} " "-E" "copy"
227+ ${CMAKE_CURRENT_LIST_DIR} /${musl_modulemap}
228+ ${musl_modulemap_out}
229+ COMMAND
230+ "${CMAKE_COMMAND} " "-E" "copy"
231+ ${CMAKE_CURRENT_LIST_DIR} /${musl_header}
232+ ${musl_header_out}
233+ OUTPUT ${musl_modulemap_out} ${musl_header_out}
234+ COMMENT "Copying Musl modulemap to resources" )
235+
236+ list (APPEND musl_modulemap_target_list ${copy_musl_modulemap} )
237+
238+ if (SWIFT_BUILD_STATIC_STDLIB OR SWIFT_SDK_${sdk} _STATIC_ONLY)
239+ add_custom_command_target(
240+ copy_musl_modulemap_static
241+ COMMAND
242+ "${CMAKE_COMMAND} " "-E" "make_directory" ${module_dir_static}
243+ COMMAND
244+ "${CMAKE_COMMAND} " "-E" "copy"
245+ ${CMAKE_CURRENT_LIST_DIR} /${musl_modulemap}
246+ ${musl_modulemap_out_static}
247+ COMMAND
248+ "${CMAKE_COMMAND} " "-E" "copy"
249+ ${CMAKE_CURRENT_LIST_DIR} /${musl_header}
250+ ${musl_header_out_static}
251+ OUTPUT ${musl_modulemap_out_static} ${musl_header_out_static}
252+ COMMENT "Copying Musl modulemap to static resources" )
253+
254+ list (APPEND musl_modulemap_target_list ${copy_musl_modulemap_static} )
255+
256+ swift_install_in_component(FILES "${musl_modulemap_out_static} "
257+ DESTINATION "lib/swift_static/${arch_subdir} "
258+ COMPONENT sdk-overlay)
259+ swift_install_in_component(FILES "${musl_header_out_static} "
260+ DESTINATION "lib/swift_static/${arch_subdir} "
261+ COMPONENT sdk-overlay)
262+ endif ()
263+
264+ swift_install_in_component(FILES "${musl_modulemap_out} "
265+ DESTINATION "lib/swift/${arch_subdir} "
266+ COMPONENT sdk-overlay)
267+ swift_install_in_component(FILES "${musl_header_out} "
268+ DESTINATION "lib/swift/${arch_subdir} "
269+ COMPONENT sdk-overlay)
270+ endforeach ()
271+ endforeach ()
272+ add_custom_target (musl_modulemap DEPENDS ${musl_modulemap_target_list} )
273+ set_property (TARGET musl_modulemap PROPERTY FOLDER "Miscellaneous" )
274+ add_dependencies (sdk-overlay musl_modulemap)
275+
201276set (glibc_modulemap_target_list)
202277foreach (sdk ${SWIFT_SDKS} )
203278 if (NOT "${sdk} " STREQUAL "LINUX" AND
@@ -238,7 +313,7 @@ foreach(sdk ${SWIFT_SDKS})
238313 FLAGS "-DCMAKE_SDK=${sdk} " )
239314 list (APPEND glibc_modulemap_target_list ${glibc_header_target} )
240315
241- if (SWIFT_BUILD_STATIC_STDLIB)
316+ if (SWIFT_BUILD_STATIC_STDLIB OR SWIFT_SDK_ ${sdk} _STATIC_ONLY )
242317 add_custom_command_target(
243318 copy_glibc_modulemap_header_static
244319 COMMAND
@@ -287,7 +362,7 @@ foreach(sdk ${SWIFT_SDKS})
287362 DESTINATION "lib/swift/${arch_subdir} "
288363 COMPONENT sdk-overlay)
289364
290- if (SWIFT_BUILD_STATIC_STDLIB)
365+ if (SWIFT_BUILD_STATIC_STDLIB OR SWIFT_SDK_ ${sdk} _STATIC_ONLY )
291366 swift_install_in_component(FILES "${glibc_modulemap_out} "
292367 DESTINATION "lib/swift_static/${arch_subdir} "
293368 COMPONENT sdk-overlay)
0 commit comments