Add the necessary machinery to use Clang instead. Annoyingly, the
Android NDK doesn't name its Clang wrappers with the usual GNU
architecture triples, so there's an exciting amount of hacking to be
done.
What I don't have yet is a principled way to configure which compiler
should get chosen for a given build.
ANDROID_NDK_TARGETARCH=@arch@
. $CROSSDIR/etc/android.sh
CONFIG_SITE=$CROSSDIR/etc/android-cross-config.site
ANDROID_NDK_TARGETARCH=@arch@
. $CROSSDIR/etc/android.sh
CONFIG_SITE=$CROSSDIR/etc/android-cross-config.site
-PATH=$PATH:$ANDROID_NDK_TOOLS; export PATH
+PATH=$PATH:$ANDROID_NDK_TOOLS:$ANDROID_NDK_LLVM; export PATH
CROSS_gcc_FLAGS=" --sysroot=$ANDROID_NDK_SYSROOT \
-D__ANDROID_API__=$ANDROID_NDK_TARGETVER \
CROSS_gcc_FLAGS=" --sysroot=$ANDROID_NDK_SYSROOT \
-D__ANDROID_API__=$ANDROID_NDK_TARGETVER \
CROSS_gxx_FLAGS=$CROSS_gcc_FLAGS
export CROSS_gcc_FLAGS CROSS_gxx_FLAGS
CROSS_gxx_FLAGS=$CROSS_gcc_FLAGS
export CROSS_gcc_FLAGS CROSS_gxx_FLAGS
+CROSS_clang_TOOL=$ANDROID_NDK_CLANGARCH$ANDROID_NDK_TARGETVER-clang
+CROSS_clang_FLAGS=""
+CROSS_clangxx_TOOL=$CROSS_clang_TOOL++ CROSS_clangxx_FLAGS=$CROSS_clang_FLAGS
+export CROSS_clang_TOOL CROSS_clang_FLAGS
+export CROSS_clangxx_TOOL CROSS_clangxx_FLAGS
+
PKG_CONFIG_PATH=$CROSS_PREFIX/lib/pkgconfig:/usr/lib/pkgconfig
export PKG_CONFIG_PATH
PKG_CONFIG_PATH=$CROSS_PREFIX/lib/pkgconfig:/usr/lib/pkgconfig
export PKG_CONFIG_PATH
. $CROSSDIR/etc/android.sh
. $CROSSDIR/etc/common-cross-config.site
. $CROSSDIR/etc/android.sh
. $CROSSDIR/etc/common-cross-config.site
-CC="$CROSS_COMPILER_PREFIX$CROSS_ARCH-gcc $CROSS_gcc_FLAGS"
-CXX="$CROSS_COMPILER_PREFIX$CROSS_ARCH-g++ $CROSS_gxx_FLAGS"
+CC="$CROSS_COMPILER_PREFIX $CROSS_clang_TOOL $CROSS_clang_FLAGS"
+CXX="$CROSS_COMPILER_PREFIX RCROSS_clang_TOOL $CROSS_clang_FLAGS"
+CCASFLAGS="-no-integrated-as -Wno-unicode"
case $ANDROID_NDK_TARGETARCH in
arm-linux-androideabi)
ANDROID_NDK_TARGETARCHDIR=arm-linux-androideabi
case $ANDROID_NDK_TARGETARCH in
arm-linux-androideabi)
ANDROID_NDK_TARGETARCHDIR=arm-linux-androideabi
+ ANDROID_NDK_CLANGARCH=armv7a-linux-androideabi
ANDROID_NDK_TARGETSHORTARCH=arm
ANDROID_NDK_TARGETSHORTARCH=arm
- : ${ANDROID_NDK_TARGETVER=15}
+ : ${ANDROID_NDK_TARGETVER=16}
;;
aarch64-linux-android)
ANDROID_NDK_TARGETARCHDIR=aarch64-linux-android
;;
aarch64-linux-android)
ANDROID_NDK_TARGETARCHDIR=aarch64-linux-android
+ ANDROID_NDK_CLANGARCH=aarch64-linux-android
ANDROID_NDK_TARGETSHORTARCH=arm64
: ${ANDROID_NDK_TARGETVER=21}
;;
i686-linux-android)
ANDROID_NDK_TARGETARCHDIR=x86
ANDROID_NDK_TARGETSHORTARCH=arm64
: ${ANDROID_NDK_TARGETVER=21}
;;
i686-linux-android)
ANDROID_NDK_TARGETARCHDIR=x86
+ ANDROID_NDK_CLANGARCH=i686-linux-android
ANDROID_NDK_TARGETSHORTARCH=x86
ANDROID_NDK_TARGETSHORTARCH=x86
- : ${ANDROID_NDK_TARGETVER=15}
+ : ${ANDROID_NDK_TARGETVER=16}
;;
x86_64-linux-android)
ANDROID_NDK_TARGETARCHDIR=x86_64
;;
x86_64-linux-android)
ANDROID_NDK_TARGETARCHDIR=x86_64
+ ANDROID_NDK_CLANGARCH=x86_64-linux-android
ANDROID_NDK_TARGETSHORTARCH=x86_64
: ${ANDROID_NDK_TARGETVER=21}
;;
ANDROID_NDK_TARGETSHORTARCH=x86_64
: ${ANDROID_NDK_TARGETVER=21}
;;
;;
esac
: ${ANDROID_NDK_TOOLS=$ANDROID_NDK/toolchains/$ANDROID_NDK_TARGETARCHDIR-$ANDROID_NDK_TOOLVER/prebuilt/$ANDROID_NDK_HOSTARCH/bin}
;;
esac
: ${ANDROID_NDK_TOOLS=$ANDROID_NDK/toolchains/$ANDROID_NDK_TARGETARCHDIR-$ANDROID_NDK_TOOLVER/prebuilt/$ANDROID_NDK_HOSTARCH/bin}
+: ${ANDROID_NDK_LLVM=$ANDROID_NDK/toolchains/llvm/prebuilt/$ANDROID_NDK_HOSTARCH/bin}
: ${ANDROID_NDK_SYSROOT=$ANDROID_NDK/platforms/android-$ANDROID_NDK_TARGETVER/arch-$ANDROID_NDK_TARGETSHORTARCH}
: ${ANDROID_NDK_SYSROOT=$ANDROID_NDK/platforms/android-$ANDROID_NDK_TARGETVER/arch-$ANDROID_NDK_TARGETSHORTARCH}
CROSS_ARCH=@arch@
QEMU_LD_PREFIX=/usr/$CROSS_ARCH; export QEMU_LD_PREFIX
CROSS_ARCH=@arch@
QEMU_LD_PREFIX=/usr/$CROSS_ARCH; export QEMU_LD_PREFIX
+CROSS_clang_TOOL=clang
+CROSS_clang_FLAGS="--target=$CROSS_ARCH -I/usr/$CROSS_ARCH/include"
+CROSS_clangxx_TOOL=$CROSS_clang_TOOL++ CROSS_clangxx_FLAGS=$CROSS_clang_FLAGS
+export CROSS_clang_TOOL CROSS_clang_FLAGS
+export CROSS_clangxx_TOOL CROSS_clangxx_FLAGS
+
PKG_CONFIG_PATH=$CROSS_PREFIX/lib/pkgconfig:/usr/lib/pkgconfig
export PKG_CONFIG_PATH
PKG_CONFIG_PATH=$CROSS_PREFIX/lib/pkgconfig:/usr/lib/pkgconfig
export PKG_CONFIG_PATH
CROSS_gxx_FLAGS=$CROSS_gcc_FLAGS
export CROSS_gcc_FLAGS CROSS_gxx_FLAGS
CROSS_gxx_FLAGS=$CROSS_gcc_FLAGS
export CROSS_gcc_FLAGS CROSS_gxx_FLAGS
+CROSS_clang_FLAGS=$CROSS_gcc_FLAGS
+CROSS_clangxx_FLAGS=$CROSS_gxx_FLAGS
+export CROSS_clang_FLAGS CROSS_clangxx_FLAGS
+
PKG_CONFIG_PATH=$CROSS_PREFIX/lib/pkgconfig:/usr/lib/pkgconfig
export PKG_CONFIG_PATH
PKG_CONFIG_PATH=$CROSS_PREFIX/lib/pkgconfig:/usr/lib/pkgconfig
export PKG_CONFIG_PATH
tool=${0##*/cross-}
xtool=$(printf %s "$tool" | tr -c a-zA-Z0-9 x)
eval flags=\$CROSS_${xtool}_FLAGS
tool=${0##*/cross-}
xtool=$(printf %s "$tool" | tr -c a-zA-Z0-9 x)
eval flags=\$CROSS_${xtool}_FLAGS
+eval crosstool=\${CROSS_${xtool}_TOOL-\$CROSS_ARCH-\$tool}
case ${CROSS_NATIVE_P-nil} in
t) exec $CROSS_COMPILER_PREFIX $tool $flags "$@" ;;
case ${CROSS_NATIVE_P-nil} in
t) exec $CROSS_COMPILER_PREFIX $tool $flags "$@" ;;
- nil) exec $CROSS_COMPILER_PREFIX $CROSS_ARCH-$tool $flags "$@" ;;
+ nil) exec $CROSS_COMPILER_PREFIX $crosstool $flags "$@" ;;
--- /dev/null
+../bin/crosstool
\ No newline at end of file
--- /dev/null
+../bin/crosstool
\ No newline at end of file