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

View file

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

View file

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

View file

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

View file

@ -11,4 +11,4 @@ set -o pipefail
source ./support/android/fakeld/fake-ld.sh source ./support/android/fakeld/fake-ld.sh
export _GCC_PARAMS="${@}" 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}/../../.." TARGET_DIR="${OUT_DIR}/../../.."
export _ANDROID_ARCH=$1 export _ANDROID_ARCH=$1
export _ANDROID_EABI=$2 export _ANDROID_TARGET=$3
export _ANDROID_PLATFORM=$3 export ANDROID_SYSROOT="${ANDROID_NDK}/platforms/${ANDROID_PLATFORM}/${_ANDROID_ARCH}"
export ANDROID_SYSROOT="${ANDROID_NDK}/platforms/${_ANDROID_PLATFORM}/${_ANDROID_ARCH}"
ANDROID_TOOLCHAIN="" ANDROID_TOOLCHAIN=""
for host in "linux-x86_64" "linux-x86" "darwin-x86_64" "darwin-x86"; do 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 if [[ -d "${ANDROID_NDK}/toolchains/llvm/prebuilt/${host}/bin" ]]; then
ANDROID_TOOLCHAIN="${ANDROID_NDK}/toolchains/${_ANDROID_EABI}-4.9/prebuilt/${host}/bin" ANDROID_TOOLCHAIN="${ANDROID_NDK}/toolchains/llvm/prebuilt/${host}/bin"
break break
fi fi
done 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}" ANDROID_CXX_LIBS="${ANDROID_NDK}/sources/cxx-stl/llvm-libc++/libs/${ANDROID_CPU_ARCH_DIR}"
echo "toolchain: ${ANDROID_TOOLCHAIN}" echo "toolchain: ${ANDROID_TOOLCHAIN}"
echo "libs dir: ${ANDROID_CXX_LIBS}" echo "libs dir: ${ANDROID_CXX_LIBS}"
echo "sysroot: ${ANDROID_SYSROOT}" echo "sysroot: ${ANDROID_SYSROOT}"
echo "targetdir: ${ANDROID_CXX_LIBS}" echo "targetdir: ${TARGET_DIR}"
"${ANDROID_TOOLCHAIN}/$5-gcc" \ "${ANDROID_TOOLCHAIN}/clang" \
--sysroot="${ANDROID_SYSROOT}" -L "${ANDROID_CXX_LIBS}" ${_GCC_PARAMS} -lc++ --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(CMAKE_VERBOSE_MAKEFILE ON)
set(ANDROID_ABI $ENV{ANDROID_ABI}) 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}) set(ANDROID_PLATFORM $ENV{ANDROID_PLATFORM})
include($ENV{NDK_CMAKE_TOOLCHAIN_FILE}) include($ENV{NDK_CMAKE_TOOLCHAIN_FILE})