Skip to content

Commit 68cd387

Browse files
committed
Unix: Use llvm-ar by default
Now that llvm-ar is installed by default in the toolchain, swiftlang/swift#62510, and a recent SPM change requires there to be an archiver in the toolchain/PATH, swiftlang/swift-package-manager#5761, use that bundled llvm-ar for all Unix platforms.
1 parent c283179 commit 68cd387

File tree

3 files changed

+5
-12
lines changed

3 files changed

+5
-12
lines changed

Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift

+2-7
Original file line numberDiff line numberDiff line change
@@ -334,20 +334,15 @@ extension GenericUnixToolchain {
334334
commandLine.appendPath(outputFile)
335335
return try resolvedTool(clangTool, pathOverride: clangPath)
336336
case .staticLibrary:
337-
// We're using 'ar' as a linker
337+
// We're using 'llvm-ar' as a linker
338338
commandLine.appendFlag("crs")
339339
commandLine.appendPath(outputFile)
340340

341341
commandLine.append(contentsOf: inputs.lazy.filter {
342342
lto == nil ? $0.type == .object
343343
: $0.type == .object || $0.type == .llvmBitcode
344344
}.map { .path($0.file) })
345-
if targetTriple.environment == .android {
346-
// Always use the LTO archiver llvm-ar for Android
347-
return try resolvedTool(.staticLinker(.llvmFull))
348-
} else {
349-
return try resolvedTool(.staticLinker(lto))
350-
}
345+
return try resolvedTool(.staticLinker(.llvmFull))
351346
}
352347

353348
}

Sources/SwiftDriver/Toolchains/GenericUnixToolchain.swift

+1-4
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,7 @@ public final class GenericUnixToolchain: Toolchain {
6666
switch tool {
6767
case .swiftCompiler:
6868
return try lookup(executable: "swift-frontend")
69-
case .staticLinker(nil):
70-
return try lookup(executable: "ar")
71-
case .staticLinker(.llvmFull),
72-
.staticLinker(.llvmThin):
69+
case .staticLinker:
7370
return try lookup(executable: "llvm-ar")
7471
case .dynamicLinker:
7572
// FIXME: This needs to look in the tools_directory first.

Tests/SwiftDriverTests/SwiftDriverTests.swift

+2-1
Original file line numberDiff line numberDiff line change
@@ -2151,7 +2151,8 @@ final class SwiftDriverTests: XCTestCase {
21512151

21522152
let linkJob = plannedJobs[3]
21532153
let cmd = linkJob.commandLine
2154-
// we'd expect "ar crs libTest.a foo.o bar.o"
2154+
// we'd expect "llvm-ar crs libTest.a foo.o bar.o"
2155+
XCTAssertTrue(linkJob.tool.name.contains("llvm-ar"))
21552156
XCTAssertTrue(cmd.contains(.flag("crs")))
21562157
XCTAssertTrue(commandContainsTemporaryPath(cmd, "foo.o"))
21572158
XCTAssertTrue(commandContainsTemporaryPath(cmd, "bar.o"))

0 commit comments

Comments
 (0)