diff --git a/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift b/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift index e130803ff..79b2d10c0 100644 --- a/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift +++ b/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift @@ -328,7 +328,7 @@ extension GenericUnixToolchain { commandLine.appendPath(outputFile) return try resolvedTool(clangTool, pathOverride: clangPath) case .staticLibrary: - // We're using 'ar' as a linker + // We're using 'llvm-ar' as a linker commandLine.appendFlag("crs") commandLine.appendPath(outputFile) @@ -336,12 +336,7 @@ extension GenericUnixToolchain { lto == nil ? $0.type == .object : $0.type == .object || $0.type == .llvmBitcode }.map { .path($0.file) }) - if targetTriple.environment == .android { - // Always use the LTO archiver llvm-ar for Android - return try resolvedTool(.staticLinker(.llvmFull)) - } else { - return try resolvedTool(.staticLinker(lto)) - } + return try resolvedTool(.staticLinker(.llvmFull)) } } diff --git a/Sources/SwiftDriver/Toolchains/GenericUnixToolchain.swift b/Sources/SwiftDriver/Toolchains/GenericUnixToolchain.swift index 11efe7c3e..a8093b36e 100644 --- a/Sources/SwiftDriver/Toolchains/GenericUnixToolchain.swift +++ b/Sources/SwiftDriver/Toolchains/GenericUnixToolchain.swift @@ -94,10 +94,7 @@ public final class GenericUnixToolchain: Toolchain { switch tool { case .swiftCompiler: return try lookup(executable: "swift-frontend") - case .staticLinker(nil): - return try lookup(executable: "ar") - case .staticLinker(.llvmFull), - .staticLinker(.llvmThin): + case .staticLinker: return try lookup(executable: "llvm-ar") case .dynamicLinker: // FIXME: This needs to look in the tools_directory first. diff --git a/Tests/SwiftDriverTests/SwiftDriverTests.swift b/Tests/SwiftDriverTests/SwiftDriverTests.swift index 1ae33d985..cb075a731 100644 --- a/Tests/SwiftDriverTests/SwiftDriverTests.swift +++ b/Tests/SwiftDriverTests/SwiftDriverTests.swift @@ -2356,7 +2356,8 @@ final class SwiftDriverTests: XCTestCase { let linkJob = plannedJobs[3] let cmd = linkJob.commandLine - // we'd expect "ar crs libTest.a foo.o bar.o" + // we'd expect "llvm-ar crs libTest.a foo.o bar.o" + XCTAssertTrue(linkJob.tool.name.contains("llvm-ar")) XCTAssertTrue(cmd.contains(.flag("crs"))) XCTAssertTrue(commandContainsTemporaryPath(cmd, "foo.o")) XCTAssertTrue(commandContainsTemporaryPath(cmd, "bar.o"))