Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,17 @@ jobs:
workflows:
build-and-test:
jobs:
# 3.11.12
- build-test-python:
name: python-3.11.12-x64
python_version: 3.11.12
python_arch: x64

- build-test-python:
name: python-3.11.12-x86
python_version: 3.11.12
python_arch: x86

# 3.10.17
- build-test-python:
name: python-3.10.17-x64
Expand Down Expand Up @@ -144,6 +155,13 @@ workflows:

build-and-test-win:
jobs:
# 3.11.12
- build-test-python-win:
name: python-3.11.12-win-x64
python_version: 3.11.12
python_arch: x64
generator: "Visual Studio 16 2019"

# 3.10.17
- build-test-python-win:
name: python-3.10.17-win-x64
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
fail-fast: false
matrix:
runs-on: [macos-latest]
python-version: [3.7.17, 3.8.20, 3.9.22, 3.10.17]
python-version: [3.7.17, 3.8.20, 3.9.22, 3.10.17, 3.11.12]
include:
- runs-on: macos-latest
c-compiler: "clang"
Expand Down
25 changes: 22 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.20.6)

set(PYTHON_VERSION "3.10.17" CACHE STRING "The version of Python to build.")
set(PYTHON_VERSION "3.11.12" CACHE STRING "The version of Python to build.")

string(REPLACE "." ";" VERSION_LIST ${PYTHON_VERSION})
list(GET VERSION_LIST 0 PY_VERSION_MAJOR)
Expand Down Expand Up @@ -297,6 +297,20 @@ set(_download_3.10.14_md5 "f67d78c8323a18fe6b945914c51a7aa6")
set(_download_3.10.15_md5 "b6a2b570ea75ef55f50bfe79d778eb01")
set(_download_3.10.16_md5 "2515d8571c6fdd7fc620aa9e1cc6d202")
set(_download_3.10.17_md5 "763324aa2b396ee10a51bfa6c645d8e9")
# 3.11.x
set(_download_3.11.0_md5 "c5f77f1ea256dc5bdb0897eeb4d35bb0")
set(_download_3.11.1_md5 "5c986b2865979b393aa50a31c65b64e8")
set(_download_3.11.2_md5 "f6b5226ccba5ae1ca9376aaba0b0f673")
set(_download_3.11.3_md5 "016ba65bc80411f9ec20c614ab385e81")
set(_download_3.11.4_md5 "bf6ec50f2f3bfa6ffbdb385286f2c628")
set(_download_3.11.5_md5 "b628f21aae5e2c3006a12380905bb640")
set(_download_3.11.6_md5 "ed23dadb9f1b9fd2e4e7d78619685c79")
set(_download_3.11.7_md5 "ef61f81ec82c490484219c7f0ec96783")
set(_download_3.11.8_md5 "7fb0bfaa2f6aae4aadcdb51abe957825")
set(_download_3.11.9_md5 "bfd4d3bfeac4216ce35d7a503bf02d5c")
set(_download_3.11.10_md5 "35c36069a43dd57a7e9915deba0f864e")
set(_download_3.11.11_md5 "9a5b43fcc06810b8ae924b0a080e6569")
set(_download_3.11.12_md5 "b8bb496014f05f5be180fab74810f40b")

set(_extracted_dir "Python-${PY_VERSION}")

Expand Down Expand Up @@ -543,10 +557,13 @@ include_directories(${INCLUDE_BUILD_DIR})
include_directories(${INCLUDE_BUILD_DIR}/internal)
include_directories(${PYCONFIG_BUILD_DIR})
include_directories(${SRC_DIR}/Python)
include_directories(${SRC_DIR}) # Introduced in Python 3.11 for "Python/frozen_modules/.h"

# Set cflags used by all components
if(CMAKE_C_COMPILER_ID MATCHES GNU)
if(PY_VERSION VERSION_GREATER_EQUAL "3.6")
if(PY_VERSION VERSION_GREATER_EQUAL "3.11")
append_if_absent(CMAKE_C_FLAGS "-std=c11")
elseif(PY_VERSION VERSION_GREATER_EQUAL "3.6")
append_if_absent(CMAKE_C_FLAGS "-std=c99")
endif()
append_if_absent(CMAKE_C_FLAGS "-Wall")
Expand Down Expand Up @@ -784,7 +801,9 @@ file(MAKE_DIRECTORY "${EXTENSION_BUILD_DIR}")
install(DIRECTORY DESTINATION ${EXTENSION_INSTALL_DIR})

