[Python-checkins] bpo-43974: Move Py_BUILD_CORE_MODULE into module code (GH-29157)

tiran webhook-mailer at python.org
Fri Oct 22 09:36:38 EDT 2021


https://github.com/python/cpython/commit/03e9f5dc751b8c441a85f428abc3f432ffe46345
commit: 03e9f5dc751b8c441a85f428abc3f432ffe46345
branch: main
author: Christian Heimes <christian at python.org>
committer: tiran <christian at python.org>
date: 2021-10-22T15:36:28+02:00
summary:

bpo-43974: Move Py_BUILD_CORE_MODULE into module code (GH-29157)

setup.py no longer defines Py_BUILD_CORE_MODULE. Instead every
module defines the macro before #include "Python.h" unless
Py_BUILD_CORE_BUILTIN is already defined.

Py_BUILD_CORE_BUILTIN is defined for every module that is built by
Modules/Setup.

The PR also simplifies Modules/Setup. Makefile and makesetup
already define Py_BUILD_CORE_BUILTIN and include Modules/internal
for us.

Signed-off-by: Christian Heimes <christian at python.org>

files:
A Misc/NEWS.d/next/Build/2021-10-22-14-00-44.bpo-43974.HHZtbx.rst
M Modules/Setup
M Modules/_abc.c
M Modules/_asynciomodule.c
M Modules/_blake2/blake2b_impl.c
M Modules/_blake2/blake2module.c
M Modules/_blake2/blake2s_impl.c
M Modules/_ctypes/_ctypes.c
M Modules/_ctypes/callbacks.c
M Modules/_ctypes/cfield.c
M Modules/_ctypes/stgdict.c
M Modules/_cursesmodule.c
M Modules/_datetimemodule.c
M Modules/_decimal/_decimal.c
M Modules/_hashopenssl.c
M Modules/_heapqmodule.c
M Modules/_json.c
M Modules/_lsprof.c
M Modules/_math.c
M Modules/_pickle.c
M Modules/_posixsubprocess.c
M Modules/_queuemodule.c
M Modules/_randommodule.c
M Modules/_sha3/sha3module.c
M Modules/_struct.c
M Modules/_testinternalcapi.c
M Modules/_testmultiphase.c
M Modules/_xxsubinterpretersmodule.c
M Modules/_zoneinfo.c
M Modules/arraymodule.c
M Modules/binascii.c
M Modules/cmathmodule.c
M Modules/mathmodule.c
M Modules/md5module.c
M Modules/sha1module.c
M Modules/sha256module.c
M Modules/sha512module.c
M Modules/unicodedata.c
M PCbuild/pyproject.props
M setup.py

diff --git a/Misc/NEWS.d/next/Build/2021-10-22-14-00-44.bpo-43974.HHZtbx.rst b/Misc/NEWS.d/next/Build/2021-10-22-14-00-44.bpo-43974.HHZtbx.rst
new file mode 100644
index 0000000000000..728a095dc03af
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2021-10-22-14-00-44.bpo-43974.HHZtbx.rst
@@ -0,0 +1,2 @@
+``setup.py`` no longer defines ``Py_BUILD_CORE_MODULE``. Instead every
+module, that uses the internal API, defines the macro.
diff --git a/Modules/Setup b/Modules/Setup
index a4440dfb6fc9d..a5b1a7b9c14af 100644
--- a/Modules/Setup
+++ b/Modules/Setup
@@ -99,26 +99,26 @@ PYTHONPATH=$(COREPYTHONPATH)
 # cannot be built as shared!
 
 _collections _collectionsmodule.c
-_abc -DPy_BUILD_CORE_BUILTIN _abc.c
+_abc _abc.c
 _codecs _codecsmodule.c
-_functools -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal _functoolsmodule.c
-_io -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io _io/_iomodule.c _io/iobase.c _io/fileio.c _io/bytesio.c _io/bufferedio.c _io/textio.c _io/stringio.c
-_locale -DPy_BUILD_CORE_BUILTIN _localemodule.c  # -lintl
-_operator -DPy_BUILD_CORE_BUILTIN _operator.c
-_signal -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal signalmodule.c
-_sre -DPy_BUILD_CORE_BUILTIN _sre.c
+_functools _functoolsmodule.c
+_io -I$(srcdir)/Modules/_io _io/_iomodule.c _io/iobase.c _io/fileio.c _io/bytesio.c _io/bufferedio.c _io/textio.c _io/stringio.c
+_locale _localemodule.c  # -lintl
+_operator _operator.c
+_signal signalmodule.c
+_sre _sre.c
 _stat _stat.c
 _symtable symtablemodule.c  # setup.py can't track the .h file that _symtable depends on.
