diff --git a/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift b/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift index ae074b1c3..fedbe2119 100644 --- a/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift +++ b/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift @@ -345,7 +345,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) @@ -353,12 +353,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 b1558fe12..48960b908 100644 --- a/Sources/SwiftDriver/Toolchains/GenericUnixToolchain.swift +++ b/Sources/SwiftDriver/Toolchains/GenericUnixToolchain.swift @@ -101,10 +101,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 1ea286c62..363aa5a14 100644 --- a/Tests/SwiftDriverTests/SwiftDriverTests.swift +++ b/Tests/SwiftDriverTests/SwiftDriverTests.swift @@ -2685,7 +2685,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"))