[PATCH] D71848: Allow the discovery of Android NDK's triple-prefixed binaries.

2020-01-13 Thread Brian Ledger via Phabricator via cfe-commits
brianpl updated this revision to Diff 237691.
brianpl added a comment.

- Search for tools prefixed with GNU target triples.
- Merge branch 'master' of https://github.com/llvm/llvm-project


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D71848/new/

https://reviews.llvm.org/D71848

Files:
  clang/include/clang/Driver/ToolChain.h
  clang/lib/Driver/Driver.cpp
  clang/lib/Driver/ToolChains/Gnu.cpp
  clang/lib/Driver/ToolChains/Linux.cpp
  clang/test/Driver/android-triple-version.c

Index: clang/test/Driver/android-triple-version.c
===
--- /dev/null
+++ clang/test/Driver/android-triple-version.c
@@ -0,0 +1,172 @@
+// Android's target triples can contain a version number in the environment
+// field (e.g. arm-linux-androideabi9).
+// Make sure that any version is stripped when finding toolchain binaries.
+
+// Ensure no execute permissions on .../bin/{target-triple}/ld.
+// RUN: chmod -x %S/Inputs/basic_android_ndk_tree/arm-linux-androideabi/bin/ld
+// RUN: chmod -x %S/Inputs/basic_android_ndk_tree/aarch64-linux-android/bin/ld
+// RUN: chmod -x %S/Inputs/basic_android_ndk_tree/i686-linux-android/bin/ld
+// RUN: chmod -x %S/Inputs/basic_android_ndk_tree/mipsel-linux-android/bin/ld
+
+// Ensure execute permissions on .../bin/{target-triple}-ld
+// RUN: chmod +x  %S/Inputs/basic_android_ndk_tree/bin/arm-linux-androideabi-ld
+// RUN: chmod +x  %S/Inputs/basic_android_ndk_tree/bin/aarch64-linux-android-ld
+// RUN: chmod +x %S/Inputs/basic_android_ndk_tree/bin/i686-linux-android-ld
+// RUN: chmod +x %S/Inputs/basic_android_ndk_tree/bin/mipsel-linux-android-ld
+
+// Link clang into the mock NDK.
+// RUN: rm -f %S/Inputs/basic_android_ndk_tree/bin/clang
+// RUN: ln -s %clang %S/Inputs/basic_android_ndk_tree/bin/clang
+
+// Test target arm-linux-androideabi
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %S/Inputs/basic_android_ndk_tree/bin/clang \
+// RUN: -### -target arm-linux-androideabi %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target arm-unknown-linux-androideabi
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %S/Inputs/basic_android_ndk_tree/bin/clang \
+// RUN: -### -target arm-unknown-linux-androideabi %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target arm-linux-androideabi14
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %S/Inputs/basic_android_ndk_tree/bin/clang \
+// RUN: -### -target arm-linux-androideabi14 %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target arm-linux-androideabi29
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %S/Inputs/basic_android_ndk_tree/bin/clang \
+// RUN: -### -target arm-linux-androideabi29 %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target arm-unknown-linux-androideabi14
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %S/Inputs/basic_android_ndk_tree/bin/clang \
+// RUN: -### -target arm-unknown-linux-androideabi14 %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target arm-unknown-linux-androideabi29
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %S/Inputs/basic_android_ndk_tree/bin/clang \
+// RUN: -### -target arm-unknown-linux-androideabi29 %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target aarch64-linux-android
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %S/Inputs/basic_android_ndk_tree/bin/clang \
+// RUN: -### -target aarch64-linux-android %s |& \
+// RUN: grep aarch64-linux-android-ld
+
+// Test target aarch64-unknown-linux-android
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %S/Inputs/basic_android_ndk_tree/bin/clang \
+// RUN: -### -target aarch64-unknown-linux-android %s |& \
+// RUN: grep aarch64-linux-android-ld
+
+// Test target aarch64-linux-android14
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %S/Inputs/basic_android_ndk_tree/bin/clang \
+// RUN: -### -target aarch64-linux-android14 %s |& \
+// RUN: grep aarch64-linux-android-ld
+
+// Test target aarch64-linux-android29
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %S/Inputs/basic_android_ndk_tree/bin/clang \
+// RUN: -### -target aarch64-linux-android29 %s |& \
+// RUN: grep aarch64-linux-android-ld
+
+// Test target aarch64-unknown-linux-android14
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %S/Inputs/basic_android_ndk_tree/bin/clang \
+// RUN: -### -target aarch64-unknown-linux-android14 %s |& \
+// RUN: grep aarch64-linux-android-ld
+
+// Test target aarch64-unknown-linux-android29
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %S/Inputs/basic_android_ndk_tree/bin/clang \
+// RUN: -### -target aarch64-unknown-linux-android29 %s |& \
+// RUN: grep aarch64-linux-android-ld
+