-_thread -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal _threadmodule.c
+_thread _threadmodule.c
 _tracemalloc _tracemalloc.c  # See bpo-35053 as to why this is built in.
 _weakref _weakref.c
 atexit atexitmodule.c
 errno errnomodule.c
 faulthandler faulthandler.c
 itertools itertoolsmodule.c
-posix -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal posixmodule.c
+posix posixmodule.c
 pwd pwdmodule.c
-time -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal timemodule.c
+time timemodule.c
 
 
 # ---
@@ -139,7 +139,7 @@ time -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal timemodule.c
 
 #_asyncio _asynciomodule.c
 #_bisect _bisectmodule.c
-#_blake2 -DPy_BUILD_CORE_BUILTIN _blake2/blake2module.c _blake2/blake2b_impl.c _blake2/blake2s_impl.c
+#_blake2 _blake2/blake2module.c _blake2/blake2b_impl.c _blake2/blake2s_impl.c
 #_codecs_cn cjkcodecs/_codecs_cn.c
 #_codecs_hk cjkcodecs/_codecs_hk.c
 #_codecs_iso2022 cjkcodecs/_codecs_iso2022.c
@@ -150,31 +150,31 @@ time -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal timemodule.c
 #_csv _csv.c
 #_datetime _datetimemodule.c
 #_elementtree -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI -I$(srcdir)/Modules/expat _elementtree.c
-#_heapq -DPy_BUILD_CORE_MODULE _heapqmodule.c
-#_json -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal _json.c
+#_heapq _heapqmodule.c
+#_json _json.c
 #_lsprof _lsprof.c rotatingtree.c
-#_md5 -DPy_BUILD_CORE_BUILTIN md5module.c
+#_md5 md5module.c
 #_multibytecodec cjkcodecs/multibytecodec.c
 #_opcode _opcode.c
-#_pickle -DPy_BUILD_CORE_MODULE _pickle.c
-#_posixsubprocess -DPy_BUILD_CORE_BUILTIN _posixsubprocess.c
-#_queue -DPy_BUILD_CORE_MODULE _queuemodule.c
-#_random -DPy_BUILD_CORE_MODULE _randommodule.c
-#_sha1 -DPy_BUILD_CORE_BUILTIN sha1module.c
-#_sha256 -DPy_BUILD_CORE_BUILTIN sha256module.c
-#_sha512 -DPy_BUILD_CORE_BUILTIN sha512module.c
-#_sha3 -DPy_BUILD_CORE_BUILTIN _sha3/sha3module.c
+#_pickle _pickle.c
+#_posixsubprocess _posixsubprocess.c
+#_queue _queuemodule.c
+#_random _randommodule.c
+#_sha1 sha1module.c
+#_sha256 sha256module.c
+#_sha512 sha512module.c
+#_sha3 _sha3/sha3module.c
 #_statistics _statisticsmodule.c
-#_struct -DPy_BUILD_CORE_MODULE _struct.c
+#_struct _struct.c
 #_typing _typingmodule.c
-#_zoneinfo -DPy_BUILD_CORE_MODULE _zoneinfo.c
-#array -DPy_BUILD_CORE_MODULE arraymodule.c
+#_zoneinfo _zoneinfo.c
+#array arraymodule.c
 #audioop audioop.c
-#binascii -DPy_BUILD_CORE_MODULE binascii.c
-#cmath -DPy_BUILD_CORE_MODULE cmathmodule.c _math.c  # -lm
-#math -DPy_BUILD_CORE_MODULE mathmodule.c _math.c  # -lm
+#binascii binascii.c
+#cmath cmathmodule.c _math.c  # -lm
+#math mathmodule.c _math.c  # -lm
 #pyexpat -DHAVE_EXPAT_CONFIG_H -DXML_POOR_ENTROPY -DUSE_PYEXPAT_CAPI -I$(srcdir)/Modules/expat  expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c
-#unicodedata  -DPy_BUILD_CORE_BUILTIN unicodedata.c
+#unicodedata  unicodedata.c
 
 # Modules with some UNIX dependencies -- on by default:
 # (If you have a really backward UNIX, select and socket may not be
@@ -286,7 +286,7 @@ time -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal timemodule.c
 # provided by the ncurses library.  e.g. on Linux, link with -lncurses
 # instead of -lcurses).
 
