mirror of
https://github.com/cuberite/libdeflate.git
synced 2025-08-03 17:56:17 -04:00
109 lines
1.8 KiB
Bash
Executable File
109 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -eu -o pipefail
|
|
|
|
API_LEVEL=28
|
|
ARCH=arm64
|
|
CFLAGS=
|
|
ENABLE_CRC=false
|
|
ENABLE_CRYPTO=false
|
|
NDKDIR=$HOME/android-ndk-r21d
|
|
|
|
usage() {
|
|
cat << EOF
|
|
Usage: $0 [OPTION]... -- [MAKE_TARGET]...
|
|
Build libdeflate for Android.
|
|
|
|
--api-level=LEVEL Android API level to target (default: $API_LEVEL)
|
|
--arch=ARCH Architecture: arm32|arm64 (default: $ARCH)
|
|
--enable-crc Enable crc instructions
|
|
--enable-crypto Enable crypto instructions
|
|
--ndkdir=NDKDIR Android NDK directory (default: $NDKDIR)
|
|
EOF
|
|
}
|
|
if ! options=$(getopt -o '' \
|
|
-l 'api-level:,arch:,enable-crc,enable-crypto,help,ndkdir:' -- "$@"); then
|
|
usage 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
eval set -- "$options"
|
|
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
--api-level)
|
|
API_LEVEL="$2"
|
|
shift
|
|
;;
|
|
--arch)
|
|
ARCH="$2"
|
|
shift
|
|
;;
|
|
--enable-crc)
|
|
ENABLE_CRC=true
|
|
;;
|
|
--enable-crypto)
|
|
ENABLE_CRYPTO=true
|
|
;;
|
|
--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
--ndkdir)
|
|
NDKDIR="$2"
|
|
shift
|
|
;;
|
|
--)
|
|
shift
|
|
break
|
|
;;
|
|
*)
|
|
echo 1>&2 "Unknown option \"$1\""
|
|
usage 1>&2
|
|
exit 1
|
|
esac
|
|
shift
|
|
done
|
|
|
|
BINDIR=$NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/
|
|
|
|
case "$ARCH" in
|
|
arm|arm32|aarch32)
|
|
CC=$BINDIR/armv7a-linux-androideabi$API_LEVEL-clang
|
|
if $ENABLE_CRC || $ENABLE_CRYPTO; then
|
|
CFLAGS="-march=armv8-a"
|
|
if $ENABLE_CRC; then
|
|
CFLAGS+=" -mcrc"
|
|
else
|
|
CFLAGS+=" -mnocrc"
|
|
fi
|
|
if $ENABLE_CRYPTO; then
|
|
CFLAGS+=" -mfpu=crypto-neon-fp-armv8"
|
|
else
|
|
CFLAGS+=" -mfpu=neon"
|
|
fi
|
|
fi
|
|
;;
|
|
arm64|aarch64)
|
|
CC=$BINDIR/aarch64-linux-android$API_LEVEL-clang
|
|
features=""
|
|
if $ENABLE_CRC; then
|
|
features+="+crc"
|
|
fi
|
|
if $ENABLE_CRYPTO; then
|
|
features+="+crypto"
|
|
fi
|
|
if [ -n "$features" ]; then
|
|
CFLAGS="-march=armv8-a$features"
|
|
fi
|
|
;;
|
|
*)
|
|
echo 1>&2 "Unknown architecture: \"$ARCH\""
|
|
usage 1>&2
|
|
exit 1
|
|
esac
|
|
|
|
cmd=(make "-j$(grep -c processor /proc/cpuinfo)" "CC=$CC" "CFLAGS=$CFLAGS" "$@")
|
|
echo "${cmd[*]}"
|
|
"${cmd[@]}"
|