[Python-checkins] bpo-43774: Enhance configure documentation (GH-25293)

vstinner webhook-mailer at python.org
Thu Apr 8 19:58:28 EDT 2021


https://github.com/python/cpython/commit/54366953633dbe5d9585dbae0c633d4e92df2d04
commit: 54366953633dbe5d9585dbae0c633d4e92df2d04
branch: master
author: Victor Stinner <vstinner at python.org>
committer: vstinner <vstinner at python.org>
date: 2021-04-09T01:58:20+02:00
summary:

bpo-43774: Enhance configure documentation (GH-25293)

files:
M Doc/using/configure.rst

diff --git a/Doc/using/configure.rst b/Doc/using/configure.rst
index f855c633cfd5b..940bc19923aa9 100644
--- a/Doc/using/configure.rst
+++ b/Doc/using/configure.rst
@@ -28,27 +28,39 @@ General Options
    Disable IPv6 support (enabled by default if supported), see the
    :mod:`socket` module.
 
-.. cmdoption:: --enable-big-digits[=15|30]
+.. cmdoption:: --enable-big-digits=[15|30]
 
-   Use big digits (15 or 30 bits) for Python :class:`int` numbers (default is
-   system-dependent).
+   Define the size in bits of Python :class:`int` digits: 15 or 30 bits.
+
+   By default, the number of bits is selected depending on ``sizeof(void*)``:
+   30 bits if ``void*`` size is 64-bit or larger, 15 bits otherwise.
+
+   Define the ``PYLONG_BITS_IN_DIGIT`` to ``15`` or ``30``.
 
    See :data:`sys.int_info.bits_per_digit <sys.int_info>`.
 
-.. cmdoption:: --with-cxx-main[=COMPILER]
+.. cmdoption:: --with-cxx-main
+.. cmdoption:: --with-cxx-main=COMPILER
 
    Compile the Python ``main()`` function and link Python executable with C++
-   compiler specified in *COMPILER* (default is ``$CXX``).
+   compiler: ``$CXX``, or *COMPILER* if specified.
 
 .. cmdoption:: --with-suffix=SUFFIX
 
-   Set executable suffix to *SUFFIX* (default is ``.exe``).
+   Set the Python executable suffix to *SUFFIX*.
+
+   The default suffix is ``.exe`` on Windows and macOS (``python.exe``
+   executable), and an empty string on other platforms (``python`` executable).
 
 .. cmdoption:: --with-tzpath=<list of absolute paths separated by pathsep>
 
    Select the default time zone search path for :data:`zoneinfo.TZPATH`,
    see the :mod:`zoneinfo` module.
 
+   Default: ``/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo``.
+
+   See :data:`os.pathsep` path separator.
+
    .. versionadded:: 3.9
 
 .. cmdoption:: --without-decimal-contextvar
@@ -56,7 +68,7 @@ General Options
    Build the ``_decimal`` extension module using a thread-local context rather
    than a coroutine-local context (default), see the :mod:`decimal` module.
 
-   See :data:`decimal.HAVE_CONTEXTVAR`.
+   See :data:`decimal.HAVE_CONTEXTVAR` and the :mod:`contextvars` module.
 
    .. versionadded:: 3.9
 
@@ -64,15 +76,17 @@ General Options
 
    Override order to check db backends for the :mod:`dbm` module
 
-   A valid value is a colon separated string with the backend names:
+   A valid value is a colon (``:``) separated string with the backend names:
 
    * ``ndbm``;
    * ``gdbm``;
    * ``bdb``.
 
-.. cmdoption:: --with-c-locale-coercion
+.. cmdoption:: --without-c-locale-coercion
+
+   Disable C locale coercion to a UTF-8 based locale (enabled by default).
 
-   Enable C locale coercion to a UTF-8 based locale (default is yes).
+   Don't define the ``PY_COERCE_C_LOCALE`` macro.
 
    See :envvar:`PYTHONCOERCECLOCALE` and the :pep:`538`.
 
@@ -109,10 +123,14 @@ Install Options
 
    .. versionadded:: 3.10
 
-.. cmdoption:: --with-ensurepip[=install|upgrade|no]
+.. cmdoption:: --with-ensurepip=[upgrade|install|no]
 
