slouken@11262: #!/bin/sh slouken@11262: # slouken@11262: # Build the Android libraries without needing a project slouken@11262: # (AndroidManifest.xml, jni/{Application,Android}.mk, etc.) slouken@11262: # slouken@11262: # Usage: androidbuildlibs.sh [arg for ndk-build ...]" slouken@11262: # slouken@11262: # Useful NDK arguments: slouken@11262: # slouken@11262: # NDK_DEBUG=1 - build debug version slouken@11262: # NDK_LIBS_OUT= - specify alternate destination for installable slouken@11262: # modules. slouken@11262: # slouken@11262: # Note that SDLmain is not an installable module (.so) so libSDLmain.a slouken@11262: # can be found in $obj/local/ along with the unstripped libSDL.so. slouken@11262: # slouken@11262: slouken@11262: slouken@11262: # Android.mk is in srcdir slouken@11262: srcdir=`dirname $0`/.. slouken@11262: srcdir=`cd $srcdir && pwd` slouken@11262: cd $srcdir slouken@11262: slouken@11262: slouken@11262: # slouken@11262: # Create the build directories slouken@11262: # slouken@11262: slouken@11262: build=build slouken@11262: buildandroid=$build/android slouken@11262: obj= slouken@11262: lib= slouken@11262: ndk_args= slouken@11262: slouken@11262: # Allow an external caller to specify locations. slouken@11262: for arg in $* slouken@11262: do slouken@11262: if [ "${arg:0:8}" == "NDK_OUT=" ]; then slouken@11262: obj=${arg#NDK_OUT=} slouken@11262: elif [ "${arg:0:13}" == "NDK_LIBS_OUT=" ]; then slouken@11262: lib=${arg#NDK_LIBS_OUT=} slouken@11262: else slouken@11262: ndk_args="$ndk_args $arg" slouken@11262: fi slouken@11262: done slouken@11262: slouken@11262: if [ -z $obj ]; then slouken@11262: obj=$buildandroid/obj slouken@11262: fi slouken@11262: if [ -z $lib ]; then slouken@11262: lib=$buildandroid/lib slouken@11262: fi slouken@11262: slouken@11262: for dir in $build $buildandroid $obj $lib; do slouken@11262: if test -d $dir; then slouken@11262: : slouken@11262: else slouken@11262: mkdir $dir || exit 1 slouken@11262: fi slouken@11262: done slouken@11262: slouken@11262: slouken@11262: # APP_* variables set in the environment here will not be seen by the slouken@11262: # ndk-build makefile segments that use them, e.g., default-application.mk. slouken@11262: # For consistency, pass all values on the command line. slouken@11262: ndk-build \ slouken@11262: NDK_PROJECT_PATH=null \ slouken@11262: NDK_OUT=$obj \ slouken@11262: NDK_LIBS_OUT=$lib \ slouken@11262: APP_BUILD_SCRIPT=Android.mk \ slouken@11836: APP_ABI="armeabi-v7a arm64-v8a x86 x86_64" \ slouken@12532: APP_PLATFORM=android-16 \ slouken@11262: APP_MODULES="SDL2 SDL2_main" \ slouken@11262: $ndk_args