
Android triples include a version number, which makes direct triple comparisons for per-target runtime directory searching not always work. Instead, look for the triple with the highest compatible version number and use that per-target runtime directory instead. This maintains the existing fallback to a triple without any version number, but I'm hoping we can remove that in the future. https://discourse.llvm.org/t/62717 discusses this further. The one remaining triple mismatch after this is that Android armv7 triples usually have an environment of `androideabi`, which Clang normalizes to `android`. If you use the `androideabi` triple when building the runtimes with a per-target runtimes dir, the directory will get created with `androideabi` in its name, but Clang's triple search uses the normalized triple and will look for an `android` directory instead. https://reviews.llvm.org/D140925 will fix that by normalizing triples when creating the per-target runtimes directories as well. Reviewed By: phosek, pirama Differential Revision: https://reviews.llvm.org/D158476
39 lines
2.0 KiB
C++
39 lines
2.0 KiB
C++
// Check that we only find libc++ in the installation directory when it contains
|
|
// an Android-specific include directory.
|
|
|
|
// RUN: mkdir -p %t1/bin
|
|
// RUN: mkdir -p %t1/include/c++/v1
|
|
// RUN: mkdir -p %t1/sysroot
|
|
// RUN: %clang -target aarch64-none-linux-android -ccc-install-dir %t1/bin \
|
|
// RUN: --sysroot=%t1/sysroot -stdlib=libc++ -fsyntax-only \
|
|
// RUN: %s -### 2>&1 | FileCheck %s
|
|
// CHECK-NOT: "-internal-isystem" "{{.*}}v1"
|
|
|
|
// RUN: mkdir -p %t2/bin
|
|
// RUN: mkdir -p %t2/include/c++/v1
|
|
// RUN: mkdir -p %t2/sysroot
|
|
// RUN: mkdir -p %t2/include/aarch64-none-linux-android/c++/v1
|
|
// RUN: mkdir -p %t2/include/aarch64-none-linux-android23/c++/v1
|
|
|
|
// RUN: %clang -target aarch64-none-linux-android -ccc-install-dir %/t2/bin \
|
|
// RUN: --sysroot=%t2/sysroot -stdlib=libc++ -fsyntax-only \
|
|
// RUN: %s -### 2>&1 | FileCheck --check-prefix=ANDROID-DIR -DDIR=%/t2/bin %s
|
|
|
|
// RUN: %clang -target aarch64-none-linux-android21 -ccc-install-dir %/t2/bin \
|
|
// RUN: --sysroot=%t2/sysroot -stdlib=libc++ -fsyntax-only \
|
|
// RUN: %s -### 2>&1 | FileCheck --check-prefix=ANDROID-DIR -DDIR=%/t2/bin %s
|
|
|
|
// ANDROID-DIR: "-internal-isystem" "[[DIR]][[SEP:/|\\\\]]..[[SEP]]include[[SEP]]aarch64-none-linux-android[[SEP]]c++[[SEP]]v1"
|
|
// ANDROID-DIR-SAME: "-internal-isystem" "[[DIR]][[SEP]]..[[SEP]]include[[SEP]]c++[[SEP]]v1"
|
|
|
|
// RUN: %clang -target aarch64-none-linux-android23 -ccc-install-dir %/t2/bin \
|
|
// RUN: --sysroot=%t2/sysroot -stdlib=libc++ -fsyntax-only \
|
|
// RUN: %s -### 2>&1 | FileCheck --check-prefix=ANDROID23-DIR -DDIR=%/t2/bin %s
|
|
|
|
// RUN: %clang -target aarch64-none-linux-android28 -ccc-install-dir %/t2/bin \
|
|
// RUN: --sysroot=%t2/sysroot -stdlib=libc++ -fsyntax-only \
|
|
// RUN: %s -### 2>&1 | FileCheck --check-prefix=ANDROID23-DIR -DDIR=%/t2/bin %s
|
|
|
|
// ANDROID23-DIR: "-internal-isystem" "[[DIR]][[SEP:/|\\\\]]..[[SEP]]include[[SEP]]aarch64-none-linux-android23[[SEP]]c++[[SEP]]v1"
|
|
// ANDROID23-DIR-SAME: "-internal-isystem" "[[DIR]][[SEP]]..[[SEP]]include[[SEP]]c++[[SEP]]v1"
|