Skip to content

Commit 2160696

Browse files
committed
Driver: do not create a dSYM bundle for static archives
Creation of a dSYM bundle for a static library is not supported. Do not create a job to create a dSYM bundle for a static library.
1 parent 730b28c commit 2160696

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

Sources/SwiftDriver/Jobs/Planning.swift

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -472,8 +472,18 @@ extension Driver {
472472

473473
let linkJ = try linkJob(inputs: linkerInputs)
474474
addJob(linkJ)
475-
guard targetTriple.isDarwin, debugInfo.level != nil
476-
else {return }
475+
guard targetTriple.isDarwin
476+
else { return }
477+
478+
switch linkerOutputType {
479+
case .none, .some(.staticLibrary):
480+
// Cannot generate a dSYM bundle for a non-image target.
481+
return
482+
483+
case .some(.dynamicLibrary), .some(.executable):
484+
guard debugInfo.level != nil
485+
else { return }
486+
}
477487

478488
let dsymJob = try generateDSYMJob(inputs: linkJ.outputs)
479489
addJob(dsymJob)

Tests/SwiftDriverTests/SwiftDriverTests.swift

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3066,6 +3066,24 @@ final class SwiftDriverTests: XCTestCase {
30663066
XCTAssertFalse(plannedJobs.contains { $0.kind == .generateDSYM })
30673067
}
30683068

3069+
do {
3070+
var env = ProcessEnv.vars
3071+
// As per Unix conventions, /var/empty is expected to exist and be empty.
3072+
// This gives us a non-existent path that we can use for libtool which
3073+
// allows us to run this this on non-Darwin platforms.
3074+
env["SWIFT_DRIVER_LIBTOOL_EXEC"] = "/var/empty/libtool"
3075+
3076+
// No dSYM generation (-g -emit-library -static)
3077+
var driver = try Driver(args: [
3078+
"swiftc", "-target", "x86_64-apple-macosx10.15", "-g", "-emit-library",
3079+
"-static", "-o", "library.a", "library.swift"
3080+
])
3081+
let jobs = try driver.planBuild()
3082+
3083+
XCTAssertEqual(jobs.count, 3)
3084+
XCTAssertFalse(jobs.contains { $0.kind == .generateDSYM })
3085+
}
3086+
30693087
do {
30703088
// dSYM generation (-g)
30713089
var driver = try Driver(args: commonArgs + ["-g"])

0 commit comments

Comments
 (0)