Skip to content

Commit 610991d

Browse files
committed
Pass -use-static-resource-dir to frontend when linking statically
1 parent ffe24e5 commit 610991d

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

Sources/SwiftDriver/Jobs/FrontendJobHelpers.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,15 @@ extension Driver {
186186
commandLine.appendPath(
187187
try AbsolutePath(validating: frontendTargetInfo.paths.runtimeResourcePath))
188188

189+
if parsedOptions.hasFlag(positive: .staticExecutable,
190+
negative: .noStaticExecutable,
191+
default: false) ||
192+
parsedOptions.hasFlag(positive: .staticStdlib,
193+
negative: .noStaticStdlib,
194+
default: false) {
195+
commandLine.appendFlag("-use-static-resource-dir")
196+
}
197+
189198
// -g implies -enable-anonymous-context-mangled-names, because the extra
190199
// metadata aids debugging.
191200
if parsedOptions.getLast(in: .g) != nil {

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2495,6 +2495,43 @@ final class SwiftDriverTests: XCTestCase {
24952495
XCTAssertEqual(compileJob.outputs[1].file, .temporary(RelativePath("foo.swiftdoc")))
24962496
}
24972497
}
2498+
2499+
func testUseStaticResourceDir() throws {
2500+
do {
2501+
var driver = try Driver(args: ["swiftc", "-target", "x86_64-unknown-linux", "foo.swift"])
2502+
let plannedJobs = try driver.planBuild()
2503+
let job = plannedJobs[0]
2504+
XCTAssertFalse(job.commandLine.contains(.flag("-use-static-resource-dir")))
2505+
}
2506+
2507+
do {
2508+
var driver = try Driver(args: ["swiftc", "-target", "x86_64-unknown-linux", "-no-static-executable", "foo.swift"])
2509+
let plannedJobs = try driver.planBuild()
2510+
let job = plannedJobs[0]
2511+
XCTAssertFalse(job.commandLine.contains(.flag("-use-static-resource-dir")))
2512+
}
2513+
2514+
do {
2515+
var driver = try Driver(args: ["swiftc", "-target", "x86_64-unknown-linux", "-no-static-stdlib", "foo.swift"])
2516+
let plannedJobs = try driver.planBuild()
2517+
let job = plannedJobs[0]
2518+
XCTAssertFalse(job.commandLine.contains(.flag("-use-static-resource-dir")))
2519+
}
2520+
2521+
do {
2522+
var driver = try Driver(args: ["swiftc", "-target", "x86_64-unknown-linux", "-static-executable", "foo.swift"])
2523+
let plannedJobs = try driver.planBuild()
2524+
let job = plannedJobs[0]
2525+
XCTAssertTrue(job.commandLine.contains(.flag("-use-static-resource-dir")))
2526+
}
2527+
2528+
do {
2529+
var driver = try Driver(args: ["swiftc", "-target", "x86_64-unknown-linux", "-static-stdlib", "foo.swift"])
2530+
let plannedJobs = try driver.planBuild()
2531+
let job = plannedJobs[0]
2532+
XCTAssertTrue(job.commandLine.contains(.flag("-use-static-resource-dir")))
2533+
}
2534+
}
24982535
}
24992536

25002537
func assertString(

0 commit comments

Comments
 (0)