[PATCH] D71848: Allow the discovery of Android NDK's triple-prefixed binaries.

2020-01-06 Thread Brian Ledger via Phabricator via cfe-commits
brianpl added a comment.

> Just to clarify, this is needed for the triple-prefixed tools, but the 
> triple-specific directory worked fine before this patch? If I'm understanding 
> that correctly then LGTM, otherwise I'm confused as to why I haven't seen 
> this problem before.

Yes, that's right. Without the patch, Clang will overlook the triple-prefixed 
tools, but it will correctly find tools in the triple-specific directory either 
way.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D71848/new/

https://reviews.llvm.org/D71848



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D71848: Allow the discovery of Android NDK's triple-prefixed binaries.

2019-12-23 Thread Brian Ledger via Phabricator via cfe-commits
brianpl created this revision.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
brianpl added a reviewer: jyknight.
brianpl updated this revision to Diff 235182.
brianpl added a comment.

Fix a typo.


Currently, tool discovery checks for a tool with its target triple as a
prefix. Unfortunately, the triple it uses is canonicalized, and may
contain the Android platform numbers as a suffix. This prevents matching
of the binaries in the LLVM bin directory of the Android NDK.

This CL adds checks during discovery that will match the canonical
Android NDK triples. The matcher will work with vendor "unknown", and at
any level platform.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D71848

Files:
  clang/lib/Driver/Driver.cpp
  clang/test/Driver/android-triple-version.c

Index: clang/test/Driver/android-triple-version.c
===
--- /dev/null
+++ clang/test/Driver/android-triple-version.c
@@ -0,0 +1,141 @@
+// Android's target triples can contain a version number in the environment
+// field (e.g. arm-linux-androideabi9).
+// Make sure that any version is stripped when finding toolchain binaries.
+
+// Ensure no execute permissions on .../bin/{target-triple}/ld.
+// RUN: chmod -x %S/Inputs/basic_android_ndk_tree/arm-linux-androideabi/bin/ld
+// RUN: chmod -x %S/Inputs/basic_android_ndk_tree/aarch64-linux-android/bin/ld
+// RUN: chmod -x %S/Inputs/basic_android_ndk_tree/i686-linux-android/bin/ld
+// RUN: chmod -x %S/Inputs/basic_android_ndk_tree/mipsel-linux-android/bin/ld
+
+// Ensure execute permissions on .../bin/{target-triple}-ld
+// RUN: chmod +x  %S/Inputs/basic_android_ndk_tree/bin/arm-linux-androideabi-ld
+// RUN: chmod +x  %S/Inputs/basic_android_ndk_tree/bin/aarch64-linux-android-ld
+// RUN: chmod +x %S/Inputs/basic_android_ndk_tree/bin/i686-linux-android-ld
+// RUN: chmod +x %S/Inputs/basic_android_ndk_tree/bin/mipsel-linux-android-ld
+
+// Test target arm-linux-androideabi
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target arm-linux-androideabi %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target arm-unknown-linux-androideabi
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target arm-unknown-linux-androideabi %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target arm-linux-androideabi14
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target arm-linux-androideabi14 %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target arm-linux-androideabi29
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target arm-linux-androideabi29 %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target arm-unknown-linux-androideabi14
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target arm-unknown-linux-androideabi14 %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target arm-unknown-linux-androideabi29
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target arm-unknown-linux-androideabi29 %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target aarch64-linux-android
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target aarch64-linux-android %s |& \
+// RUN: grep aarch64-linux-android-ld
+
+// Test target aarch64-unknown-linux-android
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target aarch64-unknown-linux-android %s |& \
+// RUN: grep aarch64-linux-android-ld
+
+// Test target aarch64-linux-android14
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target aarch64-linux-android14 %s |& \
+// RUN: grep aarch64-linux-android-ld
+
+// Test target aarch64-linux-android29
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target aarch64-linux-android29 %s |& \
+// RUN: grep aarch64-linux-android-ld
+
+// Test target aarch64-unknown-linux-android14
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target aarch64-unknown-linux-android14 %s |& \
+// RUN: grep aarch64-linux-android-ld
+
+// Test target aarch64-unknown-linux-android29
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target aarch64-unknown-linux-android29 %s |& \
+// RUN: grep aarch64-linux-android-ld
+
+// Test target i686-linux-android
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target i686-linux-android %s |& \
+// RUN: grep i686-linux-android-ld
+
+// Test target i686-unknown-linux-android
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target i686-unknown-linux-android %s |& \
+// RUN: grep i686-linux-android-ld
+
+// Test target i686-linux-android14
+// RUN: env 

