Skip to content

Commit b04be70

Browse files
Merge pull request #1832 from swiftwasm/katei/wasi-module-main
WASILibc module for main stream
2 parents 12f3bae + 5c1db9a commit b04be70

27 files changed

+436
-9
lines changed

lib/ClangImporter/ClangImporter.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,41 @@ getGlibcModuleMapPath(SearchPathOptions& Opts, llvm::Triple triple,
461461
return None;
462462
}
463463

464+
static Optional<StringRef>
465+
getWasiLibcModuleMapPath(SearchPathOptions& Opts, llvm::Triple triple,
466+
SmallVectorImpl<char> &buffer) {
467+
StringRef platform = swift::getPlatformNameForTriple(triple);
468+
StringRef arch = swift::getMajorArchitectureName(triple);
469+
470+
if (!Opts.SDKPath.empty()) {
471+
buffer.clear();
472+
buffer.append(Opts.SDKPath.begin(), Opts.SDKPath.end());
473+
llvm::sys::path::append(buffer, "usr", "lib", "swift");
474+
llvm::sys::path::append(buffer, platform, arch, "wasi.modulemap");
475+
476+
// Only specify the module map if that file actually exists. It may not;
477+
// for example in the case that `swiftc -target x86_64-unknown-linux-gnu
478+
// -emit-ir` is invoked using a Swift compiler not built for Linux targets.
479+
if (llvm::sys::fs::exists(buffer))
480+
return StringRef(buffer.data(), buffer.size());
481+
}
482+
483+
if (!Opts.RuntimeResourcePath.empty()) {
484+
buffer.clear();
485+
buffer.append(Opts.RuntimeResourcePath.begin(),
486+
Opts.RuntimeResourcePath.end());
487+
llvm::sys::path::append(buffer, platform, arch, "wasi.modulemap");
488+
489+
// Only specify the module map if that file actually exists. It may not;
490+
// for example in the case that `swiftc -target x86_64-unknown-linux-gnu
491+
// -emit-ir` is invoked using a Swift compiler not built for Linux targets.
492+
if (llvm::sys::fs::exists(buffer))
493+
return StringRef(buffer.data(), buffer.size());
494+
}
495+
496+
return None;
497+
}
498+
464499
void
465500
importer::getNormalInvocationArguments(
466501
std::vector<std::string> &invocationArgStrs,
@@ -604,6 +639,10 @@ importer::getNormalInvocationArguments(
604639

605640
if (triple.isOSWASI()) {
606641
invocationArgStrs.insert(invocationArgStrs.end(), {"-D_WASI_EMULATED_MMAN"});
642+
SmallString<128> buffer;
643+
if (auto path = getWasiLibcModuleMapPath(searchPathOpts, triple, buffer)) {
644+
invocationArgStrs.push_back((Twine("-fmodule-map-file=") + *path).str());
645+
}
607646
}
608647

609648
if (triple.isOSWindows()) {

stdlib/private/StdlibUnittest/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ add_swift_target_library(swiftStdlibUnittest ${SWIFT_STDLIB_LIBRARY_BUILD_TYPES}
4141
SWIFT_MODULE_DEPENDS_OPENBSD Glibc SwiftPrivateThreadExtras
4242
SWIFT_MODULE_DEPENDS_CYGWIN Glibc SwiftPrivateThreadExtras
4343
SWIFT_MODULE_DEPENDS_HAIKU Glibc SwiftPrivateThreadExtras
44-
SWIFT_MODULE_DEPENDS_WASI Glibc
44+
SWIFT_MODULE_DEPENDS_WASI WASILibc
4545
SWIFT_MODULE_DEPENDS_WINDOWS MSVCRT WinSDK SwiftPrivateThreadExtras
4646
SWIFT_COMPILE_FLAGS ${swift_stdlib_unittest_compile_flags} ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
4747
INSTALL_IN_COMPONENT stdlib-experimental

stdlib/private/StdlibUnittest/RaceTest.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ import SwiftPrivateThreadExtras
4545
import Darwin
4646
#elseif canImport(Glibc)
4747
import Glibc
48+
#elseif os(WASI)
49+
import WASILibc
4850
#elseif os(Windows)
4951
import MSVCRT
5052
import WinSDK

stdlib/private/StdlibUnittest/StdlibCoreExtras.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import SwiftPrivateLibcExtras
1616
import Darwin
1717
#elseif canImport(Glibc)
1818
import Glibc
19+
#elseif os(WASI)
20+
import WASILibc
1921
#elseif os(Windows)
2022
import MSVCRT
2123
#endif

stdlib/private/StdlibUnittest/StdlibUnittest.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ import Foundation
2222
import Darwin
2323
#elseif canImport(Glibc)
2424
import Glibc
25+
#elseif os(WASI)
26+
import WASILibc
2527
#elseif os(Windows)
2628
import MSVCRT
2729
import WinSDK

stdlib/private/StdlibUnittest/SymbolLookup.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import Darwin
1515
#elseif canImport(Glibc)
1616
import Glibc
17+
#elseif os(WASI)
18+
import WASILibc
1719
#elseif os(Windows)
1820
import MSVCRT
1921
import WinSDK

stdlib/private/SwiftPrivateLibcExtras/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ add_swift_target_library(swiftSwiftPrivateLibcExtras ${SWIFT_STDLIB_LIBRARY_BUIL
1818
SWIFT_MODULE_DEPENDS_OPENBSD Glibc
1919
SWIFT_MODULE_DEPENDS_CYGWIN Glibc
2020
SWIFT_MODULE_DEPENDS_HAIKU Glibc
21-
SWIFT_MODULE_DEPENDS_WASI Glibc
21+
SWIFT_MODULE_DEPENDS_WASI WASILibc
2222
SWIFT_MODULE_DEPENDS_WINDOWS MSVCRT WinSDK
2323
INSTALL_IN_COMPONENT stdlib-experimental
2424
DARWIN_INSTALL_NAME_DIR "${SWIFT_DARWIN_STDLIB_PRIVATE_INSTALL_NAME_DIR}")

stdlib/private/SwiftPrivateLibcExtras/Subprocess.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import SwiftPrivate
1515
import Darwin
1616
#elseif canImport(Glibc)
1717
import Glibc
18+
#elseif os(WASI)
19+
import WASILibc
1820
#elseif os(Windows)
1921
import MSVCRT
2022
import WinSDK

stdlib/private/SwiftPrivateLibcExtras/SwiftPrivateLibcExtras.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import SwiftPrivate
1515
import Darwin
1616
#elseif canImport(Glibc)
1717
import Glibc
18+
#elseif os(WASI)
19+
import WASILibc
1820
#elseif os(Windows)
1921
import MSVCRT
2022
#endif

stdlib/private/SwiftPrivateThreadExtras/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ add_swift_target_library(swiftSwiftPrivateThreadExtras ${SWIFT_STDLIB_LIBRARY_BU
1515
SWIFT_MODULE_DEPENDS_OPENBSD Glibc
1616
SWIFT_MODULE_DEPENDS_CYGWIN Glibc
1717
SWIFT_MODULE_DEPENDS_HAIKU Glibc
18-
SWIFT_MODULE_DEPENDS_WASI Glibc
18+
SWIFT_MODULE_DEPENDS_WASI WASILibc
1919
SWIFT_MODULE_DEPENDS_WINDOWS MSVCRT WinSDK
2020
SWIFT_COMPILE_FLAGS ${SWIFT_STANDARD_LIBRARY_SWIFT_FLAGS}
2121
TARGET_SDKS ALL_APPLE_PLATFORMS CYGWIN FREEBSD OPENBSD HAIKU LINUX WINDOWS ANDROID

0 commit comments

Comments
 (0)