summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/whatsnew/3.6.rst10
-rw-r--r--Misc/NEWS3
-rwxr-xr-xconfigure20
-rw-r--r--configure.ac22
-rw-r--r--setup.py10
5 files changed, 57 insertions, 8 deletions
diff --git a/Doc/whatsnew/3.6.rst b/Doc/whatsnew/3.6.rst
index ec2f2e0..d3dd337 100644
--- a/Doc/whatsnew/3.6.rst
+++ b/Doc/whatsnew/3.6.rst
@@ -1010,6 +1010,16 @@ Build and C API Changes
Deprecated
==========
+Deprecated Build Options
+------------------------
+
+The ``--with-system-ffi`` configure flag is now on by default on non-OSX UNIX
+platforms. It may be disabled by using ``--without-system-ffi``, but using the
+flag is deprecated and will not be accepted in Python 3.7. OSX is unaffected
+by this change. Note that many OS distributors already use the
+``--with-system-ffi`` flag when building their system Python.
+
+
New Keywords
------------
diff --git a/Misc/NEWS b/Misc/NEWS
index bc323e3..649c391 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -311,6 +311,9 @@ Tests
Build
-----
+- Issue #27976: Deprecate building _ctypes with the bundled copy of libffi on
+ non-OSX UNIX platforms.
+
- Issue #27983: Cause lack of llvm-profdata tool when using clang as
required for PGO linking to be a configure time error rather than
make time when --with-optimizations is enabled. Also improve our
diff --git a/configure b/configure
index 7138eb1..3998a32 100755
--- a/configure
+++ b/configure
@@ -9851,11 +9851,27 @@ $as_echo_n "checking for --with-system-ffi... " >&6; }
# Check whether --with-system_ffi was given.
if test "${with_system_ffi+set}" = set; then :
withval=$with_system_ffi;
-else
- with_system_ffi="no"
fi
+case "$with_system_ffi" in
+ "")
+ case $ac_sys_system in
+ Darwin)
+ with_system_ffi="no"
+ ;;
+ *)
+ with_system_ffi="yes"
+ ;;
+ esac
+ ;;
+ yes|no)
+ ;;
+ *)
+ as_fn_error $? "--with-system-ffi accepts no arguments" "$LINENO" 5
+ ;;
+esac
+
if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
else
diff --git a/configure.ac b/configure.ac
index 57cf46f..269c41e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2737,9 +2737,25 @@ AC_MSG_RESULT($with_system_expat)
# Check for use of the system libffi library
AC_MSG_CHECKING(for --with-system-ffi)
AC_ARG_WITH(system_ffi,
- AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]),
- [],
- [with_system_ffi="no"])
+ AS_HELP_STRING([--with-system-ffi], [build _ctypes module using an installed ffi library]),,,)
+
+case "$with_system_ffi" in
+ "")
+ case $ac_sys_system in
+ Darwin)
+ with_system_ffi="no"
+ ;;
+ *)
+ with_system_ffi="yes"
+ ;;
+ esac
+ ;;
+ yes|no)
+ ;;
+ *)
+ AC_MSG_ERROR([--with-system-ffi accepts no arguments])
+ ;;
+esac
if test "$with_system_ffi" = "yes" && test -n "$PKG_CONFIG"; then
LIBFFI_INCLUDEDIR="`"$PKG_CONFIG" libffi --cflags-only-I 2>/dev/null | sed -e 's/^-I//;s/ *$//'`"
diff --git a/setup.py b/setup.py
index 5811576..d9acd97 100644
--- a/setup.py
+++ b/setup.py
@@ -1911,6 +1911,9 @@ class PyBuildExt(build_ext):
if host_platform == 'darwin':
return self.configure_ctypes_darwin(ext)
+ print('warning: building with the bundled copy of libffi is'
+ ' deprecated on this platform. It will not be'
+ ' distributed with Python 3.7')
srcdir = sysconfig.get_config_var('srcdir')
ffi_builddir = os.path.join(self.build_temp, 'libffi')
ffi_srcdir = os.path.abspath(os.path.join(srcdir, 'Modules',
@@ -2007,13 +2010,14 @@ class PyBuildExt(build_ext):
libraries=math_libs)
self.extensions.extend([ext, ext_test])
- if not '--with-system-ffi' in sysconfig.get_config_var("CONFIG_ARGS"):
- return
-
if host_platform == 'darwin':
+ if '--with-system-ffi' not in sysconfig.get_config_var("CONFIG_ARGS"):
+ return
# OS X 10.5 comes with libffi.dylib; the include files are
# in /usr/include/ffi
inc_dirs.append('/usr/include/ffi')
+ elif '--without-system-ffi' in sysconfig.get_config_var("CONFIG_ARGS"):
+ return
ffi_inc = [sysconfig.get_config_var("LIBFFI_INCLUDEDIR")]
if not ffi_inc or ffi_inc[0] == '':