Merge pull request #79343 from kateinoigakukun/pr-fba68e2574f281558869dcf2006c48d8cf894e99

[build] Add initial support for Emscripten SDK
This commit is contained in:
Yuta Saito
2025-02-14 13:32:20 +09:00
committed by GitHub
3 changed files with 20 additions and 0 deletions

View File

@@ -157,6 +157,8 @@ else()
set(SWIFT_HOST_VARIANT_SDK_default "OSX")
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "WASI")
set(SWIFT_HOST_VARIANT_SDK_default "WASI")
elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Emscripten")
set(SWIFT_HOST_VARIANT_SDK_default "EMSCRIPTEN")
else()
message(FATAL_ERROR "Unable to detect SDK for host system: ${CMAKE_SYSTEM_NAME}")
endif()
@@ -1241,6 +1243,15 @@ elseif("${SWIFT_HOST_VARIANT_SDK}" STREQUAL "WASI")
set(SWIFT_PRIMARY_VARIANT_SDK_default "${SWIFT_HOST_VARIANT_SDK}")
set(SWIFT_PRIMARY_VARIANT_ARCH_default "${SWIFT_HOST_VARIANT_ARCH}")
elseif("${SWIFT_HOST_VARIANT_SDK}" STREQUAL "EMSCRIPTEN")
set(SWIFT_HOST_VARIANT "emscripten" CACHE STRING
"Deployment OS for Swift host tools (the compiler) [emscripten]")
configure_sdk_unix("Emscripten" "wasm32")
set(SWIFT_PRIMARY_VARIANT_SDK_default "${SWIFT_HOST_VARIANT_SDK}")
set(SWIFT_PRIMARY_VARIANT_ARCH_default "${SWIFT_HOST_VARIANT_ARCH}")
elseif("${SWIFT_HOST_VARIANT_SDK}" MATCHES "(OSX|IOS*|TVOS*|WATCHOS*|XROS*)")
set(SWIFT_HOST_VARIANT "macosx" CACHE STRING

View File

@@ -106,6 +106,12 @@ function(_add_host_variant_c_compile_link_flags name)
if("${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "MSVC") # clang-cl options
target_compile_options(${name} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>:--target=${SWIFT_HOST_TRIPLE}>)
target_link_options(${name} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>:--target=${SWIFT_HOST_TRIPLE}>)
elseif("${SWIFT_HOST_VARIANT_SDK}" STREQUAL "EMSCRIPTEN") # emcc options
# some older emcc don't understand -target=<triple>
# FIXME: remove this when we no longer support Emscripten < 3.1.44
# https://github.com/emscripten-core/emscripten/pull/19840
target_compile_options(${name} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>:--target=${SWIFT_HOST_TRIPLE}>)
target_link_options(${name} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>:-target=${SWIFT_HOST_TRIPLE}>)
else()
target_compile_options(${name} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>:-target;${SWIFT_HOST_TRIPLE}>)
target_link_options(${name} PRIVATE $<$<COMPILE_LANGUAGE:C,CXX,OBJC,OBJCXX>:-target;${SWIFT_HOST_TRIPLE}>)

View File

@@ -322,6 +322,7 @@ macro(configure_sdk_unix name architectures)
# Static linking is supported on Linux and WASI
if("${prefix}" STREQUAL "LINUX"
OR "${prefix}" STREQUAL "LINUX_STATIC"
OR "${prefix}" STREQUAL "EMSCRIPTEN"
OR "${prefix}" STREQUAL "WASI")
set(SWIFT_SDK_${prefix}_STATIC_LINKING_SUPPORTED TRUE)
else()
@@ -461,6 +462,8 @@ macro(configure_sdk_unix name architectures)
else()
set(SWIFT_SDK_WASI_ARCH_wasm32_TRIPLE "wasm32-unknown-wasi")
endif()
elseif("${prefix}" STREQUAL "EMSCRIPTEN")
set(SWIFT_SDK_EMSCRIPTEN_ARCH_${arch}_TRIPLE "${arch}-unknown-emscripten")
elseif("${prefix}" STREQUAL "LINUX_STATIC")
set(SWIFT_SDK_LINUX_STATIC_ARCH_${arch}_TRIPLE "${arch}-swift-linux-musl")
set(SWIFT_SDK_LINUX_STATIC_ARCH_${arch}_PATH "${SWIFT_MUSL_PATH}/${arch}")