1*1208bc7eSAndroid Build Coastguard Worker#!/bin/bash 2*1208bc7eSAndroid Build Coastguard Worker# This script is used to run configure and generate all of the necessary 3*1208bc7eSAndroid Build Coastguard Worker# files when updating to a new version of jemalloc. 4*1208bc7eSAndroid Build Coastguard Worker# The NDK argument must be a NDK at r20 or newer so that it does not 5*1208bc7eSAndroid Build Coastguard Worker# require installing the standalone tools. 6*1208bc7eSAndroid Build Coastguard Worker 7*1208bc7eSAndroid Build Coastguard Workerndk=${1} 8*1208bc7eSAndroid Build Coastguard Workerif [[ "$ndk" == "" ]]; then 9*1208bc7eSAndroid Build Coastguard Worker echo "Requires two arguments." 10*1208bc7eSAndroid Build Coastguard Worker echo "usage: conf.sh NDK ARCH" 11*1208bc7eSAndroid Build Coastguard Worker exit 1 12*1208bc7eSAndroid Build Coastguard Workerfi 13*1208bc7eSAndroid Build Coastguard Worker 14*1208bc7eSAndroid Build Coastguard Workerarch=${2} 15*1208bc7eSAndroid Build Coastguard Workerif [[ "$arch" == "" ]]; then 16*1208bc7eSAndroid Build Coastguard Worker echo "Requires two arguments." 17*1208bc7eSAndroid Build Coastguard Worker echo "usage: conf.sh NDK ARCH" 18*1208bc7eSAndroid Build Coastguard Worker exit 1 19*1208bc7eSAndroid Build Coastguard Workerfi 20*1208bc7eSAndroid Build Coastguard Worker 21*1208bc7eSAndroid Build Coastguard Workerif [[ ! -d ${ndk} ]]; then 22*1208bc7eSAndroid Build Coastguard Worker echo "NDK directory ${ndk} does not exist." 23*1208bc7eSAndroid Build Coastguard Worker exit 1 24*1208bc7eSAndroid Build Coastguard Workerfi 25*1208bc7eSAndroid Build Coastguard Workertoolchain=${ndk}/toolchains/llvm/prebuilt/linux-x86_64 26*1208bc7eSAndroid Build Coastguard Workerif [[ ! -d ${toolchain} ]]; then 27*1208bc7eSAndroid Build Coastguard Worker echo "NDK ${ndk} cannot find toolchain directory." 28*1208bc7eSAndroid Build Coastguard Worker echo " ${toolchain}" 29*1208bc7eSAndroid Build Coastguard Worker exit 1 30*1208bc7eSAndroid Build Coastguard Workerfi 31*1208bc7eSAndroid Build Coastguard Worker 32*1208bc7eSAndroid Build Coastguard Worker# The latest version of clang to use for compilation. 33*1208bc7eSAndroid Build Coastguard Workerlatest_api=29 34*1208bc7eSAndroid Build Coastguard Worker 35*1208bc7eSAndroid Build Coastguard Workercase "$arch" in 36*1208bc7eSAndroid Build Coastguard Worker "arm") 37*1208bc7eSAndroid Build Coastguard Worker prefix="arm-linux-androideabi" 38*1208bc7eSAndroid Build Coastguard Worker clang_prefix="armv7a-linux-androideabi" 39*1208bc7eSAndroid Build Coastguard Worker target="arm-android-linux" 40*1208bc7eSAndroid Build Coastguard Worker ;; 41*1208bc7eSAndroid Build Coastguard Worker "arm64") 42*1208bc7eSAndroid Build Coastguard Worker prefix="aarch64-linux-android" 43*1208bc7eSAndroid Build Coastguard Worker target="aarch64-android-linux" 44*1208bc7eSAndroid Build Coastguard Worker ;; 45*1208bc7eSAndroid Build Coastguard Worker "x86") 46*1208bc7eSAndroid Build Coastguard Worker target="x86-android-linux" 47*1208bc7eSAndroid Build Coastguard Worker export CPPFLAGS="-m32" 48*1208bc7eSAndroid Build Coastguard Worker ;& 49*1208bc7eSAndroid Build Coastguard Worker "x86_64") 50*1208bc7eSAndroid Build Coastguard Worker prefix="x86_64-linux-android" 51*1208bc7eSAndroid Build Coastguard Worker if [[ "$target" == "" ]]; then 52*1208bc7eSAndroid Build Coastguard Worker target="x86_64-android-linux" 53*1208bc7eSAndroid Build Coastguard Worker fi 54*1208bc7eSAndroid Build Coastguard Worker ;; 55*1208bc7eSAndroid Build Coastguard Worker *) 56*1208bc7eSAndroid Build Coastguard Worker echo "Unknown arch $arch" 57*1208bc7eSAndroid Build Coastguard Worker exit 1 58*1208bc7eSAndroid Build Coastguard Worker ;; 59*1208bc7eSAndroid Build Coastguard Workeresac 60*1208bc7eSAndroid Build Coastguard Worker 61*1208bc7eSAndroid Build Coastguard Workerif [[ "${clang_prefix}" == "" ]]; then 62*1208bc7eSAndroid Build Coastguard Worker clang_prefix="${prefix}" 63*1208bc7eSAndroid Build Coastguard Workerfi 64*1208bc7eSAndroid Build Coastguard Worker 65*1208bc7eSAndroid Build Coastguard Workertools=("AR" "ar" 66*1208bc7eSAndroid Build Coastguard Worker "AS" "as" 67*1208bc7eSAndroid Build Coastguard Worker "LD" "ld" 68*1208bc7eSAndroid Build Coastguard Worker "RANLIB" "ranlib" 69*1208bc7eSAndroid Build Coastguard Worker "STRIP" "strip") 70*1208bc7eSAndroid Build Coastguard Worker 71*1208bc7eSAndroid Build Coastguard Workerfor ((i = 0; i < ${#tools[@]}; i = i + 2)); do 72*1208bc7eSAndroid Build Coastguard Worker binary=${toolchain}/bin/${prefix}-${tools[$((i + 1))]} 73*1208bc7eSAndroid Build Coastguard Worker if [[ ! -e ${binary} ]]; then 74*1208bc7eSAndroid Build Coastguard Worker echo "${binary} does not exist." 75*1208bc7eSAndroid Build Coastguard Worker exit 1 76*1208bc7eSAndroid Build Coastguard Worker fi 77*1208bc7eSAndroid Build Coastguard Worker export ${tools[$i]}=${binary} 78*1208bc7eSAndroid Build Coastguard Workerdone 79*1208bc7eSAndroid Build Coastguard Worker 80*1208bc7eSAndroid Build Coastguard Workerclang=("CC" "clang" 81*1208bc7eSAndroid Build Coastguard Worker "CXX" "clang++") 82*1208bc7eSAndroid Build Coastguard Worker 83*1208bc7eSAndroid Build Coastguard Workerfor ((i = 0; i < ${#clang[@]}; i = i + 2)); do 84*1208bc7eSAndroid Build Coastguard Worker binary=${toolchain}/bin/${clang_prefix}${latest_api}-${clang[$((i + 1))]} 85*1208bc7eSAndroid Build Coastguard Worker if [[ ! -e ${binary} ]]; then 86*1208bc7eSAndroid Build Coastguard Worker echo "${binary} does not exist." 87*1208bc7eSAndroid Build Coastguard Worker exit 1 88*1208bc7eSAndroid Build Coastguard Worker fi 89*1208bc7eSAndroid Build Coastguard Worker export ${clang[$i]}=${binary} 90*1208bc7eSAndroid Build Coastguard Workerdone 91*1208bc7eSAndroid Build Coastguard Worker 92*1208bc7eSAndroid Build Coastguard Workerexport CPP="${CC} -E" 93*1208bc7eSAndroid Build Coastguard Worker 94*1208bc7eSAndroid Build Coastguard Worker./autogen.sh --with-jemalloc_prefix=je_ --host=${target} 95