if(BUILD_TESTING)
set(TESTOPTS -l)
# Command line option "-l/--findleaks" of regrtest is deprecated since Python 3.7 and
# removed in Python 3.11. It is superseded by --fail-env-changed.
set(TESTOPTS $<IF:$<VERSION_GREATER_EQUAL:${PY_VERSION},3.11>,--fail-env-changed,-l>)
set(TESTPROG ${PROJECT_BINARY_DIR}/${PYTHONHOME}/test/regrtest.py)
set(TESTPYTHONOPTS )
set(TESTPYTHON $<TARGET_FILE:python> ${TESTPYTHONOPTS})
Expand Down
4 changes: 2 additions & 2 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ How to use this buildsystem:

.. note::

By default, the build system will download the python 3.10.17 source from
By default, the build system will download the python 3.11.12 source from
http://www.python.org/ftp/python/


Expand All @@ -72,7 +72,7 @@ options on the commandline with `-DOPTION=VALUE`, or use the "ccmake" gui.

::

PYTHON_VERSION=major.minor.patch (defaults to 3.10.17)
PYTHON_VERSION=major.minor.patch (defaults to 3.11.12)
The version of Python to build.

PYTHON_APPLY_PATCHES=ON|OFF (defaults to ON)
Expand Down
87 changes: 86 additions & 1 deletion cmake/ConfigureChecks.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,15 @@ message(STATUS "The system processor is ${CMAKE_SYSTEM_PROCESSOR}")
message(STATUS "The system version is ${CMAKE_SYSTEM_VERSION}")

# Find any dependencies

set(HAVE_LIBB2 0) # See https://github.com/python-cmake-buildsystem/python-cmake-buildsystem/issues/393

if(USE_SYSTEM_BZip2)
find_package(BZip2) # https://cmake.org/cmake/help/latest/module/FindBZip2.html
endif()
message(STATUS "BZIP2_INCLUDE_DIR=${BZIP2_INCLUDE_DIR}")
message(STATUS "BZIP2_LIBRARIES=${BZIP2_LIBRARIES}")
set(HAVE_BZLIB_H "${BZIP2_INCLUDE_DIR}") # Python 3.11

if(USE_SYSTEM_Curses)

Expand Down Expand Up @@ -104,7 +108,9 @@ if(USE_SYSTEM_TCL)
message(STATUS "TK_PATCH_LEVEL: ${TK_PATCH_LEVEL}")

set(_tk_expected_version)
if(PY_VERSION VERSION_GREATER_EQUAL "3.5")
if(PY_VERSION VERSION_GREATER_EQUAL "3.11")
set(_tk_expected_version "8.5.12")
elseif(PY_VERSION VERSION_GREATER_EQUAL "3.5")
set(_tk_expected_version "8.4")
else()
set(_tk_expected_version "8.3.1")
Expand Down Expand Up @@ -133,28 +139,40 @@ if(USE_SYSTEM_ZLIB)
message(STATUS "ZLIB_INCLUDE_DIRS=${ZLIB_INCLUDE_DIRS}")
message(STATUS "ZLIB_LIBRARIES=${ZLIB_LIBRARIES}")
endif()
set(HAVE_ZLIB_H ${ZLIB_INCLUDE_DIRS}) # Python 3.11

if(USE_SYSTEM_DB)
find_path(DB_INCLUDE_PATH db.h)
find_library(DB_LIBRARY NAMES db-4.8)
message(STATUS "DB_INCLUDE_PATH=${DB_INCLUDE_PATH}")
message(STATUS "DB_LIBRARY=${DB_LIBRARY}")
endif()
set(HAVE_DB_H ${DB_INCLUDE_PATH}) # Python 3.11
set(HAVE_LIBDB ${DB_LIBRARY}) # Python 3.11

