nkeynes@1239: # LX_ANDROID_BUILD nkeynes@1239: # Defines --with-android, --with-android-ndk, and --with-android-version nkeynes@1239: # If specified, checks for a working install, and sets build parameters nkeynes@1239: # appropriately for an Android host. nkeynes@1239: AC_DEFUN([LX_ANDROID_BUILD], [ nkeynes@1239: AC_REQUIRE([AC_CANONICAL_HOST]) nkeynes@1239: AC_ARG_WITH( android, AS_HELP_STRING( [--with-android=SDK], [Specify the location of the Android SDK] ) ) nkeynes@1239: AC_ARG_WITH( android-ndk, AS_HELP_STRING( [--with-android-ndk=NDK], [Specify the location of the Android NDK] ) ) nkeynes@1245: AC_ARG_WITH( android-version, AS_HELP_STRING( [--with-android-version], [Specify target Android SDK version]), [], [with_android_version="android-11"] ) nkeynes@1245: AC_ARG_WITH( android-ndk-version, AS_HELP_STRING( [--with-android-version], [Specify target Android NDK version]), [], [with_ndk_version="android-9"] ) nkeynes@1239: nkeynes@1239: if test "x$with_android" != "x"; then nkeynes@1239: if test "$with_android" = "yes"; then nkeynes@1239: AC_MSG_ERROR( [--with-android option must be given with the path to the Android SDK] ) nkeynes@1239: fi nkeynes@1239: if test "x$with_android_ndk" = "x" -o "x$with_android_ndk" = "xyes"; then nkeynes@1239: AC_MSG_ERROR( [--with-android-ndk=/path/to/ndk option must be used with --with-android] ) nkeynes@1239: fi nkeynes@1239: nkeynes@1239: ANDROID_SDK_HOME="$with_android" nkeynes@1239: ANDROID_NDK_HOME="$with_android_ndk" nkeynes@1239: ANDROID_SDK_VERSION="$with_android_version" nkeynes@1245: ANDROID_NDK_VERSION="$with_ndk_version" nkeynes@1239: nkeynes@1239: AC_CHECK_FILE( [$ANDROID_SDK_HOME/tools/ant/pre_setup.xml], [], [ AC_MSG_ERROR([Android SDK not found in $ANDROID_SDK_HOME]) ]) nkeynes@1239: AC_CHECK_FILE( [$ANDROID_SDK_HOME/platforms/$ANDROID_SDK_VERSION/sdk.properties], [], [ AC_MSG_ERROR([Android platform version $ANDROID_SDK_VERSION not found in $ANDROID_SDK_HOME]) ]) nkeynes@1239: AC_CHECK_FILE( [$ANDROID_NDK_HOME/toolchains], [], [ AC_MSG_ERROR([Android NDK not found in $ANDROID_NDK_HOME]) ]) nkeynes@1239: nkeynes@1239: case $host_alias in nkeynes@1239: arm-* | "") nkeynes@1239: host_alias="arm-linux-androideabi" nkeynes@1239: host_cpu="arm" nkeynes@1239: host_vendor="unknown"; nkeynes@1239: host_os="linux-androideabi" nkeynes@1239: ANDROID_NDK_BIN=`echo $ANDROID_NDK_HOME/toolchains/arm-*/prebuilt/*/bin` nkeynes@1239: ANDROID_GDBSERVER=`echo $ANDROID_NDK_HOME/toolchains/arm-*/prebuilt/gdbserver` nkeynes@1245: ANDROID_SYSROOT="$ANDROID_NDK_HOME/platforms/$ANDROID_NDK_VERSION/arch-arm" nkeynes@1239: TARGETFLAGS="-ffunction-sections -funwind-tables -fstack-protector -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -DANDROID -Wno-psabi -Wa,--noexecstack" nkeynes@1239: TARGETFLAGS="$TARGETFLAGS -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -march=armv5te -mtune=xscale -msoft-float -mthumb -Os" nkeynes@1239: ;; nkeynes@1239: i686-*) nkeynes@1239: host_alias="i686-android-linux" nkeynes@1239: host_cpu="i686" nkeynes@1239: host_vendor="android" nkeynes@1239: host_os="linux" nkeynes@1239: ANDROID_NDK_BIN=`echo $ANDROID_NDK_HOME/toolchains/x86-*/prebuilt/*/bin` nkeynes@1239: ANDROID_GDBSERVER=`echo $ANDROID_NDK_HOME/toolchains/x86-*/prebuilt/gdbserver` nkeynes@1245: ANDROID_SYSROOT="$ANDROID_NDK_HOME/platforms/$ANDROID_NDK_VERSION/arch-x86" nkeynes@1239: TARGETFLAGS="" nkeynes@1239: ;; nkeynes@1239: *) nkeynes@1239: AC_MSG_ERROR([Unsupported android host $host_alias]) nkeynes@1239: ;; nkeynes@1239: esac nkeynes@1239: nkeynes@1239: AC_PATH_PROG( ANT, [ant] ) nkeynes@1239: nkeynes@1239: CC="$ANDROID_NDK_BIN/${host_alias}-gcc" nkeynes@1239: CXX="$ANDROID_NDK_BIN/${host_alias}-g++" nkeynes@1239: CPP="$ANDROID_NDK_BIN/${host_alias}-cpp" nkeynes@1239: LD="$ANDROID_NDK_BIN/${host_alias}-ld" nkeynes@1239: AR="$ANDROID_NDK_BIN/${host_alias}-ar" nkeynes@1239: RANLIB="$ANDROID_NDK_BIN/${host_alias}-ranlib" nkeynes@1239: STRIP="$ANDROID_NDK_BIN/${host_alias}-strip" nkeynes@1239: OBJDUMP="$ANDROID_NDK_BIN/${host_alias}-objdump" nkeynes@1239: CPPFLAGS="-fPIC --sysroot=$ANDROID_SYSROOT -I$ANDROID_SYSROOT/usr/include $TARGETFLAGS $CPPFLAGS" nkeynes@1239: LDFLAGS="-nostdlib -Wl,--no-undefined -L${ANDROID_SYSROOT}/usr/lib -Wl,-rpath-link,${ANDROID_SYSROOT}/usr/lib -Wl,-allow-shlib-undefined -Wl,-z,noexecstack $LDFLAGS" nkeynes@1245: LIBS="$LIBS -liconv -landroid -llog -lgcc -lc -lm" nkeynes@1239: nkeynes@1239: AC_SUBST(ANDROID_SDK_HOME) nkeynes@1239: AC_SUBST(ANDROID_NDK_HOME) nkeynes@1239: AC_SUBST(ANDROID_SDK_VERSION) nkeynes@1245: AC_SUBST(ANDROID_NDK_VERSION) nkeynes@1239: AC_SUBST(ANDROID_GDBSERVER) nkeynes@1239: nkeynes@1239: ANDROID_BUILD=yes nkeynes@1239: cross_compiling=yes nkeynes@1239: fi nkeynes@1239: nkeynes@1239: AM_CONDITIONAL(GUI_ANDROID, [test "$ANDROID_BUILD" = "yes"]) nkeynes@1239: nkeynes@1239: ])