diff --git a/stdlib/public/Platform/CMakeLists.txt b/stdlib/public/Platform/CMakeLists.txt index 5a0081eb8c775..5b708bd137e71 100644 --- a/stdlib/public/Platform/CMakeLists.txt +++ b/stdlib/public/Platform/CMakeLists.txt @@ -98,90 +98,21 @@ add_swift_target_library(swiftGlibc ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_O INSTALL_IN_COMPONENT sdk-overlay DEPENDS glibc_modulemap) -if(WASI IN_LIST SWIFT_SDKS) - set(arch_subdir "${SWIFT_SDK_WASI_LIB_SUBDIR}/wasm32") - set(module_dir "${SWIFTLIB_DIR}/${arch_subdir}") - set(module_dir_static "${SWIFTSTATICLIB_DIR}/${arch_subdir}") - set(wasi_libc_modulemap_out "${module_dir}/wasi.modulemap") - set(wasi_libc_modulemap_out_static "${module_dir_static}/wasi.modulemap") - set(wasi_libc_modulemap_target_list) - handle_gyb_source_single(wasi_libc_modulemap_target - SOURCE "wasi.modulemap.gyb" - OUTPUT "${wasi_libc_modulemap_out}" - FLAGS "-DLIBC_INCLUDE_PATH=${SWIFT_SDK_WASI_ARCH_wasm32_LIBC_INCLUDE_DIRECTORY}" - "-DLIBC_ARCH_INCLUDE_PATH=${SWIFT_SDK_WASI_ARCH_wasm32_LIBC_ARCHITECTURE_INCLUDE_DIRECTORY}") - list(APPEND wasi_libc_modulemap_target_list ${wasi_libc_modulemap_target}) - - add_custom_command_target( - copy_wasi_libc_modulemap_static - COMMAND - "${CMAKE_COMMAND}" "-E" "make_directory" ${module_dir_static} - COMMAND - "${CMAKE_COMMAND}" "-E" "copy" ${wasi_libc_modulemap_out} ${wasi_libc_modulemap_out_static} - OUTPUT ${wasi_libc_modulemap_out_static} - DEPENDS - "${wasi_libc_modulemap_target}" - COMMENT "Copying WASILlibc modulemap to static resources") - - list(APPEND wasi_libc_modulemap_target_list ${copy_wasi_libc_modulemap_static}) - - set(wasi_libc_header_out "${module_dir}/SwiftWASILibc.h") - set(wasi_libc_header_out_static "${module_dir_static}/SwiftWASILibc.h") - handle_gyb_source_single(wasi_libc_header_target - SOURCE "SwiftWASILibc.h.gyb" - OUTPUT "${wasi_libc_header_out}" - FLAGS "-DCMAKE_SDK=${sdk}") - list(APPEND wasi_libc_modulemap_target_list ${wasi_libc_header_target}) - - add_custom_command_target( - copy_wasi_libc_header_static - COMMAND - "${CMAKE_COMMAND}" "-E" "make_directory" ${module_dir_static} - COMMAND - "${CMAKE_COMMAND}" "-E" "copy" ${wasi_libc_header_out} ${wasi_libc_header_out_static} - OUTPUT ${wasi_libc_header_out_static} - DEPENDS - "${wasi_libc_header_target}" - COMMENT "Copying WASILlibc header to static resources") - list(APPEND wasi_libc_modulemap_target_list ${copy_wasi_libc_header_static}) - - add_swift_target_library(swiftWASILibc ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY - ${swift_platform_sources} - POSIXError.swift +add_swift_target_library(swiftWASILibc ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY + ${swift_platform_sources} + POSIXError.swift - GYB_SOURCES - ${swift_platform_gyb_sources} - WASI.swift.gyb + GYB_SOURCES + ${swift_platform_gyb_sources} + WASI.swift.gyb - SWIFT_COMPILE_FLAGS - ${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS} - ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS} - LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}" - TARGET_SDKS WASI - INSTALL_IN_COMPONENT sdk-overlay - DEPENDS ${wasi_libc_modulemap_target_list}) - - swift_install_in_component(FILES "${wasi_libc_modulemap_out}" - DESTINATION "lib/swift/${arch_subdir}" - COMPONENT sdk-overlay) - - swift_install_in_component(FILES "${wasi_libc_modulemap_out}" - DESTINATION "lib/swift_static/${arch_subdir}" - COMPONENT sdk-overlay) - - swift_install_in_component(FILES "${wasi_libc_header_out}" - DESTINATION "lib/swift/${arch_subdir}" - COMPONENT sdk-overlay) - - swift_install_in_component(FILES "${wasi_libc_header_out}" - DESTINATION "lib/swift_static/${arch_subdir}" - COMPONENT sdk-overlay) - - add_custom_target(wasi_libc_modulemap - DEPENDS ${wasi_libc_modulemap_target_list}) - set_property(TARGET wasi_libc_modulemap PROPERTY FOLDER "Miscellaneous") - add_dependencies(sdk-overlay wasi_libc_modulemap) -endif() + SWIFT_COMPILE_FLAGS + ${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS} + ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS} + LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}" + TARGET_SDKS WASI + INSTALL_IN_COMPONENT sdk-overlay + DEPENDS glibc_modulemap) add_swift_target_library(swiftCRT ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY ucrt.swift @@ -202,23 +133,31 @@ add_swift_target_library(swiftCRT ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVE set(glibc_modulemap_target_list) foreach(sdk ${SWIFT_SDKS}) - if(NOT "${sdk}" STREQUAL "LINUX" AND - NOT "${sdk}" STREQUAL "FREEBSD" AND - NOT "${sdk}" STREQUAL "OPENBSD" AND - NOT "${sdk}" STREQUAL "ANDROID" AND - NOT "${sdk}" STREQUAL "CYGWIN" AND - NOT "${sdk}" STREQUAL "HAIKU") + if("${sdk}" STREQUAL "LINUX" OR + "${sdk}" STREQUAL "FREEBSD" OR + "${sdk}" STREQUAL "OPENBSD" OR + "${sdk}" STREQUAL "ANDROID" OR + "${sdk}" STREQUAL "CYGWIN" OR + "${sdk}" STREQUAL "HAIKU") + set(glibc_modulemap_source "glibc.modulemap.gyb") + set(glibc_header_source "SwiftGlibc.h.gyb") + elseif("${sdk}" STREQUAL "WASI") + set(glibc_modulemap_source "wasi.modulemap.gyb") + set(glibc_header_source "SwiftWASILibc.h.gyb") + else() continue() endif() + string(REGEX REPLACE "\\.gyb$" "" glibc_modulemap_outname "${glibc_modulemap_source}") + string(REGEX REPLACE "\\.gyb$" "" glibc_header_outname "${glibc_header_source}") + foreach(arch ${SWIFT_SDK_${sdk}_ARCHITECTURES}) set(arch_subdir "${SWIFT_SDK_${sdk}_LIB_SUBDIR}/${arch}") set(module_dir "${SWIFTLIB_DIR}/${arch_subdir}") set(module_dir_static "${SWIFTSTATICLIB_DIR}/${arch_subdir}") - set(glibc_modulemap_source "glibc.modulemap.gyb") - set(glibc_modulemap_out "${module_dir}/glibc.modulemap") - set(glibc_modulemap_out_static "${module_dir_static}/glibc.modulemap") + set(glibc_modulemap_out "${module_dir}/${glibc_modulemap_outname}") + set(glibc_modulemap_out_static "${module_dir_static}/${glibc_modulemap_outname}") # Configure the module map based on the target. Each platform needs to # reference different headers, based on what's available in their glibc. @@ -232,10 +171,10 @@ foreach(sdk ${SWIFT_SDKS}) list(APPEND glibc_modulemap_target_list ${glibc_modulemap_target}) - set(glibc_header_out "${module_dir}/SwiftGlibc.h") - set(glibc_header_out_static "${module_dir_static}/SwiftGlibc.h") + set(glibc_header_out "${module_dir}/${glibc_header_outname}") + set(glibc_header_out_static "${module_dir_static}/${glibc_header_outname}") handle_gyb_source_single(glibc_header_target - SOURCE "SwiftGlibc.h.gyb" + SOURCE "${glibc_header_source}" OUTPUT "${glibc_header_out}" FLAGS "-DCMAKE_SDK=${sdk}") list(APPEND glibc_modulemap_target_list ${glibc_header_target}) @@ -266,7 +205,7 @@ foreach(sdk ${SWIFT_SDKS}) # prefix. This is the one we'll install instead. if(NOT "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_ARCH_${arch}_PATH}" STREQUAL "/" AND NOT (${sdk} STREQUAL ANDROID AND NOT "${SWIFT_ANDROID_NATIVE_SYSROOT}" STREQUAL "")) - set(glibc_sysroot_relative_modulemap_out "${module_dir}/sysroot-relative-modulemaps/glibc.modulemap") + set(glibc_sysroot_relative_modulemap_out "${module_dir}/sysroot-relative-modulemaps/${glibc_modulemap_outname}") handle_gyb_source_single(glibc_modulemap_native_target SOURCE "${glibc_modulemap_source}"