Skip to content

Commit a21ea2a

Browse files
committed
swift: switch from ar to llvm-ar for static libraries
1 parent 7a89f6c commit a21ea2a

File tree

2 files changed

+51
-1
lines changed

2 files changed

+51
-1
lines changed

packages/swift/build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ TERMUX_PKG_DESCRIPTION="Swift is a high-performance system programming language"
33
TERMUX_PKG_LICENSE="Apache-2.0, NCSA"
44
TERMUX_PKG_MAINTAINER="@buttaface"
55
TERMUX_PKG_VERSION=5.5.1
6-
TERMUX_PKG_REVISION=1
6+
TERMUX_PKG_REVISION=2
77
SWIFT_RELEASE="RELEASE"
88
TERMUX_PKG_SRCURL=https://github.com/apple/swift/archive/swift-$TERMUX_PKG_VERSION-$SWIFT_RELEASE.tar.gz
99
TERMUX_PKG_SHA256=b4092b2584919f718a55ad0ed460fbc48e84ec979a9397ce0adce307aba41ac9

packages/swift/swift-llvm-ar.patch

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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

Comments
 (0)