[Python-checkins] gh-100540: Remove obsolete '--with-system-ffi' configure option (GH-100544)
zware
webhook-mailer at python.org
Wed Dec 28 14:36:15 EST 2022
https://github.com/python/cpython/commit/25590eb5dee5176f3ac60916b19450f8198e7ffc
commit: 25590eb5dee5176f3ac60916b19450f8198e7ffc
branch: main
author: Zachary Ware <zach at python.org>
committer: zware <zachary.ware at gmail.com>
date: 2022年12月28日T13:36:03-06:00
summary:
gh-100540: Remove obsolete '--with-system-ffi' configure option (GH-100544)
It has had no effect on non-macOS platforms for a long time, and has had
the non-obvious effect of invoking `pkg_config` and not setting
`-DUSING_APPLE_OS_LIBFFI` on macOS since GH-22855.
files:
A Misc/NEWS.d/next/Build/2022-12-26-15-07-48.gh-issue-100540.l6ToSY.rst
M Doc/using/configure.rst
M configure
M configure.ac
diff --git a/Doc/using/configure.rst b/Doc/using/configure.rst
index db4bf7412292..8fa8d250d533 100644
--- a/Doc/using/configure.rst
+++ b/Doc/using/configure.rst
@@ -471,11 +471,6 @@ Libraries options
Build the :mod:`pyexpat` module using an installed ``expat`` library
(default is no).
-.. cmdoption:: --with-system-ffi
-
- Build the :mod:`_ctypes` extension module using an installed ``ffi``
- library, see the :mod:`ctypes` module (default is system-dependent).
-
.. cmdoption:: --with-system-libmpdec
Build the ``_decimal`` extension module using an installed ``mpdec``
diff --git a/Misc/NEWS.d/next/Build/2022-12-26-15-07-48.gh-issue-100540.l6ToSY.rst b/Misc/NEWS.d/next/Build/2022-12-26-15-07-48.gh-issue-100540.l6ToSY.rst
new file mode 100644
index 000000000000..c924ab520f3d
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2022-12-26-15-07-48.gh-issue-100540.l6ToSY.rst
@@ -0,0 +1,8 @@
+Removed the ``--with-system-ffi`` ``configure`` option; ``libffi`` must
+now always be supplied by the system on all non-Windows platforms. The
+option has had no effect on non-Darwin platforms for several releases, and
+in 3.11 only had the non-obvious effect of invoking ``pkg-config`` to
+find ``libffi`` and never setting ``-DUSING_APPLE_OS_LIBFFI``. Now on
+Darwin platforms ``configure`` will first check for the OS ``libffi`` and
+then fall back to the same processing as other platforms if it is not
+found.
diff --git a/configure b/configure
index 72299939892d..6afd1e9c367c 100755
--- a/configure
+++ b/configure
@@ -1064,7 +1064,6 @@ with_hash_algorithm
with_tzpath
with_libs
with_system_expat
-with_system_ffi
with_system_libmpdec
with_decimal_contextvar
enable_loadable_sqlite_extensions
@@ -1847,9 +1846,6 @@ Optional Packages:
--with-libs='lib1 ...' link against additional libs (default is no)
--with-system-expat build pyexpat module using an installed expat
library, see Doc/library/pyexpat.rst (default is no)
- --with-system-ffi build _ctypes module using an installed ffi library,
- see Doc/library/ctypes.rst (default is
- system-dependent)
--with-system-libmpdec build _decimal module using an installed libmpdec
library, see Doc/library/decimal.rst (default is no)
--with-decimal-contextvar
@@ -12516,43 +12512,77 @@ fi
-# Check for use of the system libffi library
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-system-ffi" >&5
-$as_echo_n "checking for --with-system-ffi... " >&6; }
+have_libffi=missing
+if test "x$ac_sys_system" = xDarwin; then :
-# Check whether --with-system_ffi was given.
-if test "${with_system_ffi+set}" = set; then :
- withval=$with_system_ffi;
-fi
+ save_CFLAGS=$CFLAGS
+save_CPPFLAGS=$CPPFLAGS
+save_LDFLAGS=$LDFLAGS
+save_LIBS=$LIBS
-if test "$ac_sys_system" = "Darwin"
-then
- case "$with_system_ffi" in
- "")
- with_system_ffi="no"
- ;;
- yes|no)
- ;;
- *)
- as_fn_error $? "--with-system-ffi accepts no arguments" "$LINENO" 5
- ;;
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_system_ffi" >&5
-$as_echo "$with_system_ffi" >&6; }
+ CFLAGS="-I${SDKROOT}/usr/include/ffi $CFLAGS"
+ ac_fn_c_check_header_mongrel "$LINENO" "ffi.h" "ac_cv_header_ffi_h" "$ac_includes_default"
+if test "x$ac_cv_header_ffi_h" = xyes; then :
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffi_call in -lffi" >&5
+$as_echo_n "checking for ffi_call in -lffi... " >&6; }
+if ${ac_cv_lib_ffi_ffi_call+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- if test "$with_system_ffi" != ""
- then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with(out)-system-ffi is ignored on this platform" >&5
-$as_echo "$as_me: WARNING: --with(out)-system-ffi is ignored on this platform" >&2;}
- fi
- with_system_ffi="yes"
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lffi $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char ffi_call ();
+int
+main ()
+{
+return ffi_call ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_ffi_ffi_call=yes
+else
+ ac_cv_lib_ffi_ffi_call=no
fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_call" >&5
+$as_echo "$ac_cv_lib_ffi_ffi_call" >&6; }
+if test "x$ac_cv_lib_ffi_ffi_call" = xyes; then :
-have_libffi=missing
-if test "x$with_system_ffi" = xyes; then :
+ have_libffi=yes
+ LIBFFI_CFLAGS="-I${SDKROOT}/usr/include/ffi -DUSING_APPLE_OS_LIBFFI=1"
+ LIBFFI_LIBS="-lffi"
+
+fi
+
+
+fi
+
+
+
+CFLAGS=$save_CFLAGS
+CPPFLAGS=$save_CPPFLAGS
+LDFLAGS=$save_LDFLAGS
+LIBS=$save_LIBS
+
+
+
+fi
+if test "x$have_libffi" = xmissing; then :
pkg_failed=no
@@ -12762,80 +12792,6 @@ else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
have_libffi=yes
-fi
-
-else
-
- if test "x$ac_sys_system" = xDarwin; then :
-
- save_CFLAGS=$CFLAGS
-save_CPPFLAGS=$CPPFLAGS
-save_LDFLAGS=$LDFLAGS
-save_LIBS=$LIBS
-
-
- CFLAGS="-I${SDKROOT}/usr/include/ffi $CFLAGS"
- ac_fn_c_check_header_mongrel "$LINENO" "ffi.h" "ac_cv_header_ffi_h" "$ac_includes_default"
-if test "x$ac_cv_header_ffi_h" = xyes; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ffi_call in -lffi" >&5
-$as_echo_n "checking for ffi_call in -lffi... " >&6; }
-if ${ac_cv_lib_ffi_ffi_call+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lffi $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
-char ffi_call ();
-int
-main ()
-{
-return ffi_call ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_ffi_ffi_call=yes
-else
- ac_cv_lib_ffi_ffi_call=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ffi_ffi_call" >&5
-$as_echo "$ac_cv_lib_ffi_ffi_call" >&6; }
-if test "x$ac_cv_lib_ffi_ffi_call" = xyes; then :
-
- have_libffi=yes
- LIBFFI_CFLAGS="-I${SDKROOT}/usr/include/ffi -DUSING_APPLE_OS_LIBFFI=1"
- LIBFFI_LIBS="-lffi"
-
-else
- have_libffi=no
-fi
-
-
-fi
-
-
-
-CFLAGS=$save_CFLAGS
-CPPFLAGS=$save_CPPFLAGS
-LDFLAGS=$save_LDFLAGS
-LIBS=$save_LIBS
-
-
-
fi
fi
diff --git a/configure.ac b/configure.ac
index d6499be4c007..48736649a98e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3705,36 +3705,22 @@ AS_VAR_IF([with_system_expat], [yes], [
AC_SUBST([LIBEXPAT_CFLAGS])
AC_SUBST([LIBEXPAT_INTERNAL])
-# 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, see Doc/library/ctypes.rst (default is system-dependent)]),,,)
-
-if test "$ac_sys_system" = "Darwin"
-then
- case "$with_system_ffi" in
- "")
- with_system_ffi="no"
- ;;
- yes|no)
- ;;
- *)
- AC_MSG_ERROR([--with-system-ffi accepts no arguments])
- ;;
- esac
- AC_MSG_RESULT($with_system_ffi)
-else
- AC_MSG_RESULT(yes)
- if test "$with_system_ffi" != ""
- then
- AC_MSG_WARN([--with(out)-system-ffi is ignored on this platform])
- fi
- with_system_ffi="yes"
-fi
-
dnl detect libffi
have_libffi=missing
-AS_VAR_IF([with_system_ffi], [yes], [
+AS_VAR_IF([ac_sys_system], [Darwin], [
+ WITH_SAVE_ENV([
+ CFLAGS="-I${SDKROOT}/usr/include/ffi $CFLAGS"
+ AC_CHECK_HEADER([ffi.h], [
+ AC_CHECK_LIB([ffi], [ffi_call], [
+ dnl use ffi from SDK root
+ have_libffi=yes
+ LIBFFI_CFLAGS="-I${SDKROOT}/usr/include/ffi -DUSING_APPLE_OS_LIBFFI=1"
+ LIBFFI_LIBS="-lffi"
+ ])
+ ])
+ ])
+])
+AS_VAR_IF([have_libffi], [missing], [
PKG_CHECK_MODULES([LIBFFI], [libffi], [have_libffi=yes], [
WITH_SAVE_ENV([
CPPFLAGS="$CPPFLAGS $LIBFFI_CFLAGS"
@@ -3748,20 +3734,6 @@ AS_VAR_IF([with_system_ffi], [yes], [
])
])
])
-], [
- AS_VAR_IF([ac_sys_system], [Darwin], [
- WITH_SAVE_ENV([
- CFLAGS="-I${SDKROOT}/usr/include/ffi $CFLAGS"
- AC_CHECK_HEADER([ffi.h], [
- AC_CHECK_LIB([ffi], [ffi_call], [
- dnl use ffi from SDK root
- have_libffi=yes
- LIBFFI_CFLAGS="-I${SDKROOT}/usr/include/ffi -DUSING_APPLE_OS_LIBFFI=1"
- LIBFFI_LIBS="-lffi"
- ], [have_libffi=no])
- ])
- ])
- ])
])
AS_VAR_IF([have_libffi], [yes], [
More information about the Python-checkins
mailing list