-#_curses -DPy_BUILD_CORE_MODULE -lcurses -ltermcap _cursesmodule.c
+#_curses -lcurses -ltermcap _cursesmodule.c
 
 # Wrapper for the panel library that's part of ncurses and SYSV curses.
 #_curses_panel -lpanel -lncurses _curses_panel.c
@@ -305,7 +305,7 @@ xxsubtype xxsubtype.c  # Required for the test suite to pass!
 #_testbuffer _testbuffer.c
 #_testcapi _testcapimodule.c  # CANNOT be statically compiled!
 #_testimportmultiple _testimportmultiple.c
-#_testinternalcapi -DPy_BUILD_CORE_MODULE -I$(srcdir)/Include/internal _testinternalcapi.c
+#_testinternalcapi _testinternalcapi.c
 #_testmultiphase _testmultiphase.c
 
 
diff --git a/Modules/_abc.c b/Modules/_abc.c
index 8aa68359039e7..b7465c379dddf 100644
--- a/Modules/_abc.c
+++ b/Modules/_abc.c
@@ -1,4 +1,7 @@
 /* ABCMeta implementation */
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
 
 #include "Python.h"
 #include "pycore_moduleobject.h"  // _PyModule_GetState()
diff --git a/Modules/_asynciomodule.c b/Modules/_asynciomodule.c
index adc5ff9f796cc..8386a50d55826 100644
--- a/Modules/_asynciomodule.c
+++ b/Modules/_asynciomodule.c
@@ -1,3 +1,7 @@
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 #include "pycore_pyerrors.h"      // _PyErr_ClearExcState()
 #include "pycore_pystate.h"       // _PyThreadState_GET()
diff --git a/Modules/_blake2/blake2b_impl.c b/Modules/_blake2/blake2b_impl.c
index b16324e8f7aeb..e1421dd8ff8b8 100644
--- a/Modules/_blake2/blake2b_impl.c
+++ b/Modules/_blake2/blake2b_impl.c
@@ -13,6 +13,10 @@
  * The blake2s_impl.c is autogenerated from blake2b_impl.c.
  */
 
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 #include "pycore_strhex.h"       // _Py_strhex()
 
diff --git a/Modules/_blake2/blake2module.c b/Modules/_blake2/blake2module.c
index 631de2cc0abc7..3b6bba277a313 100644
--- a/Modules/_blake2/blake2module.c
+++ b/Modules/_blake2/blake2module.c
@@ -8,6 +8,10 @@
  * any warranty. http://creativecommons.org/publicdomain/zero/1.0/
  */
 
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 
 #include "impl/blake2.h"
diff --git a/Modules/_blake2/blake2s_impl.c b/Modules/_blake2/blake2s_impl.c
index 6b31a363ea27b..763c0178e6bcd 100644
--- a/Modules/_blake2/blake2s_impl.c
+++ b/Modules/_blake2/blake2s_impl.c
@@ -13,6 +13,10 @@
  * The blake2s_impl.c is autogenerated from blake2s_impl.c.
  */
 
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 #include "pycore_strhex.h"        // _Py_strhex()
 
diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c
index f8940fdbed242..96078c7726d59 100644
--- a/Modules/_ctypes/_ctypes.c
+++ b/Modules/_ctypes/_ctypes.c
@@ -98,6 +98,9 @@ bytes(cdata)
  * PyCField_Type
  *
  */
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
 
 #define PY_SSIZE_T_CLEAN
 
diff --git a/Modules/_ctypes/callbacks.c b/Modules/_ctypes/callbacks.c
index c24f04ce3a0f8..0f7789a973e8f 100644
--- a/Modules/_ctypes/callbacks.c
+++ b/Modules/_ctypes/callbacks.c
@@ -1,3 +1,7 @@
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 // windows.h must be included before pycore internal headers
 #ifdef MS_WIN32
diff --git a/Modules/_ctypes/cfield.c b/Modules/_ctypes/cfield.c
index 2cfd657028aca..515b280182098 100644
--- a/Modules/_ctypes/cfield.c
+++ b/Modules/_ctypes/cfield.c
@@ -1,3 +1,7 @@
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 // windows.h must be included before pycore internal headers
 #ifdef MS_WIN32
diff --git a/Modules/_ctypes/stgdict.c b/Modules/_ctypes/stgdict.c
index 43669d7152a7e..6c1917b18d450 100644
--- a/Modules/_ctypes/stgdict.c
+++ b/Modules/_ctypes/stgdict.c
@@ -1,3 +1,7 @@
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 // windows.h must be included before pycore internal headers
 #ifdef MS_WIN32
diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c
index 511073f2ac137..3770a032e977d 100644
--- a/Modules/_cursesmodule.c
+++ b/Modules/_cursesmodule.c
@@ -100,6 +100,10 @@ static const char PyCursesVersion[] = "2.2";
 
 /* Includes */
 
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #define PY_SSIZE_T_CLEAN
 
 #include "Python.h"
diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c
index e54a01b44c5ba..67441eba28f7f 100644
--- a/Modules/_datetimemodule.c
+++ b/Modules/_datetimemodule.c
@@ -7,6 +7,10 @@
  * the capsule are defined below */
 #define _PY_DATETIME_IMPL
 
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 #include "pycore_long.h"          // _PyLong_GetOne()
 #include "pycore_object.h"        // _PyObject_Init()
diff --git a/Modules/_decimal/_decimal.c b/Modules/_decimal/_decimal.c
index 237edd5191fd9..7fc7315603e7a 100644
--- a/Modules/_decimal/_decimal.c
+++ b/Modules/_decimal/_decimal.c
@@ -25,6 +25,9 @@
  * SUCH DAMAGE.
  */
 
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
 
 #include <Python.h>
 #include "pycore_pystate.h"       // _PyThreadState_GET()
diff --git a/Modules/_hashopenssl.c b/Modules/_hashopenssl.c
index b4ba60baaac93..12491917832b6 100644
--- a/Modules/_hashopenssl.c
+++ b/Modules/_hashopenssl.c
@@ -18,6 +18,10 @@
 #endif
 #define OPENSSL_NO_DEPRECATED 1
 
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #define PY_SSIZE_T_CLEAN
 
 #include "Python.h"
diff --git a/Modules/_heapqmodule.c b/Modules/_heapqmodule.c
index 20468c28f2423..3dbaaa0a0da1d 100644
--- a/Modules/_heapqmodule.c
+++ b/Modules/_heapqmodule.c
@@ -6,6 +6,10 @@ annotated by François Pinard, and converted to C by Raymond Hettinger.
 
 */
 
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 #include "pycore_list.h"          // _PyList_ITEMS()
 
diff --git a/Modules/_json.c b/Modules/_json.c
index 6f68c1f7f9b71..1c9c50665d466 100644
--- a/Modules/_json.c
+++ b/Modules/_json.c
@@ -4,8 +4,8 @@
  * and as an extension module (Py_BUILD_CORE_MODULE define) on other
  * platforms. */
 
-#if !defined(Py_BUILD_CORE_BUILTIN) && !defined(Py_BUILD_CORE_MODULE)
-#  error "Py_BUILD_CORE_BUILTIN or Py_BUILD_CORE_MODULE must be defined"
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
 #endif
 
 #include "Python.h"
diff --git a/Modules/_lsprof.c b/Modules/_lsprof.c
index 2e27afcea1b79..ff499aacbab37 100644
--- a/Modules/_lsprof.c
+++ b/Modules/_lsprof.c
@@ -1,3 +1,7 @@
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 #include "pycore_call.h"          // _PyObject_CallNoArgs()
 #include "pycore_pystate.h"       // _PyThreadState_GET()
diff --git a/Modules/_math.c b/Modules/_math.c
index 68e3a2346925d..c1936a1088a24 100644
--- a/Modules/_math.c
+++ b/Modules/_math.c
@@ -1,6 +1,10 @@
 /* Definitions of some C99 math library functions, for those platforms
    that don't implement these functions already. */
 
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 #include <float.h>
 #include "_math.h"
diff --git a/Modules/_pickle.c b/Modules/_pickle.c
index 53ab57111967c..0d9e57aa90d22 100644
--- a/Modules/_pickle.c
+++ b/Modules/_pickle.c
@@ -4,8 +4,8 @@
  * and as an extension module (Py_BUILD_CORE_MODULE define) on other
  * platforms. */
 
-#if !defined(Py_BUILD_CORE_BUILTIN) && !defined(Py_BUILD_CORE_MODULE)
-#  error "Py_BUILD_CORE_BUILTIN or Py_BUILD_CORE_MODULE must be defined"
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
 #endif
 
 #include "Python.h"
diff --git a/Modules/_posixsubprocess.c b/Modules/_posixsubprocess.c
index 63207de8b9137..de599f8c970e3 100644
--- a/Modules/_posixsubprocess.c
+++ b/Modules/_posixsubprocess.c
@@ -1,4 +1,8 @@
 /* Authors: Gregory P. Smith & Jeffrey Yasskin */
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 #include "pycore_fileutils.h"
 #if defined(HAVE_PIPE2) && !defined(_GNU_SOURCE)
