blob: 90195a42f960137c446fddc8a947b708a3cdac9b [file] [log] [blame]
#!/bin/bash
# This script is used to run configure and generate all of the necessary
# files when updating to a new version of jemalloc.
# The NDK argument must be a NDK at r20 or newer so that it does not
# require installing the standalone tools.
ndk=${1}
if [[ "$ndk" == "" ]]; then
echo "Requires two arguments."
echo "usage: conf.sh NDK ARCH"
exit 1
fi
arch=${2}
if [[ "$arch" == "" ]]; then
echo "Requires two arguments."
echo "usage: conf.sh NDK ARCH"
exit 1
fi
if [[ ! -d ${ndk} ]]; then
echo "NDK directory ${ndk} does not exist."
exit 1
fi
toolchain=${ndk}/toolchains/llvm/prebuilt/linux-x86_64
if [[ ! -d ${toolchain} ]]; then
echo "NDK ${ndk} cannot find toolchain directory."
echo " ${toolchain}"
exit 1
fi
# The latest version of clang to use for compilation.
latest_api=29
case "$arch" in
"arm")
prefix="arm-linux-androideabi"
clang_prefix="armv7a-linux-androideabi"
target="arm-android-linux"
;;
"arm64")
prefix="aarch64-linux-android"
target="aarch64-android-linux"
;;
"x86")
target="x86-android-linux"
export CPPFLAGS="-m32"
;&
"x86_64")
prefix="x86_64-linux-android"
if [[ "$target" == "" ]]; then
target="x86_64-android-linux"
fi
;;
*)
echo "Unknown arch $arch"
exit 1
;;
esac
if [[ "${clang_prefix}" == "" ]]; then
clang_prefix="${prefix}"
fi
tools=("AR" "ar"
"AS" "as"
"LD" "ld"
"RANLIB" "ranlib"
"STRIP" "strip")
for ((i = 0; i < ${#tools[@]}; i = i + 2)); do
binary=${toolchain}/bin/${prefix}-${tools[$((i + 1))]}
if [[ ! -e ${binary} ]]; then
echo "${binary} does not exist."
exit 1
fi
export ${tools[$i]}=${binary}
done
clang=("CC" "clang"
"CXX" "clang++")
for ((i = 0; i < ${#clang[@]}; i = i + 2)); do
binary=${toolchain}/bin/${clang_prefix}${latest_api}-${clang[$((i + 1))]}
if [[ ! -e ${binary} ]]; then
echo "${binary} does not exist."
exit 1
fi
export ${clang[$i]}=${binary}
done
export CPP="${CC} -E"
./autogen.sh --with-jemalloc_prefix=je_ --host=${target}