зеркало из https://github.com/mozilla/gecko-dev.git
Bug 759115 - Move Android SDK/NDK checks in build/autoconf/android.m4, and bump minimum Android SDK API level we require to 14 for mobile/android. r=ted
This commit is contained in:
Родитель
956b1e7139
Коммит
215721bd12
|
@ -18,6 +18,7 @@ builtin(include, build/autoconf/frameptr.m4)dnl
|
||||||
builtin(include, build/autoconf/compiler-opts.m4)dnl
|
builtin(include, build/autoconf/compiler-opts.m4)dnl
|
||||||
builtin(include, build/autoconf/expandlibs.m4)dnl
|
builtin(include, build/autoconf/expandlibs.m4)dnl
|
||||||
builtin(include, build/autoconf/arch.m4)dnl
|
builtin(include, build/autoconf/arch.m4)dnl
|
||||||
|
builtin(include, build/autoconf/android.m4)dnl
|
||||||
|
|
||||||
MOZ_PROG_CHECKMSYS()
|
MOZ_PROG_CHECKMSYS()
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,241 @@
|
||||||
|
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
|
AC_DEFUN([MOZ_ANDROID_NDK],
|
||||||
|
[
|
||||||
|
|
||||||
|
MOZ_ARG_WITH_STRING(android-ndk,
|
||||||
|
[ --with-android-ndk=DIR
|
||||||
|
location where the Android NDK can be found],
|
||||||
|
android_ndk=$withval)
|
||||||
|
|
||||||
|
MOZ_ARG_WITH_STRING(android-toolchain,
|
||||||
|
[ --with-android-toolchain=DIR
|
||||||
|
location of the android toolchain],
|
||||||
|
android_toolchain=$withval)
|
||||||
|
|
||||||
|
|
||||||
|
MOZ_ARG_WITH_STRING(android-version,
|
||||||
|
[ --with-android-version=VER
|
||||||
|
android platform version, default 5],
|
||||||
|
android_version=$withval,
|
||||||
|
android_version=5)
|
||||||
|
|
||||||
|
MOZ_ARG_WITH_STRING(android-platform,
|
||||||
|
[ --with-android-platform=DIR
|
||||||
|
location of platform dir],
|
||||||
|
android_platform=$withval)
|
||||||
|
|
||||||
|
case "$target" in
|
||||||
|
arm-linux*-android*|*-linuxandroid*)
|
||||||
|
android_tool_prefix="arm-linux-androideabi"
|
||||||
|
;;
|
||||||
|
i?86-*android*)
|
||||||
|
android_tool_prefix="i686-android-linux"
|
||||||
|
;;
|
||||||
|
mipsel-*android*)
|
||||||
|
android_tool_prefix="mipsel-linux-android"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
android_tool_prefix="$target_os"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$target" in
|
||||||
|
*-android*|*-linuxandroid*)
|
||||||
|
if test -z "$android_ndk" ; then
|
||||||
|
AC_MSG_ERROR([You must specify --with-android-ndk=/path/to/ndk when targeting Android.])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$android_toolchain" ; then
|
||||||
|
AC_MSG_CHECKING([for android toolchain directory])
|
||||||
|
|
||||||
|
kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"`
|
||||||
|
|
||||||
|
case "$target_cpu" in
|
||||||
|
arm)
|
||||||
|
target_name=arm-linux-androideabi-4.4.3
|
||||||
|
;;
|
||||||
|
i?86)
|
||||||
|
target_name=x86-4.4.3
|
||||||
|
;;
|
||||||
|
mipsel)
|
||||||
|
target_name=mipsel-linux-android-4.4.3
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
android_toolchain="$android_ndk"/toolchains/$target_name/prebuilt/$kernel_name-x86
|
||||||
|
|
||||||
|
if test -d "$android_toolchain" ; then
|
||||||
|
AC_MSG_RESULT([$android_toolchain])
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([not found. You have to specify --with-android-toolchain=/path/to/ndk/toolchain.])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$android_platform" ; then
|
||||||
|
AC_MSG_CHECKING([for android platform directory])
|
||||||
|
|
||||||
|
case "$target_cpu" in
|
||||||
|
arm)
|
||||||
|
target_name=arm
|
||||||
|
;;
|
||||||
|
i?86)
|
||||||
|
target_name=x86
|
||||||
|
;;
|
||||||
|
mipsel)
|
||||||
|
target_name=mips
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
android_platform="$android_ndk"/platforms/android-"$android_version"/arch-"$target_name"
|
||||||
|
|
||||||
|
if test -d "$android_platform" ; then
|
||||||
|
AC_MSG_RESULT([$android_platform])
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([not found. You have to specify --with-android-platform=/path/to/ndk/platform.])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl set up compilers
|
||||||
|
AS="$android_toolchain"/bin/"$android_tool_prefix"-as
|
||||||
|
CC="$android_toolchain"/bin/"$android_tool_prefix"-gcc
|
||||||
|
CXX="$android_toolchain"/bin/"$android_tool_prefix"-g++
|
||||||
|
CPP="$android_toolchain"/bin/"$android_tool_prefix"-cpp
|
||||||
|
LD="$android_toolchain"/bin/"$android_tool_prefix"-ld
|
||||||
|
AR="$android_toolchain"/bin/"$android_tool_prefix"-ar
|
||||||
|
RANLIB="$android_toolchain"/bin/"$android_tool_prefix"-ranlib
|
||||||
|
STRIP="$android_toolchain"/bin/"$android_tool_prefix"-strip
|
||||||
|
OBJCOPY="$android_toolchain"/bin/"$android_tool_prefix"-objcopy
|
||||||
|
|
||||||
|
CPPFLAGS="-isystem $android_platform/usr/include $CPPFLAGS"
|
||||||
|
CFLAGS="-mandroid -fno-short-enums -fno-exceptions $CFLAGS"
|
||||||
|
CXXFLAGS="-mandroid -fno-short-enums -fno-exceptions -Wno-psabi $CXXFLAGS"
|
||||||
|
ASFLAGS="-isystem $android_platform/usr/include -DANDROID $ASFLAGS"
|
||||||
|
|
||||||
|
dnl Add -llog by default, since we use it all over the place.
|
||||||
|
dnl Add --allow-shlib-undefined, because libGLESv2 links to an
|
||||||
|
dnl undefined symbol (present on the hardware, just not in the
|
||||||
|
dnl NDK.)
|
||||||
|
LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform -llog -Wl,--allow-shlib-undefined $LDFLAGS"
|
||||||
|
dnl prevent cross compile section from using these flags as host flags
|
||||||
|
if test -z "$HOST_CPPFLAGS" ; then
|
||||||
|
HOST_CPPFLAGS=" "
|
||||||
|
fi
|
||||||
|
if test -z "$HOST_CFLAGS" ; then
|
||||||
|
HOST_CFLAGS=" "
|
||||||
|
fi
|
||||||
|
if test -z "$HOST_CXXFLAGS" ; then
|
||||||
|
HOST_CXXFLAGS=" "
|
||||||
|
fi
|
||||||
|
if test -z "$HOST_LDFLAGS" ; then
|
||||||
|
HOST_LDFLAGS=" "
|
||||||
|
fi
|
||||||
|
|
||||||
|
ANDROID_NDK="${android_ndk}"
|
||||||
|
ANDROID_TOOLCHAIN="${android_toolchain}"
|
||||||
|
ANDROID_PLATFORM="${android_platform}"
|
||||||
|
ANDROID_VERSION="${android_version}"
|
||||||
|
|
||||||
|
AC_DEFINE(ANDROID)
|
||||||
|
AC_DEFINE_UNQUOTED(ANDROID_VERSION, $android_version)
|
||||||
|
AC_SUBST(ANDROID_VERSION)
|
||||||
|
CROSS_COMPILE=1
|
||||||
|
AC_SUBST(ANDROID_NDK)
|
||||||
|
AC_SUBST(ANDROID_TOOLCHAIN)
|
||||||
|
AC_SUBST(ANDROID_PLATFORM)
|
||||||
|
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([MOZ_ANDROID_STLPORT],
|
||||||
|
[
|
||||||
|
|
||||||
|
if test "$OS_TARGET" = "Android" -a -z "$gonkdir"; then
|
||||||
|
case "${CPU_ARCH}-${MOZ_ARCH}" in
|
||||||
|
arm-armv7*)
|
||||||
|
ANDROID_CPU_ARCH=armeabi-v7a
|
||||||
|
;;
|
||||||
|
arm-*)
|
||||||
|
ANDROID_CPU_ARCH=armeabi
|
||||||
|
;;
|
||||||
|
x86-*)
|
||||||
|
ANDROID_CPU_ARCH=x86
|
||||||
|
;;
|
||||||
|
mips-*) # When target_cpu is mipsel, CPU_ARCH is mips
|
||||||
|
ANDROID_CPU_ARCH=mips
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test -z "$STLPORT_CPPFLAGS$STLPORT_LDFLAGS$STLPORT_LIBS"; then
|
||||||
|
if test -e "$android_ndk/sources/cxx-stl/stlport/src/iostream.cpp" ; then
|
||||||
|
if test -e "$android_ndk/sources/cxx-stl/stlport/libs/$ANDROID_CPU_ARCH/libstlport_static.a"; then
|
||||||
|
STLPORT_LDFLAGS="-L$_objdir/build/stlport -L$android_ndk/sources/cxx-stl/stlport/libs/$ANDROID_CPU_ARCH/"
|
||||||
|
elif test -e "$android_ndk/tmp/ndk-digit/build/install/sources/cxx-stl/stlport/libs/$ANDROID_CPU_ARCH/libstlport_static.a"; then
|
||||||
|
STLPORT_LDFLAGS="-L$_objdir/build/stlport -L$android_ndk/tmp/ndk-digit/build/install/sources/cxx-stl/stlport/libs/$ANDROID_CPU_ARCH/"
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([Couldn't find path to stlport in the android ndk])
|
||||||
|
fi
|
||||||
|
STLPORT_SOURCES="$android_ndk/sources/cxx-stl/stlport"
|
||||||
|
STLPORT_CPPFLAGS="-I$_objdir/build/stlport -I$android_ndk/sources/cxx-stl/stlport/stlport"
|
||||||
|
STLPORT_LIBS="-lstlport_static"
|
||||||
|
elif test "$target" != "arm-android-eabi"; then
|
||||||
|
dnl fail if we're not building with NDKr4
|
||||||
|
AC_MSG_ERROR([Couldn't find path to stlport in the android ndk])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
CXXFLAGS="$CXXFLAGS $STLPORT_CPPFLAGS"
|
||||||
|
LDFLAGS="$LDFLAGS $STLPORT_LDFLAGS"
|
||||||
|
LIBS="$LIBS $STLPORT_LIBS"
|
||||||
|
fi
|
||||||
|
AC_SUBST([STLPORT_SOURCES])
|
||||||
|
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([MOZ_ANDROID_SDK],
|
||||||
|
[
|
||||||
|
|
||||||
|
MOZ_ARG_WITH_STRING(android-sdk,
|
||||||
|
[ --with-android-sdk=DIR
|
||||||
|
location where the Android SDK can be found (base directory, e.g. .../android/platforms/android-6)],
|
||||||
|
android_sdk=$withval)
|
||||||
|
|
||||||
|
case "$target" in
|
||||||
|
*-android*|*-linuxandroid*)
|
||||||
|
if test -z "$android_sdk" ; then
|
||||||
|
AC_MSG_ERROR([You must specify --with-android-sdk=/path/to/sdk when targeting Android.])
|
||||||
|
else
|
||||||
|
if ! test -e "$android_sdk"/source.properties ; then
|
||||||
|
AC_MSG_ERROR([The path in --with-android-sdk isn't valid (source.properties hasn't been found).])
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the api level from "$android_sdk"/source.properties.
|
||||||
|
android_api_level=`$AWK -F = changequote(<<, >>)'<<$>>1 == "AndroidVersion.ApiLevel" {print <<$>>2}'changequote([, ]) "$android_sdk"/source.properties`
|
||||||
|
|
||||||
|
if test -z "$android_api_level" ; then
|
||||||
|
AC_MSG_ERROR([Unexpected error: no AndroidVersion.ApiLevel field has been found in source.properties.])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! test "$android_api_level" -eq "$android_api_level" ; then
|
||||||
|
AC_MSG_ERROR([Unexpected error: the found android api value isn't a number! (found $android_api_level)])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $android_api_level -lt $1 ; then
|
||||||
|
AC_MSG_ERROR([The given Android SDK provides API level $android_api_level ($1 or higher required).])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
android_platform_tools="$android_sdk"/../../platform-tools
|
||||||
|
if test ! -d "$android_platform_tools" ; then
|
||||||
|
android_platform_tools="$android_sdk"/tools # SDK Tools < r8
|
||||||
|
fi
|
||||||
|
ANDROID_SDK="${android_sdk}"
|
||||||
|
ANDROID_PLATFORM_TOOLS="${android_platform_tools}"
|
||||||
|
AC_SUBST(ANDROID_SDK)
|
||||||
|
AC_SUBST(ANDROID_PLATFORM_TOOLS)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
])
|
262
configure.in
262
configure.in
|
@ -154,52 +154,7 @@ if test -z "$PERL" -o "$PERL" = ":"; then
|
||||||
AC_MSG_ERROR([perl not found in \$PATH])
|
AC_MSG_ERROR([perl not found in \$PATH])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dnl ========================================================
|
MOZ_ANDROID_NDK
|
||||||
dnl = Android uses a very custom (hacky) toolchain; we need to do this
|
|
||||||
dnl = here, so that the compiler checks can succeed
|
|
||||||
dnl ========================================================
|
|
||||||
|
|
||||||
MOZ_ARG_WITH_STRING(android-ndk,
|
|
||||||
[ --with-android-ndk=DIR
|
|
||||||
location where the Android NDK can be found],
|
|
||||||
android_ndk=$withval)
|
|
||||||
|
|
||||||
MOZ_ARG_WITH_STRING(android-toolchain,
|
|
||||||
[ --with-android-toolchain=DIR
|
|
||||||
location of the android toolchain],
|
|
||||||
android_toolchain=$withval)
|
|
||||||
|
|
||||||
|
|
||||||
MOZ_ARG_WITH_STRING(android-version,
|
|
||||||
[ --with-android-version=VER
|
|
||||||
android platform version, default 5],
|
|
||||||
android_version=$withval,
|
|
||||||
android_version=5)
|
|
||||||
|
|
||||||
MOZ_ARG_WITH_STRING(android-sdk,
|
|
||||||
[ --with-android-sdk=DIR
|
|
||||||
location where the Android SDK can be found (base directory, e.g. .../android/platforms/android-6)],
|
|
||||||
android_sdk=$withval)
|
|
||||||
|
|
||||||
MOZ_ARG_WITH_STRING(android-platform,
|
|
||||||
[ --with-android-platform=DIR
|
|
||||||
location of platform dir],
|
|
||||||
android_platform=$withval)
|
|
||||||
|
|
||||||
case "$target" in
|
|
||||||
arm-linux*-android*|*-linuxandroid*)
|
|
||||||
android_tool_prefix="arm-linux-androideabi"
|
|
||||||
;;
|
|
||||||
i?86-*android*)
|
|
||||||
android_tool_prefix="i686-android-linux"
|
|
||||||
;;
|
|
||||||
mipsel-*android*)
|
|
||||||
android_tool_prefix="mipsel-linux-android"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
android_tool_prefix="$target_os"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
MOZ_ARG_WITH_STRING(gonk,
|
MOZ_ARG_WITH_STRING(gonk,
|
||||||
[ --with-gonk=DIR
|
[ --with-gonk=DIR
|
||||||
|
@ -269,158 +224,21 @@ if test -n "$gonkdir" ; then
|
||||||
ZLIB_DIR=yes
|
ZLIB_DIR=yes
|
||||||
direct_nspr_config=1
|
direct_nspr_config=1
|
||||||
else
|
else
|
||||||
case "$target" in
|
case "$target" in
|
||||||
*-android*|*-linuxandroid*)
|
*-android*|*-linuxandroid*)
|
||||||
if test -z "$android_ndk" ; then
|
if test -z "$ANDROID_PACKAGE_NAME" ; then
|
||||||
AC_MSG_ERROR([You must specify --with-android-ndk=/path/to/ndk when targeting Android.])
|
ANDROID_PACKAGE_NAME='org.mozilla.$(MOZ_APP_NAME)'
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$android_sdk" ; then
|
|
||||||
AC_MSG_ERROR([You must specify --with-android-sdk=/path/to/sdk when targeting Android.])
|
|
||||||
else
|
|
||||||
if ! test -e "$android_sdk"/source.properties ; then
|
|
||||||
AC_MSG_ERROR([The path in --with-android-sdk isn't valid (source.properties hasn't been found).])
|
|
||||||
fi
|
fi
|
||||||
|
MOZ_CHROME_FILE_FORMAT=omni
|
||||||
# Minimum Android SDK API Level we require.
|
ZLIB_DIR=yes
|
||||||
android_min_api_level=13
|
;;
|
||||||
|
*-linux*)
|
||||||
# Get the api level from "$android_sdk"/source.properties.
|
AC_PATH_PROG(OBJCOPY,objcopy)
|
||||||
android_api_level=`$AWK -F = '$1 == "AndroidVersion.ApiLevel" {print $2}' "$android_sdk"/source.properties`
|
;;
|
||||||
|
esac
|
||||||
if test -z "$android_api_level" ; then
|
|
||||||
AC_MSG_ERROR([Unexpected error: no AndroidVersion.ApiLevel field has been found in source.properties.])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! test "$android_api_level" -eq "$android_api_level" ; then
|
|
||||||
AC_MSG_ERROR([Unexpected error: the found android api value isn't a number! (found $android_api_level)])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $android_api_level -lt $android_min_api_level ; then
|
|
||||||
AC_MSG_ERROR([The given Android SDK provides API level $android_api_level ($android_min_api_level or higher required).])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
android_platform_tools="$android_sdk"/../../platform-tools
|
|
||||||
if test ! -d "$android_platform_tools" ; then
|
|
||||||
android_platform_tools="$android_sdk"/tools # SDK Tools < r8
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$android_toolchain" ; then
|
|
||||||
AC_MSG_CHECKING([for android toolchain directory])
|
|
||||||
|
|
||||||
kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"`
|
|
||||||
|
|
||||||
case "$target_cpu" in
|
|
||||||
arm)
|
|
||||||
target_name=arm-linux-androideabi-4.4.3
|
|
||||||
;;
|
|
||||||
i?86)
|
|
||||||
target_name=x86-4.4.3
|
|
||||||
;;
|
|
||||||
mipsel)
|
|
||||||
target_name=mipsel-linux-android-4.4.3
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
android_toolchain="$android_ndk"/toolchains/$target_name/prebuilt/$kernel_name-x86
|
|
||||||
|
|
||||||
if test -d "$android_toolchain" ; then
|
|
||||||
AC_MSG_RESULT([$android_toolchain])
|
|
||||||
else
|
|
||||||
AC_MSG_ERROR([not found. You have to specify --with-android-toolchain=/path/to/ndk/toolchain.])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$android_platform" ; then
|
|
||||||
AC_MSG_CHECKING([for android platform directory])
|
|
||||||
|
|
||||||
case "$target_cpu" in
|
|
||||||
arm)
|
|
||||||
target_name=arm
|
|
||||||
;;
|
|
||||||
i?86)
|
|
||||||
target_name=x86
|
|
||||||
;;
|
|
||||||
mipsel)
|
|
||||||
target_name=mips
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
android_platform="$android_ndk"/platforms/android-"$android_version"/arch-"$target_name"
|
|
||||||
|
|
||||||
if test -d "$android_platform" ; then
|
|
||||||
AC_MSG_RESULT([$android_platform])
|
|
||||||
else
|
|
||||||
AC_MSG_ERROR([not found. You have to specify --with-android-platform=/path/to/ndk/platform.])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl set up compilers
|
|
||||||
AS="$android_toolchain"/bin/"$android_tool_prefix"-as
|
|
||||||
CC="$android_toolchain"/bin/"$android_tool_prefix"-gcc
|
|
||||||
CXX="$android_toolchain"/bin/"$android_tool_prefix"-g++
|
|
||||||
CPP="$android_toolchain"/bin/"$android_tool_prefix"-cpp
|
|
||||||
LD="$android_toolchain"/bin/"$android_tool_prefix"-ld
|
|
||||||
AR="$android_toolchain"/bin/"$android_tool_prefix"-ar
|
|
||||||
RANLIB="$android_toolchain"/bin/"$android_tool_prefix"-ranlib
|
|
||||||
STRIP="$android_toolchain"/bin/"$android_tool_prefix"-strip
|
|
||||||
OBJCOPY="$android_toolchain"/bin/"$android_tool_prefix"-objcopy
|
|
||||||
|
|
||||||
CPPFLAGS="-isystem $android_platform/usr/include $CPPFLAGS"
|
|
||||||
CFLAGS="-mandroid -fno-short-enums -fno-exceptions $CFLAGS"
|
|
||||||
CXXFLAGS="-mandroid -fno-short-enums -fno-exceptions -Wno-psabi $CXXFLAGS"
|
|
||||||
ASFLAGS="-isystem $android_platform/usr/include -DANDROID $ASFLAGS"
|
|
||||||
|
|
||||||
dnl Add -llog by default, since we use it all over the place.
|
|
||||||
dnl Add --allow-shlib-undefined, because libGLESv2 links to an
|
|
||||||
dnl undefined symbol (present on the hardware, just not in the
|
|
||||||
dnl NDK.)
|
|
||||||
LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform -llog -Wl,--allow-shlib-undefined $LDFLAGS"
|
|
||||||
|
|
||||||
dnl prevent cross compile section from using these flags as host flags
|
|
||||||
if test -z "$HOST_CPPFLAGS" ; then
|
|
||||||
HOST_CPPFLAGS=" "
|
|
||||||
fi
|
|
||||||
if test -z "$HOST_CFLAGS" ; then
|
|
||||||
HOST_CFLAGS=" "
|
|
||||||
fi
|
|
||||||
if test -z "$HOST_CXXFLAGS" ; then
|
|
||||||
HOST_CXXFLAGS=" "
|
|
||||||
fi
|
|
||||||
if test -z "$HOST_LDFLAGS" ; then
|
|
||||||
HOST_LDFLAGS=" "
|
|
||||||
fi
|
|
||||||
|
|
||||||
ANDROID_NDK="${android_ndk}"
|
|
||||||
ANDROID_TOOLCHAIN="${android_toolchain}"
|
|
||||||
ANDROID_PLATFORM="${android_platform}"
|
|
||||||
ANDROID_SDK="${android_sdk}"
|
|
||||||
ANDROID_PLATFORM_TOOLS="${android_platform_tools}"
|
|
||||||
ANDROID_VERSION="${android_version}"
|
|
||||||
if test -z "$ANDROID_PACKAGE_NAME" ; then
|
|
||||||
ANDROID_PACKAGE_NAME='org.mozilla.$(MOZ_APP_NAME)'
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_DEFINE(ANDROID)
|
|
||||||
AC_DEFINE_UNQUOTED(ANDROID_VERSION, $android_version)
|
|
||||||
AC_SUBST(ANDROID_VERSION)
|
|
||||||
CROSS_COMPILE=1
|
|
||||||
MOZ_CHROME_FILE_FORMAT=omni
|
|
||||||
ZLIB_DIR=yes
|
|
||||||
;;
|
|
||||||
*-linux*)
|
|
||||||
AC_PATH_PROG(OBJCOPY,objcopy)
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_SUBST(ANDROID_NDK)
|
|
||||||
AC_SUBST(ANDROID_TOOLCHAIN)
|
|
||||||
AC_SUBST(ANDROID_SOURCE)
|
AC_SUBST(ANDROID_SOURCE)
|
||||||
AC_SUBST(ANDROID_PLATFORM)
|
|
||||||
AC_SUBST(ANDROID_SDK)
|
|
||||||
AC_SUBST(ANDROID_PLATFORM_TOOLS)
|
|
||||||
AC_SUBST(ANDROID_PACKAGE_NAME)
|
AC_SUBST(ANDROID_PACKAGE_NAME)
|
||||||
AC_SUBST(OBJCOPY)
|
AC_SUBST(OBJCOPY)
|
||||||
|
|
||||||
|
@ -1591,45 +1409,7 @@ dnl Android libstdc++, placed here so it can use MOZ_ARCH
|
||||||
dnl computed above.
|
dnl computed above.
|
||||||
dnl ========================================================
|
dnl ========================================================
|
||||||
|
|
||||||
if test "$OS_TARGET" = "Android"; then
|
MOZ_ANDROID_STLPORT
|
||||||
case "${CPU_ARCH}-${MOZ_ARCH}" in
|
|
||||||
arm-armv7*)
|
|
||||||
ANDROID_CPU_ARCH=armeabi-v7a
|
|
||||||
;;
|
|
||||||
arm-*)
|
|
||||||
ANDROID_CPU_ARCH=armeabi
|
|
||||||
;;
|
|
||||||
x86-*)
|
|
||||||
ANDROID_CPU_ARCH=x86
|
|
||||||
;;
|
|
||||||
mips-*) # When target_cpu is mipsel, CPU_ARCH is mips
|
|
||||||
ANDROID_CPU_ARCH=mips
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$OS_TARGET" = "Android" -a -z "$gonkdir"; then
|
|
||||||
if test -e "$android_ndk/sources/cxx-stl/stlport/src/iostream.cpp" ; then
|
|
||||||
if test -e "$android_ndk/sources/cxx-stl/stlport/libs/$ANDROID_CPU_ARCH/libstlport_static.a"; then
|
|
||||||
STLPORT_LDFLAGS="-L$_objdir/build/stlport -L$android_ndk/sources/cxx-stl/stlport/libs/$ANDROID_CPU_ARCH/"
|
|
||||||
elif test -e "$android_ndk/tmp/ndk-digit/build/install/sources/cxx-stl/stlport/libs/$ANDROID_CPU_ARCH/libstlport_static.a"; then
|
|
||||||
STLPORT_LDFLAGS="-L$_objdir/build/stlport -L$android_ndk/tmp/ndk-digit/build/install/sources/cxx-stl/stlport/libs/$ANDROID_CPU_ARCH/"
|
|
||||||
else
|
|
||||||
AC_MSG_ERROR([Couldn't find path to stlport in the android ndk])
|
|
||||||
fi
|
|
||||||
STLPORT_SOURCES="$android_ndk/sources/cxx-stl/stlport"
|
|
||||||
STLPORT_CPPFLAGS="-I$_objdir/build/stlport -I$android_ndk/sources/cxx-stl/stlport/stlport"
|
|
||||||
STLPORT_LIBS="-lstlport_static"
|
|
||||||
elif test "$target" != "arm-android-eabi"; then
|
|
||||||
dnl fail if we're not building with NDKr4
|
|
||||||
AC_MSG_ERROR([Couldn't find path to stlport in the android ndk])
|
|
||||||
fi
|
|
||||||
CXXFLAGS="$CXXFLAGS $STLPORT_CPPFLAGS"
|
|
||||||
LDFLAGS="$LDFLAGS $STLPORT_LDFLAGS"
|
|
||||||
LIBS="$LIBS $STLPORT_LIBS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
AC_SUBST([STLPORT_SOURCES])
|
|
||||||
|
|
||||||
dnl ========================================================
|
dnl ========================================================
|
||||||
dnl Suppress Clang Argument Warnings
|
dnl Suppress Clang Argument Warnings
|
||||||
|
@ -4699,6 +4479,22 @@ AC_SUBST(MOZ_XULRUNNER)
|
||||||
|
|
||||||
AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
|
AC_DEFINE_UNQUOTED(MOZ_BUILD_APP,$MOZ_BUILD_APP)
|
||||||
|
|
||||||
|
dnl ========================================================
|
||||||
|
dnl Check android sdk version depending on mobile target
|
||||||
|
dnl ========================================================
|
||||||
|
|
||||||
|
# Minimum Android SDK API Level we require.
|
||||||
|
case "$MOZ_BUILD_APP" in
|
||||||
|
mobile/xul)
|
||||||
|
android_min_api_level=13
|
||||||
|
;;
|
||||||
|
mobile/android)
|
||||||
|
android_min_api_level=14
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
MOZ_ANDROID_SDK($android_min_api_level)
|
||||||
|
|
||||||
dnl ========================================================
|
dnl ========================================================
|
||||||
dnl =
|
dnl =
|
||||||
dnl = Toolkit Options
|
dnl = Toolkit Options
|
||||||
|
|
|
@ -17,5 +17,6 @@ builtin(include, build/autoconf/frameptr.m4)dnl
|
||||||
builtin(include, build/autoconf/compiler-opts.m4)dnl
|
builtin(include, build/autoconf/compiler-opts.m4)dnl
|
||||||
builtin(include, build/autoconf/expandlibs.m4)dnl
|
builtin(include, build/autoconf/expandlibs.m4)dnl
|
||||||
builtin(include, build/autoconf/arch.m4)dnl
|
builtin(include, build/autoconf/arch.m4)dnl
|
||||||
|
builtin(include, build/autoconf/android.m4)dn
|
||||||
|
|
||||||
MOZ_PROG_CHECKMSYS()
|
MOZ_PROG_CHECKMSYS()
|
||||||
|
|
|
@ -0,0 +1,241 @@
|
||||||
|
dnl This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
dnl License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
dnl file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
|
||||||
|
AC_DEFUN([MOZ_ANDROID_NDK],
|
||||||
|
[
|
||||||
|
|
||||||
|
MOZ_ARG_WITH_STRING(android-ndk,
|
||||||
|
[ --with-android-ndk=DIR
|
||||||
|
location where the Android NDK can be found],
|
||||||
|
android_ndk=$withval)
|
||||||
|
|
||||||
|
MOZ_ARG_WITH_STRING(android-toolchain,
|
||||||
|
[ --with-android-toolchain=DIR
|
||||||
|
location of the android toolchain],
|
||||||
|
android_toolchain=$withval)
|
||||||
|
|
||||||
|
|
||||||
|
MOZ_ARG_WITH_STRING(android-version,
|
||||||
|
[ --with-android-version=VER
|
||||||
|
android platform version, default 5],
|
||||||
|
android_version=$withval,
|
||||||
|
android_version=5)
|
||||||
|
|
||||||
|
MOZ_ARG_WITH_STRING(android-platform,
|
||||||
|
[ --with-android-platform=DIR
|
||||||
|
location of platform dir],
|
||||||
|
android_platform=$withval)
|
||||||
|
|
||||||
|
case "$target" in
|
||||||
|
arm-linux*-android*|*-linuxandroid*)
|
||||||
|
android_tool_prefix="arm-linux-androideabi"
|
||||||
|
;;
|
||||||
|
i?86-*android*)
|
||||||
|
android_tool_prefix="i686-android-linux"
|
||||||
|
;;
|
||||||
|
mipsel-*android*)
|
||||||
|
android_tool_prefix="mipsel-linux-android"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
android_tool_prefix="$target_os"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$target" in
|
||||||
|
*-android*|*-linuxandroid*)
|
||||||
|
if test -z "$android_ndk" ; then
|
||||||
|
AC_MSG_ERROR([You must specify --with-android-ndk=/path/to/ndk when targeting Android.])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$android_toolchain" ; then
|
||||||
|
AC_MSG_CHECKING([for android toolchain directory])
|
||||||
|
|
||||||
|
kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"`
|
||||||
|
|
||||||
|
case "$target_cpu" in
|
||||||
|
arm)
|
||||||
|
target_name=arm-linux-androideabi-4.4.3
|
||||||
|
;;
|
||||||
|
i?86)
|
||||||
|
target_name=x86-4.4.3
|
||||||
|
;;
|
||||||
|
mipsel)
|
||||||
|
target_name=mipsel-linux-android-4.4.3
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
android_toolchain="$android_ndk"/toolchains/$target_name/prebuilt/$kernel_name-x86
|
||||||
|
|
||||||
|
if test -d "$android_toolchain" ; then
|
||||||
|
AC_MSG_RESULT([$android_toolchain])
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([not found. You have to specify --with-android-toolchain=/path/to/ndk/toolchain.])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "$android_platform" ; then
|
||||||
|
AC_MSG_CHECKING([for android platform directory])
|
||||||
|
|
||||||
|
case "$target_cpu" in
|
||||||
|
arm)
|
||||||
|
target_name=arm
|
||||||
|
;;
|
||||||
|
i?86)
|
||||||
|
target_name=x86
|
||||||
|
;;
|
||||||
|
mipsel)
|
||||||
|
target_name=mips
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
android_platform="$android_ndk"/platforms/android-"$android_version"/arch-"$target_name"
|
||||||
|
|
||||||
|
if test -d "$android_platform" ; then
|
||||||
|
AC_MSG_RESULT([$android_platform])
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([not found. You have to specify --with-android-platform=/path/to/ndk/platform.])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl set up compilers
|
||||||
|
AS="$android_toolchain"/bin/"$android_tool_prefix"-as
|
||||||
|
CC="$android_toolchain"/bin/"$android_tool_prefix"-gcc
|
||||||
|
CXX="$android_toolchain"/bin/"$android_tool_prefix"-g++
|
||||||
|
CPP="$android_toolchain"/bin/"$android_tool_prefix"-cpp
|
||||||
|
LD="$android_toolchain"/bin/"$android_tool_prefix"-ld
|
||||||
|
AR="$android_toolchain"/bin/"$android_tool_prefix"-ar
|
||||||
|
RANLIB="$android_toolchain"/bin/"$android_tool_prefix"-ranlib
|
||||||
|
STRIP="$android_toolchain"/bin/"$android_tool_prefix"-strip
|
||||||
|
OBJCOPY="$android_toolchain"/bin/"$android_tool_prefix"-objcopy
|
||||||
|
|
||||||
|
CPPFLAGS="-isystem $android_platform/usr/include $CPPFLAGS"
|
||||||
|
CFLAGS="-mandroid -fno-short-enums -fno-exceptions $CFLAGS"
|
||||||
|
CXXFLAGS="-mandroid -fno-short-enums -fno-exceptions -Wno-psabi $CXXFLAGS"
|
||||||
|
ASFLAGS="-isystem $android_platform/usr/include -DANDROID $ASFLAGS"
|
||||||
|
|
||||||
|
dnl Add -llog by default, since we use it all over the place.
|
||||||
|
dnl Add --allow-shlib-undefined, because libGLESv2 links to an
|
||||||
|
dnl undefined symbol (present on the hardware, just not in the
|
||||||
|
dnl NDK.)
|
||||||
|
LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform -llog -Wl,--allow-shlib-undefined $LDFLAGS"
|
||||||
|
dnl prevent cross compile section from using these flags as host flags
|
||||||
|
if test -z "$HOST_CPPFLAGS" ; then
|
||||||
|
HOST_CPPFLAGS=" "
|
||||||
|
fi
|
||||||
|
if test -z "$HOST_CFLAGS" ; then
|
||||||
|
HOST_CFLAGS=" "
|
||||||
|
fi
|
||||||
|
if test -z "$HOST_CXXFLAGS" ; then
|
||||||
|
HOST_CXXFLAGS=" "
|
||||||
|
fi
|
||||||
|
if test -z "$HOST_LDFLAGS" ; then
|
||||||
|
HOST_LDFLAGS=" "
|
||||||
|
fi
|
||||||
|
|
||||||
|
ANDROID_NDK="${android_ndk}"
|
||||||
|
ANDROID_TOOLCHAIN="${android_toolchain}"
|
||||||
|
ANDROID_PLATFORM="${android_platform}"
|
||||||
|
ANDROID_VERSION="${android_version}"
|
||||||
|
|
||||||
|
AC_DEFINE(ANDROID)
|
||||||
|
AC_DEFINE_UNQUOTED(ANDROID_VERSION, $android_version)
|
||||||
|
AC_SUBST(ANDROID_VERSION)
|
||||||
|
CROSS_COMPILE=1
|
||||||
|
AC_SUBST(ANDROID_NDK)
|
||||||
|
AC_SUBST(ANDROID_TOOLCHAIN)
|
||||||
|
AC_SUBST(ANDROID_PLATFORM)
|
||||||
|
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([MOZ_ANDROID_STLPORT],
|
||||||
|
[
|
||||||
|
|
||||||
|
if test "$OS_TARGET" = "Android" -a -z "$gonkdir"; then
|
||||||
|
case "${CPU_ARCH}-${MOZ_ARCH}" in
|
||||||
|
arm-armv7*)
|
||||||
|
ANDROID_CPU_ARCH=armeabi-v7a
|
||||||
|
;;
|
||||||
|
arm-*)
|
||||||
|
ANDROID_CPU_ARCH=armeabi
|
||||||
|
;;
|
||||||
|
x86-*)
|
||||||
|
ANDROID_CPU_ARCH=x86
|
||||||
|
;;
|
||||||
|
mips-*) # When target_cpu is mipsel, CPU_ARCH is mips
|
||||||
|
ANDROID_CPU_ARCH=mips
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test -z "$STLPORT_CPPFLAGS$STLPORT_LDFLAGS$STLPORT_LIBS"; then
|
||||||
|
if test -e "$android_ndk/sources/cxx-stl/stlport/src/iostream.cpp" ; then
|
||||||
|
if test -e "$android_ndk/sources/cxx-stl/stlport/libs/$ANDROID_CPU_ARCH/libstlport_static.a"; then
|
||||||
|
STLPORT_LDFLAGS="-L$_objdir/build/stlport -L$android_ndk/sources/cxx-stl/stlport/libs/$ANDROID_CPU_ARCH/"
|
||||||
|
elif test -e "$android_ndk/tmp/ndk-digit/build/install/sources/cxx-stl/stlport/libs/$ANDROID_CPU_ARCH/libstlport_static.a"; then
|
||||||
|
STLPORT_LDFLAGS="-L$_objdir/build/stlport -L$android_ndk/tmp/ndk-digit/build/install/sources/cxx-stl/stlport/libs/$ANDROID_CPU_ARCH/"
|
||||||
|
else
|
||||||
|
AC_MSG_ERROR([Couldn't find path to stlport in the android ndk])
|
||||||
|
fi
|
||||||
|
STLPORT_SOURCES="$android_ndk/sources/cxx-stl/stlport"
|
||||||
|
STLPORT_CPPFLAGS="-I$_objdir/build/stlport -I$android_ndk/sources/cxx-stl/stlport/stlport"
|
||||||
|
STLPORT_LIBS="-lstlport_static"
|
||||||
|
elif test "$target" != "arm-android-eabi"; then
|
||||||
|
dnl fail if we're not building with NDKr4
|
||||||
|
AC_MSG_ERROR([Couldn't find path to stlport in the android ndk])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
CXXFLAGS="$CXXFLAGS $STLPORT_CPPFLAGS"
|
||||||
|
LDFLAGS="$LDFLAGS $STLPORT_LDFLAGS"
|
||||||
|
LIBS="$LIBS $STLPORT_LIBS"
|
||||||
|
fi
|
||||||
|
AC_SUBST([STLPORT_SOURCES])
|
||||||
|
|
||||||
|
])
|
||||||
|
|
||||||
|
AC_DEFUN([MOZ_ANDROID_SDK],
|
||||||
|
[
|
||||||
|
|
||||||
|
MOZ_ARG_WITH_STRING(android-sdk,
|
||||||
|
[ --with-android-sdk=DIR
|
||||||
|
location where the Android SDK can be found (base directory, e.g. .../android/platforms/android-6)],
|
||||||
|
android_sdk=$withval)
|
||||||
|
|
||||||
|
case "$target" in
|
||||||
|
*-android*|*-linuxandroid*)
|
||||||
|
if test -z "$android_sdk" ; then
|
||||||
|
AC_MSG_ERROR([You must specify --with-android-sdk=/path/to/sdk when targeting Android.])
|
||||||
|
else
|
||||||
|
if ! test -e "$android_sdk"/source.properties ; then
|
||||||
|
AC_MSG_ERROR([The path in --with-android-sdk isn't valid (source.properties hasn't been found).])
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the api level from "$android_sdk"/source.properties.
|
||||||
|
android_api_level=`$AWK -F = changequote(<<, >>)'<<$>>1 == "AndroidVersion.ApiLevel" {print <<$>>2}'changequote([, ]) "$android_sdk"/source.properties`
|
||||||
|
|
||||||
|
if test -z "$android_api_level" ; then
|
||||||
|
AC_MSG_ERROR([Unexpected error: no AndroidVersion.ApiLevel field has been found in source.properties.])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! test "$android_api_level" -eq "$android_api_level" ; then
|
||||||
|
AC_MSG_ERROR([Unexpected error: the found android api value isn't a number! (found $android_api_level)])
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test $android_api_level -lt $1 ; then
|
||||||
|
AC_MSG_ERROR([The given Android SDK provides API level $android_api_level ($1 or higher required).])
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
android_platform_tools="$android_sdk"/../../platform-tools
|
||||||
|
if test ! -d "$android_platform_tools" ; then
|
||||||
|
android_platform_tools="$android_sdk"/tools # SDK Tools < r8
|
||||||
|
fi
|
||||||
|
ANDROID_SDK="${android_sdk}"
|
||||||
|
ANDROID_PLATFORM_TOOLS="${android_platform_tools}"
|
||||||
|
AC_SUBST(ANDROID_SDK)
|
||||||
|
AC_SUBST(ANDROID_PLATFORM_TOOLS)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
])
|
|
@ -146,52 +146,7 @@ else
|
||||||
fi
|
fi
|
||||||
AC_SUBST(JS_SHARED_LIBRARY)
|
AC_SUBST(JS_SHARED_LIBRARY)
|
||||||
|
|
||||||
dnl ========================================================
|
MOZ_ANDROID_NDK
|
||||||
dnl = Android uses a very custom (hacky) toolchain; we need to do this
|
|
||||||
dnl = here, so that the compiler checks can succeed
|
|
||||||
dnl ========================================================
|
|
||||||
|
|
||||||
MOZ_ARG_WITH_STRING(android-ndk,
|
|
||||||
[ --with-android-ndk=DIR
|
|
||||||
location where the Android NDK can be found],
|
|
||||||
android_ndk=$withval)
|
|
||||||
|
|
||||||
MOZ_ARG_WITH_STRING(android-toolchain,
|
|
||||||
[ --with-android-toolchain=DIR
|
|
||||||
location of the android toolchain],
|
|
||||||
android_toolchain=$withval)
|
|
||||||
|
|
||||||
|
|
||||||
MOZ_ARG_WITH_STRING(android-version,
|
|
||||||
[ --with-android-version=VER
|
|
||||||
android platform version, default 5],
|
|
||||||
android_version=$withval,
|
|
||||||
android_version=5)
|
|
||||||
|
|
||||||
MOZ_ARG_WITH_STRING(android-sdk,
|
|
||||||
[ --with-android-sdk=DIR
|
|
||||||
location where the Android SDK can be found (base directory, e.g. .../android/platforms/android-6)],
|
|
||||||
android_sdk=$withval)
|
|
||||||
|
|
||||||
MOZ_ARG_WITH_STRING(android-platform,
|
|
||||||
[ --with-android-platform=DIR
|
|
||||||
location of platform dir],
|
|
||||||
android_platform=$withval)
|
|
||||||
|
|
||||||
case "$target" in
|
|
||||||
arm-linux*-android*|*-linuxandroid*)
|
|
||||||
android_tool_prefix="arm-linux-androideabi"
|
|
||||||
;;
|
|
||||||
i?86-*android*)
|
|
||||||
android_tool_prefix="i686-android-linux"
|
|
||||||
;;
|
|
||||||
mipsel-*android*)
|
|
||||||
android_tool_prefix="mipsel-linux-android"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
android_tool_prefix="$target_os"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
MOZ_ARG_WITH_STRING(gonk,
|
MOZ_ARG_WITH_STRING(gonk,
|
||||||
[ --with-gonk=DIR
|
[ --with-gonk=DIR
|
||||||
|
@ -250,160 +205,11 @@ if test -n "$gonkdir" ; then
|
||||||
HOST_LDFLAGS=" "
|
HOST_LDFLAGS=" "
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# save these for libffi's subconfigure,
|
|
||||||
# which doesn't know how to figure this stuff out on its own
|
|
||||||
ANDROID_CFLAGS="$CFLAGS"
|
|
||||||
ANDROID_CPPFLAGS="$CPPFLAGS"
|
|
||||||
ANDROID_LDFLAGS="$LDFLAGS"
|
|
||||||
|
|
||||||
AC_DEFINE(ANDROID)
|
AC_DEFINE(ANDROID)
|
||||||
AC_DEFINE(GONK)
|
AC_DEFINE(GONK)
|
||||||
CROSS_COMPILE=1
|
CROSS_COMPILE=1
|
||||||
else
|
|
||||||
case "$target" in
|
|
||||||
*-android*|*-linuxandroid*)
|
|
||||||
if test -z "$android_ndk" ; then
|
|
||||||
AC_MSG_ERROR([You must specify --with-android-ndk=/path/to/ndk when targeting Android.])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$android_sdk" ; then
|
|
||||||
AC_MSG_ERROR([You must specify --with-android-sdk=/path/to/sdk when targeting Android.])
|
|
||||||
fi
|
|
||||||
|
|
||||||
android_platform_tools="$android_sdk"/../../platform-tools
|
|
||||||
if test ! -d "$android_platform_tools" ; then
|
|
||||||
android_platform_tools="$android_sdk"/tools # SDK Tools < r8
|
|
||||||
else
|
|
||||||
if ! test -e "$android_sdk"/source.properties ; then
|
|
||||||
AC_MSG_ERROR([The path in --with-android-sdk isn't valid (source.properties hasn't been found).])
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Minimum Android SDK API Level we require.
|
|
||||||
android_min_api_level=13
|
|
||||||
|
|
||||||
# Get the api level from "$android_sdk"/source.properties.
|
|
||||||
android_api_level=`$AWK -F = '$1 == "AndroidVersion.ApiLevel" {print $2}' "$android_sdk"/source.properties`
|
|
||||||
|
|
||||||
if test -z "$android_api_level" ; then
|
|
||||||
AC_MSG_ERROR([Unexpected error: no AndroidVersion.ApiLevel field has been found in source.properties.])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ! test "$android_api_level" -eq "$android_api_level" ; then
|
|
||||||
AC_MSG_ERROR([Unexpected error: the found android api value isn't a number! (found $android_api_level)])
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test $android_api_level -lt $android_min_api_level ; then
|
|
||||||
AC_MSG_ERROR([The given Android SDK provides API level $android_api_level ($android_min_api_level or higher required).])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$android_toolchain" ; then
|
|
||||||
AC_MSG_CHECKING([for android toolchain directory])
|
|
||||||
|
|
||||||
kernel_name=`uname -s | tr "[[:upper:]]" "[[:lower:]]"`
|
|
||||||
|
|
||||||
case "$target_cpu" in
|
|
||||||
arm)
|
|
||||||
target_name=arm-linux-androideabi-4.4.3
|
|
||||||
;;
|
|
||||||
i?86)
|
|
||||||
target_name=x86-4.4.3
|
|
||||||
;;
|
|
||||||
mipsel)
|
|
||||||
target_name=mipsel-linux-android-4.4.3
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
android_toolchain="$android_ndk"/toolchains/$target_name/prebuilt/$kernel_name-x86
|
|
||||||
|
|
||||||
if test -d "$android_toolchain" ; then
|
|
||||||
AC_MSG_RESULT([$android_toolchain])
|
|
||||||
else
|
|
||||||
AC_MSG_ERROR([not found. You have to specify --with-android-toolchain=/path/to/ndk/toolchain.])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -z "$android_platform" ; then
|
|
||||||
AC_MSG_CHECKING([for android platform directory])
|
|
||||||
|
|
||||||
case "$target_cpu" in
|
|
||||||
arm)
|
|
||||||
target_name=arm
|
|
||||||
;;
|
|
||||||
i?86)
|
|
||||||
target_name=x86
|
|
||||||
;;
|
|
||||||
mipsel)
|
|
||||||
target_name=mips
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
android_platform="$android_ndk"/platforms/android-"$android_version"/arch-"$target_name"
|
|
||||||
|
|
||||||
if test -d "$android_platform" ; then
|
|
||||||
AC_MSG_RESULT([$android_platform])
|
|
||||||
else
|
|
||||||
AC_MSG_ERROR([not found. You have to specify --with-android-platform=/path/to/ndk/platform.])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl set up compilers
|
|
||||||
AS="$android_toolchain"/bin/"$android_tool_prefix"-as
|
|
||||||
CC="$android_toolchain"/bin/"$android_tool_prefix"-gcc
|
|
||||||
CXX="$android_toolchain"/bin/"$android_tool_prefix"-g++
|
|
||||||
CPP="$android_toolchain"/bin/"$android_tool_prefix"-cpp
|
|
||||||
LD="$android_toolchain"/bin/"$android_tool_prefix"-ld
|
|
||||||
AR="$android_toolchain"/bin/"$android_tool_prefix"-ar
|
|
||||||
RANLIB="$android_toolchain"/bin/"$android_tool_prefix"-ranlib
|
|
||||||
STRIP="$android_toolchain"/bin/"$android_tool_prefix"-strip
|
|
||||||
|
|
||||||
CPPFLAGS="-isystem $android_platform/usr/include $CPPFLAGS"
|
|
||||||
CFLAGS="-mandroid -fno-short-enums -fno-exceptions $CFLAGS"
|
|
||||||
CXXFLAGS="-mandroid -fno-short-enums -fno-exceptions -Wno-psabi $CXXFLAGS"
|
|
||||||
ASFLAGS="-isystem $android_platform/usr/include -DANDROID $ASFLAGS"
|
|
||||||
|
|
||||||
dnl Add -llog by default, since we use it all over the place.
|
|
||||||
dnl Add --allow-shlib-undefined, because libGLESv2 links to an
|
|
||||||
dnl undefined symbol (present on the hardware, just not in the
|
|
||||||
dnl NDK.)
|
|
||||||
LDFLAGS="-mandroid -L$android_platform/usr/lib -Wl,-rpath-link=$android_platform/usr/lib --sysroot=$android_platform -llog -Wl,--allow-shlib-undefined $LDFLAGS"
|
|
||||||
|
|
||||||
dnl prevent cross compile section from using these flags as host flags
|
|
||||||
if test -z "$HOST_CPPFLAGS" ; then
|
|
||||||
HOST_CPPFLAGS=" "
|
|
||||||
fi
|
|
||||||
if test -z "$HOST_CFLAGS" ; then
|
|
||||||
HOST_CFLAGS=" "
|
|
||||||
fi
|
|
||||||
if test -z "$HOST_CXXFLAGS" ; then
|
|
||||||
HOST_CXXFLAGS=" "
|
|
||||||
fi
|
|
||||||
if test -z "$HOST_LDFLAGS" ; then
|
|
||||||
HOST_LDFLAGS=" "
|
|
||||||
fi
|
|
||||||
|
|
||||||
ANDROID_NDK="${android_ndk}"
|
|
||||||
ANDROID_TOOLCHAIN="${android_toolchain}"
|
|
||||||
ANDROID_PLATFORM="${android_platform}"
|
|
||||||
ANDROID_SDK="${android_sdk}"
|
|
||||||
ANDROID_PLATFORM_TOOLS="${android_platform_tools}"
|
|
||||||
ANDROID_VERSION="${android_version}"
|
|
||||||
|
|
||||||
AC_DEFINE(ANDROID)
|
|
||||||
AC_DEFINE_UNQUOTED(ANDROID_VERSION, $android_version)
|
|
||||||
AC_SUBST(ANDROID_VERSION)
|
|
||||||
CROSS_COMPILE=1
|
|
||||||
MOZ_CHROME_FILE_FORMAT=omni
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_SUBST(ANDROID_NDK)
|
|
||||||
AC_SUBST(ANDROID_TOOLCHAIN)
|
|
||||||
AC_SUBST(ANDROID_PLATFORM)
|
|
||||||
AC_SUBST(ANDROID_SDK)
|
|
||||||
AC_SUBST(ANDROID_PLATFORM_TOOLS)
|
|
||||||
|
|
||||||
dnl ========================================================
|
dnl ========================================================
|
||||||
dnl Checks for compilers.
|
dnl Checks for compilers.
|
||||||
dnl ========================================================
|
dnl ========================================================
|
||||||
|
@ -1469,48 +1275,7 @@ dnl Android libstdc++, placed here so it can use MOZ_ARCH
|
||||||
dnl computed above.
|
dnl computed above.
|
||||||
dnl ========================================================
|
dnl ========================================================
|
||||||
|
|
||||||
if test "$OS_TARGET" = "Android"; then
|
MOZ_ANDROID_STLPORT
|
||||||
case "${CPU_ARCH}-${MOZ_ARCH}" in
|
|
||||||
arm-armv7*)
|
|
||||||
ANDROID_CPU_ARCH=armeabi-v7a
|
|
||||||
;;
|
|
||||||
arm-*)
|
|
||||||
ANDROID_CPU_ARCH=armeabi
|
|
||||||
;;
|
|
||||||
x86-*)
|
|
||||||
ANDROID_CPU_ARCH=x86
|
|
||||||
;;
|
|
||||||
mips-*) # When target_cpu is mipsel, CPU_ARCH is mips
|
|
||||||
ANDROID_CPU_ARCH=mips
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test "$OS_TARGET" = "Android" -a -z "$gonkdir"; then
|
|
||||||
if test -z "$STLPORT_CPPFLAGS$STLPORT_LDFLAGS$STLPORT_LIBS"; then
|
|
||||||
if test -e "$android_ndk/sources/cxx-stl/stlport/libs/$ANDROID_CPU_ARCH/libstlport_static.a" ; then
|
|
||||||
STLPORT_CPPFLAGS="-I$android_ndk/sources/cxx-stl/stlport/stlport"
|
|
||||||
STLPORT_LDFLAGS="-L$android_ndk/sources/cxx-stl/stlport/libs/$ANDROID_CPU_ARCH/"
|
|
||||||
STLPORT_LIBS="-lstlport_static"
|
|
||||||
elif test -e "$android_ndk/tmp/ndk-digit/build/install/sources/cxx-stl/stlport/libs/$ANDROID_CPU_ARCH/libstlport_static.a" ; then
|
|
||||||
STLPORT_CPPFLAGS="-I$android_ndk/sources/cxx-stl/stlport/stlport"
|
|
||||||
STLPORT_LDFLAGS="-L$android_ndk/tmp/ndk-digit/build/install/sources/cxx-stl/stlport/libs/$ANDROID_CPU_ARCH"
|
|
||||||
STLPORT_LIBS="-lstlport_static"
|
|
||||||
elif test "$target" != "arm-android-eabi"; then
|
|
||||||
dnl fail if we're not building with NDKr4
|
|
||||||
AC_MSG_ERROR([Couldn't find path to stlport in the android ndk])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
CXXFLAGS="$CXXFLAGS $STLPORT_CPPFLAGS"
|
|
||||||
LDFLAGS="$LDFLAGS $STLPORT_LDFLAGS"
|
|
||||||
LIBS="$LIBS $STLPORT_LIBS"
|
|
||||||
|
|
||||||
# save these for libffi's subconfigure,
|
|
||||||
# which doesn't know how to figure this stuff out on its own
|
|
||||||
ANDROID_CFLAGS="$CFLAGS"
|
|
||||||
ANDROID_CPPFLAGS="$CPPFLAGS"
|
|
||||||
ANDROID_LDFLAGS="$LDFLAGS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
dnl ========================================================
|
dnl ========================================================
|
||||||
dnl Suppress Clang Argument Warnings
|
dnl Suppress Clang Argument Warnings
|
||||||
|
|
Загрузка…
Ссылка в новой задаче