Skip to content

Commit 92507bd

Browse files
Merge pull request #1551 from kateinoigakukun/yt/respect-tools-directory
Passthrough `-tools-directory` as `-B` to clang linker for Wasm target
2 parents 622a351 + d65f264 commit 92507bd

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

Sources/SwiftDriver/Jobs/WebAssemblyToolchain+LinkerSupport.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ extension WebAssemblyToolchain {
7373
if let tool = lookupExecutablePath(filename: "clang", searchPaths: [toolsDir]) {
7474
clangPath = tool
7575
}
76+
77+
// Look for binutils in the toolchain folder.
78+
commandLine.appendFlag("-B")
79+
commandLine.appendPath(toolsDir)
7680
}
7781

7882
guard !parsedOptions.hasArgument(.noStaticStdlib, .noStaticExecutable) else {

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4367,6 +4367,26 @@ final class SwiftDriverTests: XCTestCase {
43674367
XCTAssertEqual(frontendJobs.count, 2)
43684368
XCTAssertEqual(frontendJobs[1].kind, .link)
43694369
XCTAssertEqual(frontendJobs[1].tool.absolutePath!.pathString, ld.pathString)
4370+
4371+
// WASI toolchain
4372+
do {
4373+
try withTemporaryDirectory { resourceDir in
4374+
try localFileSystem.writeFileContents(resourceDir.appending(components: "wasi", "static-executable-args.lnk")) {
4375+
$0.send("garbage")
4376+
}
4377+
var driver = try Driver(args: ["swiftc",
4378+
"-target", "wasm32-unknown-wasi",
4379+
"-resource-dir", resourceDir.pathString,
4380+
"-tools-directory", tmpDir.pathString,
4381+
"foo.swift"],
4382+
env: env)
4383+
let frontendJobs = try driver.planBuild().removingAutolinkExtractJobs()
4384+
XCTAssertEqual(frontendJobs.count, 2)
4385+
XCTAssertTrue(frontendJobs[1].commandLine.contains(subsequence: [
4386+
.flag("-B"), .path(.absolute(tmpDir))
4387+
]))
4388+
}
4389+
}
43704390
}
43714391
}
43724392

0 commit comments

Comments
 (0)