bpo-45548: Make `Modules/Setup` easier to read by brettcannon · Pull Request #29143 · python/cpython

Expand Up @@ -62,9 +62,9 @@ # *noconfig* has the same effect as *shared*.) # # NOTE: As a standard policy, as many modules as can be supported by a # platform should be present. The distribution comes with all modules # enabled that are supported by most platforms and don't require you # to ftp sources from elsewhere. # platform should be listed below. The distribution comes with all # modules enabled that are supported by most platforms and don't # require you to download sources from elsewhere.

# Some special rules to define PYTHONPATH. Expand Down Expand Up @@ -94,126 +94,132 @@ COREPYTHONPATH=$(DESTPATH)$(SITEPATH)$(TESTPATH) PYTHONPATH=$(COREPYTHONPATH)

# The modules listed here can't be built as shared libraries for # various reasons; therefore they are listed here instead of in the # normal order.
# This only contains the minimal set of modules required to run the # setup.py script in the root of the Python source tree.
posix -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal posixmodule.c # posix (UNIX) system calls errno errnomodule.c # posix (UNIX) errno values pwd pwdmodule.c # this is needed to find out the user's home dir # if $HOME is not set _sre -DPy_BUILD_CORE_BUILTIN _sre.c # Fredrik Lundh's new regular expressions _codecs _codecsmodule.c # access to the builtin codecs and codec registry _weakref _weakref.c # weak references _functools -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal _functoolsmodule.c # Tools for working with functions and callable objects _operator -DPy_BUILD_CORE_BUILTIN _operator.c # operator.add() and similar goodies _collections _collectionsmodule.c # Container types _abc -DPy_BUILD_CORE_BUILTIN _abc.c # Abstract base classes itertools itertoolsmodule.c # Functions creating iterators for efficient looping atexit atexitmodule.c # Register functions to be run at interpreter-shutdown _signal -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal signalmodule.c _stat _stat.c # stat.h interface time -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal timemodule.c # -lm # time operations and variables _thread -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal _threadmodule.c # low-level threading interface
# access to ISO C locale support _locale -DPy_BUILD_CORE_BUILTIN _localemodule.c # -lintl # --- # Built-in modules required to get a functioning interpreter; # cannot be built as shared!
# Standard I/O baseline _collections _collectionsmodule.c _abc -DPy_BUILD_CORE_BUILTIN _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
# faulthandler module _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 _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 _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 pwd pwdmodule.c time -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal timemodule.c
# debug tool to trace memory blocks allocated by Python # # bpo-35053: The module must be builtin since _Py_NewReference() # can call _PyTraceMalloc_NewReference(). _tracemalloc _tracemalloc.c
# --- # The rest of the modules listed in this file are all commented out by # default. Usually they can be detected and built as dynamically # loaded modules by the new setup.py script added in Python 2.1. If # you're on a platform that doesn't support dynamic loading, want to # compile modules statically into the Python binary, or need to # specify some odd set of compiler switches, you can uncomment the # appropriate lines below.
# ======================================================================
# The Python symtable module depends on .h files that setup.py doesn't track _symtable symtablemodule.c # loaded modules by setup.py. If you're on a platform that doesn't # support dynamic loading, want to compile modules statically into the # Python binary, or need to specify some odd set of compiler switches, # you can uncomment the appropriate lines below.
# Uncommenting the following line tells makesetup that all following # modules are to be built as shared libraries (see above for more # detail; also note that *static* or *disabled* cancels this effect):
#*shared*
# GNU readline. Unlike previous Python incarnations, GNU readline is # now incorporated in an optional module, configured in the Setup file # instead of by a configure script switch. You may have to insert a # -L option pointing to the directory where libreadline.* lives, # and you may have to change -ltermcap to -ltermlib or perhaps remove # it, depending on your system -- see the GNU readline instructions. # It's okay for this to be a shared library, too.
#readline readline.c -lreadline -ltermcap

