#!/bin/sh
# Taken from:
# http://warpedtimes.wordpress.com/2010/02/03/building-open-source-libraries-with-android-ndk/
# -host=arm-eabi: This tells the configure script if the cross compilation is being done or not. It is also used as a prefix to some of the cross compiler tools like strip, nm etc.
# CC=arm-eabi-gcc: This tells which compiler should be used for building.
# CPPFLAGS: This tells the location where the header files should be searched which were specified in configure.ac with AC_CHECK_HEADER macro.
# CFLAGS="-nostdlib" passes the option to build some test programs during configure process run.
# If you don’t pass this the compiler would link the standard C library of the host system which wouldn’t be compatible with the C library of the target system.
# LIBS="-lc": This option tells that it should explicitly link to a library called libc.so which is present in the location specified using the -L in the LDFLAGS option.
# If you are wondering that usually to build a C executable one doesn’t need to provide -lc as libc is automatically linked, then why do we need to specify this here?
# The answer lies in -nostdlib flag, which instructs not to link with the standard C library on the build system.
# LDFLAGS: This option is also passed to build some test programs during configure process run.
# If you don’t pass the -Wl,-rpath-link option, then linker does not know where do the libraries dependent on the library specific using LIBS reside.
# If you don’t pass the -L option then the linker doesn’t know where do the libraries specified in LIBS reside.
# Debugging
# set -x
# Cleanup previous configuration
if [ -f Makefile ]; then
make distclean
fi
# Set this to your NDK location
export ANDROID_NDK_ROOT=~/android-ndk
# See: http://developer.android.com/guide/appendix/api-levels.html
export ANDROID_API_LEVEL="android-8"
# Run configure script
export PATH=$ANDROID_NDK_ROOT/toolchains/arm-eabi-4.4.0/prebuilt/linux-x86/bin:$PATH
./configure -host=arm-eabi \
CC=arm-eabi-gcc \
CPPFLAGS="-I$ANDROID_NDK_ROOT/platforms/$ANDROID_API_LEVEL/arch-arm/usr/include/" \
CFLAGS="-nostdlib" \
LDFLAGS="-Wl,-rpath-link=$ANDROID_NDK_ROOT/platforms/$ANDROID_API_LEVEL/arch-arm/usr/lib/ -L$ANDROID_NDK_ROOT/platforms/$ANDROID_API_LEVEL/arch-arm/usr/lib/" \
LIBS="-lc" \
--disable-fortran \
--disable-alloca
mv config.h config.h.android
make distclean
mv config.h.android config.h