@@ -452,17 +452,35 @@ function set_build_options_for_host() {
452
452
SWIFT_HOST_VARIANT_ARCH=$architecture
453
453
454
454
case ${host} in
455
- android-aarch64)
456
- SWIFT_HOST_TRIPLE=" aarch64-unknown-linux-android"
457
- llvm_target_arch=" AArch64"
458
- ;;
459
- android-armv7)
460
- SWIFT_HOST_TRIPLE=" armv7-unknown-linux-androideabi"
461
- llvm_target_arch=" ARM"
462
- ;;
463
- android-x86_64)
464
- SWIFT_HOST_TRIPLE=" x86_64-unknown-linux-android${ANDROID_API_LEVEL} "
465
- llvm_target_arch=" X86"
455
+ android-* )
456
+ # Clang uses a different sysroot natively on Android in the Termux
457
+ # app, which the Termux build scripts pass in through a $PREFIX
458
+ # variable.
459
+ if [[ " ${PREFIX} " ]] ; then
460
+ llvm_cmake_options+=(
461
+ -DDEFAULT_SYSROOT:STRING=" $( dirname ${PREFIX} ) "
462
+ )
463
+ fi
464
+ # Android doesn't support building all of compiler-rt yet.
465
+ if [[ ! $( is_cross_tools_host " ${host} " ) ]] ; then
466
+ llvm_cmake_options+=(
467
+ -DCOMPILER_RT_INCLUDE_TESTS:BOOL=FALSE
468
+ )
469
+ fi
470
+ case ${host} in
471
+ android-aarch64)
472
+ SWIFT_HOST_TRIPLE=" aarch64-unknown-linux-android"
473
+ llvm_target_arch=" AArch64"
474
+ ;;
475
+ android-armv7)
476
+ SWIFT_HOST_TRIPLE=" armv7-unknown-linux-androideabi"
477
+ llvm_target_arch=" ARM"
478
+ ;;
479
+ android-x86_64)
480
+ SWIFT_HOST_TRIPLE=" x86_64-unknown-linux-android${ANDROID_API_LEVEL} "
481
+ llvm_target_arch=" X86"
482
+ ;;
483
+ esac
466
484
;;
467
485
linux-armv6)
468
486
SWIFT_HOST_TRIPLE=" armv6-unknown-linux-gnueabihf"
@@ -1749,7 +1767,8 @@ for host in "${ALL_HOSTS[@]}"; do
1749
1767
)
1750
1768
fi
1751
1769
1752
- if [[ ! " ${SKIP_BUILD_ANDROID} " ]]; then
1770
+ if [[ ! " ${SKIP_BUILD_ANDROID} " ]] ||
1771
+ [[ $( is_cross_tools_host ${host} ) && " ${host} " == " android-" * ]]; then
1753
1772
cmake_options=(
1754
1773
" ${cmake_options[@]} "
1755
1774
-DSWIFT_ANDROID_NDK_PATH:STRING=" ${ANDROID_NDK} "
@@ -2440,6 +2459,8 @@ for host in "${ALL_HOSTS[@]}"; do
2440
2459
elif [[ " $( uname -s) " == " Haiku" ]] ; then
2441
2460
HOST_CXX_HEADERS_DIR=" /boot/system/develop/headers/c++"
2442
2461
elif [[ " ${ANDROID_DATA} " ]] ; then
2462
+ # This means we're building natively on Android in the Termux
2463
+ # app, which supplies the $PREFIX variable.
2443
2464
HOST_CXX_HEADERS_DIR=" $PREFIX /include/c++"
2444
2465
else # Linux
2445
2466
HOST_CXX_HEADERS_DIR=" /usr/include/c++"
0 commit comments