# Modules that should always be present (non UNIX dependent):
#array -DPy_BUILD_CORE_MODULE arraymodule.c # array objects #cmath cmathmodule.c _math.c -DPy_BUILD_CORE_MODULE # -lm # complex math library functions #math mathmodule.c _math.c -DPy_BUILD_CORE_MODULE # -lm # math library functions, e.g. sin() #_contextvars _contextvarsmodule.c # Context Variables #_struct -DPy_BUILD_CORE_MODULE _struct.c # binary structure packing/unpacking #_testcapi _testcapimodule.c # Python C API test module; CANNOT be statically compiled! #_testinternalcapi _testinternalcapi.c -I$(srcdir)/Include/internal -DPy_BUILD_CORE_MODULE # Python internal C API test module #_random _randommodule.c -DPy_BUILD_CORE_MODULE # Random number generator #_elementtree -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI _elementtree.c # elementtree accelerator #_pickle -DPy_BUILD_CORE_MODULE _pickle.c # pickle accelerator #_datetime _datetimemodule.c # datetime accelerator #_zoneinfo _zoneinfo.c -DPy_BUILD_CORE_MODULE # zoneinfo accelerator #_bisect _bisectmodule.c # Bisection algorithms #_heapq _heapqmodule.c -DPy_BUILD_CORE_MODULE # Heap queue algorithm #_asyncio _asynciomodule.c # Fast asyncio Future #_json -I$(srcdir)/Include/internal -DPy_BUILD_CORE_BUILTIN _json.c # _json speedups #_statistics _statisticsmodule.c # statistics accelerator #_typing _typingmodule.c # typing accelerator #_lsprof _lsprof.c rotatingtree.c # cProfile accelerators #_asyncio _asynciomodule.c #_bisect _bisectmodule.c #_blake2 -DPy_BUILD_CORE_BUILTIN _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 #_codecs_jp cjkcodecs/_codecs_jp.c #_codecs_kr cjkcodecs/_codecs_kr.c #_codecs_tw cjkcodecs/_codecs_tw.c #_contextvars _contextvarsmodule.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 #_lsprof _lsprof.c rotatingtree.c #_md5 -DPy_BUILD_CORE_BUILTIN md5module.c #_multibytecodec cjkcodecs/multibytecodec.c #_opcode _opcode.c #_queue _queuemodule.c -DPy_BUILD_CORE_MODULE
#unicodedata unicodedata.c -DPy_BUILD_CORE_BUILTIN # static Unicode character database
#_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 #_statistics _statisticsmodule.c #_struct -DPy_BUILD_CORE_MODULE _struct.c #_typing _typingmodule.c #_zoneinfo -DPy_BUILD_CORE_MODULE _zoneinfo.c #array -DPy_BUILD_CORE_MODULE 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 #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
# Modules with some UNIX dependencies -- on by default: # (If you have a really backward UNIX, select and socket may not be # supported...)
#fcntl fcntlmodule.c # fcntl(2) and ioctl(2) #spwd spwdmodule.c # spwd(3) #grp grpmodule.c # grp(3) #select selectmodule.c # select(2); not on ancient System V #_socket socketmodule.c # socket(2) #fcntl fcntlmodule.c # fcntl(2) and ioctl(2) #grp grpmodule.c # grp(3) #mmap mmapmodule.c # Also works on win32. #ossaudiodev ossaudiodev.c #select selectmodule.c # select(2); not on ancient System V #spwd spwdmodule.c # spwd(3) #syslog syslogmodule.c
# Memory-mapped files (also works on Win32). #mmap mmapmodule.c # Some more UNIX dependent modules -- off by default, since these # are not supported by all UNIX systems:
# CSV file helper #_csv _csv.c #_crypt _cryptmodule.c # -lcrypt # crypt(3); breaks many builds. #nis nismodule.c -lnsl # Sun yellow pages -- not everywhere #termios termios.c # Steen Lumholt's termios module #resource resource.c # Jeremy Hylton's rlimit interface
# Modules that require external libraries.
#_bz2 _bz2module.c -lbz2 #_dbm _dbmmodule.c # -lndbm # dbm(3) #_gdbm -I/usr/local/include -L/usr/local/lib -lgdbm _gdbmmodule.c #_lzma _lzmamodule.c -llzma #zlib -I$(prefix)/include -L$(exec_prefix)/lib -lz zlibmodule.c
# GNU readline. Unlike previous Python incarnations, GNU readline is # now incorporated in an optional module, configured in the Setup file # instead of by a configure script switch. You may have to insert a # -L option pointing to the directory where libreadline.* lives, # and you may have to change -ltermcap to -ltermlib or perhaps remove # it, depending on your system -- see the GNU readline instructions. # It's okay for this to be a shared library, too.
#readline readline.c -lreadline -ltermcap
# Socket module helper for socket(2) #_socket socketmodule.c # Set OpenSSL when not using the system copy found by ./configure. #OPENSSL=/path/to/openssl/directory
# Socket module helper for SSL support; you must comment out the other # socket line above, and edit the OPENSSL variable: # OPENSSL=/path/to/openssl/directory # _ssl _ssl.c \ # To dynamically link OpenSSL: #_ssl _ssl.c \ # -I$(OPENSSL)/include -L$(OPENSSL)/lib \ # -lssl -lcrypto \ # -DPy_BUILD_CORE_BUILTIN Expand All @@ -223,7 +229,7 @@ _symtable symtablemodule.c # -DPy_BUILD_CORE_BUILTIN
# To statically link OpenSSL: # _ssl _ssl.c \ #_ssl _ssl.c \ # -I$(OPENSSL)/include -L$(OPENSSL)/lib \ # -l:libssl.a -Wl,--exclude-libs,libssl.a \ # -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a \ Expand All @@ -233,52 +239,6 @@ _symtable symtablemodule.c # -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a \ # -DPy_BUILD_CORE_BUILTIN
# The crypt module is now disabled by default because it breaks builds # on many systems (where -lcrypt is needed), e.g. Linux (I believe).
#_crypt _cryptmodule.c # -lcrypt # crypt(3); needs -lcrypt on some systems

