#!/bin/sh

# Please set Environment variable: ANDROID_NDK_ROOT, TMP
# CygwinでNDK r5b以降を使うときは、path指定がc:/の形式で行わないと駄目
# Tegra2はNEONを使えない

PREBUILT=${ANDROID_NDK_ROOT}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows
PLATFORM=android-4
USE_VFP=1
USE_NEON=0

if [ "$OSTYPE" = "cygwin" ] ; then
	export TMP=`cygpath -m $TMP`
fi

configure_common()
{
	ARCH=$1
	FMPU=$2
	./configure \
		${ARCH} \
		--target-os=linux --enable-cross-compile --cross-prefix=${PREBUILT}/bin/arm-linux-androideabi- \
		--extra-cflags=" -fPIC -DANDROID -std=c99 ${FMPU} " \
		--enable-static --disable-asm --disable-yasm --disable-shared \
		--disable-encoders --enable-encoder=mpeg4 \
		--disable-devices --disable-protocols \
		--sysinclude=${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/arch-arm/usr/include \
		--extra-ldflags="-Wl,-rpath-link=${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/arch-arm/usr/lib -L${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/arch-arm/usr/lib -nostdlib ${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/arch-arm/usr/lib/crtbegin_static.o ${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/arch-arm/usr/lib/crtend_android.o -lc -lm -ldl ${FMPU}" 
}

#-Wl,-T,${PREBUILT}/arm-linux-androideabi/lib/ldscripts/armelf_linux_eabi.x 

config_h_fix()
{
cat << END >> config.h
#undef restrict
#define restrict __restrict__
#undef HAVE_LRINT
#define HAVE_LRINT 1
#undef HAVE_LRINTF
#define HAVE_LRINTF 1
#undef HAVE_ROUND
#define HAVE_ROUND 1
#undef HAVE_ROUNDF
#define HAVE_ROUNDF 1
#undef HAVE_TRUNCF
#define HAVE_TRUNCF 1
END
}

########## armeabi ##########

pushd jni
rm config.h
#configure_common --arch=armv5te
configure_common --arch=arm
config_h_fix

#cat << END >> config.h
##undef ARCH_ARM
##define ARCH_ARM 1
##undef HAVE_ARMV5TE
##define HAVE_ARMV5TE 1
#END

cat << END > config-arm.mak
ARCH=arm
ARCH_ARM=yes
#HAVE_ARMV5TE=yes
HAVE_ARMV5TE=no
END

popd
mkdir -p obj/local/armeabi
cp -f ${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/arch-arm/usr/lib/libz.so obj/local/armeabi
${ANDROID_NDK_ROOT}/ndk-build NDK_APPLICATION_MK=Application_armeabi.mk
if [ $? != 0 ] ; then
	exit
fi

########## armeabi-v7a ##########

pushd jni
rm config.h
if [ "$USE_VFP" = "1" ] ; then
	ARG_ARCH="--arch=armvfp"
else
	ARG_ARCH="--arch=arm"
fi
if [ "$USE_NEON" = "1" ] ; then
	ARG_FMPU="-fmpu=neon"
fi
configure_common $ARG_ARCH $ARG_FMPU
config_h_fix

#cat << END >> config.h
##undef ARCH_ARM
##define ARCH_ARM 1
##undef HAVE_ARMV5TE
##define HAVE_ARMV5TE 1
##undef HAVE_ARMV6
##define HAVE_ARMV6 1
##undef HAVE_ARMV6T2
##define HAVE_ARMV6T2 1
#END
if [ "$USE_VFP" = "1" ] ; then
	echo "#undef HAVE_ARMVFP" >> config.h
	echo "#define HAVE_ARMVFP 1" >> config.h
fi
if [ "$USE_NEON" = "1" ] ; then
	echo "#undef HAVE_NEON" >> config.h
	echo "#define HAVE_NEON 1" >> config.h
fi

cat << END >  config-arm.mak
ARCH=arm
ARCH_ARM=yes
#HAVE_ARMV5TE=yes
HAVE_ARMV5TE=no
#HAVE_ARMV6=yes
#HAVE_ARMV6T2=yes
END
if [ "$USE_VFP" = "1" ] ; then
	echo "HAVE_ARMVFP=yes" >> config-arm.mak
fi
if [ "$USE_NEON" = "1" ] ; then
	echo "HAVE_NEON=yes" >> config-arm.mak
fi

popd
mkdir -p obj/local/armeabi-v7a
cp -f ${ANDROID_NDK_ROOT}/platforms/${PLATFORM}/arch-arm/usr/lib/libz.so obj/local/armeabi-v7a
${ANDROID_NDK_ROOT}/ndk-build NDK_APPLICATION_MK=Application_armeabi-v7a.mk
if [ $? != 0 ] ; then
	exit
fi

# --arch=armv41 \
# --cc=${PREBUILT}/bin/arm-eabi-gcc \
# --cc=${PREBUILT}/bin/arm-eabi-gcc \
# --nm=${PREBUILT}/bin/arm-eabi-nm \
# --ld=${PREBUILT}/bin/arm-eabi-ld \

# --extra-ldflags="-Wl,-T,${PREBUILT}/arm-eabi/lib/ldscripts/armelf.x -Wl,-rpath-link=${ANDROID_NDK_ROOT}/build/platforms/${PLATFORM}/arch-arm/usr/lib -L${ANDROID_NDK_ROOT}/build/platforms/${PLATFORM}/arch-arm/usr/lib -nostdlib ${PREBUILT}/lib/gcc/arm-eabi/${GCC_VERSION}/crtbegin.o ${PREBUILT}/lib/gcc/arm-eabi/${GCC_VERSION}/crtend.o -lc -lm -ldl"

# -flang-isoc9x
#-fstd=gnu89 

# --prefix=/home/myhome/work/ffmpeg-android-bin \
