diff --git a/lib/Basic/LangOptions.cpp b/lib/Basic/LangOptions.cpp index 12b4a9b5b064e..4700781c85c95 100644 --- a/lib/Basic/LangOptions.cpp +++ b/lib/Basic/LangOptions.cpp @@ -246,6 +246,9 @@ std::pair LangOptions::setTarget(llvm::Triple triple) { case llvm::Triple::Haiku: addPlatformConditionValue(PlatformConditionKind::OS, "Haiku"); break; + case llvm::Triple::WASI: + addPlatformConditionValue(PlatformConditionKind::OS, "WASI"); + break; default: UnsupportedOS = true; break; @@ -277,6 +280,12 @@ std::pair LangOptions::setTarget(llvm::Triple triple) { case llvm::Triple::ArchType::systemz: addPlatformConditionValue(PlatformConditionKind::Arch, "s390x"); break; + case llvm::Triple::ArchType::wasm32: + addPlatformConditionValue(PlatformConditionKind::Arch, "wasm32"); + break; + case llvm::Triple::ArchType::wasm64: + addPlatformConditionValue(PlatformConditionKind::Arch, "wasm64"); + break; default: UnsupportedArch = true; } @@ -293,6 +302,8 @@ std::pair LangOptions::setTarget(llvm::Triple triple) { case llvm::Triple::ArchType::ppc64le: case llvm::Triple::ArchType::x86: case llvm::Triple::ArchType::x86_64: + case llvm::Triple::ArchType::wasm32: + case llvm::Triple::ArchType::wasm64: addPlatformConditionValue(PlatformConditionKind::Endianness, "little"); break; case llvm::Triple::ArchType::ppc64: diff --git a/lib/Basic/Platform.cpp b/lib/Basic/Platform.cpp index 10ebfd36c53b5..a18417073a537 100644 --- a/lib/Basic/Platform.cpp +++ b/lib/Basic/Platform.cpp @@ -163,8 +163,6 @@ StringRef swift::getPlatformNameForTriple(const llvm::Triple &triple) { case llvm::Triple::AMDPAL: case llvm::Triple::HermitCore: case llvm::Triple::Hurd: - case llvm::Triple::WASI: - return ""; case llvm::Triple::Darwin: case llvm::Triple::MacOSX: case llvm::Triple::IOS: @@ -191,6 +189,8 @@ StringRef swift::getPlatformNameForTriple(const llvm::Triple &triple) { return "ps4"; case llvm::Triple::Haiku: return "haiku"; + case llvm::Triple::WASI: + return "wasi"; } llvm_unreachable("unsupported OS"); } diff --git a/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp index be139aa09c096..546c36f8ceb48 100644 --- a/lib/Driver/Driver.cpp +++ b/lib/Driver/Driver.cpp @@ -265,6 +265,8 @@ Driver::buildToolChain(const llvm::opt::InputArgList &ArgList) { return llvm::make_unique(*this, target); case llvm::Triple::Haiku: return llvm::make_unique(*this, target); + case llvm::Triple::WASI: + return llvm::make_unique(*this, target); default: Diags.diagnose(SourceLoc(), diag::error_unknown_target, ArgList.getLastArg(options::OPT_target)->getValue()); diff --git a/test/Driver/Inputs/wasm.sdk/usr/lib/swift/wasi/wasm32/Swift.swiftinterface b/test/Driver/Inputs/wasm.sdk/usr/lib/swift/wasi/wasm32/Swift.swiftinterface new file mode 100644 index 0000000000000..ee95517943e35 --- /dev/null +++ b/test/Driver/Inputs/wasm.sdk/usr/lib/swift/wasi/wasm32/Swift.swiftinterface @@ -0,0 +1,3 @@ +// swift-interface-format-version: 1.0 +// swift-module-flags: -target wasm32-unknown-wasi -disable-objc-interop -swift-version 5 -O -module-name Swift -parse-stdlib + diff --git a/test/Driver/Inputs/wasm.sdk/usr/lib/swift/wasi/wasm64/Swift.swiftinterface b/test/Driver/Inputs/wasm.sdk/usr/lib/swift/wasi/wasm64/Swift.swiftinterface new file mode 100644 index 0000000000000..717b6727c4148 --- /dev/null +++ b/test/Driver/Inputs/wasm.sdk/usr/lib/swift/wasi/wasm64/Swift.swiftinterface @@ -0,0 +1,3 @@ +// swift-interface-format-version: 1.0 +// swift-module-flags: -target wasm64-unknown-wasi -disable-objc-interop -swift-version 5 -O -module-name Swift -parse-stdlib + diff --git a/test/Driver/target-triple.swift b/test/Driver/target-triple.swift new file mode 100644 index 0000000000000..99cbf7f512327 --- /dev/null +++ b/test/Driver/target-triple.swift @@ -0,0 +1,2 @@ +// RUN: %swiftc_driver -target wasm32-unknown-wasi -sdk %S/Inputs/wasm.sdk -typecheck %s +// RUN: %swiftc_driver -target wasm64-unknown-wasi -sdk %S/Inputs/wasm.sdk -typecheck %s