|
| 1 | +diff --git a/llbuild/lib/BuildSystem/BuildSystem.cpp b/llbuild/lib/BuildSystem/BuildSystem.cpp |
| 2 | +index 297dee34..40df58ca 100644 |
| 3 | +--- a/llbuild/lib/BuildSystem/BuildSystem.cpp |
| 4 | ++++ b/llbuild/lib/BuildSystem/BuildSystem.cpp |
| 5 | +@@ -3269,7 +3269,7 @@ class ArchiveShellCommand : public ExternalCommand { |
| 6 | + if (const char *ar = std::getenv("AR")) |
| 7 | + args.push_back(std::string(ar)); |
| 8 | + else |
| 9 | +- args.push_back("ar"); |
| 10 | ++ args.push_back("llvm-ar"); |
| 11 | + args.push_back("cr"); |
| 12 | + args.push_back(archiveName); |
| 13 | + args.insert(args.end(), archiveInputs.begin(), archiveInputs.end()); |
| 14 | +diff --git a/swift/lib/Driver/UnixToolChains.cpp b/swift/lib/Driver/UnixToolChains.cpp |
| 15 | +index 1dc32acfd83..d01445c2ef5 100644 |
| 16 | +--- a/swift/lib/Driver/UnixToolChains.cpp |
| 17 | ++++ b/swift/lib/Driver/UnixToolChains.cpp |
| 18 | +@@ -384,9 +386,12 @@ toolchains::GenericUnix::constructInvocation(const StaticLinkJobAction &job, |
| 19 | + |
| 20 | + ArgStringList Arguments; |
| 21 | + |
| 22 | ++ const char *AR; |
| 23 | + // Configure the toolchain. |
| 24 | +- const char *AR = |
| 25 | +- context.OI.LTOVariant != OutputInfo::LTOKind::None ? "llvm-ar" : "ar"; |
| 26 | ++ if (getTriple().isAndroid()) |
| 27 | ++ AR = "llvm-ar"; |
| 28 | ++ else |
| 29 | ++ AR = context.OI.LTOVariant != OutputInfo::LTOKind::None ? "llvm-ar" : "ar"; |
| 30 | + Arguments.push_back("crs"); |
| 31 | + |
| 32 | + Arguments.push_back( |
| 33 | +diff --git a/swift-driver/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift b/swift-driver/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift |
| 34 | +index a08e3fa1..11d87b85 100644 |
| 35 | +--- a/swift-driver/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift |
| 36 | ++++ b/swift-driver/Sources/SwiftDriver/Jobs/GenericUnixToolchain+LinkerSupport.swift |
| 37 | +@@ -291,7 +291,12 @@ extension GenericUnixToolchain { |
| 38 | + |
| 39 | + commandLine.append(contentsOf: inputs.filter { $0.type == .object } |
| 40 | + .map { .path($0.file) }) |
| 41 | +- return try getToolPath(.staticLinker(lto)) |
| 42 | ++ if targetTriple.environment == .android { |
| 43 | ++ // Always use the LTO archiver llvm-ar for Android |
| 44 | ++ return try getToolPath(.staticLinker(.llvmFull)) |
| 45 | ++ } else { |
| 46 | ++ return try getToolPath(.staticLinker(lto)) |
| 47 | ++ } |
| 48 | + } |
| 49 | + |
| 50 | + } |
0 commit comments