Skip to content

Commit eae8d02

Browse files
authored
Merge pull request #26299 from compnerd/android-linker-triple
Driver: normalise linker triple on all android targets
2 parents 6818eef + 551a2a5 commit eae8d02

File tree

3 files changed

+27
-7
lines changed

3 files changed

+27
-7
lines changed

lib/Driver/UnixToolChains.cpp

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -362,12 +362,22 @@ toolchains::GenericUnix::constructInvocation(const StaticLinkJobAction &job,
362362

363363
std::string toolchains::Android::getTargetForLinker() const {
364364
const llvm::Triple &T = getTriple();
365-
if (T.getArch() == llvm::Triple::arm &&
366-
T.getSubArch() == llvm::Triple::SubArchType::ARMSubArch_v7)
367-
// Explicitly set the linker target to "androideabi", as opposed to the
368-
// llvm::Triple representation of "armv7-none-linux-android".
369-
return "armv7-none-linux-androideabi";
370-
return T.str();
365+
switch (T.getArch()) {
366+
default:
367+
// FIXME: we should just abort on an unsupported target
368+
return T.str();
369+
case llvm::Triple::arm:
370+
case llvm::Triple::thumb:
371+
// Current Android NDK versions only support ARMv7+. Always assume ARMv7+
372+
// for the arm/thumb target.
373+
return "armv7-unknown-linux-androideabi";
374+
case llvm::Triple::aarch64:
375+
return "aarch64-unknown-linux-android";
376+
case llvm::Triple::x86:
377+
return "i686-unknown-linux-android";
378+
case llvm::Triple::x86_64:
379+
return "x86_64-unknown-linux-android";
380+
}
371381
}
372382

373383
bool toolchains::Android::shouldProvideRPathToLinker() const { return false; }

test/Driver/android-link.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// RUN: %empty-directory(%t)
2+
// RUN: %swift_driver_plain --driver-mode=swiftc -target armv7-none-linux-androideabihf -emit-executable %s -### 2>&1 | %FileCheck %s -check-prefix CHECK-ARMv7
3+
// CHECK-ARMv7: clang{{(.exe)?"?}} -target armv7-unknown-linux-androideabi
4+
5+
// RUN: %swift_driver_plain --driver-mode=swiftc -target aarch64-mone-linux-androideabi -emit-executable %s -### 2>&1 | %FileCheck %s -check-prefix CHECK-ARM64
6+
// CHECK-ARM64: clang{{(.exe)?"?}} -target aarch64-unknown-linux-android
7+
8+
// RUN: %swift_driver_plain --driver-mode=swiftc -target x86_64-none-linux-androideabi -emit-executable %s -### 2>&1 | %FileCheck %s -check-prefix CHECK-X64
9+
// CHECK-X64: clang{{(.exe)?"?}} -target x86_64-unknown-linux-android
10+

test/Driver/linker.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@
219219
// ANDROID-armv7-DAG: [[OBJECTFILE]]
220220
// ANDROID-armv7-DAG: -lswiftCore
221221
// ANDROID-armv7-DAG: -L [[STDLIB_PATH:[^ ]+(/|\\\\)lib(/|\\\\)swift]]
222-
// ANDROID-armv7-DAG: -target armv7-none-linux-androideabi
222+
// ANDROID-armv7-DAG: -target armv7-unknown-linux-androideabi
223223
// ANDROID-armv7-DAG: -F foo -iframework car -F cdr
224224
// ANDROID-armv7-DAG: -framework bar
225225
// ANDROID-armv7-DAG: -L baz

0 commit comments

Comments
 (0)