mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
_math would be able to build against either the Swift or the clang module for _Builtin_float; however the build will fail if the Swift module is present but does not contain the architectures we need, with errors like ``` <unknown>:0: error: could not find module '_Builtin_float' for target 'armv7-unknown-linux-android'; found: aarch64-unknown-linux-android, x86_64-unknown-linux-android, at: /home/build-user/build/swift-project/Ninja-Release/swift-linux-x86_64/lib/swift/android/_Builtin_float.swiftmodule/armv7-unknown-linux-android ``` In other words, in this situation we are not falling back to the clang module. Addresses rdar://165768601
514 lines
21 KiB
CMake
514 lines
21 KiB
CMake
set(swift_platform_sources
|
|
Platform.swift
|
|
TiocConstants.swift)
|
|
set(swift_platform_gyb_sources
|
|
tgmath.swift.gyb)
|
|
|
|
set(swift_platform_compile_flags)
|
|
if(SWIFT_ENABLE_REFLECTION)
|
|
list(APPEND swift_platform_compile_flags "-DSWIFT_ENABLE_REFLECTION")
|
|
endif()
|
|
|
|
set(swiftGlibc_target_sdks CYGWIN FREEBSD OPENBSD LINUX HAIKU)
|
|
if(SWIFT_FREESTANDING_FLAVOR STREQUAL "linux")
|
|
set(swiftGlibc_target_sdks CYGWIN FREEBSD OPENBSD LINUX HAIKU FREESTANDING)
|
|
endif()
|
|
add_swift_target_library(swiftGlibc ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
|
|
${swift_platform_sources}
|
|
POSIXError.swift
|
|
|
|
GYB_SOURCES
|
|
${swift_platform_gyb_sources}
|
|
Glibc.swift.gyb
|
|
|
|
SWIFT_COMPILE_FLAGS
|
|
${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}
|
|
${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
|
|
${swift_platform_compile_flags}
|
|
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
|
|
TARGET_SDKS "${swiftGlibc_target_sdks}"
|
|
INSTALL_IN_COMPONENT sdk-overlay
|
|
DEPENDS glibc_modulemap)
|
|
|
|
add_swift_target_library(swiftMusl ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
|
|
${swift_platform_sources}
|
|
POSIXError.swift
|
|
|
|
GYB_SOURCES
|
|
${swift_platform_gyb_sources}
|
|
Musl.swift.gyb
|
|
|
|
SWIFT_COMPILE_FLAGS
|
|
${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}
|
|
${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
|
|
${swift_platform_compile_flags}
|
|
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
|
|
TARGET_SDKS LINUX_STATIC
|
|
INSTALL_IN_COMPONENT sdk-overlay
|
|
DEPENDS musl_modulemap)
|
|
|
|
add_swift_target_library(swiftWASILibc ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
|
|
${swift_platform_sources}
|
|
POSIXError.swift
|
|
|
|
GYB_SOURCES
|
|
${swift_platform_gyb_sources}
|
|
WASILibc.swift.gyb
|
|
|
|
SWIFT_COMPILE_FLAGS
|
|
${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}
|
|
${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
|
|
${swift_platform_compile_flags}
|
|
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
|
|
TARGET_SDKS WASI
|
|
INSTALL_IN_COMPONENT sdk-overlay
|
|
DEPENDS wasilibc_modulemap)
|
|
|
|
add_swift_target_library(swiftCRT ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
|
|
ucrt.swift
|
|
${swift_platform_sources}
|
|
POSIXError.swift
|
|
|
|
GYB_SOURCES
|
|
${swift_platform_gyb_sources}
|
|
|
|
SWIFT_COMPILE_FLAGS
|
|
${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}
|
|
${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
|
|
-Xcc -D_USE_MATH_DEFINES
|
|
${swift_platform_compile_flags}
|
|
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
|
|
TARGET_SDKS WINDOWS
|
|
INSTALL_IN_COMPONENT sdk-overlay)
|
|
|
|
foreach(sdk ${SWIFT_SDKS})
|
|
# Add more platforms supporting Musl to these checks,
|
|
if(NOT "${sdk}" STREQUAL "LINUX_STATIC")
|
|
continue()
|
|
endif()
|
|
|
|
set(musl_modulemap "musl.modulemap")
|
|
set(musl_header "SwiftMusl.h")
|
|
|
|
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(musl_modulemap_out "${module_dir}/${musl_modulemap}")
|
|
set(musl_modulemap_out_static "${module_dir_static}/${musl_modulemap}")
|
|
set(musl_header_out "${module_dir}/${musl_header}")
|
|
set(musl_header_out_static "${module_dir_static}/${musl_header}")
|
|
|
|
add_custom_command_target(
|
|
copy_musl_modulemap
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "make_directory" ${module_dir}
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "copy"
|
|
${CMAKE_CURRENT_LIST_DIR}/${musl_modulemap}
|
|
${musl_modulemap_out}
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "copy"
|
|
${CMAKE_CURRENT_LIST_DIR}/${musl_header}
|
|
${musl_header_out}
|
|
OUTPUT ${musl_modulemap_out} ${musl_header_out}
|
|
COMMENT "Copying Musl modulemap to resources")
|
|
|
|
list(APPEND musl_modulemap_target_list ${copy_musl_modulemap})
|
|
|
|
if(SWIFT_BUILD_STATIC_STDLIB OR SWIFT_SDK_${sdk}_STATIC_ONLY)
|
|
add_custom_command_target(
|
|
copy_musl_modulemap_static
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "make_directory" ${module_dir_static}
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "copy"
|
|
${CMAKE_CURRENT_LIST_DIR}/${musl_modulemap}
|
|
${musl_modulemap_out_static}
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "copy"
|
|
${CMAKE_CURRENT_LIST_DIR}/${musl_header}
|
|
${musl_header_out_static}
|
|
OUTPUT ${musl_modulemap_out_static} ${musl_header_out_static}
|
|
COMMENT "Copying Musl modulemap to static resources")
|
|
|
|
list(APPEND musl_modulemap_target_list ${copy_musl_modulemap_static})
|
|
|
|
swift_install_in_component(FILES "${musl_modulemap_out_static}"
|
|
DESTINATION "lib/swift_static/${arch_subdir}"
|
|
COMPONENT sdk-overlay)
|
|
swift_install_in_component(FILES "${musl_header_out_static}"
|
|
DESTINATION "lib/swift_static/${arch_subdir}"
|
|
COMPONENT sdk-overlay)
|
|
endif()
|
|
|
|
swift_install_in_component(FILES "${musl_modulemap_out}"
|
|
DESTINATION "lib/swift/${arch_subdir}"
|
|
COMPONENT sdk-overlay)
|
|
swift_install_in_component(FILES "${musl_header_out}"
|
|
DESTINATION "lib/swift/${arch_subdir}"
|
|
COMPONENT sdk-overlay)
|
|
endforeach()
|
|
endforeach()
|
|
add_custom_target(musl_modulemap DEPENDS ${musl_modulemap_target_list})
|
|
set_property(TARGET musl_modulemap PROPERTY FOLDER "Miscellaneous")
|
|
add_dependencies(sdk-overlay musl_modulemap)
|
|
|
|
# Add a system 'math' module overlay, which applies only to platforms that
|
|
# have a top level '_math' module.
|
|
add_swift_target_library(swift_math ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
|
|
Math.swift
|
|
|
|
SWIFT_COMPILE_FLAGS
|
|
${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}
|
|
${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
|
|
${swift_platform_compile_flags}
|
|
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
|
|
TARGET_SDKS "ANDROID"
|
|
INSTALL_IN_COMPONENT sdk-overlay
|
|
SWIFT_MODULE_DEPENDS_ANDROID _Builtin_float
|
|
DEPENDS android_modulemap)
|
|
|
|
add_swift_target_library(swiftAndroid ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES} IS_SDK_OVERLAY
|
|
Android.swift
|
|
${swift_platform_sources}
|
|
POSIXError.swift
|
|
|
|
GYB_SOURCES
|
|
${swift_platform_gyb_sources}
|
|
|
|
SWIFT_COMPILE_FLAGS
|
|
${SWIFT_RUNTIME_SWIFT_COMPILE_FLAGS}
|
|
${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
|
|
${swift_platform_compile_flags}
|
|
LINK_FLAGS "${SWIFT_RUNTIME_SWIFT_LINK_FLAGS}"
|
|
TARGET_SDKS "ANDROID"
|
|
INSTALL_IN_COMPONENT sdk-overlay
|
|
DEPENDS android_modulemap)
|
|
|
|
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 "CYGWIN" AND
|
|
NOT "${sdk}" STREQUAL "HAIKU")
|
|
continue()
|
|
endif()
|
|
|
|
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")
|
|
|
|
# Configure the module map based on the target. Each platform needs to
|
|
# reference different headers, based on what's available in their glibc.
|
|
# This is the 'glibc.modulemap' in the 'resource-dir', so
|
|
# it's the one we'll look at during the build process.
|
|
handle_gyb_source_single(glibc_modulemap_target
|
|
SOURCE "${glibc_modulemap_source}"
|
|
OUTPUT "${glibc_modulemap_out}"
|
|
FLAGS
|
|
"-DCMAKE_SDK=${sdk}")
|
|
|
|
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")
|
|
handle_gyb_source_single(glibc_header_target
|
|
SOURCE "SwiftGlibc.h.gyb"
|
|
OUTPUT "${glibc_header_out}"
|
|
FLAGS "-DCMAKE_SDK=${sdk}")
|
|
list(APPEND glibc_modulemap_target_list ${glibc_header_target})
|
|
|
|
if(SWIFT_BUILD_STATIC_STDLIB OR SWIFT_SDK_${sdk}_STATIC_ONLY)
|
|
add_custom_command_target(
|
|
copy_glibc_modulemap_header_static
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "make_directory" ${module_dir_static}
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "copy"
|
|
${glibc_modulemap_out} ${glibc_modulemap_out_static}
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "copy"
|
|
${glibc_header_out} ${glibc_header_out_static}
|
|
OUTPUT ${glibc_modulemap_out_static} ${glibc_header_out_static}
|
|
DEPENDS
|
|
"${glibc_modulemap_target}"
|
|
"${glibc_header_target}"
|
|
COMMENT "Copying Glibc modulemap and header to static resources")
|
|
|
|
list(APPEND glibc_modulemap_target_list
|
|
${copy_glibc_modulemap_header_static})
|
|
endif()
|
|
|
|
# If this SDK is a target for a non-native host, create a native modulemap
|
|
# without a sysroot prefix. This is the one we'll install instead.
|
|
if(NOT "${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_ARCH_${arch}_PATH}" STREQUAL "/")
|
|
set(glibc_sysroot_relative_modulemap_out "${module_dir}/sysroot-relative-modulemaps/glibc.modulemap")
|
|
|
|
handle_gyb_source_single(glibc_modulemap_native_target
|
|
SOURCE "${glibc_modulemap_source}"
|
|
OUTPUT "${glibc_sysroot_relative_modulemap_out}"
|
|
FLAGS "-DCMAKE_SDK=${sdk}")
|
|
|
|
list(APPEND glibc_modulemap_target_list ${glibc_modulemap_native_target})
|
|
set(glibc_modulemap_out ${glibc_sysroot_relative_modulemap_out})
|
|
endif()
|
|
|
|
# FIXME: When SDK is a cross-compile target (SDK != Host), the generated
|
|
# modulemap will be relative to the Host, with hardcoded paths.
|
|
# It is not relocatable to the target platform itself.
|
|
# This affects any cross-compiled targets that use glibc.modulemap.
|
|
|
|
swift_install_in_component(FILES "${glibc_modulemap_out}"
|
|
DESTINATION "lib/swift/${arch_subdir}"
|
|
COMPONENT sdk-overlay)
|
|
swift_install_in_component(FILES "${glibc_header_out}"
|
|
DESTINATION "lib/swift/${arch_subdir}"
|
|
COMPONENT sdk-overlay)
|
|
|
|
if(SWIFT_BUILD_STATIC_STDLIB OR SWIFT_SDK_${sdk}_STATIC_ONLY)
|
|
swift_install_in_component(FILES "${glibc_modulemap_out}"
|
|
DESTINATION "lib/swift_static/${arch_subdir}"
|
|
COMPONENT sdk-overlay)
|
|
swift_install_in_component(FILES "${glibc_header_out}"
|
|
DESTINATION "lib/swift_static/${arch_subdir}"
|
|
COMPONENT sdk-overlay)
|
|
endif()
|
|
endforeach()
|
|
endforeach()
|
|
add_custom_target(glibc_modulemap DEPENDS ${glibc_modulemap_target_list})
|
|
set_property(TARGET glibc_modulemap PROPERTY FOLDER "Miscellaneous")
|
|
add_dependencies(sdk-overlay glibc_modulemap)
|
|
|
|
set(android_modulemap_target_list)
|
|
if("ANDROID" IN_LIST SWIFT_SDKS)
|
|
set(android_modulemap_source "android.modulemap")
|
|
set(android_ndk_header_source "SwiftAndroidNDK.h")
|
|
set(android_bionic_header_source "SwiftBionic.h")
|
|
|
|
foreach(arch ${SWIFT_SDK_ANDROID_ARCHITECTURES})
|
|
set(arch_subdir "${SWIFT_SDK_ANDROID_LIB_SUBDIR}/${arch}")
|
|
set(module_dir "${SWIFTLIB_DIR}/${arch_subdir}")
|
|
set(module_dir_static "${SWIFTSTATICLIB_DIR}/${arch_subdir}")
|
|
|
|
add_custom_command_target(
|
|
copy_android_modulemap_resource
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "make_directory" ${module_dir} ${module_dir_static}
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "copy_if_different"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${android_modulemap_source}" ${module_dir}
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "copy_if_different"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${android_modulemap_source}" ${module_dir_static}
|
|
OUTPUT ${module_dir}/${android_modulemap_source} ${module_dir_static}/${android_modulemap_source}
|
|
COMMENT "Copying Android modulemap to resource directories")
|
|
add_custom_command_target(
|
|
copy_android_ndk_header_resource
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "make_directory" ${module_dir} ${module_dir_static}
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "copy_if_different"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${android_ndk_header_source}" ${module_dir}
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "copy_if_different"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${android_ndk_header_source}" ${module_dir_static}
|
|
OUTPUT ${module_dir}/${android_ndk_header_source} ${module_dir_static}/${android_ndk_header_source}
|
|
COMMENT "Copying Android NDK header to resource directories")
|
|
add_custom_command_target(
|
|
copy_android_bionic_header_resource
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "make_directory" ${module_dir} ${module_dir_static}
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "copy_if_different"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${android_bionic_header_source}" ${module_dir}
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "copy_if_different"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${android_bionic_header_source}" ${module_dir_static}
|
|
OUTPUT ${module_dir}/${android_bionic_header_source} ${module_dir_static}/${android_bionic_header_source}
|
|
COMMENT "Copying Android NDK header to resource directories")
|
|
|
|
add_dependencies(sdk-overlay ${copy_android_modulemap_resource}
|
|
${copy_android_ndk_header_resource}
|
|
${copy_android_bionic_header_resource})
|
|
list(APPEND android_modulemap_target_list ${copy_android_modulemap_resource}
|
|
${copy_android_ndk_header_resource}
|
|
${copy_android_bionic_header_resource})
|
|
|
|
swift_install_in_component(FILES "${android_modulemap_source}"
|
|
"${android_ndk_header_source}"
|
|
"${android_bionic_header_source}"
|
|
DESTINATION "lib/swift/${arch_subdir}"
|
|
COMPONENT sdk-overlay)
|
|
if(SWIFT_BUILD_STATIC_STDLIB)
|
|
swift_install_in_component(FILES "${android_modulemap_source}"
|
|
"${android_ndk_header_source}"
|
|
"${android_bionic_header_source}"
|
|
DESTINATION "lib/swift_static/${arch_subdir}"
|
|
COMPONENT sdk-overlay)
|
|
endif()
|
|
endforeach()
|
|
|
|
add_custom_command_target(
|
|
copy_android_posix_filesystem_apinotes_resource
|
|
COMMAND
|
|
${CMAKE_COMMAND} -E make_directory "${SWIFTLIB_DIR}/apinotes"
|
|
COMMAND
|
|
${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/posix_filesystem.apinotes" "${SWIFTLIB_DIR}/apinotes"
|
|
COMMAND
|
|
${CMAKE_COMMAND} -E copy_if_different "${CMAKE_CURRENT_SOURCE_DIR}/spawn.apinotes" "${SWIFTLIB_DIR}/apinotes"
|
|
OUTPUT
|
|
"${SWIFTLIB_DIR}/apinotes/posix_filesystem.apinotes"
|
|
"${SWIFTLIB_DIR}/apinotes/spawn.apinotes"
|
|
COMMENT
|
|
"Copying Android API Notes to resource directories")
|
|
add_dependencies(sdk-overlay ${copy_android_posix_filesystem_apinotes_resource})
|
|
list(APPEND android_modulemap_target_list ${copy_android_posix_filesystem_apinotes_resource})
|
|
swift_install_in_component(FILES posix_filesystem.apinotes spawn.apinotes
|
|
DESTINATION "lib/swift/apinotes"
|
|
COMPONENT sdk-overlay)
|
|
endif()
|
|
add_custom_target(android_modulemap DEPENDS ${android_modulemap_target_list})
|
|
set_property(TARGET android_modulemap PROPERTY FOLDER "Miscellaneous")
|
|
add_dependencies(sdk-overlay android_modulemap)
|
|
|
|
set(wasilibc_modulemap_target_list)
|
|
if("WASI" IN_LIST SWIFT_SDKS)
|
|
set(wasilibc_modulemap_source "wasi-libc.modulemap")
|
|
foreach(arch ${SWIFT_SDK_WASI_ARCHITECTURES})
|
|
set(arch_subdir "${SWIFT_SDK_WASI_LIB_SUBDIR}/${arch}")
|
|
set(module_dir "${SWIFTLIB_DIR}/${arch_subdir}")
|
|
set(module_dir_static "${SWIFTSTATICLIB_DIR}/${arch_subdir}")
|
|
set(module_dir_embedded "${SWIFTLIB_DIR}/embedded/${arch}")
|
|
|
|
add_custom_command_target(
|
|
copy_wasilibc_modulemap_resource
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "make_directory" ${module_dir} ${module_dir_static}
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "copy_if_different"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${wasilibc_modulemap_source}" ${module_dir}
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "copy_if_different"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${wasilibc_modulemap_source}" ${module_dir_static}
|
|
OUTPUT ${module_dir}/${wasilibc_modulemap_source} ${module_dir_static}/${wasilibc_modulemap_source}
|
|
COMMENT "Copying WASILibc modulemap to resource directories")
|
|
add_dependencies(sdk-overlay ${copy_wasilibc_modulemap_resource})
|
|
list(APPEND wasilibc_modulemap_target_list ${copy_wasilibc_modulemap_resource})
|
|
|
|
swift_install_in_component(FILES "${wasilibc_modulemap_source}"
|
|
DESTINATION "lib/swift/${arch_subdir}"
|
|
COMPONENT sdk-overlay)
|
|
if(SWIFT_BUILD_STATIC_STDLIB)
|
|
swift_install_in_component(FILES "${wasilibc_modulemap_source}"
|
|
DESTINATION "lib/swift_static/${arch_subdir}"
|
|
COMPONENT sdk-overlay)
|
|
endif()
|
|
|
|
if(SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB)
|
|
add_custom_command_target(
|
|
copy_wasilibc_modulemap_embedded_resource
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "make_directory" ${module_dir} ${module_dir_embedded}
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "copy_if_different"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${wasilibc_modulemap_source}" ${module_dir_embedded}
|
|
OUTPUT "${module_dir_embedded}/${wasilibc_modulemap_source}"
|
|
COMMENT "Copying WASILibc modulemap to resource directories")
|
|
add_dependencies(sdk-overlay ${copy_wasilibc_modulemap_embedded_resource})
|
|
list(APPEND wasilibc_modulemap_target_list ${copy_wasilibc_modulemap_embedded_resource})
|
|
|
|
swift_install_in_component(FILES "${wasilibc_modulemap_source}"
|
|
DESTINATION "lib/swift/embedded/${arch}"
|
|
COMPONENT sdk-overlay)
|
|
endif()
|
|
|
|
set(wasilibc_apinotes_source "SwiftWASILibc.apinotes")
|
|
add_custom_command_target(
|
|
copy_wasilibc_apinotes_resource
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "make_directory" ${SWIFTLIB_DIR}/apinotes ${SWIFTSTATICLIB_DIR}/apinotes
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "copy_if_different"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${wasilibc_apinotes_source}" ${SWIFTLIB_DIR}/apinotes
|
|
COMMAND
|
|
"${CMAKE_COMMAND}" "-E" "copy_if_different"
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/${wasilibc_apinotes_source}" ${SWIFTSTATICLIB_DIR}/apinotes
|
|
OUTPUT
|
|
${SWIFTLIB_DIR}/apinotes/${wasilibc_apinotes_source}
|
|
${SWIFTSTATICLIB_DIR}/apinotes/${wasilibc_apinotes_source}
|
|
COMMENT "Copying WASILibc API notes to resource directories")
|
|
|
|
list(APPEND wasilibc_modulemap_target_list ${copy_wasilibc_apinotes_resource})
|
|
add_dependencies(sdk-overlay ${copy_wasilibc_apinotes_resource})
|
|
swift_install_in_component(FILES "${wasilibc_apinotes_source}"
|
|
DESTINATION "lib/swift/apinotes"
|
|
COMPONENT sdk-overlay)
|
|
if(SWIFT_BUILD_STATIC_STDLIB)
|
|
swift_install_in_component(FILES "${wasilibc_apinotes_source}"
|
|
DESTINATION "lib/swift_static/apinotes"
|
|
COMPONENT sdk-overlay)
|
|
endif()
|
|
|
|
endforeach()
|
|
endif()
|
|
add_custom_target(wasilibc_modulemap DEPENDS ${wasilibc_modulemap_target_list})
|
|
set_property(TARGET wasilibc_modulemap PROPERTY FOLDER "Miscellaneous")
|
|
add_dependencies(sdk-overlay wasilibc_modulemap)
|
|
|
|
if(WINDOWS IN_LIST SWIFT_SDKS)
|
|
swift_install_in_component(FILES
|
|
ucrt.modulemap
|
|
vcruntime.apinotes
|
|
vcruntime.modulemap
|
|
winsdk_um.modulemap
|
|
winsdk_shared.modulemap
|
|
DESTINATION "share"
|
|
COMPONENT sdk-overlay)
|
|
endif()
|
|
|
|
if(SWIFT_SHOULD_BUILD_EMBEDDED_STDLIB)
|
|
add_custom_target(embedded-stdlib-platform)
|
|
add_dependencies(embedded-libraries embedded-stdlib-platform)
|
|
|
|
if(SWIFT_WASI_SYSROOT_PATH)
|
|
set(arch "wasm32")
|
|
set(triple "wasm32-unknown-wasip1")
|
|
|
|
set(SWIFT_SDK_embedded_ARCH_${arch}_MODULE "${triple}")
|
|
set(SWIFT_SDK_embedded_LIB_SUBDIR "embedded")
|
|
set(SWIFT_SDK_embedded_ARCH_${arch}_TRIPLE "${triple}")
|
|
add_swift_target_library_single(
|
|
embedded-stdlib-platform-${triple}
|
|
swiftWASILibc
|
|
ONLY_SWIFTMODULE
|
|
IS_STDLIB IS_FRAGILE
|
|
${swift_platform_sources}
|
|
POSIXError.swift
|
|
|
|
GYB_SOURCES
|
|
${swift_platform_gyb_sources}
|
|
WASILibc.swift.gyb
|
|
|
|
SWIFT_COMPILE_FLAGS
|
|
-enable-experimental-feature Embedded
|
|
-Xfrontend -emit-empty-object-file
|
|
|
|
MODULE_DIR "${CMAKE_BINARY_DIR}/lib/swift/embedded"
|
|
SDK "embedded"
|
|
ARCHITECTURE "${arch}"
|
|
ARCHITECTURE_SUBDIR_NAME "${triple}"
|
|
DEPENDS embedded-stdlib-${triple} wasilibc_modulemap
|
|
INSTALL_IN_COMPONENT sdk-overlay
|
|
)
|
|
add_dependencies(embedded-stdlib-platform embedded-stdlib-platform-${triple})
|
|
endif()
|
|
endif()
|