Skip to content

Commit 245aac3

Browse files
authored
Merge pull request #28552 from compnerd/wasm-wasi-toolchain
Driver: add support for WASI/WASM toolchain
2 parents 57f7f07 + 23b1a6b commit 245aac3

File tree

5 files changed

+30
-2
lines changed

5 files changed

+30
-2
lines changed

lib/Basic/Platform.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,6 @@ StringRef swift::getPlatformNameForTriple(const llvm::Triple &triple) {
163163
case llvm::Triple::AMDPAL:
164164
case llvm::Triple::HermitCore:
165165
case llvm::Triple::Hurd:
166-
case llvm::Triple::WASI:
167166
return "";
168167
case llvm::Triple::Darwin:
169168
case llvm::Triple::MacOSX:
@@ -191,6 +190,8 @@ StringRef swift::getPlatformNameForTriple(const llvm::Triple &triple) {
191190
return "ps4";
192191
case llvm::Triple::Haiku:
193192
return "haiku";
193+
case llvm::Triple::WASI:
194+
return "wasi";
194195
}
195196
llvm_unreachable("unsupported OS");
196197
}

lib/Driver/Driver.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,8 @@ Driver::buildToolChain(const llvm::opt::InputArgList &ArgList) {
265265
return llvm::make_unique<toolchains::Windows>(*this, target);
266266
case llvm::Triple::Haiku:
267267
return llvm::make_unique<toolchains::GenericUnix>(*this, target);
268+
case llvm::Triple::WASI:
269+
return llvm::make_unique<toolchains::GenericUnix>(*this, target);
268270
default:
269271
Diags.diagnose(SourceLoc(), diag::error_unknown_target,
270272
ArgList.getLastArg(options::OPT_target)->getValue());

test/Driver/linker.swift

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@
5656
// RUN: %swiftc_driver -driver-print-jobs -target x86_64-unknown-windows-msvc -Xclang-linker -foo -Xclang-linker foopath %s 2>&1 > %t.windows.txt
5757
// RUN: %FileCheck -check-prefix WINDOWS-clang-linker-order %s < %t.windows.txt
5858

59+
// RUN: %swiftc_driver -driver-print-jobs -target wasm32-unknown-wasi -Xclang-linker -flag -Xclang-linker arg %s 2>&1 | %FileCheck -check-prefix WASI-clang-linker-order %s
60+
5961
// RUN: %swiftc_driver -driver-print-jobs -target x86_64-apple-macosx10.9 -g %s | %FileCheck -check-prefix DEBUG %s
6062

6163
// RUN: %empty-directory(%t)
@@ -83,6 +85,7 @@
8385
// RUN: %swiftc_driver -driver-print-jobs -target x86_64-unknown-linux-gnu -emit-library %s -module-name LINKER | %FileCheck -check-prefix INFERRED_NAME_LINUX %s
8486
// RUN: %swiftc_driver -driver-print-jobs -target x86_64-unknown-windows-cygnus -emit-library %s -module-name LINKER | %FileCheck -check-prefix INFERRED_NAME_WINDOWS %s
8587
// RUN: %swiftc_driver -driver-print-jobs -target x86_64-unknown-windows-msvc -emit-library %s -module-name LINKER | %FileCheck -check-prefix INFERRED_NAME_WINDOWS %s
88+
// RUN: %swiftc_driver -driver-print-jobs -target wasm32-unknown-wasi -emit-library %s -module-name LINKER | %FileCheck -check-prefix INFERRED_NAME_WASI %s
8689

8790
// Here we specify an output file name using '-o'. For ease of writing these
8891
// tests, we happen to specify the same file name as is inferred in the
@@ -322,6 +325,13 @@
322325
// WINDOWS-clang-linker-order: -foo foopath
323326
// WINDOWS-clang-linker-order: -o {{.*}}
324327

328+
// WASI-clang-linker-order: swift
329+
// WASI-clang-linker-order: -o [[OBJECTFILE:.*]]
330+
331+
// WASI-clang-linker-order: clang{{"? }}
332+
// WASI-clang-linker-order: -flag arg
333+
// WASI-clang-linker-order: -o {{.*}}
334+
325335
// DEBUG: bin{{/|\\\\}}swift{{c?(\.EXE)?}}
326336
// DEBUG-NEXT: bin{{/|\\\\}}swift{{c?(\.EXE)?}}
327337
// DEBUG-NEXT: {{(bin/)?}}ld{{"? }}
@@ -362,7 +372,7 @@
362372
// INFERRED_NAME_DARWIN: -o libLINKER.dylib
363373
// INFERRED_NAME_LINUX: -o libLINKER.so
364374
// INFERRED_NAME_WINDOWS: -o LINKER.dll
365-
375+
// INFERRED_NAME_WASI: -o libLINKER.so
366376

367377
// Test ld detection. We use hard links to make sure
368378
// the Swift driver really thinks it's been moved.

test/Driver/profiling.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020
// RUN: %swiftc_driver -driver-print-jobs -profile-generate -target x86_64-unknown-linux-gnu %s | %FileCheck -check-prefix=CHECK -check-prefix=LINUX %s
2121
// RUN: %swiftc_driver -driver-print-jobs -profile-generate -target x86_64-unknown-windows-msvc %s | %FileCheck -check-prefix=CHECK -check-prefix=WINDOWS %s
2222

23+
// RUN: %swiftc_driver -driver-print-jobs -profile-generate -target wasm32-unknown-wasi %s | %FileCheck -check-prefix CHECK -check-prefix WASI %s
24+
2325
// CHECK: swift
2426
// CHECK: -profile-generate
2527

@@ -52,6 +54,10 @@
5254
// WINDOWS: lib{{(\\\\|/)}}swift{{(\\\\|/)}}clang{{(\\\\|/)}}lib{{(\\\\|/)}}windows{{(\\\\|/)}}clang_rt.profile-x86_64.lib
5355
// WINDOWS: -u__llvm_profile_runtime
5456

57+
// WASI: clang{{(\.exe)?"? }}
58+
// WASI: lib{{(\\\\|/)}}swift{{(\\\\|/)}}clang{{(\\\\|/)}}lib{{(\\\\|/)}}wasi{{(\\\\|/)}}libclang_rt.profile-wasm32.a
59+
// WASI: -u__llvm_profile_runtime
60+
5561
// RUN: not %swiftc_driver -driver-print-jobs -profile-generate -profile-use=/dev/null %s 2>&1 | %FileCheck -check-prefix=MIX_GEN_USE %s
5662
// MIX_GEN_USE: conflicting options '-profile-generate' and '-profile-use'
5763

test/Driver/sdk.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// RUN: %swiftc_driver -driver-print-jobs -target x86_64-unknown-linux-gnu -g -sdk %S/../Inputs/clang-importer-sdk %s 2>&1 | %FileCheck %s --check-prefix LINUX
33
// RUN: %swiftc_driver -driver-print-jobs -target x86_64-unknown-freebsd -g -sdk %S/../Inputs/clang-importer-sdk %s 2>&1 | %FileCheck %s --check-prefix FREEBSD
44
// RUN: %swiftc_driver -driver-print-jobs -target x86_64-unknown-windows-msvc -g -sdk %S/../Inputs/clang-importer-sdk %s 2>&1 | %FileCheck %s --check-prefix WINDOWS
5+
// RUN: %swiftc_driver -driver-print-jobs -target wasm32-unknown-wasi -g -sdk %S/../Inputs/clang-importer-sdk %s 2>&1 | %FileCheck %s --check-prefix WASI
56

67
// RUN: env SDKROOT=%S/../Inputs/clang-importer-sdk %swiftc_driver_plain -target x86_64-apple-macosx10.9 -g -driver-print-jobs %s 2>&1 | %FileCheck %s --check-prefix OSX
78
// RUN: env SDKROOT=%S/../Inputs/clang-importer-sdk %swiftc_driver_plain -target x86_64-unknown-linux-gnu -g -driver-print-jobs %s 2>&1 | %FileCheck %s --check-prefix LINUX
@@ -44,6 +45,14 @@
4445
// WINDOWS: {{.*}}Inputs/clang-importer-sdk{{.*}}swiftrt.o
4546
// WINDOWS: {{-I}} {{.*}}/Inputs/clang-importer-sdk
4647

48+
// WASI-NOT: warning: no such SDK:
49+
// WASI: bin{{/|\\\\}}swift
50+
// WASI: Driver{{/|\\\\}}sdk.swift
51+
// WASI: -sdk {{.*}}/Inputs/clang-importer-sdk
52+
// WASI-NEXT: bin{{/|\\\\}}swift
53+
// WASI: -sdk {{.*}}/Inputs/clang-importer-sdk
54+
// WASI: {{-syslibroot|--sysroot}} {{.*}}/Inputs/clang-importer-sdk
55+
4756
// RUN: %swift_driver -driver-print-jobs -repl -sdk %S/Inputs/nonexistent-sdk 2>&1 | %FileCheck %s --check-prefix=SDKWARNING
4857
// RUN: %swift_driver -driver-print-jobs -sdk %S/Inputs/nonexistent-sdk 2>&1 | %FileCheck %s --check-prefix=SDKWARNING
4958
// RUN: env SDKROOT=%S/Inputs/nonexistent-sdk %swift_driver_plain -driver-print-jobs -repl 2>&1 | %FileCheck %s --check-prefix=SDKWARNING

0 commit comments

Comments
 (0)