diff -r d7cbaaba59e8 configure.ac --- a/configure.ac Tue Jul 26 06:47:09 2016 +0000 +++ b/configure.ac Tue Jul 26 11:35:43 2016 +0200 @@ -368,6 +368,9 @@ # a lot of different things including 'define_xopen_source' # in the case statement below. case "$host" in + *-*-linux-android*) + ac_sys_system=Linux-android + ;; *-*-linux*) ac_sys_system=Linux ;; @@ -903,16 +906,26 @@ cat >> conftest.c < -__ANDROID_API__ +android_api = __ANDROID_API__ +arm_arch = __ARM_ARCH #else #error not Android #endif EOF if $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then - ANDROID_API_LEVEL=`grep -v '^#' conftest.out | grep -v '^ *$'` + ANDROID_API_LEVEL=`sed -n -e '/__ANDROID_API__/d' -e 's/^android_api = //p' conftest.out` + _arm_arch=`sed -n -e '/__ARM_ARCH/d' -e 's/^arm_arch = //p' conftest.out` AC_MSG_RESULT([$ANDROID_API_LEVEL]) AC_DEFINE_UNQUOTED(ANDROID_API_LEVEL, $ANDROID_API_LEVEL, [The Android API level.]) + + # 'host_cpu' is already set by config.sub to 'arm' for Android arm architectures. + AC_MSG_CHECKING([for the Android arm ABI]) + AC_MSG_RESULT([$_arm_arch]) + if test "$_arm_arch" = 7; then + host_cpu="armv7" + LDFLAGS="${LDFLAGS} -march=armv7-a -Wl,--fix-cortex-a8" + fi else AC_MSG_RESULT([not Android]) fi @@ -2468,6 +2481,11 @@ then CCSHARED="-fPIC"; else CCSHARED="+z"; fi;; + Linux-android*) + case $host_cpu in + armv7) CCSHARED="-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16";; + arm) CCSHARED="-mthumb";; + esac;; Linux*|GNU*) CCSHARED="-fPIC";; BSD/OS*/4*) CCSHARED="-fpic";; FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";; @@ -2499,6 +2517,7 @@ LINKFORSHARED="-Wl,-E -Wl,+s";; # LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";; BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";; + Linux-android*) LINKFORSHARED="-pie -Xlinker -export-dynamic";; Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";; # -u libsys_s pulls in all symbols in libsys Darwin/*)