Use llvm toolchain for entirety of android build.

This commit is contained in:
Josh Matthews 2019-05-10 12:23:48 -04:00
parent 6fb7a8cdc7
commit ccde5867fb
7 changed files with 17 additions and 22 deletions

View file

@ -352,7 +352,6 @@ class MachCommands(CommandBase):
sys.exit(1)
env["RUST_TARGET"] = target
env["ANDROID_TOOLCHAIN_NAME"] = android_toolchain_name
with cd(openssl_dir):
status = call(
make_cmd + ["-f", "openssl.makefile"],
@ -386,9 +385,7 @@ class MachCommands(CommandBase):
android_toolchain_prefix + "-4.9", "prebuilt", host)
gcc_libs = path.join(gcc_toolchain, "lib", "gcc", android_toolchain_name, "4.9.x")
env['PATH'] = (path.join(llvm_toolchain, "bin") + ':'
+ path.join(gcc_toolchain, "bin") + ':'
+ env['PATH'])
env['PATH'] = (path.join(llvm_toolchain, "bin") + ':' + env['PATH'])
env['ANDROID_SYSROOT'] = path.join(env['ANDROID_NDK'], "sysroot")
support_include = path.join(env['ANDROID_NDK'], "sources", "android", "support", "include")
cpufeatures_include = path.join(env['ANDROID_NDK'], "sources", "android", "cpufeatures")
@ -468,7 +465,6 @@ class MachCommands(CommandBase):
env["NDK_ANDROID_VERSION"] = android_api
env["ANDROID_ABI"] = android_lib
env["ANDROID_PLATFORM"] = android_platform
env["ANDROID_TOOLCHAIN_NAME"] = "clang"
env["NDK_CMAKE_TOOLCHAIN_FILE"] = path.join(env['ANDROID_NDK'], "build", "cmake", "android.toolchain.cmake")
env["CMAKE_TOOLCHAIN_FILE"] = path.join(self.android_support_dir(), "toolchain.cmake")
# Set output dir for gradle aar files

View file

@ -11,5 +11,4 @@ set -o pipefail
source ./support/android/fakeld/fake-ld.sh
export _GCC_PARAMS="${@}"
call_gcc "arch-arm" "arm-linux-androideabi" "android-21" "armeabi" \
"arm-linux-androideabi"
call_gcc "arch-arm" "armeabi" "arm-linux-androideabi"

View file

@ -11,5 +11,4 @@ set -o pipefail
source ./support/android/fakeld/fake-ld.sh
export _GCC_PARAMS="${@}"
call_gcc "arch-arm64" "aarch64-linux-android" "android-21" "arm64-v8a" \
"aarch64-linux-android"
call_gcc "arch-arm64" "arm64-v8a" "aarch64-linux-android"

View file

@ -11,5 +11,4 @@ set -o pipefail
source ./support/android/fakeld/fake-ld.sh
export _GCC_PARAMS="${@}"
call_gcc "arch-arm" "arm-linux-androideabi" "android-21" "armeabi-v7a" \
"arm-linux-androideabi"
call_gcc "arch-arm" "armeabi-v7a" "armv7-linux-androideabi"

View file

@ -11,4 +11,4 @@ set -o pipefail
source ./support/android/fakeld/fake-ld.sh
export _GCC_PARAMS="${@}"
call_gcc "arch-x86" "x86" "android-21" "x86" "i686-linux-android"
call_gcc "arch-x86" "x86" "i686-linux-android"

View file

@ -13,25 +13,27 @@ call_gcc()
TARGET_DIR="${OUT_DIR}/../../.."
export _ANDROID_ARCH=$1
export _ANDROID_EABI=$2
export _ANDROID_PLATFORM=$3
export ANDROID_SYSROOT="${ANDROID_NDK}/platforms/${_ANDROID_PLATFORM}/${_ANDROID_ARCH}"
export _ANDROID_TARGET=$3
export ANDROID_SYSROOT="${ANDROID_NDK}/platforms/${ANDROID_PLATFORM}/${_ANDROID_ARCH}"
ANDROID_TOOLCHAIN=""
for host in "linux-x86_64" "linux-x86" "darwin-x86_64" "darwin-x86"; do
if [[ -d "${ANDROID_NDK}/toolchains/${_ANDROID_EABI}-4.9/prebuilt/${host}/bin" ]]; then
ANDROID_TOOLCHAIN="${ANDROID_NDK}/toolchains/${_ANDROID_EABI}-4.9/prebuilt/${host}/bin"
if [[ -d "${ANDROID_NDK}/toolchains/llvm/prebuilt/${host}/bin" ]]; then
ANDROID_TOOLCHAIN="${ANDROID_NDK}/toolchains/llvm/prebuilt/${host}/bin"
break
fi
done
ANDROID_CPU_ARCH_DIR=$4
ANDROID_CPU_ARCH_DIR=$2
ANDROID_CXX_LIBS="${ANDROID_NDK}/sources/cxx-stl/llvm-libc++/libs/${ANDROID_CPU_ARCH_DIR}"
echo "toolchain: ${ANDROID_TOOLCHAIN}"
echo "libs dir: ${ANDROID_CXX_LIBS}"
echo "sysroot: ${ANDROID_SYSROOT}"
echo "targetdir: ${ANDROID_CXX_LIBS}"
echo "targetdir: ${TARGET_DIR}"
"${ANDROID_TOOLCHAIN}/$5-gcc" \
--sysroot="${ANDROID_SYSROOT}" -L "${ANDROID_CXX_LIBS}" ${_GCC_PARAMS} -lc++
"${ANDROID_TOOLCHAIN}/clang" \
--sysroot="${ANDROID_SYSROOT}" \
--gcc-toolchain="${GCC_TOOLCHAIN}" \
--target="${_ANDROID_TARGET}" \
-L "${ANDROID_CXX_LIBS}" ${_GCC_PARAMS} -lc++
}

View file

@ -1,6 +1,6 @@
set(CMAKE_VERBOSE_MAKEFILE ON)
set(ANDROID_ABI $ENV{ANDROID_ABI})
set(ANDROID_TOOLCHAIN_NAME $ENV{ANDROID_TOOLCHAIN_NAME})
set(ANDROID_TOOLCHAIN_NAME clang)
set(ANDROID_PLATFORM $ENV{ANDROID_PLATFORM})
include($ENV{NDK_CMAKE_TOOLCHAIN_FILE})