tools/android_build.sh: support crypto extensions

This commit is contained in:
Eric Biggers 2018-02-18 23:03:26 -08:00
parent e7aa4666e0
commit 4282583b9b

View File

@ -5,7 +5,8 @@ set -eu
ARCH="arm32" ARCH="arm32"
COMPILER="gcc" COMPILER="gcc"
NDKDIR="/opt/android-ndk" NDKDIR="/opt/android-ndk"
DISABLE_NEON= ENABLE_NEON=false
ENABLE_CRYPTO=false
usage() { usage() {
cat << EOF cat << EOF
@ -15,12 +16,13 @@ Build the libdeflate test programs for Android
--arch=ARCH Architecture: arm32|arm64 (default: $ARCH) --arch=ARCH Architecture: arm32|arm64 (default: $ARCH)
--compiler=COMPILER Compiler: gcc|clang (default: $COMPILER) --compiler=COMPILER Compiler: gcc|clang (default: $COMPILER)
--ndkdir=NDKDIR Android NDK directory (default: $NDKDIR) --ndkdir=NDKDIR Android NDK directory (default: $NDKDIR)
--disable-neon Disable NEON instructions --enable-neon Enable NEON instructions
--enable-crypto Enable crypto extensions (implies NEON too)
EOF EOF
} }
if ! options=$(getopt -o '' \ if ! options=$(getopt -o '' \
-l 'arch:,compiler:,ndkdir:,disable-neon,help' -- "$@"); then -l 'arch:,compiler:,ndkdir:,enable-neon,enable-crypto,help' -- "$@"); then
usage usage
exit 1 exit 1
fi fi
@ -41,8 +43,11 @@ while [ $# -gt 0 ]; do
NDKDIR="$2" NDKDIR="$2"
shift shift
;; ;;
--disable-neon) --enable-neon)
DISABLE_NEON=1 ENABLE_NEON=true
;;
--enable-crypto)
ENABLE_CRYPTO=true
;; ;;
--help) --help)
usage usage
@ -66,16 +71,23 @@ case "$ARCH" in
arm|arm32|aarch32) arm|arm32|aarch32)
GCC_TOOLCHAIN="arm-linux-androideabi-4.9" GCC_TOOLCHAIN="arm-linux-androideabi-4.9"
CLANG_TARGET="armv7-none-linux-androideabi" CLANG_TARGET="armv7-none-linux-androideabi"
if [ -n "$DISABLE_NEON" ]; then if $ENABLE_CRYPTO; then
CFLAGS+=" -march=armv6" CFLAGS+=" -march=armv7-a -mfloat-abi=softfp -mfpu=crypto-neon-fp-armv8"
elif $ENABLE_NEON; then
CFLAGS+=" -march=armv7-a -mfloat-abi=softfp -mfpu=neon"
else else
CFLAGS+=" -march=armv7-a -mfpu=neon -mfloat-abi=softfp" CFLAGS+=" -march=armv6"
fi fi
CFLAGS+=" --sysroot=\"$NDKDIR/platforms/android-12/arch-arm\"" CFLAGS+=" --sysroot=\"$NDKDIR/platforms/android-12/arch-arm\""
;; ;;
arm64|aarch64) arm64|aarch64)
GCC_TOOLCHAIN="aarch64-linux-android-4.9" GCC_TOOLCHAIN="aarch64-linux-android-4.9"
CLANG_TARGET="aarch64-none-linux-android" CLANG_TARGET="aarch64-none-linux-android"
if $ENABLE_CRYPTO; then
CFLAGS+=" -march=armv8-a+crypto"
else
CFLAGS+=" -march=armv8-a"
fi
CFLAGS+=" --sysroot=\"$NDKDIR/platforms/android-21/arch-arm64\"" CFLAGS+=" --sysroot=\"$NDKDIR/platforms/android-21/arch-arm64\""
;; ;;
*) *)