#!/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 [ -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}-gcc 2>/dev/null
	if [ $? -gt 1 ]; then
		NDKPFX=mipsel-linux-android
	fi
	;;
mips64)
	ANDROID_SDK_VERSION=${ANDROID_LOLIPOP}
	NDKPFX=mips64el-linux-android
	${NDKPFX}-gcc 2>/dev/null
	if [ $? -gt 1 ]; then
		NDKPFX=mips64el-linux-android
	fi
	;;
x86)
	ANDROID_SDK_VERSION=${ANDROID_KITKAT} #x86
	NDKPFX=i686-android-linux
	${NDKPFX}-gcc 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"
AR="${NDKPFX}-ar"
EXT_SO=so

export PATH="${NDK_BINS}:$PATH"
export EXT_SO AR CC CFLAGS LDFLAGS PATH

#shellcheck disable=SC2048
#shellcheck disable=SC2086
echo ${CC} ${LDFLAGS} ${CFLAGS} $*
${CC} ${LDFLAGS} ${CFLAGS} $*