-   ``install`` or ``upgrade`` using bundled pip of the :mod:`ensurepip` module,
-   when installing Python (default is ``upgrade``).
+   Select the :mod:`ensurepip` command run on Python installation:
+
+   * ``upgrade`` (default): run ``python -m ensurepip --altinstall --upgrade``
+     command.
+   * ``install``: run ``python -m ensurepip --altinstall`` command;
+   * ``no``: don't run ensurepip;
 
    .. versionadded:: 3.6
 
@@ -169,8 +187,9 @@ recommended for best performance.
    Disable static documentation strings to reduce the memory footprint (enabled
    by default). Documentation strings defined in Python are not affected.
 
-   If used, the ``WITH_DOC_STRINGS`` macro is not defined. See the
-   ``PyDoc_STRVAR()`` macro.
+   Don't define the ``WITH_DOC_STRINGS`` macro.
+
+   See the ``PyDoc_STRVAR()`` macro.
 
 .. cmdoption:: --enable-profiling
 
@@ -192,21 +211,22 @@ Effects of a debug build:
 * Add :func:`sys.gettotalrefcount` function.
 * Add :option:`-X showrefcount <-X>` command line option.
 * Add :envvar:`PYTHONTHREADDEBUG` environment variable.
+* Add support for the ``__ltrace__`` variable: enable low-level tracing in the
+  bytecode evaluation loop if the variable is defined.
 * The list of default warning filters is empty in the :mod:`warnings` module.
 * Install debug hooks on memory allocators to detect buffer overflow and other
   memory errors: see :c:func:`PyMem_SetupDebugHooks`.
 * Build Python with assertions (don't set ``NDEBUG`` macro):
-  ``assert(...);`` and ``_PyObject_ASSERT(...);`` are removed.
+  ``assert(...);`` and ``_PyObject_ASSERT(...);``.
   See also the :option:`--with-assertions` configure option.
-* Add runtime checks, code surroundeded by ``#ifdef Py_DEBUG`` and ``#endif``.
 * Unicode and int objects are created with their memory filled with a pattern
   to help detecting uninitialized bytes.
 * Many functions ensure that are not called with an exception raised, since
   they can clear or replace the current exception.
-* The garbage collector (:func:`gc.collect` function) runs some quick checks on
-  consistency.
-* Add support for the ``__ltrace__`` variable: enable low-level tracing in the
-  bytecode evaluation loop if the variable is defined.
+* The garbage collector (:func:`gc.collect` function) runs some basic checks on
+  objects consistency.
+* More generally, add runtime checks, code surroundeded by ``#ifdef Py_DEBUG``
+  and ``#endif``.
 
 See also the :ref:`Python Development Mode <devmode>` and the
 :option:`--with-trace-refs` configure option.
@@ -222,7 +242,8 @@ Debug options
 
 .. cmdoption:: --with-pydebug
 
-   :ref:`Build Python in debug mode <debug-build>` (disabled by default).
+   :ref:`Build Python in debug mode <debug-build>`: define the ``Py_DEBUG``
+   macro (disabled by default).
 
 .. cmdoption:: --with-trace-refs
 
@@ -235,13 +256,14 @@ Debug options
    * Add :envvar:`PYTHONDUMPREFS` environment variable.
 
    This build is not ABI compatible with release build (default build) or debug
-   build (``Py_DEBUG`` macro).
+   build (``Py_DEBUG`` and ``Py_REF_DEBUG`` macros).
 
    .. versionadded:: 3.8
 
 .. cmdoption:: --with-assertions
 
-   Build with C assertions enabled (default is no).
+   Build with C assertions enabled (default is no): ``assert(...);`` and
+   ``_PyObject_ASSERT(...);``.
 
    If set, the ``NDEBUG`` macro is not defined in the :envvar:`OPT` compiler
    variable.
@@ -263,19 +285,19 @@ Debug options
 
 .. cmdoption:: --with-address-sanitizer
 
-   Enable AddressSanitizer memory error detector, 'asan' (default is no).
+   Enable AddressSanitizer memory error detector, ``asan`` (default is no).
 
    .. versionadded:: 3.6
 
 .. cmdoption:: --with-memory-sanitizer
 
-   Enable MemorySanitizer allocation error detector, 'msan' (default is no).
+   Enable MemorySanitizer allocation error detector, ``msan`` (default is no).
 
    .. versionadded:: 3.6
 
 .. cmdoption:: --with-undefined-behavior-sanitizer
 
-   Enable UndefinedBehaviorSanitizer undefined behaviour detector, 'ubsan'
+   Enable UndefinedBehaviorSanitizer undefined behaviour detector, ``ubsan``
    (default is no).
 
    .. versionadded:: 3.6
@@ -286,7 +308,7 @@ Linker options
 
 .. cmdoption:: --enable-shared
 
-   Enable building a shared Python library: "libpython" (default is no).
+   Enable building a shared Python library: ``libpython`` (default is no).
 
 .. cmdoption:: --without-static-libpython
 
@@ -315,14 +337,24 @@ Libraries options
 
 .. cmdoption:: --with-system-libmpdec
 
-   Build the ``_decimal`` extension module using an installed ``libmpdec``
+   Build the ``_decimal`` extension module using an installed ``mpdec``
    library, see the :mod:`decimal` module (default is no).
 
    .. versionadded:: 3.3
 
-.. cmdoption:: --with(out)-readline[=editline]
+.. cmdoption:: --with-readline=editline
 
-   Use ``editline`` for backend or disable the :mod:`readline` module.
+   Use ``editline`` library for backend of the :mod:`readline` module.
+
+   Define the ``WITH_EDITLINE`` macro.
+
+   .. versionadded:: 3.10
+
+.. cmdoption:: --without-readline
+
+   Don't build the :mod:`readline` module (built by default).
+
+   Don't define the ``HAVE_LIBREADLINE`` macro.
 
    .. versionadded:: 3.10
 
@@ -346,7 +378,9 @@ Libraries options
 
    Root of the OpenSSL directory.
 
-.. cmdoption:: --with-openssl-rpath=[DIR|auto|no]
+   .. versionadded:: 3.7
+
+.. cmdoption:: --with-openssl-rpath=[no|auto|DIR]
 
    Set runtime library directory (rpath) for OpenSSL libraries:
 
@@ -365,8 +399,8 @@ Security Options
 
    Select hash algorithm for use in ``Python/pyhash.c``:
 
-   * ``fnv``;
    * ``siphash24`` (default).
+   * ``fnv``;
 
    .. versionadded:: 3.4
 
@@ -387,7 +421,7 @@ Security Options
 
    Override the OpenSSL default cipher suites string:
 
-   * ``python``: use Python's preferred selection (default);
+   * ``python`` (default): use Python's preferred selection;
    * ``openssl``: leave OpenSSL's defaults untouched;
    * *STRING*: use a custom string, PROTOCOL_SSLv2 ignores the setting.
 
@@ -401,22 +435,24 @@ macOS Options
 
 See ``Mac/README.rst``.
 
-.. cmdoption:: --enable-universalsdk[=SDKDIR]
+.. cmdoption:: --enable-universalsdk
+.. cmdoption:: --enable-universalsdk=SDKDIR
 
    Create a universal binary build. *SDKDIR* specifies which macOS SDK should
    be used to perform the build (default is no).
 
-.. cmdoption:: --enable-framework[=INSTALLDIR]
+.. cmdoption:: --enable-framework
+.. cmdoption:: --enable-framework=INSTALLDIR
 
    Create a Python.framework rather than a traditional Unix install. Optional
    *INSTALLDIR* specifies the installation path (default is no).
 
 .. cmdoption:: --with-universal-archs=ARCH
 
-   Specify the kind of universal binary that should be created. this option is
+   Specify the kind of universal binary that should be created. This option is
    only valid when :option:`--enable-universalsdk` is set.
 
-   Options are:
+   Options:
 
    * ``universal2``;
    * ``32-bit``;
@@ -436,18 +472,23 @@ See ``Mac/README.rst``.
 Compiler and linker flags
 =========================
 
-Options set by the ``./configure`` script, ``Makefile`` and by environment
-variables.
+Options set by the ``./configure`` script and environment variables and used by
+``Makefile``.
 
-Preprocessor flags
-------------------
+Main files of the Python build system:
 
-.. envvar:: CPP
+* :file:`configure.ac` =>  :file:`configure`;
+* :file:`Makefile.pre.in` => :file:`Makefile` (created by :file:`configure`);
+* :file:`pyconfig.h` (created by :file:`configure`);
+* :file:`Modules/Setup`.
 
-   C preprocessor.
+Preprocessor flags
+------------------
 
 .. envvar:: CONFIGURE_CPPFLAGS
 
+   Value of :envvar:`CPPFLAGS` variable passed to the ``./configure`` script.
+
    .. versionadded:: 3.6
 
 .. envvar:: CPPFLAGS
@@ -463,10 +504,6 @@ Preprocessor flags
 
    .. versionadded:: 3.4
 
-.. envvar:: MULTIARCH_CPPFLAGS
-
-   .. versionadded:: 3.6
-
 .. envvar:: PY_CPPFLAGS
 
    Extra preprocessor flags added for building the interpreter object files.
@@ -482,6 +519,16 @@ Compiler flags
 
    C compiler command.
 
+   Example: ``gcc -pthread``.
+
+.. envvar:: CXX
+
+   C++ compiler command.
+
+   Used if the :option:`--with-cxx-main` option is used.
+
+   Example: ``g++ -pthread``.
+
 .. envvar:: CFLAGS
 
    C compiler flags.
@@ -500,14 +547,22 @@ Compiler flags
 
 .. envvar:: CONFIGURE_CFLAGS
 
+   Value of :envvar:`CFLAGS` variable passed to the ``./configure``
+   script.
+
    .. versionadded:: 3.2
 
 .. envvar:: CONFIGURE_CFLAGS_NODIST
 
+   Value of :envvar:`CFLAGS_NODIST` variable passed to the ``./configure``
+   script.
+
    .. versionadded:: 3.5
 
 .. envvar:: BASECFLAGS
 
+   Base compiler flags.
+
 .. envvar:: OPT
 
    Optimization flags.
@@ -518,10 +573,19 @@ Compiler flags
 
    .. versionadded:: 3.7
 
+.. envvar:: CCSHARED
+
+   Compiler flags used to build a shared library.
+
+   For example, ``-fPIC`` is used on Linux and on BSD.
+
 .. envvar:: CFLAGSFORSHARED
 
    Extra C flags added for building the interpreter object files.
 
+   Default: ``$(CCSHARED)`` when :option:`--enable-shared` is used, or an empty
+   string otherwise.
+
 .. envvar:: PY_CFLAGS
 
    Default: ``$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)``.