if(USE_SYSTEM_GDBM)
find_path(GDBM_INCLUDE_PATH gdbm.h)
set(HAVE_GDBM_H ${GDBM_INCLUDE_PATH}) # Python 3.11
find_library(GDBM_LIBRARY gdbm)
find_library(GDBM_COMPAT_LIBRARY gdbm_compat)
set(HAVE_LIBGDBM_COMPAT ${GDBM_COMPAT_LIBRARY}) # Python 3.11
find_path(NDBM_INCLUDE_PATH ndbm.h)
set(HAVE_NDBM_H ${NDBM_INCLUDE_PATH}) # Python 3.11

if(NDBM_INCLUDE_PATH)
set(NDBM_TAG NDBM)
set(NDBM_USE NDBM)
find_library(NDBM_LIBRARY ndbm)
set(HAVE_LIBNDBM ${NDBM_LIBRARY}) # Python 3.11
else()
set(NDBM_USE GDBM_COMPAT)
find_path(GDBM_NDBM_INCLUDE_PATH gdbm/ndbm.h)
set(HAVE_GDBM_NDBM_H ${GDBM_NDBM_INCLUDE_PATH}) # Python 3.11
if(GDBM_NDBM_INCLUDE_PATH)
set(NDBM_TAG GDBM_NDBM)
else()
find_path(GDBM_DASH_NDBM_INCLUDE_PATH gdbm-ndbm.h)
set(HAVE_GDBM_DASH_NDBM_H ${GDBM_DASH_NDBM_INCLUDE_PATH}) # Python 3.11
if(GDBM_DASH_NDBM_INCLUDE_PATH)
set(NDBM_TAG GDBM_DASH_NDBM)
endif()
Expand All @@ -165,12 +183,14 @@ message(STATUS "GDBM_INCLUDE_PATH=${GDBM_INCLUDE_PATH}")
message(STATUS "GDBM_LIBRARY=${GDBM_LIBRARY}")
message(STATUS "GDBM_COMPAT_LIBRARY=${GDBM_COMPAT_LIBRARY}")
message(STATUS "NDBM_TAG=${NDBM_TAG}")
message(STATUS "NDBM_USE=${NDBM_USE}")
message(STATUS "<NDBM_TAG>_INCLUDE_PATH=${${NDBM_TAG}_INCLUDE_PATH}")

find_path(LZMA_INCLUDE_PATH lzma.h)
find_library(LZMA_LIBRARY lzma)
message(STATUS "LZMA_INCLUDE_PATH=${LZMA_INCLUDE_PATH}")
message(STATUS "LZMA_LIBRARY=${LZMA_LIBRARY}")
set(HAVE_LZMA_H ${LZMA_INCLUDE_PATH}) # Python 3.11

if(USE_SYSTEM_READLINE)
if(USE_LIBEDIT)
Expand Down Expand Up @@ -199,8 +219,10 @@ set(SQLite3_INCLUDE_DIRS ${SQLite3_INCLUDE_DIR})
set(SQLite3_LIBRARIES ${SQLite3_LIBRARY})
message(STATUS "SQLite3_INCLUDE_DIRS=${SQLite3_INCLUDE_DIRS}")
message(STATUS "SQLite3_LIBRARIES=${SQLite3_LIBRARIES}")
set(HAVE_LIBSQLITE3 ${SQLite3_LIBRARIES}) # Python 3.11

find_path(TIRPC_RPC_INCLUDE_PATH rpc.h PATHS "/usr/include/tirpc/rpc")
set(HAVE_RPC_RPC_H ${TIRPC_RPC_INCLUDE_PATH}) # Python 3.11
find_library(TIRPC_LIBRARY tirpc)

find_library(UUID_LIBRARY uuid)
Expand Down Expand Up @@ -332,6 +354,7 @@ check_include_files(linux/auxvec.h HAVE_LINUX_AUXVEC_H) # Python 3.10
check_include_files(locale.h HAVE_LOCALE_H)

check_include_files(sys/socket.h HAVE_SYS_SOCKET_H)
check_include_files(sys/soundcard.h> HAVE_SYS_SOUNDCARD_H) # Python 3.11