diff --git a/Modules/_queuemodule.c b/Modules/_queuemodule.c
index eb61349b76581..413387fecc4cd 100644
--- a/Modules/_queuemodule.c
+++ b/Modules/_queuemodule.c
@@ -1,3 +1,7 @@
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 #include "pycore_moduleobject.h"  // _PyModule_GetState()
 #include "structmember.h"         // PyMemberDef
diff --git a/Modules/_randommodule.c b/Modules/_randommodule.c
index 65d41f4e8e80c..5243d5a05e290 100644
--- a/Modules/_randommodule.c
+++ b/Modules/_randommodule.c
@@ -66,6 +66,10 @@
 
 /* ---------------------------------------------------------------*/
 
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 #include "pycore_moduleobject.h"  // _PyModule_GetState()
 #ifdef HAVE_PROCESS_H
diff --git a/Modules/_sha3/sha3module.c b/Modules/_sha3/sha3module.c
index a033c4e452545..bfa96616df0c9 100644
--- a/Modules/_sha3/sha3module.c
+++ b/Modules/_sha3/sha3module.c
@@ -15,6 +15,10 @@
  *
  */
 
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 #include "pycore_strhex.h"        // _Py_strhex()
 #include "../hashlib.h"
diff --git a/Modules/_struct.c b/Modules/_struct.c
index a8003a90b2682..210dbdc752f4c 100644
--- a/Modules/_struct.c
+++ b/Modules/_struct.c
@@ -3,6 +3,10 @@
 /* New version supporting byte order, alignment and size options,
    character strings, and unsigned numbers */
 
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #define PY_SSIZE_T_CLEAN
 
 #include "Python.h"
diff --git a/Modules/_testinternalcapi.c b/Modules/_testinternalcapi.c
index 3ba939651a417..1ca06069e1119 100644
--- a/Modules/_testinternalcapi.c
+++ b/Modules/_testinternalcapi.c
@@ -2,8 +2,8 @@
  * C Extension module to test Python internal C APIs (Include/internal).
  */
 
-#if !defined(Py_BUILD_CORE_BUILTIN) && !defined(Py_BUILD_CORE_MODULE)
-#  error "Py_BUILD_CORE_BUILTIN or Py_BUILD_CORE_MODULE must be defined"
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
 #endif
 
 /* Always enable assertions */
diff --git a/Modules/_testmultiphase.c b/Modules/_testmultiphase.c
index 2d25e16bd4d39..ee69c42336170 100644
--- a/Modules/_testmultiphase.c
+++ b/Modules/_testmultiphase.c
@@ -1,6 +1,9 @@
 
 /* Testing module for multi-phase initialization of extension modules (PEP 489)
  */
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
 
 #include "Python.h"
 #include "pycore_namespace.h"     // _PyNamespace_New()
diff --git a/Modules/_xxsubinterpretersmodule.c b/Modules/_xxsubinterpretersmodule.c
index b5c0a63219114..3f683768fcc28 100644
--- a/Modules/_xxsubinterpretersmodule.c
+++ b/Modules/_xxsubinterpretersmodule.c
@@ -1,6 +1,9 @@
 
 /* interpreters module */
 /* low-level access to interpreter primitives */
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
 
 #include "Python.h"
 #include "frameobject.h"
diff --git a/Modules/_zoneinfo.c b/Modules/_zoneinfo.c
index 04fa09422b213..cac347071f91d 100644
--- a/Modules/_zoneinfo.c
+++ b/Modules/_zoneinfo.c
@@ -1,3 +1,7 @@
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 #include "pycore_long.h"          // _PyLong_GetOne()
 #include "structmember.h"
diff --git a/Modules/arraymodule.c b/Modules/arraymodule.c
index 5e57fe116059d..030ede57351e9 100644
--- a/Modules/arraymodule.c
+++ b/Modules/arraymodule.c
@@ -3,6 +3,10 @@
 /* An array is a uniform list -- all items have the same type.
    The item type is restricted to simple C types like int or float */
 
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #define PY_SSIZE_T_CLEAN
 #include "Python.h"
 #include "pycore_floatobject.h"   // _PyFloat_Unpack4()
diff --git a/Modules/binascii.c b/Modules/binascii.c
index 7037d34dbe2dd..fec0d82a39cdd 100644
--- a/Modules/binascii.c
+++ b/Modules/binascii.c
@@ -53,6 +53,10 @@
 ** Brandon Long, September 2001.
 */
 
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #define PY_SSIZE_T_CLEAN
 
 #include "Python.h"
