summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXavier de Gaye <xdegaye@users.sourceforge.net>2016-07-09 09:05:42 (GMT)
committerXavier de Gaye <xdegaye@users.sourceforge.net>2016-07-09 09:05:42 (GMT)
commit95750b1ca535a9883d483ee82b4373fb47d82bc5 (patch)
treee6e83f7702a3e2fb2639404230dc83eeb4a9706c
parent2247e5c48c71e76e44218bfab29129ce0462760c (diff)
downloadcpython-95750b1ca535a9883d483ee82b4373fb47d82bc5.zip
cpython-95750b1ca535a9883d483ee82b4373fb47d82bc5.tar.gz
cpython-95750b1ca535a9883d483ee82b4373fb47d82bc5.tar.bz2
Issue #27442: Expose the Android API level in sysconfig.get_config_vars()
as 'ANDROID_API_LEVEL'.
-rw-r--r--Misc/NEWS3
-rwxr-xr-xconfigure26
-rw-r--r--configure.ac19
-rw-r--r--pyconfig.h.in3
4 files changed, 51 insertions, 0 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index 34f80fc..de68f27 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -132,6 +132,9 @@ C API
Build
-----
+- Issue #27442: Expose the Android API level that python was built against, in
+ sysconfig.get_config_vars() as 'ANDROID_API_LEVEL'.
+
- Issue #27434: The interpreter that runs the cross-build, found in PATH, must
now be of the same feature version (e.g. 3.6) as the source being built.
diff --git a/configure b/configure
index fbde7f6..ceb042f 100755
--- a/configure
+++ b/configure
@@ -5648,6 +5648,32 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for the Android API level" >&5
+$as_echo_n "checking for the Android API level... " >&6; }
+cat >> conftest.c <<EOF
+#ifdef __ANDROID__
+#include <android/api-level.h>
+__ANDROID_API__
+#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 '^ *$'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ANDROID_API_LEVEL" >&5
+$as_echo "$ANDROID_API_LEVEL" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define ANDROID_API_LEVEL $ANDROID_API_LEVEL
+_ACEOF
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: not Android" >&5
+$as_echo "not Android" >&6; }
+fi
+rm -f conftest.c conftest.out
+
# Check for unsupported systems
case $ac_sys_system/$ac_sys_release in
atheos*|Linux*/1*)
diff --git a/configure.ac b/configure.ac
index 9b65ec1..7c83ca6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -899,6 +899,25 @@ AC_SUBST(NO_AS_NEEDED)
# checks for UNIX variants that set C preprocessor variables
AC_USE_SYSTEM_EXTENSIONS
+AC_MSG_CHECKING([for the Android API level])
+cat >> conftest.c <<EOF
+#ifdef __ANDROID__
+#include <android/api-level.h>
+__ANDROID_API__
+#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 '^ *$'`
+ AC_MSG_RESULT([$ANDROID_API_LEVEL])
+ AC_DEFINE_UNQUOTED(ANDROID_API_LEVEL, $ANDROID_API_LEVEL, [The Android API level.])
+else
+ AC_MSG_RESULT([not Android])
+fi
+rm -f conftest.c conftest.out
+
# Check for unsupported systems
case $ac_sys_system/$ac_sys_release in
atheos*|Linux*/1*)
diff --git a/pyconfig.h.in b/pyconfig.h.in
index a104f3c..dce5cfd 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -12,6 +12,9 @@
support for AIX C++ shared extension modules. */
#undef AIX_GENUINE_CPLUSPLUS
+/* The Android API level. */
+#undef ANDROID_API_LEVEL
+
/* Define if C doubles are 64-bit IEEE 754 binary format, stored in ARM
mixed-endian order (byte order 45670123) */
#undef DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754