# Some more UNIX dependent modules -- off by default, since these # are not supported by all UNIX systems:
#nis nismodule.c -lnsl # Sun yellow pages -- not everywhere #termios termios.c # Steen Lumholt's termios module #resource resource.c # Jeremy Hylton's rlimit interface
#_posixsubprocess -DPy_BUILD_CORE_BUILTIN _posixsubprocess.c # POSIX subprocess module helper
# Multimedia modules -- off by default. # These don't work for 64-bit platforms!!! # #993173 says audioop works on 64-bit platforms, though. # These represent audio samples or images as strings:
#audioop audioop.c # Operations on audio samples

# Note that the _md5 and _sha modules are normally only built if the # system does not have the OpenSSL libs containing an optimized version.
# The _md5 module implements the RSA Data Security, Inc. MD5 # Message-Digest Algorithm, described in RFC 1321.
#_md5 md5module.c -DPy_BUILD_CORE_BUILTIN

# The _sha module implements the SHA checksum algorithms. # (NIST's Secure Hash Algorithms.) #_sha1 sha1module.c -DPy_BUILD_CORE_BUILTIN #_sha256 sha256module.c -DPy_BUILD_CORE_BUILTIN #_sha512 sha512module.c -DPy_BUILD_CORE_BUILTIN #_sha3 _sha3/sha3module.c -DPy_BUILD_CORE_BUILTIN
# _blake module #_blake2 _blake2/blake2module.c _blake2/blake2b_impl.c _blake2/blake2s_impl.c -DPy_BUILD_CORE_BUILTIN
# Compression #_bz2 _bz2module.c -lbz2 #_lzma _lzmamodule.c -llzma
# The _tkinter module. # # The command for _tkinter is long and site specific. Please Expand Down Expand Up @@ -322,75 +282,34 @@ _symtable symtablemodule.c # *** Always uncomment this; X11 libraries to link with: # -lX11
# Lance Ellinghaus's syslog module #syslog syslogmodule.c # syslog daemon interface

# Curses support, requiring the System V version of curses, often # provided by the ncurses library. e.g. on Linux, link with -lncurses # instead of -lcurses).
#_curses _cursesmodule.c -lcurses -ltermcap -DPy_BUILD_CORE_MODULE # Wrapper for the panel library that's part of ncurses and SYSV curses. #_curses_panel _curses_panel.c -lpanel -lncurses

# Modules that provide persistent dictionary-like semantics. You will # probably want to arrange for at least one of them to be available on # your machine, though none are defined by default because of library # dependencies. The Python module dbm/__init__.py provides an # implementation independent wrapper for these; dbm/dumb.py provides # similar functionality (but slower of course) implemented in Python.
#_dbm _dbmmodule.c # dbm(3) may require -lndbm or similar
# Anthony Baxter's gdbm module. GNU dbm(3) will require -lgdbm:
#_gdbm _gdbmmodule.c -I/usr/local/include -L/usr/local/lib -lgdbm

# Helper module for various ascii-encoders #binascii binascii.c -DPy_BUILD_CORE_MODULE
# Andrew Kuchling's zlib module. # This require zlib 1.1.3 (or later). # See http://www.gzip.org/zlib/ #zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
# Interface to the Expat XML parser # More information on Expat can be found at www.libexpat.org. # #pyexpat expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DXML_POOR_ENTROPY -DUSE_PYEXPAT_CAPI
# Hye-Shik Chang's CJKCodecs #_curses -DPy_BUILD_CORE_MODULE -lcurses -ltermcap _cursesmodule.c
# multibytecodec is required for all the other CJK codec modules #_multibytecodec cjkcodecs/multibytecodec.c
#_codecs_cn cjkcodecs/_codecs_cn.c #_codecs_hk cjkcodecs/_codecs_hk.c #_codecs_iso2022 cjkcodecs/_codecs_iso2022.c #_codecs_jp cjkcodecs/_codecs_jp.c #_codecs_kr cjkcodecs/_codecs_kr.c #_codecs_tw cjkcodecs/_codecs_tw.c
# Example -- included for reference only: # xx xxmodule.c # Wrapper for the panel library that's part of ncurses and SYSV curses. #_curses_panel -lpanel -lncurses _curses_panel.c
# Another example -- the 'xxsubtype' module shows C-level subtyping in action xxsubtype xxsubtype.c # Examples
# Limited API examples #xx xxmodule.c #xxlimited xxlimited.c #xxlimited_35 xxlimited_35.c xxsubtype xxsubtype.c # Required for the test suite to pass!
# Testing
# For testing #_xxsubinterpreters _xxsubinterpretersmodule.c #_xxtestfuzz _xxtestfuzz/_xxtestfuzz.c _xxtestfuzz/fuzzer.c #_testbuffer _testbuffer.c #_testcapi _testcapimodule.c # CANNOT be statically compiled! #_testimportmultiple _testimportmultiple.c #_testinternalcapi -DPy_BUILD_CORE_MODULE -I$(srcdir)/Include/internal _testinternalcapi.c #_testmultiphase _testmultiphase.c

# --- # Uncommenting the following line tells makesetup that all following modules # are not built (see above for more detail). # Expand Down