diff --git a/Modules/cmathmodule.c b/Modules/cmathmodule.c
index 0f22049a17084..0e0489c5fe2d7 100644
--- a/Modules/cmathmodule.c
+++ b/Modules/cmathmodule.c
@@ -2,6 +2,10 @@
 
 /* much code borrowed from mathmodule.c */
 
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 #include "pycore_dtoa.h"
 #include "_math.h"
diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c
index 4fac0cc29e4e9..6c12a4e70ddf2 100644
--- a/Modules/mathmodule.c
+++ b/Modules/mathmodule.c
@@ -52,6 +52,10 @@ raised for division by zero and mod by zero.
    returned.
  */
 
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #include "Python.h"
 #include "pycore_bitutils.h"      // _Py_bit_length()
 #include "pycore_call.h"          // _PyObject_CallNoArgs()
diff --git a/Modules/md5module.c b/Modules/md5module.c
index 4d03f6b844b33..48b11e0779f87 100644
--- a/Modules/md5module.c
+++ b/Modules/md5module.c
@@ -15,6 +15,9 @@
 */
 
 /* MD5 objects */
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
 
 #include "Python.h"
 #include "hashlib.h"
diff --git a/Modules/sha1module.c b/Modules/sha1module.c
index 153bc12a8bd74..9153557fbde74 100644
--- a/Modules/sha1module.c
+++ b/Modules/sha1module.c
@@ -15,6 +15,9 @@
 */
 
 /* SHA1 objects */
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
 
 #include "Python.h"
 #include "hashlib.h"
diff --git a/Modules/sha256module.c b/Modules/sha256module.c
index 5858071db4e13..17ee86683b7a8 100644
--- a/Modules/sha256module.c
+++ b/Modules/sha256module.c
@@ -15,6 +15,9 @@
 */
 
 /* SHA objects */
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
 
 #include "Python.h"
 #include "pycore_bitutils.h"      // _Py_bswap32()
diff --git a/Modules/sha512module.c b/Modules/sha512module.c
index e50b69be4617d..bf4408b455f2c 100644
--- a/Modules/sha512module.c
+++ b/Modules/sha512module.c
@@ -15,6 +15,9 @@
 */
 
 /* SHA objects */
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
 
 #include "Python.h"
 #include "pycore_bitutils.h"      // _Py_bswap64()
diff --git a/Modules/unicodedata.c b/Modules/unicodedata.c
index e863e53bfa9f1..bdbddcf10b778 100644
--- a/Modules/unicodedata.c
+++ b/Modules/unicodedata.c
@@ -12,6 +12,10 @@
 
    ------------------------------------------------------------------------ */
 
+#ifndef Py_BUILD_CORE_BUILTIN
+#  define Py_BUILD_CORE_MODULE 1
+#endif
+
 #define PY_SSIZE_T_CLEAN
 
 #include "Python.h"
diff --git a/PCbuild/pyproject.props b/PCbuild/pyproject.props
index d492b71dfbaa3..bbcabb5cdb405 100644
--- a/PCbuild/pyproject.props
+++ b/PCbuild/pyproject.props
@@ -25,7 +25,6 @@
     <_DebugPreprocessorDefinition Condition="$(Configuration) == 'Debug'">_DEBUG;</_DebugPreprocessorDefinition>
     <_PlatformPreprocessorDefinition>_WIN32;</_PlatformPreprocessorDefinition>
     <_PlatformPreprocessorDefinition Condition="$(Platform) == 'x64'">_WIN64;_M_X64;</_PlatformPreprocessorDefinition>
-    <_PydPreprocessorDefinition Condition="$(TargetExt) == '.pyd'">Py_BUILD_CORE_MODULE;</_PydPreprocessorDefinition>
     <_Py3NamePreprocessorDefinition>PY3_DLLNAME=L"$(Py3DllName)";</_Py3NamePreprocessorDefinition>
   </PropertyGroup>
   <ItemDefinitionGroup>
diff --git a/setup.py b/setup.py
index 5428cbde1cc9b..03dce63984ef3 100644
--- a/setup.py
+++ b/setup.py
@@ -899,8 +899,7 @@ def detect_simple_extensions(self):
         #
 
         # array objects
