mirror of
https://github.com/radareorg/radare2.git
synced 2024-12-18 18:57:42 +00:00
128 lines
2.8 KiB
Bash
Executable File
128 lines
2.8 KiB
Bash
Executable File
#!/bin/sh
|
|
# android gcc wrapper
|
|
|
|
if [ -z "${NDK}" ]; then
|
|
NDK=~/Downloads/android-ndk-r10e
|
|
if [ ! -d "${NDK}" ]; then
|
|
echo "Invalid path in NDK environment"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [ "${NDKCXX}" = 1 ]; then
|
|
CCN=g++
|
|
else
|
|
CCN=gcc
|
|
fi
|
|
|
|
if [ -n "${NDK_ARCH}" ]; then
|
|
ARCH=${NDK_ARCH}
|
|
else
|
|
ARCH=mips
|
|
ARCH=arm
|
|
ARCH=x86
|
|
fi
|
|
|
|
#------------------------------------------#
|
|
|
|
PROGDIR="$(dirname "$0")"
|
|
PROGDIR="$(cd "$PROGDIR" && pwd)"
|
|
|
|
ANDROID_KITKAT=19
|
|
ANDROID_LOLIPOP=21
|
|
|
|
# shellcheck disable=SC2019
|
|
# shellcheck disable=SC2018
|
|
OS="$(uname | tr 'A-Z' 'a-z')"
|
|
[ "${OS}" = macos ] && OS=darwin
|
|
|
|
ARCH2=${ARCH}
|
|
case "${ARCH}" in
|
|
aarch64)
|
|
ANDROID_SDK_VERSION=${ANDROID_LOLIPOP}
|
|
NDKPFX=${ARCH}-linux-android
|
|
ARCH2=arm64
|
|
;;
|
|
arm)
|
|
ANDROID_SDK_VERSION=${ANDROID_KITKAT}
|
|
NDKPFX=${ARCH}-linux-androideabi
|
|
;;
|
|
mips)
|
|
ANDROID_SDK_VERSION=${ANDROID_KITKAT}
|
|
NDKPFX=mipsel-linux-android
|
|
${NDKPFX}-${CCN} 2>/dev/null
|
|
if [ $? -gt 1 ]; then
|
|
NDKPFX=mipsel-linux-android
|
|
fi
|
|
;;
|
|
mips64)
|
|
ANDROID_SDK_VERSION=${ANDROID_LOLIPOP}
|
|
NDKPFX=mips64el-linux-android
|
|
${NDKPFX}-${CCN} 2>/dev/null
|
|
if [ $? -gt 1 ]; then
|
|
NDKPFX=mips64el-linux-android
|
|
fi
|
|
;;
|
|
x86)
|
|
ANDROID_SDK_VERSION=${ANDROID_KITKAT} #x86
|
|
NDKPFX=i686-android-linux
|
|
${NDKPFX}-${CCN} 2>/dev/null
|
|
if [ $? -gt 1 ]; then
|
|
NDKPFX=i686-linux-android
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
if [ -d "${PROGDIR}/platforms/android-L/arch-${ARCH}" ]; then
|
|
ANDROID_SDK_VERSION=L
|
|
fi
|
|
|
|
PROGDIR=${NDK}
|
|
PLATFORM=android-${ANDROID_SDK_VERSION}
|
|
PLATFORM_ROOT=${PROGDIR}/platforms/${PLATFORM}/arch-${ARCH2}
|
|
PLATFORM_PATH=${PLATFORM_ROOT}/usr
|
|
# shellcheck disable=SC2010
|
|
NDK_BINS=$(ls "${PROGDIR}"/toolchains/*/prebuilt/"${OS}"*/bin |grep prebuilt | grep "/${ARCH}-" |sort |tail -n 1)
|
|
# shellcheck disable=SC2010
|
|
[ -z "${NDK_BINS}" ] && \
|
|
NDK_BINS=$(ls "${PROGDIR}"/toolchains/*/prebuilt/"${OS}"*/bin |grep prebuilt | grep "/${ARCH}" |sort |tail -n 1)
|
|
#echo "ls ${PROGDIR}/toolchains/*/prebuilt/linux*/bin |grep prebuilt | grep "/${ARCH}-" |sort |tail -n 1"
|
|
#echo NDKBINS=${NDK_BINS}
|
|
if [ -z "${NDK_BINS}" ]; then
|
|
echo "Cant find NDK_BINS"
|
|
exit 1
|
|
fi
|
|
CFLAGS="${CFLAGS} --sysroot=${PLATFORM_ROOT}"
|
|
CFLAGS="${CFLAGS} -I${PLATFORM_PATH}/include"
|
|
CFLAGS="${CFLAGS} -fPIC -fPIE"
|
|
|
|
case "${ARCH}" in
|
|
mips64)
|
|
LDFLAGS=-L${PLATFORM_PATH}/lib64
|
|
;;
|
|
*)
|
|
LDFLAGS=-L${PLATFORM_PATH}/lib
|
|
;;
|
|
esac
|
|
|
|
#LDFLAGS="${LDFLAGS} -nostdlib"
|
|
#LDFLAGS="${LDFLAGS} -lc -ldl"
|
|
#LDFLAGS="${LDFLAGS} -Wl,-dynamic-linker=/system/bin/linker"
|
|
|
|
LDFLAGS="${LDFLAGS} --sysroot=${PLATFORM_ROOT}"
|
|
#if [ -z "`echo $*" | grep shared`" ]; then
|
|
#LDFLAGS="${LDFLAGS} ${PLATFORM_PATH}/lib/crtbegin_dynamic.o"
|
|
#fi
|
|
CC="${NDKPFX}-gcc"
|
|
CXX="${NDKPFX}-g++"
|
|
AR="${NDKPFX}-ar"
|
|
EXT_SO=so
|
|
|
|
export PATH="${NDK_BINS}:$PATH"
|
|
export EXT_SO AR CC CXX CFLAGS LDFLAGS PATH
|
|
|
|
#shellcheck disable=SC2048
|
|
#shellcheck disable=SC2086
|
|
echo ${CC} ${LDFLAGS} ${CFLAGS} $*
|
|
${CC} ${LDFLAGS} ${CFLAGS} $*
|