Sha256: 930abe5149ebf47943150bd66b5c3d5c6684c4d77c2413bfc677bc34f876e155

Contents?: true

Size: 1.95 KB

Versions: 2

Compression:

Stored size: 1.95 KB

Contents

#!/bin/bash

set -eu

ARCH="arm32"
COMPILER="gcc"
NDKDIR="/opt/android-ndk"
DISABLE_NEON=

usage() {
	cat << EOF
Usage: $0 [OPTION]... -- [BENCHMARK_PROGRAM_ARG]...
Build the libdeflate test programs for Android

  --arch=ARCH          Architecture: arm32|arm64 (default: $ARCH)
  --compiler=COMPILER  Compiler: gcc|clang (default: $COMPILER)
  --ndkdir=NDKDIR      Android NDK directory (default: $NDKDIR)
  --disable-neon       Disable NEON instructions
EOF
}

if ! options=$(getopt -o '' \
	-l 'arch:,compiler:,ndkdir:,disable-neon,help' -- "$@"); then
	usage
	exit 1
fi

eval set -- "$options"

while [ $# -gt 0 ]; do
	case "$1" in
	--arch)
		ARCH="$2"
		shift
		;;
	--compiler)
		COMPILER="$2"
		shift
		;;
	--ndkdir)
		NDKDIR="$2"
		shift
		;;
	--disable-neon)
		DISABLE_NEON=1
		;;
	--help)
		usage
		exit 0
		;;
	--)
		shift
		break
		;;
	*)
		echo 1>&2 "Unknown option \"$1\""
		usage
		exit 1
	esac
	shift
done

CFLAGS="-fPIC -pie"

case "$ARCH" in
arm|arm32|aarch32)
	GCC_TOOLCHAIN="arm-linux-androideabi-4.9"
	CLANG_TARGET="armv7-none-linux-androideabi"
	if [ -n "$DISABLE_NEON" ]; then
		CFLAGS+=" -march=armv6"
	else
		CFLAGS+=" -march=armv7-a -mfpu=neon -mfloat-abi=softfp"
	fi
	CFLAGS+=" --sysroot=\"$NDKDIR/platforms/android-12/arch-arm\""
	;;
arm64|aarch64)
	GCC_TOOLCHAIN="aarch64-linux-android-4.9"
	CLANG_TARGET="aarch64-none-linux-android"
	CFLAGS+=" --sysroot=\"$NDKDIR/platforms/android-21/arch-arm64\""
	;;
*)
	echo 1>&2 "Unknown architecture: \"$ARCH\""
	usage
	exit 1
esac

case "$COMPILER" in
gcc)
	CC="\"$NDKDIR/toolchains/$GCC_TOOLCHAIN/prebuilt/linux-x86_64/bin/${GCC_TOOLCHAIN%-*}-gcc\""
	CFLAGS+=" -pie"
	;;
clang)
	CC="\"$NDKDIR/toolchains/llvm/prebuilt/linux-x86_64/bin/clang\""
	CFLAGS+=" -target \"$CLANG_TARGET\""
	CFLAGS+=" -gcc-toolchain \"$NDKDIR/toolchains/$GCC_TOOLCHAIN/prebuilt/linux-x86_64\""
	;;
*)
	echo 1>&2 "Unknown compiler: \"$COMPILER\""
	usage
	exit 1
esac

make -j$(grep -c processor /proc/cpuinfo) test_programs \
	CC="$CC" CFLAGS="$CFLAGS"

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
libdeflate-0.1.1 ext/libdeflate/libdeflate/tools/android_build.sh
libdeflate-0.1.0 ext/libdeflate/libdeflate/tools/android_build.sh