-        self.add(Extension('array', ['arraymodule.c'],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
+        self.add(Extension('array', ['arraymodule.c']))
 
         # Context Variables
         self.add(Extension('_contextvars', ['_contextvarsmodule.c']))
@@ -909,14 +908,12 @@ def detect_simple_extensions(self):
 
         # math library functions, e.g. sin()
         self.add(Extension('math',  ['mathmodule.c'],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE'],
                            extra_objects=[shared_math],
                            depends=['_math.h', shared_math],
                            libraries=['m']))
 
         # complex math library functions
         self.add(Extension('cmath', ['cmathmodule.c'],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE'],
                            extra_objects=[shared_math],
                            depends=['_math.h', shared_math],
                            libraries=['m']))
@@ -933,44 +930,33 @@ def detect_simple_extensions(self):
         # libm is needed by delta_new() that uses round() and by accum() that
         # uses modf().
         self.add(Extension('_datetime', ['_datetimemodule.c'],
-                           libraries=['m'],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
+                           libraries=['m']))
         # zoneinfo module
-        self.add(Extension('_zoneinfo', ['_zoneinfo.c'],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
+        self.add(Extension('_zoneinfo', ['_zoneinfo.c']))
         # random number generator implemented in C
-        self.add(Extension("_random", ["_randommodule.c"],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
+        self.add(Extension("_random", ["_randommodule.c"]))
         # bisect
         self.add(Extension("_bisect", ["_bisectmodule.c"]))
         # heapq
-        self.add(Extension("_heapq", ["_heapqmodule.c"],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
+        self.add(Extension("_heapq", ["_heapqmodule.c"]))
         # C-optimized pickle replacement
-        self.add(Extension("_pickle", ["_pickle.c"],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
+        self.add(Extension("_pickle", ["_pickle.c"]))
         # _json speedups
-        self.add(Extension("_json", ["_json.c"],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
+        self.add(Extension("_json", ["_json.c"]))
 
         # profiler (_lsprof is for cProfile.py)
-        self.add(Extension('_lsprof', ['_lsprof.c', 'rotatingtree.c'],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
+        self.add(Extension('_lsprof', ['_lsprof.c', 'rotatingtree.c']))
         # static Unicode character database
         self.add(Extension('unicodedata', ['unicodedata.c'],
-                           depends=['unicodedata_db.h', 'unicodename_db.h'],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
+                           depends=['unicodedata_db.h', 'unicodename_db.h']))
         # _opcode module
         self.add(Extension('_opcode', ['_opcode.c']))
         # asyncio speedups
-        self.add(Extension("_asyncio", ["_asynciomodule.c"],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
+        self.add(Extension("_asyncio", ["_asynciomodule.c"]))
         # _abc speedups
-        self.add(Extension("_abc", ["_abc.c"],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
+        self.add(Extension("_abc", ["_abc.c"]))
         # _queue module
-        self.add(Extension("_queue", ["_queuemodule.c"],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
+        self.add(Extension("_queue", ["_queuemodule.c"]))
         # _statistics module
         self.add(Extension("_statistics", ["_statisticsmodule.c"]))
         # _typing module
@@ -1012,8 +998,7 @@ def detect_simple_extensions(self):
         self.add(Extension('syslog', ['syslogmodule.c']))
 
         # Python interface to subinterpreter C-API.
-        self.add(Extension('_xxsubinterpreters', ['_xxsubinterpretersmodule.c'],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
+        self.add(Extension('_xxsubinterpreters', ['_xxsubinterpretersmodule.c']))
 
         #
         # Here ends the simple stuff.  From here on, modules need certain
@@ -1036,8 +1021,7 @@ def detect_simple_extensions(self):
         self.add(Extension('_csv', ['_csv.c']))
 
         # POSIX subprocess module helper.
-        self.add(Extension('_posixsubprocess', ['_posixsubprocess.c'],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
+        self.add(Extension('_posixsubprocess', ['_posixsubprocess.c']))
 
     def detect_test_extensions(self):
         # Python C API test module
@@ -1045,8 +1029,7 @@ def detect_test_extensions(self):
                            depends=['testcapi_long.h']))
 
         # Python Internal C API test module
-        self.add(Extension('_testinternalcapi', ['_testinternalcapi.c'],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
+        self.add(Extension('_testinternalcapi', ['_testinternalcapi.c']))
 
         # Python PEP-3118 (buffer protocol) test module
         self.add(Extension('_testbuffer', ['_testbuffer.c']))
@@ -1055,8 +1038,7 @@ def detect_test_extensions(self):
         self.add(Extension('_testimportmultiple', ['_testimportmultiple.c']))
 
         # Test multi-phase extension module init (PEP 489)
-        self.add(Extension('_testmultiphase', ['_testmultiphase.c'],
-                           extra_compile_args=['-DPy_BUILD_CORE_MODULE']))
+        self.add(Extension('_testmultiphase', ['_testmultiphase.c']))
 
         # Fuzz tests.
         self.add(Extension('_xxtestfuzz',
@@ -1187,7 +1169,6 @@ def detect_readline_curses(self):
         if curses_library.startswith('ncurses'):
             curses_libs = [curses_library]
             self.add(Extension('_curses', ['_cursesmodule.c'],
-                               extra_compile_args=['-DPy_BUILD_CORE_MODULE'],
                                include_dirs=curses_includes,
                                define_macros=curses_defines,
                                libraries=curses_libs))
@@ -1202,7 +1183,6 @@ def detect_readline_curses(self):
                 curses_libs = ['curses']
 
             self.add(Extension('_curses', ['_cursesmodule.c'],
-                               extra_compile_args=['-DPy_BUILD_CORE_MODULE'],
                                define_macros=curses_defines,
                                libraries=curses_libs))
         else:
@@ -1722,7 +1702,7 @@ def detect_compress_exts(self):
 
         # Helper module for various ascii-encoders.  Uses zlib for an optimized
         # crc32 if we have it.  Otherwise binascii uses its own.
-        extra_compile_args = ['-DPy_BUILD_CORE_MODULE']
+        extra_compile_args = []
         if have_zlib:
             extra_compile_args.append('-DUSE_ZLIB_CRC32')
             libraries = ['z']
@@ -2230,7 +2210,7 @@ def detect_ctypes(self):
             self.use_system_libffi = '--with-system-ffi' in sysconfig.get_config_var("CONFIG_ARGS")
 
         include_dirs = []
-        extra_compile_args = ['-DPy_BUILD_CORE_MODULE']
+        extra_compile_args = []
         extra_link_args = []
         sources = ['_ctypes/_ctypes.c',
                    '_ctypes/callbacks.c',
@@ -2324,7 +2304,7 @@ def detect_ctypes(self):
 
     def detect_decimal(self):
         # Stefan Krah's _decimal module
-        extra_compile_args = ['-DPy_BUILD_CORE_MODULE']
+        extra_compile_args = []
         undef_macros = []
         if '--with-system-libmpdec' in sysconfig.get_config_var("CONFIG_ARGS"):
             include_dirs = []
@@ -2482,7 +2462,6 @@ def split_var(name, sep):
             library_dirs=openssl_libdirs,
             libraries=openssl_libs,
             runtime_library_dirs=runtime_library_dirs,
-            extra_compile_args=['-DPy_BUILD_CORE_MODULE'],
         )
 
         # This static linking is NOT OFFICIALLY SUPPORTED.
@@ -2545,28 +2524,24 @@ def detect_hash_builtins(self):
             self.add(Extension(
                 '_sha256', ['sha256module.c'],
                 depends=['hashlib.h'],
-                extra_compile_args=['-DPy_BUILD_CORE_MODULE'],
             ))
 
         if "sha512" in configured:
             self.add(Extension(
                 '_sha512', ['sha512module.c'],
                 depends=['hashlib.h'],
-                extra_compile_args=['-DPy_BUILD_CORE_MODULE'],
             ))
 
         if "md5" in configured:
             self.add(Extension(
                 '_md5', ['md5module.c'],
                 depends=['hashlib.h'],
-                extra_compile_args=['-DPy_BUILD_CORE_MODULE'],
             ))
 
         if "sha1" in configured:
             self.add(Extension(
                 '_sha1', ['sha1module.c'],
                 depends=['hashlib.h'],
-                extra_compile_args=['-DPy_BUILD_CORE_MODULE'],
             ))
 
         if "blake2" in configured:
@@ -2582,7 +2557,6 @@ def detect_hash_builtins(self):
                     '_blake2/blake2s_impl.c'
                 ],
                 depends=blake2_deps,
-                extra_compile_args=['-DPy_BUILD_CORE_MODULE'],
             ))
 
         if "sha3" in configured:
@@ -2594,7 +2568,6 @@ def detect_hash_builtins(self):
                 '_sha3',
                 ['_sha3/sha3module.c'],
                 depends=sha3_deps,
-                extra_compile_args=['-DPy_BUILD_CORE_MODULE'],
             ))
 
     def detect_nis(self):
@@ -2750,8 +2723,7 @@ class DummyProcess:
                       'install_lib': PyBuildInstallLib},
           # The struct module is defined here, because build_ext won't be
           # called unless there's at least one extension module defined.
-          ext_modules=[Extension('_struct', ['_struct.c'],
-                                 extra_compile_args=['-DPy_BUILD_CORE_MODULE'])],
+          ext_modules=[Extension('_struct', ['_struct.c'])],
 
           # If you change the scripts installed here, you also need to
           # check the PyBuildScripts command above, and change the links



More information about the Python-checkins mailing list