set(LINUX_NETLINK_HEADERS)
add_cond(LINUX_NETLINK_HEADERS HAVE_ASM_TYPES_H asm/types.h)
Expand All @@ -352,6 +375,7 @@ check_include_files("${LINUX_CAN_HEADERS};linux/can.h" HAVE_LINUX_CAN_H)
check_include_files("${LINUX_CAN_HEADERS};linux/can/bcm.h" HAVE_LINUX_CAN_BCM_H)
check_include_files("${LINUX_CAN_HEADERS};linux/can/j1939.h" HAVE_LINUX_CAN_J1939_H)
check_include_files("${LINUX_CAN_HEADERS};linux/can/raw.h" HAVE_LINUX_CAN_RAW_H)
check_include_files("${LINUX_CAN_HEADERS};netcan/can.h" HAVE_NETCAN_CAN_H) # Python 3.11

set(LINUX_VM_SOCKETS_HEADERS)
add_cond(LINUX_VM_SOCKETS_HEADERS HAVE_SYS_SOCKET_H sys/socket.h)
Expand All @@ -377,6 +401,7 @@ else()
check_include_files("stdio.h;readline/readline.h" HAVE_READLINE_READLINE_H)
endif()
check_include_files(semaphore.h HAVE_SEMAPHORE_H)
check_include_files(setjmp.h HAVE_SETJMP_H) # Python 3.11
check_include_files(shadow.h HAVE_SHADOW_H)
check_include_files(signal.h HAVE_SIGNAL_H)
check_include_files(spawn.h HAVE_SPAWN_H)
Expand All @@ -386,6 +411,7 @@ check_include_files(strings.h HAVE_STRINGS_H) # libffi and cpython
check_include_files(string.h HAVE_STRING_H) # libffi and cpython
check_include_files(stropts.h HAVE_STROPTS_H)
check_include_files(sysexits.h HAVE_SYSEXITS_H)
check_include_files(syslog.h HAVE_SYSLOG_H) # Python 3.11
check_include_files(sys/audioio.h HAVE_SYS_AUDIOIO_H)
check_include_files(sys/auxv.h HAVE_SYS_AUXV_H) # Python 3.10
check_include_files(sys/bsdtty.h HAVE_SYS_BSDTTY_H)
Expand Down Expand Up @@ -419,15 +445,18 @@ check_include_files(term.h HAVE_TERM_H)
check_include_files(unistd.h HAVE_UNISTD_H) # libffi and cpython
check_include_files(util.h HAVE_UTIL_H)
check_include_files(utime.h HAVE_UTIME_H)
check_include_files(utmp.h HAVE_UTMP_H) # Python 3.11
check_include_files(wchar.h HAVE_WCHAR_H)
check_include_files("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS) # libffi and cpython

check_include_files(stdarg.h HAVE_STDARG_PROTOTYPES)

check_include_files(endian.h HAVE_ENDIAN_H)
check_include_files(sched.h HAVE_SCHED_H)
check_include_files(linux/limits.h HAVE_LINUX_LIMITS_H) # Python 3.11
check_include_files(linux/memfd.h HAVE_LINUX_MEMFD_H)
check_include_files(linux/random.h HAVE_LINUX_RANDOM_H)
check_include_files(linux/soundcard.h HAVE_LINUX_SOUNDCARD_H) # Python 3.11
check_include_files(sys/devpoll.h HAVE_SYS_DEVPOLL_H)
check_include_files(sys/endian.h HAVE_SYS_ENDIAN_H)
check_include_files(sys/ioctl.h HAVE_SYS_IOCTL_H)
Expand Down Expand Up @@ -748,6 +777,9 @@ add_cond(CMAKE_EXTRA_INCLUDE_FILES HAVE_WCHAR_H wchar.h)

TEST_BIG_ENDIAN(WORDS_BIGENDIAN)

# Assume C89 semantics that RETSIGTYPE is always void
set(RETSIGTYPE "void")

check_type_size(double SIZEOF_DOUBLE) # libffi and cpython
check_type_size(float SIZEOF_FLOAT)
check_type_size(fpos_t SIZEOF_FPOS_T)
Expand Down Expand Up @@ -872,6 +904,7 @@ check_symbol_exists(confstr "${CFG_HEADERS}" HAVE_CONFSTR)
check_symbol_exists(connect "${CFG_HEADERS}" HAVE_CONNECT) # Python 3.11
check_symbol_exists(ctermid "${CFG_HEADERS}" HAVE_CTERMID)
check_symbol_exists(ctermid_r "${CFG_HEADERS}" HAVE_CTERMID_R)
check_symbol_exists(dup "${CFG_HEADERS}" HAVE_DUP) # Python 3.11
check_symbol_exists(dup2 "${CFG_HEADERS}" HAVE_DUP2)
check_symbol_exists(epoll_create "${CFG_HEADERS}" HAVE_EPOLL)
check_symbol_exists(epoll_create1 "${CFG_HEADERS}" HAVE_EPOLL_CREATE1)
Expand All @@ -885,6 +918,7 @@ if(NOT HAVE_FLOCK)
check_library_exists(bsd flock "" FLOCK_NEEDS_LIBBSD)
endif()
check_symbol_exists(fork "${CFG_HEADERS}" HAVE_FORK)
check_symbol_exists(fork1 "${CFG_HEADERS}" HAVE_FORK1) # Python 3.11
check_symbol_exists(forkpty "${CFG_HEADERS}" HAVE_FORKPTY)
check_symbol_exists(fpathconf "${CFG_HEADERS}" HAVE_FPATHCONF)
cmake_push_check_state()
Expand Down Expand Up @@ -939,6 +973,7 @@ python_check_function(lchmod HAVE_LCHMOD)
check_symbol_exists(lchown "${CFG_HEADERS}" HAVE_LCHOWN)
check_symbol_exists(link "${CFG_HEADERS}" HAVE_LINK)
check_symbol_exists(listen "${CFG_HEADERS}" HAVE_LISTEN) # Python 3.11
check_symbol_exists(login_tty "${CFG_HEADERS}" HAVE_LOGIN_TTY) # Python 3.11
check_symbol_exists(lstat "${CFG_HEADERS}" HAVE_LSTAT)
check_symbol_exists(makedev "${CFG_HEADERS}" HAVE_MAKEDEV)
check_symbol_exists(memcpy "${CFG_HEADERS}" HAVE_MEMCPY) # libffi and cpython
Expand Down Expand Up @@ -1033,10 +1068,12 @@ check_symbol_exists(futimes "${CFG_HEADERS}" HAVE_FUTIMES)
check_symbol_exists(futimesat "${CFG_HEADERS}" HAVE_FUTIMESAT)
check_symbol_exists(getentropy "${CFG_HEADERS}" HAVE_GETENTROPY)
python_check_function(getpriority HAVE_GETPRIORITY)
check_symbol_exists(getgrgid "${CFG_HEADERS}" HAVE_GETGRGID) # Python 3.11
check_symbol_exists(getgrgid_r "${CFG_HEADERS}" HAVE_GETGRGID_R)
check_symbol_exists(getgrnam_r "${CFG_HEADERS}" HAVE_GETGRNAM_R)
check_symbol_exists(getgrouplist "${CFG_HEADERS}" HAVE_GETGROUPLIST)
check_symbol_exists(getpwnam_r "${CFG_HEADERS}" HAVE_GETPWNAM_R)
check_symbol_exists(getpwuid "${CFG_HEADERS}" HAVE_GETPWUID) # Python 3.11
check_symbol_exists(getpwuid_r "${CFG_HEADERS}" HAVE_GETPWUID_R)
check_symbol_exists(htole64 "${CFG_HEADERS}" HAVE_HTOLE64)
check_symbol_exists(if_nameindex "${CFG_HEADERS}" HAVE_IF_NAMEINDEX)
Expand Down Expand Up @@ -1720,6 +1757,50 @@ if(NOT HAVE_CLOCK_SETTIME)
endif()
endif()

if(NOT HAVE_CLOCK_NANOSLEEP)
cmake_push_check_state()
set(check_src ${PROJECT_BINARY_DIR}/CMakeFiles/ac_cv_lib_rt_clock_nanosleep.c)
file(WRITE ${check_src} "/* 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 clock_nanosleep ();
int main () { return clock_nanosleep (); }
")
list(APPEND CMAKE_REQUIRED_LIBRARIES rt)
python_platform_test(
HAVE_CLOCK_NANOSLEEP
"Checking for clock_nanosleep in -lrt"
${check_src}
DIRECT
)
cmake_pop_check_state()
endif()

if(NOT HAVE_NANOSLEEP)
cmake_push_check_state()
set(check_src ${PROJECT_BINARY_DIR}/CMakeFiles/ac_cv_lib_rt_nanosleep.c)
file(WRITE ${check_src} "/* 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 nanosleep ();
int main () { return nanosleep (); }
")
list(APPEND CMAKE_REQUIRED_LIBRARIES rt)
python_platform_test(
HAVE_NANOSLEEP
"Checking for nanosleep in -lrt"
${check_src}
DIRECT
)
cmake_pop_check_state()
endif()

#######################################################################
#
# unicode
Expand Down Expand Up @@ -1921,6 +2002,8 @@ check_symbol_exists(getaddrinfo "${CFG_HEADERS}" HAVE_GETADDRINFO)
check_symbol_exists(gethostname "${CFG_HEADERS}" HAVE_GETHOSTNAME) # Python 3.11
check_symbol_exists(getnameinfo "${CFG_HEADERS}" HAVE_GETNAMEINFO)
check_symbol_exists(gethostbyaddr "${CFG_HEADERS}" HAVE_GETHOSTBYADDR) # Python 3.11
check_symbol_exists(getprotobyname "${CFG_HEADERS}" HAVE_GETPROTOBYNAME) # Python 3.11

check_symbol_exists(getpeername "${CFG_HEADERS}" HAVE_GETPEERNAME)
check_symbol_exists(getservbyname "${CFG_HEADERS}" HAVE_GETSERVBYNAME) # Python 3.11
check_symbol_exists(getservbyport "${CFG_HEADERS}" HAVE_GETSERVBYPORT) # Python 3.11
Expand All @@ -1929,6 +2012,7 @@ check_symbol_exists(inet_aton "${CFG_HEADERS}" HAVE_INET_ATON)
if(NOT HAVE_INET_ATON)
check_library_exists(resolv inet_aton "" HAVE_LIBRESOLV)
endif()
check_symbol_exists(inet_ntoa "${CFG_HEADERS}" HAVE_INET_NTOA) # Python 3.11
check_symbol_exists(inet_pton "${CFG_HEADERS}" HAVE_INET_PTON)

set(CMAKE_EXTRA_INCLUDE_FILES ${CFG_HEADERS})
Expand Down Expand Up @@ -2092,6 +2176,7 @@ if(HAVE_READLINE_READLINE_H)
add_cond(CMAKE_REQUIRED_LIBRARIES HAVE_LIBREADLINE ${HAVE_LIBREADLINE})
check_symbol_exists(rl_callback_handler_install "${CFG_HEADERS}" HAVE_RL_CALLBACK)
check_symbol_exists(rl_catch_signals "${CFG_HEADERS}" HAVE_RL_CATCH_SIGNAL)
check_symbol_exists(rl_compdisp_func_t "${CFG_HEADERS}" HAVE_RL_COMPDISP_FUNC_T) # Python 3.11
check_symbol_exists(rl_completion_append_character "${CFG_HEADERS}" HAVE_RL_COMPLETION_APPEND_CHARACTER)
check_symbol_exists(rl_completion_display_matches_hook "${CFG_HEADERS}" HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK)
check_symbol_exists(rl_completion_suppress_append "${CFG_HEADERS}" HAVE_RL_COMPLETION_SUPPRESS_APPEND)
Expand Down
3 changes: 3 additions & 0 deletions cmake/config-mingw/pyconfig.h
Original file line number Diff line number Diff line change
Expand Up @@ -387,6 +387,9 @@ Py_NO_ENABLE_SHARED to find out. Also support MS_NO_COREDLL for b/w compat */
/* Use Python's own small-block memory-allocator. */
#define WITH_PYMALLOC 1

/* Define if you want to compile in object freelists optimization [Python 3.11] */
#define WITH_FREELISTS 1

/* Define if you have clock. */
/* #define HAVE_CLOCK */

Expand Down
Loading