aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac256
1 files changed, 180 insertions, 76 deletions
diff --git a/configure.ac b/configure.ac
index 65f265045ba..761d1dbd45c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10,7 +10,7 @@ dnl to regenerate the configure script.
dnl
# Set VERSION so we only need to edit in one place (i.e., here)
-m4_define([PYTHON_VERSION], [3.14])
+m4_define([PYTHON_VERSION], [3.15])
AC_PREREQ([2.72])
@@ -1716,7 +1716,7 @@ ABI_THREAD=""
# --disable-gil
AC_MSG_CHECKING([for --disable-gil])
AC_ARG_ENABLE([gil],
- [AS_HELP_STRING([--disable-gil], [enable experimental support for running without the GIL (default is no)])],
+ [AS_HELP_STRING([--disable-gil], [enable support for running without the GIL (default is no)])],
[AS_VAR_IF([enable_gil], [yes], [disable_gil=no], [disable_gil=yes])], [disable_gil=no]
)
AC_MSG_RESULT([$disable_gil])
@@ -2776,7 +2776,7 @@ AS_VAR_IF([jit_flags],
[],
[AS_VAR_APPEND([CFLAGS_NODIST], [" $jit_flags"])
AS_VAR_SET([REGEN_JIT_COMMAND],
- ["\$(PYTHON_FOR_REGEN) \$(srcdir)/Tools/jit/build.py ${ARCH_TRIPLES:-$host}"])
+ ["\$(PYTHON_FOR_REGEN) \$(srcdir)/Tools/jit/build.py ${ARCH_TRIPLES:-$host} --output-dir . --pyconfig-dir . --cflags=\"$CFLAGS_JIT\""])
AS_VAR_SET([JIT_STENCILS_H], ["jit_stencils.h"])
AS_VAR_IF([Py_DEBUG],
[true],
@@ -3172,10 +3172,6 @@ if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
else
have_largefile_support="no"
fi
-dnl LFS does not work with Emscripten 3.1
-AS_CASE([$ac_sys_system],
- [Emscripten], [have_largefile_support="no"]
-)
AS_VAR_IF([have_largefile_support], [yes], [
AC_DEFINE([HAVE_LARGEFILE_SUPPORT], [1],
[Defined to enable large file support when an off_t is bigger than a long
@@ -3740,15 +3736,17 @@ dnl check for uuid dependencies
AH_TEMPLATE([HAVE_UUID_H], [Define to 1 if you have the <uuid.h> header file.])
AH_TEMPLATE([HAVE_UUID_UUID_H], [Define to 1 if you have the <uuid/uuid.h> header file.])
AH_TEMPLATE([HAVE_UUID_GENERATE_TIME_SAFE], [Define if uuid_generate_time_safe() exists.])
+AH_TEMPLATE([HAVE_UUID_GENERATE_TIME_SAFE_STABLE_MAC], [Define if uuid_generate_time_safe() is able to deduce a MAC address.])
have_uuid=missing
dnl AIX provides support for RFC4122 (uuid) in libc.a starting with AIX 6.1
dnl (anno 2007). FreeBSD and OpenBSD provides support in libc as well.
dnl Little-endian FreeBSD, OpenBSD and NetBSD needs encoding into an octet
dnl stream in big-endian byte-order
-AC_CHECK_HEADERS([uuid.h],
- [AC_CHECK_FUNCS([uuid_create uuid_enc_be],
- [have_uuid=yes
+AC_CHECK_HEADERS([uuid.h], [
+ AC_CHECK_FUNCS([uuid_create uuid_enc_be], [
+ have_uuid=yes
+ ac_cv_have_uuid_h=yes
LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""}
LIBUUID_LIBS=${LIBUUID_LIBS-""}
])
@@ -3758,19 +3756,29 @@ AS_VAR_IF([have_uuid], [missing], [
PKG_CHECK_MODULES(
[LIBUUID], [uuid >= 2.20],
[dnl linux-util's libuuid has uuid_generate_time_safe() since v2.20 (2011)
- dnl and provides <uuid.h>.
+ dnl and provides <uuid.h> assuming specific include paths are given
have_uuid=yes
- AC_DEFINE([HAVE_UUID_H], [1])
- AC_DEFINE([HAVE_UUID_GENERATE_TIME_SAFE], [1])
+ ac_cv_have_uuid_generate_time_safe=yes
+ # The uuid.h file to include may be <uuid.h> *or* <uuid/uuid.h>.
+ # Since pkg-config --cflags uuid may return -I/usr/include/uuid,
+ # it's possible to write '#include <uuid.h>' in _uuidmodule.c,
+ # assuming that the compiler flags are properly updated.
+ #
+ # Ideally, we should have defined HAVE_UUID_H if and only if
+ # #include <uuid.h> can be written, *without* assuming extra
+ # include path.
+ ac_cv_have_uuid_h=yes
], [
WITH_SAVE_ENV([
CPPFLAGS="$CPPFLAGS $LIBUUID_CFLAGS"
LIBS="$LIBS $LIBUUID_LIBS"
AC_CHECK_HEADERS([uuid/uuid.h], [
+ ac_cv_have_uuid_uuid_h=yes
PY_CHECK_LIB([uuid], [uuid_generate_time], [have_uuid=yes])
- PY_CHECK_LIB([uuid], [uuid_generate_time_safe],
- [have_uuid=yes
- AC_DEFINE([HAVE_UUID_GENERATE_TIME_SAFE], [1]) ]) ])
+ PY_CHECK_LIB([uuid], [uuid_generate_time_safe], [
+ have_uuid=yes
+ ac_cv_have_uuid_generate_time_safe=yes
+ ])])
AS_VAR_IF([have_uuid], [yes], [
LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""}
LIBUUID_LIBS=${LIBUUID_LIBS-"-luuid"}
@@ -3785,12 +3793,19 @@ AS_VAR_IF([have_uuid], [missing], [
AC_CHECK_HEADERS([uuid/uuid.h], [
AC_CHECK_FUNC([uuid_generate_time], [
have_uuid=yes
+ ac_cv_have_uuid_uuid_h=yes
LIBUUID_CFLAGS=${LIBUUID_CFLAGS-""}
LIBUUID_LIBS=${LIBUUID_LIBS-""}
])
])
])
+AS_VAR_IF([ac_cv_have_uuid_h], [yes], [AC_DEFINE([HAVE_UUID_H], [1])])
+AS_VAR_IF([ac_cv_have_uuid_uuid_h], [yes], [AC_DEFINE([HAVE_UUID_UUID_H], [1])])
+AS_VAR_IF([ac_cv_have_uuid_generate_time_safe], [yes], [
+ AC_DEFINE([HAVE_UUID_GENERATE_TIME_SAFE], [1])
+])
+
# gh-124228: While the libuuid library is available on NetBSD, it supports only UUID version 4.
# This restriction inhibits the proper generation of time-based UUIDs.
if test "$ac_sys_system" = "NetBSD"; then
@@ -3800,6 +3815,68 @@ fi
AS_VAR_IF([have_uuid], [missing], [have_uuid=no])
+# gh-132710: The UUID node is fetched by using libuuid when possible
+# and cached. While the node is constant within the same process,
+# different interpreters may have different values as libuuid may
+# randomize the node value if the latter cannot be deduced.
+#
+# Consumers may define HAVE_UUID_GENERATE_TIME_SAFE_STABLE_MAC
+# to indicate that libuuid is unstable and should not be relied
+# upon to deduce the MAC address.
+AC_DEFUN([PY_EXTRACT_UUID_GENERATE_TIME_SAFE_MAC], [WITH_SAVE_ENV([
+ # Be sure to add the extra include path if we used pkg-config
+ # as HAVE_UUID_H may be set even though <uuid.h> is only reachable
+ # by adding extra -I flags.
+ #
+ # If the following script does not compile, we simply assume that
+ # libuuid is missing.
+ CFLAGS="$CFLAGS $LIBUUID_CFLAGS"
+ LIBS="$LIBS $LIBUUID_LIBS"
+ AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ #include <inttypes.h> // PRIu64
+ #include <stdint.h> // uint64_t
+ #include <stdio.h> // fopen(), fclose()
+
+ #ifdef HAVE_UUID_H
+ #include <uuid.h>
+ #else
+ #include <uuid/uuid.h>
+ #endif
+
+ #define ERR 1
+ int main(void) {
+ uuid_t uuid; // unsigned char[16]
+ (void)uuid_generate_time_safe(uuid);
+ uint64_t node = 0;
+ for (size_t i = 0; i < 6; i++) {
+ node |= (uint64_t)uuid[15 - i] << (8 * i);
+ }
+ FILE *fp = fopen("conftest.out", "w");
+ if (fp == NULL) {
+ return ERR;
+ }
+ int rc = fprintf(fp, "%" PRIu64 "\n", node) >= 0;
+ rc |= fclose(fp);
+ return rc == 0 ? 0 : ERR;
+ }]])], [
+ AS_VAR_SET([$1], [`cat conftest.out`])
+ ], [], []
+ )])])
+
+if test "$have_uuid" = "yes" -a "$HAVE_UUID_GENERATE_TIME_SAFE" = "1"
+then
+ AC_MSG_CHECKING([if uuid_generate_time_safe() node value is stable])
+ PY_EXTRACT_UUID_GENERATE_TIME_SAFE_MAC([py_cv_uuid_node1])
+ PY_EXTRACT_UUID_GENERATE_TIME_SAFE_MAC([py_cv_uuid_node2])
+ if test -n "$py_cv_uuid_node1" -a "$py_cv_uuid_node1" = "$py_cv_uuid_node2"
+ then
+ AC_DEFINE([HAVE_UUID_GENERATE_TIME_SAFE_STABLE_MAC], [1])
+ AC_MSG_RESULT([stable])
+ else
+ AC_MSG_RESULT([unstable])
+ fi
+fi
+
# 'Real Time' functions on Solaris
# posix4 on Solaris 2.6
# pthread (first!) on Linux
@@ -3838,35 +3915,6 @@ dnl The AIX_BUILDDATE is obtained from the kernel fileset - bos.mp64
*) ;;
esac
-# check for _Complex C type
-#
-# Note that despite most compilers define __STDC_IEC_559_COMPLEX__ - almost
-# none properly support C11+ Annex G (where pure imaginary types
-# represented by _Imaginary are mandatory). This is a bug (see e.g.
-# llvm/llvm-project#60269), so we don't rely on presence
-# of __STDC_IEC_559_COMPLEX__.
-AC_RUN_IFELSE([AC_LANG_SOURCE([[
-#include <complex.h>
-#define test(type, out) \
-{ \
- type complex z = 1 + 2*I; z = z*z; \
- (out) = (out) || creal(z) != -3 || cimag(z) != 4; \
-}
-int main(void)
-{
- int res = 0;
- test(float, res);
- test(double, res);
- test(long double, res);
- return res;
-}]])], [ac_cv_c_complex_supported=yes],
-[ac_cv_c_complex_supported=no],
-[ac_cv_c_complex_supported=no])
-if test "$ac_cv_c_complex_supported" = "yes"; then
- AC_DEFINE([Py_HAVE_C_COMPLEX], [1],
- [Defined if _Complex C type is available.])
-fi
-
# check for systems that require aligned memory access
AC_CACHE_CHECK([aligned memory access is required], [ac_cv_aligned_required],
[AC_RUN_IFELSE([AC_LANG_SOURCE([[
@@ -4115,37 +4163,36 @@ int main(void)
[ac_cv_ffi_complex_double_supported=no])
])])
if test "$ac_cv_ffi_complex_double_supported" = "yes"; then
- AC_DEFINE([Py_FFI_SUPPORT_C_COMPLEX], [1],
+ AC_DEFINE([_Py_FFI_SUPPORT_C_COMPLEX], [1],
[Defined if _Complex C type can be used with libffi.])
fi
# Check for use of the system libmpdec library
AC_MSG_CHECKING([for --with-system-libmpdec])
+AC_DEFUN([USE_BUNDLED_LIBMPDEC],
+ [LIBMPDEC_CFLAGS="-I\$(srcdir)/Modules/_decimal/libmpdec"
+ LIBMPDEC_LIBS="-lm \$(LIBMPDEC_A)"
+ LIBMPDEC_INTERNAL="\$(LIBMPDEC_HEADERS) \$(LIBMPDEC_A)"
+ have_mpdec=yes
+ with_system_libmpdec=no])
AC_ARG_WITH(
[system_libmpdec],
[AS_HELP_STRING(
[--with-system-libmpdec],
[build _decimal module using an installed mpdecimal library, see Doc/library/decimal.rst (default is yes)]
)],
- [],
+ [AS_IF([test "x$with_system_libmpdec" = xno],
+ [USE_BUNDLED_LIBMPDEC()])],
[with_system_libmpdec="yes"])
AC_MSG_RESULT([$with_system_libmpdec])
-AC_DEFUN([USE_BUNDLED_LIBMPDEC],
- [LIBMPDEC_CFLAGS="-I\$(srcdir)/Modules/_decimal/libmpdec"
- LIBMPDEC_LIBS="-lm \$(LIBMPDEC_A)"
- LIBMPDEC_INTERNAL="\$(LIBMPDEC_HEADERS) \$(LIBMPDEC_A)"
- have_mpdec=yes
- with_system_libmpdec=no])
-
AS_VAR_IF(
[with_system_libmpdec], [yes],
[PKG_CHECK_MODULES(
[LIBMPDEC], [libmpdec >= 2.5.0], [],
[LIBMPDEC_CFLAGS=${LIBMPDEC_CFLAGS-""}
LIBMPDEC_LIBS=${LIBMPDEC_LIBS-"-lmpdec -lm"}
- LIBMPDEC_INTERNAL=])],
- [USE_BUNDLED_LIBMPDEC()])
+ LIBMPDEC_INTERNAL=])])
AS_VAR_IF([with_system_libmpdec], [yes],
[WITH_SAVE_ENV([
@@ -4161,16 +4208,7 @@ AS_VAR_IF([with_system_libmpdec], [yes],
], [const char *x = mpd_version();])],
[have_mpdec=yes],
[have_mpdec=no])
- ])],
- [AC_MSG_WARN([m4_normalize([
- the bundled copy of libmpdecimal is scheduled for removal in Python 3.15;
- consider using a system installed mpdecimal library.])])])
-
-AS_IF([test "$with_system_libmpdec" = "yes" && test "$have_mpdec" = "no"],
- [AC_MSG_WARN([m4_normalize([
- no system libmpdecimal found; falling back to bundled libmpdecimal
- (deprecated and scheduled for removal in Python 3.15)])])
- USE_BUNDLED_LIBMPDEC()])
+ ])])
# Disable forced inlining in debug builds, see GH-94847
AS_VAR_IF(
@@ -5167,7 +5205,7 @@ AC_CHECK_FUNCS([ \
faccessat fchmod fchmodat fchown fchownat fdopendir fdwalk fexecve \
fork fork1 fpathconf fstatat ftime ftruncate futimens futimes futimesat \
gai_strerror getegid geteuid getgid getgrent getgrgid getgrgid_r \
- getgrnam_r getgrouplist gethostname getitimer getloadavg getlogin \
+ getgrnam_r getgrouplist gethostname getitimer getloadavg getlogin getlogin_r \
getpeername getpgid getpid getppid getpriority _getpty \
getpwent getpwnam_r getpwuid getpwuid_r getresgid getresuid getrusage getsid getspent \
getspnam getuid getwd grantpt if_nameindex initgroups kill killpg lchown linkat \
@@ -5415,6 +5453,35 @@ PKG_CHECK_MODULES([LIBLZMA], [liblzma], [have_liblzma=yes], [
])
])
+dnl zstd 1.4.5 stabilised ZDICT_finalizeDictionary
+PKG_CHECK_MODULES([LIBZSTD], [libzstd >= 1.4.5], [have_libzstd=yes], [
+ WITH_SAVE_ENV([
+ CPPFLAGS="$CPPFLAGS $LIBZSTD_CFLAGS"
+ CFLAGS="$CFLAGS $LIBZSTD_CFLAGS"
+ LIBS="$LIBS $LIBZSTD_LIBS"
+ AC_SEARCH_LIBS([ZDICT_finalizeDictionary], [zstd], [
+ AC_MSG_CHECKING([ZSTD_VERSION_NUMBER >= 1.4.5])
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([@%:@include "zstd.h"], [
+ #if ZSTD_VERSION_NUMBER < 10405
+ # error "zstd version is too old"
+ #endif
+ ])
+ ], [
+ AC_MSG_RESULT([yes])
+ AC_CHECK_HEADERS([zstd.h zdict.h], [have_libzstd=yes], [have_libzstd=no])
+ ], [
+ AC_MSG_RESULT([no])
+ have_libzstd=no
+ ])
+ ], [have_libzstd=no])
+ AS_VAR_IF([have_libzstd], [yes], [
+ LIBZSTD_CFLAGS=${LIBZSTD_CFLAGS-""}
+ LIBZSTD_LIBS=${LIBZSTD_LIBS-"-lzstd"}
+ ])
+ ])
+])
+
dnl PY_CHECK_NETDB_FUNC(FUNCTION)
AC_DEFUN([PY_CHECK_NETDB_FUNC], [PY_CHECK_FUNC([$1], [@%:@include <netdb.h>])])
@@ -5457,6 +5524,18 @@ PY_CHECK_FUNC([setgroups], [
#endif
])
+AC_CHECK_DECL([MAXLOGNAME],
+ [AC_DEFINE([HAVE_MAXLOGNAME], [1],
+ [Define if you have the 'MAXLOGNAME' constant.])],
+ [],
+ [@%:@include <sys/param.h>])
+
+AC_CHECK_DECLS([UT_NAMESIZE],
+ [AC_DEFINE([HAVE_UT_NAMESIZE], [1],
+ [Define if you have the 'HAVE_UT_NAMESIZE' constant.])],
+ [],
+ [@%:@include <utmp.h>])
+
# check for openpty, login_tty, and forkpty
AC_CHECK_FUNCS([openpty], [],
@@ -7079,8 +7158,6 @@ if test "$with_remote_debug" = yes; then
[Define if you want to enable remote debugging support.])
AC_MSG_RESULT([yes])
else
- AC_DEFINE([Py_REMOTE_DEBUG], [0],
- [Define if you want to enable remote debugging support.])
AC_MSG_RESULT([no])
fi
@@ -7114,6 +7191,7 @@ SRCDIRS="\
Modules/_testinternalcapi \
Modules/_testlimitedcapi \
Modules/_xxtestfuzz \
+ Modules/_zstd \
Modules/cjkcodecs \
Modules/expat \
Objects \
@@ -7720,7 +7798,7 @@ AS_CASE([$ac_sys_system],
dnl (see Modules/Setup.stdlib.in).
PY_STDLIB_MOD_SET_NA(
[_ctypes_test],
- [_testexternalinspection],
+ [_remote_debugging],
[_testimportmultiple],
[_testmultiphase],
[_testsinglephase],
@@ -7814,6 +7892,7 @@ PY_STDLIB_MOD_SIMPLE([_pickle])
PY_STDLIB_MOD_SIMPLE([_posixsubprocess])
PY_STDLIB_MOD_SIMPLE([_queue])
PY_STDLIB_MOD_SIMPLE([_random])
+PY_STDLIB_MOD_SIMPLE([_remote_debugging])
PY_STDLIB_MOD_SIMPLE([select])
PY_STDLIB_MOD_SIMPLE([_struct])
PY_STDLIB_MOD_SIMPLE([_types])
@@ -7918,6 +7997,15 @@ AC_SUBST([LIBHACL_CFLAGS])
LIBHACL_LDFLAGS= # for now, no specific linker flags are needed
AC_SUBST([LIBHACL_LDFLAGS])
+dnl Check if universal2 HACL* implementation should be used.
+if test "$UNIVERSAL_ARCHS" = "universal2" -o \
+ \( "$build_cpu" = "aarch64" -a "$build_vendor" = "apple" \)
+then
+ use_hacl_universal2_impl=yes
+else
+ use_hacl_universal2_impl=no
+fi
+
# The SIMD files use aligned_alloc, which is not available on older versions of
# Android.
# The *mmintrin.h headers are x86-family-specific, so can't be used on WASI.
@@ -7928,13 +8016,14 @@ then
AX_CHECK_COMPILE_FLAG([-msse -msse2 -msse3 -msse4.1 -msse4.2],[
[LIBHACL_SIMD128_FLAGS="-msse -msse2 -msse3 -msse4.1 -msse4.2"]
- AC_DEFINE([HACL_CAN_COMPILE_SIMD128], [1], [HACL* library can compile SIMD128 implementations])
+ AC_DEFINE([_Py_HACL_CAN_COMPILE_VEC128], [1], [
+ HACL* library can compile SIMD128 implementations])
# macOS universal2 builds *support* the -msse etc flags because they're
# available on x86_64. However, performance of the HACL SIMD128 implementation
# isn't great, so it's disabled on ARM64.
AC_MSG_CHECKING([for HACL* SIMD128 implementation])
- if test "$UNIVERSAL_ARCHS" == "universal2"; then
+ if test "$use_hacl_universal2_impl" = "yes"; then
[LIBHACL_BLAKE2_SIMD128_OBJS="Modules/_hacl/Hacl_Hash_Blake2s_Simd128_universal2.o"]
AC_MSG_RESULT([universal2])
else
@@ -7959,14 +8048,15 @@ if test "$ac_sys_system" != "Linux-android" -a "$ac_sys_system" != "WASI" || \
then
AX_CHECK_COMPILE_FLAG([-mavx2],[
[LIBHACL_SIMD256_FLAGS="-mavx2"]
- AC_DEFINE([HACL_CAN_COMPILE_SIMD256], [1], [HACL* library can compile SIMD256 implementations])
+ AC_DEFINE([_Py_HACL_CAN_COMPILE_VEC256], [1], [
+ HACL* library can compile SIMD256 implementations])
# macOS universal2 builds *support* the -mavx2 compiler flag because it's
# available on x86_64; but the HACL SIMD256 build then fails because the
# implementation requires symbols that aren't available on ARM64. Use a
# wrapped implementation if we're building for universal2.
AC_MSG_CHECKING([for HACL* SIMD256 implementation])
- if test "$UNIVERSAL_ARCHS" == "universal2"; then
+ if test "$use_hacl_universal2_impl" = "yes"; then
[LIBHACL_BLAKE2_SIMD256_OBJS="Modules/_hacl/Hacl_Hash_Blake2b_Simd256_universal2.o"]
AC_MSG_RESULT([universal2])
else
@@ -8016,7 +8106,10 @@ PY_HACL_CREATE_MODULE([BLAKE2], [_blake2], [test "$with_builtin_blake2" = yes])
dnl HMAC builtin library does not need OpenSSL for now. In the future
dnl we might want to rely on OpenSSL EVP/NID interface or implement
dnl our own for algorithm resolution.
-PY_HACL_CREATE_MODULE([HMAC], [_hmac], [])
+dnl
+dnl For Emscripten, we disable HACL* HMAC as it is tricky to make it work.
+dnl See https://github.com/python/cpython/issues/133042.
+PY_HACL_CREATE_MODULE([HMAC], [_hmac], [test "$ac_sys_system" != "Emscripten"])
### end(cryptographic primitives)
PY_STDLIB_MOD([_ctypes],
@@ -8033,6 +8126,16 @@ PY_STDLIB_MOD([_curses_panel],
PY_STDLIB_MOD([_decimal],
[], [test "$have_mpdec" = "yes"],
[$LIBMPDEC_CFLAGS], [$LIBMPDEC_LIBS])
+
+AS_VAR_IF([with_system_libmpdec], [no],
+ [AC_MSG_WARN([m4_normalize([
+ the bundled copy of libmpdecimal is scheduled for removal in Python 3.16;
+ consider using a system installed mpdecimal library.])])])
+AS_IF([test "$with_system_libmpdec" = "yes" && test "$have_mpdec" = "no"],
+ [AC_MSG_WARN([m4_normalize([
+ no system libmpdecimal found; falling back to pure-Python version
+ for the decimal module])])])
+
PY_STDLIB_MOD([_dbm],
[test -n "$with_dbmliborder"], [test "$have_dbm" != "no"],
[$DBM_CFLAGS], [$DBM_LIBS])
@@ -8062,6 +8165,8 @@ PY_STDLIB_MOD([_bz2], [], [test "$have_bzip2" = yes],
[$BZIP2_CFLAGS], [$BZIP2_LIBS])
PY_STDLIB_MOD([_lzma], [], [test "$have_liblzma" = yes],
[$LIBLZMA_CFLAGS], [$LIBLZMA_LIBS])
+PY_STDLIB_MOD([_zstd], [], [test "$have_libzstd" = yes],
+ [$LIBZSTD_CFLAGS], [$LIBZSTD_LIBS])
dnl OpenSSL bindings
PY_STDLIB_MOD([_ssl], [], [test "$ac_cv_working_openssl_ssl" = yes],
@@ -8082,7 +8187,6 @@ PY_STDLIB_MOD([_testbuffer], [test "$TEST_MODULES" = yes])
PY_STDLIB_MOD([_testimportmultiple], [test "$TEST_MODULES" = yes], [test "$ac_cv_func_dlopen" = yes])
PY_STDLIB_MOD([_testmultiphase], [test "$TEST_MODULES" = yes], [test "$ac_cv_func_dlopen" = yes])
PY_STDLIB_MOD([_testsinglephase], [test "$TEST_MODULES" = yes], [test "$ac_cv_func_dlopen" = yes])
-PY_STDLIB_MOD([_testexternalinspection], [test "$TEST_MODULES" = yes])
PY_STDLIB_MOD([xxsubtype], [test "$TEST_MODULES" = yes])
PY_STDLIB_MOD([_xxtestfuzz], [test "$TEST_MODULES" = yes])
PY_STDLIB_MOD([_ctypes_test],