[PATCH] D71848: Allow the discovery of Android NDK's triple-prefixed binaries.

2019-12-23 Thread Brian Ledger via Phabricator via cfe-commits
brianpl updated this revision to Diff 235182.
brianpl added a comment.

Fix a typo.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D71848/new/

https://reviews.llvm.org/D71848

Files:
  clang/lib/Driver/Driver.cpp
  clang/test/Driver/android-triple-version.c

Index: clang/test/Driver/android-triple-version.c
===
--- /dev/null
+++ clang/test/Driver/android-triple-version.c
@@ -0,0 +1,141 @@
+// Android's target triples can contain a version number in the environment
+// field (e.g. arm-linux-androideabi9).
+// Make sure that any version is stripped when finding toolchain binaries.
+
+// Ensure no execute permissions on .../bin/{target-triple}/ld.
+// RUN: chmod -x %S/Inputs/basic_android_ndk_tree/arm-linux-androideabi/bin/ld
+// RUN: chmod -x %S/Inputs/basic_android_ndk_tree/aarch64-linux-android/bin/ld
+// RUN: chmod -x %S/Inputs/basic_android_ndk_tree/i686-linux-android/bin/ld
+// RUN: chmod -x %S/Inputs/basic_android_ndk_tree/mipsel-linux-android/bin/ld
+
+// Ensure execute permissions on .../bin/{target-triple}-ld
+// RUN: chmod +x  %S/Inputs/basic_android_ndk_tree/bin/arm-linux-androideabi-ld
+// RUN: chmod +x  %S/Inputs/basic_android_ndk_tree/bin/aarch64-linux-android-ld
+// RUN: chmod +x %S/Inputs/basic_android_ndk_tree/bin/i686-linux-android-ld
+// RUN: chmod +x %S/Inputs/basic_android_ndk_tree/bin/mipsel-linux-android-ld
+
+// Test target arm-linux-androideabi
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target arm-linux-androideabi %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target arm-unknown-linux-androideabi
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target arm-unknown-linux-androideabi %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target arm-linux-androideabi14
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target arm-linux-androideabi14 %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target arm-linux-androideabi29
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target arm-linux-androideabi29 %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target arm-unknown-linux-androideabi14
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target arm-unknown-linux-androideabi14 %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target arm-unknown-linux-androideabi29
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target arm-unknown-linux-androideabi29 %s |& \
+// RUN: grep arm-linux-androideabi-ld
+
+// Test target aarch64-linux-android
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target aarch64-linux-android %s |& \
+// RUN: grep aarch64-linux-android-ld
+
+// Test target aarch64-unknown-linux-android
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target aarch64-unknown-linux-android %s |& \
+// RUN: grep aarch64-linux-android-ld
+
+// Test target aarch64-linux-android14
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target aarch64-linux-android14 %s |& \
+// RUN: grep aarch64-linux-android-ld
+
+// Test target aarch64-linux-android29
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target aarch64-linux-android29 %s |& \
+// RUN: grep aarch64-linux-android-ld
+
+// Test target aarch64-unknown-linux-android14
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target aarch64-unknown-linux-android14 %s |& \
+// RUN: grep aarch64-linux-android-ld
+
+// Test target aarch64-unknown-linux-android29
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target aarch64-unknown-linux-android29 %s |& \
+// RUN: grep aarch64-linux-android-ld
+
+// Test target i686-linux-android
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target i686-linux-android %s |& \
+// RUN: grep i686-linux-android-ld
+
+// Test target i686-unknown-linux-android
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target i686-unknown-linux-android %s |& \
+// RUN: grep i686-linux-android-ld
+
+// Test target i686-linux-android14
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target i686-linux-android14 %s |& \
+// RUN: grep i686-linux-android-ld
+
+// Test target i686-linux-android29
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target i686-linux-android29 %s |& \
+// RUN: grep i686-linux-android-ld
+
+// Test target i686-unknown-linux-android14
+// RUN: env "PATH=%S/Inputs/basic_android_ndk_tree/bin" \
+// RUN: %clang -### -target i686-unknown-linux-android14 %s |& \
+// RUN: grep