From ac976fbd55b525842307ee6ef97699e00098185a Mon Sep 17 00:00:00 2001 From: Xavier de Gaye Date: Tue, 21 Nov 2017 17:00:52 +0100 Subject: [PATCH 1/2] bpo-29040: Support building Android with Unified Headers The first NDK release to support Unified Headers is android-ndk-r14. --- Include/pyport.h | 4 +++- .../2017-11-21-16-56-24.bpo-29040.14lCSr.rst | 2 ++ configure | 19 +++++-------------- configure.ac | 5 ++++- 4 files changed, 14 insertions(+), 16 deletions(-) create mode 100644 Misc/NEWS.d/next/Build/2017-11-21-16-56-24.bpo-29040.14lCSr.rst diff --git a/Include/pyport.h b/Include/pyport.h index 0e82543ac78355..beee27ffdd4d32 100644 --- a/Include/pyport.h +++ b/Include/pyport.h @@ -784,7 +784,9 @@ extern _invalid_parameter_handler _Py_silent_invalid_parameter_handler; #endif /* Py_BUILD_CORE */ #ifdef __ANDROID__ -#include +/* nl_langinfo() is declared as __INTRODUCED_IN_FUTURE in langinfo.h. */ +#undef HAVE_LANGINFO_H +#undef CODESET #endif /* Maximum value of the Windows DWORD type */ diff --git a/Misc/NEWS.d/next/Build/2017-11-21-16-56-24.bpo-29040.14lCSr.rst b/Misc/NEWS.d/next/Build/2017-11-21-16-56-24.bpo-29040.14lCSr.rst new file mode 100644 index 00000000000000..60f05db8d4f043 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2017-11-21-16-56-24.bpo-29040.14lCSr.rst @@ -0,0 +1,2 @@ +Support building Android with Unified Headers. The first NDK release to +support Unified Headers is android-ndk-r14. diff --git a/configure b/configure index 5e0522476e7126..e61363dec296cb 100755 --- a/configure +++ b/configure @@ -778,7 +778,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -890,7 +889,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1143,15 +1141,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1289,7 +1278,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1442,7 +1431,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -5623,7 +5611,6 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; } $as_echo_n "checking for the Android API level... " >&6; } cat >> conftest.c < android_api = __ANDROID_API__ arm_arch = __ARM_ARCH #else @@ -5636,6 +5623,10 @@ if $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then _arm_arch=`sed -n -e '/__ARM_ARCH/d' -e 's/^arm_arch = //p' conftest.out` { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ANDROID_API_LEVEL" >&5 $as_echo "$ANDROID_API_LEVEL" >&6; } + if test -z "$ANDROID_API_LEVEL"; then + echo 'Fatal: you must define __ANDROID_API__' + exit 1 + fi cat >>confdefs.h <<_ACEOF #define ANDROID_API_LEVEL $ANDROID_API_LEVEL diff --git a/configure.ac b/configure.ac index 3464212eddc019..33d6a98408d78e 100644 --- a/configure.ac +++ b/configure.ac @@ -885,7 +885,6 @@ AC_USE_SYSTEM_EXTENSIONS AC_MSG_CHECKING([for the Android API level]) cat >> conftest.c < android_api = __ANDROID_API__ arm_arch = __ARM_ARCH #else @@ -897,6 +896,10 @@ if $CPP $CPPFLAGS conftest.c >conftest.out 2>/dev/null; then 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]) + if test -z "$ANDROID_API_LEVEL"; then + echo 'Fatal: you must define __ANDROID_API__' + exit 1 + fi AC_DEFINE_UNQUOTED(ANDROID_API_LEVEL, $ANDROID_API_LEVEL, [The Android API level.]) AC_MSG_CHECKING([for the Android arm ABI]) From 16e3bade34861b07c2c17a68a56990d058be14f6 Mon Sep 17 00:00:00 2001 From: Xavier de Gaye Date: Thu, 23 Nov 2017 11:09:06 +0100 Subject: [PATCH 2/2] Update the comment in Include/pyport.h --- Include/pyport.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Include/pyport.h b/Include/pyport.h index beee27ffdd4d32..f2e247a374e063 100644 --- a/Include/pyport.h +++ b/Include/pyport.h @@ -784,7 +784,7 @@ extern _invalid_parameter_handler _Py_silent_invalid_parameter_handler; #endif /* Py_BUILD_CORE */ #ifdef __ANDROID__ -/* nl_langinfo() is declared as __INTRODUCED_IN_FUTURE in langinfo.h. */ +/* The Android langinfo.h header is not used. */ #undef HAVE_LANGINFO_H #undef CODESET #endif