@@ -548,6 +612,9 @@ Compiler flags
 
 .. envvar:: PY_BUILTIN_MODULE_CFLAGS
 
+   Compiler flags to build a standard library extension module as a built-in
+   module, like the :mod:`posix` module.
+
    Default: ``$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN``.
 
    .. versionadded:: 3.8
@@ -558,6 +625,8 @@ Linker flags
 
 .. envvar:: CONFIGURE_LDFLAGS
 
+   Value of :envvar:`LDFLAGS` variable passed to the ``./configure`` script.
+
    Avoid assigning :envvar:`CFLAGS`, :envvar:`LDFLAGS`, etc. so users can use
    them on the command line to append to these values without stomping the
    pre-set values.
@@ -572,6 +641,9 @@ Linker flags
 
 .. envvar:: CONFIGURE_LDFLAGS_NODIST
 
+   Value of :envvar:`LDFLAGS_NODIST` variable passed to the ``./configure``
+   script.
+
    .. versionadded:: 3.8
 
 .. envvar:: LDFLAGS
@@ -585,7 +657,10 @@ Linker flags
 
 .. envvar:: LIBS
 
-   Libraries to pass to the linker, e.g. ``-l<library>``.
+   Linker flags to pass libraries to the linker when linking the Python
+   executable.
+
+   Example: ``-lrt``.
 
 .. envvar:: LDSHARED
 
@@ -595,7 +670,7 @@ Linker flags
 
 .. envvar:: BLDSHARED
 
-   Command to build libpython shared library.
+   Command to build ``libpython`` shared library.
 
    Default: ``@BLDSHARED@ $(PY_CORE_LDFLAGS)``.
 



More information about the Python-checkins mailing list