17db96d56Sopenharmony_ci**************** 27db96d56Sopenharmony_ciConfigure Python 37db96d56Sopenharmony_ci**************** 47db96d56Sopenharmony_ci 57db96d56Sopenharmony_ci.. _configure-options: 67db96d56Sopenharmony_ci 77db96d56Sopenharmony_ciConfigure Options 87db96d56Sopenharmony_ci================= 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ciList all ``./configure`` script options using:: 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ci ./configure --help 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_ciSee also the :file:`Misc/SpecialBuilds.txt` in the Python source distribution. 157db96d56Sopenharmony_ci 167db96d56Sopenharmony_ciGeneral Options 177db96d56Sopenharmony_ci--------------- 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_ci.. cmdoption:: --enable-loadable-sqlite-extensions 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_ci Support loadable extensions in the :mod:`_sqlite` extension module (default 227db96d56Sopenharmony_ci is no). 237db96d56Sopenharmony_ci 247db96d56Sopenharmony_ci See the :meth:`sqlite3.Connection.enable_load_extension` method of the 257db96d56Sopenharmony_ci :mod:`sqlite3` module. 267db96d56Sopenharmony_ci 277db96d56Sopenharmony_ci .. versionadded:: 3.6 287db96d56Sopenharmony_ci 297db96d56Sopenharmony_ci.. cmdoption:: --disable-ipv6 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci Disable IPv6 support (enabled by default if supported), see the 327db96d56Sopenharmony_ci :mod:`socket` module. 337db96d56Sopenharmony_ci 347db96d56Sopenharmony_ci.. cmdoption:: --enable-big-digits=[15|30] 357db96d56Sopenharmony_ci 367db96d56Sopenharmony_ci Define the size in bits of Python :class:`int` digits: 15 or 30 bits. 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ci By default, the digit size is 30. 397db96d56Sopenharmony_ci 407db96d56Sopenharmony_ci Define the ``PYLONG_BITS_IN_DIGIT`` to ``15`` or ``30``. 417db96d56Sopenharmony_ci 427db96d56Sopenharmony_ci See :data:`sys.int_info.bits_per_digit <sys.int_info>`. 437db96d56Sopenharmony_ci 447db96d56Sopenharmony_ci.. cmdoption:: --with-cxx-main 457db96d56Sopenharmony_ci.. cmdoption:: --with-cxx-main=COMPILER 467db96d56Sopenharmony_ci 477db96d56Sopenharmony_ci Compile the Python ``main()`` function and link Python executable with C++ 487db96d56Sopenharmony_ci compiler: ``$CXX``, or *COMPILER* if specified. 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_ci.. cmdoption:: --with-suffix=SUFFIX 517db96d56Sopenharmony_ci 527db96d56Sopenharmony_ci Set the Python executable suffix to *SUFFIX*. 537db96d56Sopenharmony_ci 547db96d56Sopenharmony_ci The default suffix is ``.exe`` on Windows and macOS (``python.exe`` 557db96d56Sopenharmony_ci executable), ``.js`` on Emscripten node, ``.html`` on Emscripten browser, 567db96d56Sopenharmony_ci ``.wasm`` on WASI, and an empty string on other platforms (``python`` 577db96d56Sopenharmony_ci executable). 587db96d56Sopenharmony_ci 597db96d56Sopenharmony_ci .. versionchanged:: 3.11 607db96d56Sopenharmony_ci The default suffix on WASM platform is one of ``.js``, ``.html`` 617db96d56Sopenharmony_ci or ``.wasm``. 627db96d56Sopenharmony_ci 637db96d56Sopenharmony_ci.. cmdoption:: --with-tzpath=<list of absolute paths separated by pathsep> 647db96d56Sopenharmony_ci 657db96d56Sopenharmony_ci Select the default time zone search path for :data:`zoneinfo.TZPATH`. 667db96d56Sopenharmony_ci See the :ref:`Compile-time configuration 677db96d56Sopenharmony_ci <zoneinfo_data_compile_time_config>` of the :mod:`zoneinfo` module. 687db96d56Sopenharmony_ci 697db96d56Sopenharmony_ci Default: ``/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo``. 707db96d56Sopenharmony_ci 717db96d56Sopenharmony_ci See :data:`os.pathsep` path separator. 727db96d56Sopenharmony_ci 737db96d56Sopenharmony_ci .. versionadded:: 3.9 747db96d56Sopenharmony_ci 757db96d56Sopenharmony_ci.. cmdoption:: --without-decimal-contextvar 767db96d56Sopenharmony_ci 777db96d56Sopenharmony_ci Build the ``_decimal`` extension module using a thread-local context rather 787db96d56Sopenharmony_ci than a coroutine-local context (default), see the :mod:`decimal` module. 797db96d56Sopenharmony_ci 807db96d56Sopenharmony_ci See :data:`decimal.HAVE_CONTEXTVAR` and the :mod:`contextvars` module. 817db96d56Sopenharmony_ci 827db96d56Sopenharmony_ci .. versionadded:: 3.9 837db96d56Sopenharmony_ci 847db96d56Sopenharmony_ci.. cmdoption:: --with-dbmliborder=<list of backend names> 857db96d56Sopenharmony_ci 867db96d56Sopenharmony_ci Override order to check db backends for the :mod:`dbm` module 877db96d56Sopenharmony_ci 887db96d56Sopenharmony_ci A valid value is a colon (``:``) separated string with the backend names: 897db96d56Sopenharmony_ci 907db96d56Sopenharmony_ci * ``ndbm``; 917db96d56Sopenharmony_ci * ``gdbm``; 927db96d56Sopenharmony_ci * ``bdb``. 937db96d56Sopenharmony_ci 947db96d56Sopenharmony_ci.. cmdoption:: --without-c-locale-coercion 957db96d56Sopenharmony_ci 967db96d56Sopenharmony_ci Disable C locale coercion to a UTF-8 based locale (enabled by default). 977db96d56Sopenharmony_ci 987db96d56Sopenharmony_ci Don't define the ``PY_COERCE_C_LOCALE`` macro. 997db96d56Sopenharmony_ci 1007db96d56Sopenharmony_ci See :envvar:`PYTHONCOERCECLOCALE` and the :pep:`538`. 1017db96d56Sopenharmony_ci 1027db96d56Sopenharmony_ci.. cmdoption:: --with-platlibdir=DIRNAME 1037db96d56Sopenharmony_ci 1047db96d56Sopenharmony_ci Python library directory name (default is ``lib``). 1057db96d56Sopenharmony_ci 1067db96d56Sopenharmony_ci Fedora and SuSE use ``lib64`` on 64-bit platforms. 1077db96d56Sopenharmony_ci 1087db96d56Sopenharmony_ci See :data:`sys.platlibdir`. 1097db96d56Sopenharmony_ci 1107db96d56Sopenharmony_ci .. versionadded:: 3.9 1117db96d56Sopenharmony_ci 1127db96d56Sopenharmony_ci.. cmdoption:: --with-wheel-pkg-dir=PATH 1137db96d56Sopenharmony_ci 1147db96d56Sopenharmony_ci Directory of wheel packages used by the :mod:`ensurepip` module 1157db96d56Sopenharmony_ci (none by default). 1167db96d56Sopenharmony_ci 1177db96d56Sopenharmony_ci Some Linux distribution packaging policies recommend against bundling 1187db96d56Sopenharmony_ci dependencies. For example, Fedora installs wheel packages in the 1197db96d56Sopenharmony_ci ``/usr/share/python-wheels/`` directory and don't install the 1207db96d56Sopenharmony_ci :mod:`ensurepip._bundled` package. 1217db96d56Sopenharmony_ci 1227db96d56Sopenharmony_ci .. versionadded:: 3.10 1237db96d56Sopenharmony_ci 1247db96d56Sopenharmony_ci.. cmdoption:: --with-pkg-config=[check|yes|no] 1257db96d56Sopenharmony_ci 1267db96d56Sopenharmony_ci Whether configure should use :program:`pkg-config` to detect build 1277db96d56Sopenharmony_ci dependencies. 1287db96d56Sopenharmony_ci 1297db96d56Sopenharmony_ci * ``check`` (default): :program:`pkg-config` is optional 1307db96d56Sopenharmony_ci * ``yes``: :program:`pkg-config` is mandatory 1317db96d56Sopenharmony_ci * ``no``: configure does not use :program:`pkg-config` even when present 1327db96d56Sopenharmony_ci 1337db96d56Sopenharmony_ci .. versionadded:: 3.11 1347db96d56Sopenharmony_ci 1357db96d56Sopenharmony_ci.. cmdoption:: --enable-pystats 1367db96d56Sopenharmony_ci 1377db96d56Sopenharmony_ci Turn on internal statistics gathering. 1387db96d56Sopenharmony_ci 1397db96d56Sopenharmony_ci The statistics will be dumped to a arbitrary (probably unique) file in 1407db96d56Sopenharmony_ci ``/tmp/py_stats/``, or ``C:\temp\py_stats\`` on Windows. 1417db96d56Sopenharmony_ci 1427db96d56Sopenharmony_ci Use ``Tools/scripts/summarize_stats.py`` to read the stats. 1437db96d56Sopenharmony_ci 1447db96d56Sopenharmony_ci .. versionadded:: 3.11 1457db96d56Sopenharmony_ci 1467db96d56Sopenharmony_ciWebAssembly Options 1477db96d56Sopenharmony_ci------------------- 1487db96d56Sopenharmony_ci 1497db96d56Sopenharmony_ci.. cmdoption:: --with-emscripten-target=[browser|node] 1507db96d56Sopenharmony_ci 1517db96d56Sopenharmony_ci Set build flavor for ``wasm32-emscripten``. 1527db96d56Sopenharmony_ci 1537db96d56Sopenharmony_ci * ``browser`` (default): preload minimal stdlib, default MEMFS. 1547db96d56Sopenharmony_ci * ``node``: NODERAWFS and pthread support. 1557db96d56Sopenharmony_ci 1567db96d56Sopenharmony_ci .. versionadded:: 3.11 1577db96d56Sopenharmony_ci 1587db96d56Sopenharmony_ci.. cmdoption:: --enable-wasm-dynamic-linking 1597db96d56Sopenharmony_ci 1607db96d56Sopenharmony_ci Turn on dynamic linking support for WASM. 1617db96d56Sopenharmony_ci 1627db96d56Sopenharmony_ci Dynamic linking enables ``dlopen``. File size of the executable 1637db96d56Sopenharmony_ci increases due to limited dead code elimination and additional features. 1647db96d56Sopenharmony_ci 1657db96d56Sopenharmony_ci .. versionadded:: 3.11 1667db96d56Sopenharmony_ci 1677db96d56Sopenharmony_ci.. cmdoption:: --enable-wasm-pthreads 1687db96d56Sopenharmony_ci 1697db96d56Sopenharmony_ci Turn on pthreads support for WASM. 1707db96d56Sopenharmony_ci 1717db96d56Sopenharmony_ci .. versionadded:: 3.11 1727db96d56Sopenharmony_ci 1737db96d56Sopenharmony_ci 1747db96d56Sopenharmony_ciInstall Options 1757db96d56Sopenharmony_ci--------------- 1767db96d56Sopenharmony_ci 1777db96d56Sopenharmony_ci.. cmdoption:: --prefix=PREFIX 1787db96d56Sopenharmony_ci 1797db96d56Sopenharmony_ci Install architecture-independent files in PREFIX. On Unix, it 1807db96d56Sopenharmony_ci defaults to :file:`/usr/local`. 1817db96d56Sopenharmony_ci 1827db96d56Sopenharmony_ci This value can be retrived at runtime using :data:`sys.prefix`. 1837db96d56Sopenharmony_ci 1847db96d56Sopenharmony_ci As an example, one can use ``--prefix="$HOME/.local/"`` to install 1857db96d56Sopenharmony_ci a Python in its home directory. 1867db96d56Sopenharmony_ci 1877db96d56Sopenharmony_ci.. cmdoption:: --exec-prefix=EPREFIX 1887db96d56Sopenharmony_ci 1897db96d56Sopenharmony_ci Install architecture-dependent files in EPREFIX, defaults to :option:`--prefix`. 1907db96d56Sopenharmony_ci 1917db96d56Sopenharmony_ci This value can be retrived at runtime using :data:`sys.exec_prefix`. 1927db96d56Sopenharmony_ci 1937db96d56Sopenharmony_ci.. cmdoption:: --disable-test-modules 1947db96d56Sopenharmony_ci 1957db96d56Sopenharmony_ci Don't build nor install test modules, like the :mod:`test` package or the 1967db96d56Sopenharmony_ci :mod:`_testcapi` extension module (built and installed by default). 1977db96d56Sopenharmony_ci 1987db96d56Sopenharmony_ci .. versionadded:: 3.10 1997db96d56Sopenharmony_ci 2007db96d56Sopenharmony_ci.. cmdoption:: --with-ensurepip=[upgrade|install|no] 2017db96d56Sopenharmony_ci 2027db96d56Sopenharmony_ci Select the :mod:`ensurepip` command run on Python installation: 2037db96d56Sopenharmony_ci 2047db96d56Sopenharmony_ci * ``upgrade`` (default): run ``python -m ensurepip --altinstall --upgrade`` 2057db96d56Sopenharmony_ci command. 2067db96d56Sopenharmony_ci * ``install``: run ``python -m ensurepip --altinstall`` command; 2077db96d56Sopenharmony_ci * ``no``: don't run ensurepip; 2087db96d56Sopenharmony_ci 2097db96d56Sopenharmony_ci .. versionadded:: 3.6 2107db96d56Sopenharmony_ci 2117db96d56Sopenharmony_ci 2127db96d56Sopenharmony_ciPerformance options 2137db96d56Sopenharmony_ci------------------- 2147db96d56Sopenharmony_ci 2157db96d56Sopenharmony_ciConfiguring Python using ``--enable-optimizations --with-lto`` (PGO + LTO) is 2167db96d56Sopenharmony_cirecommended for best performance. 2177db96d56Sopenharmony_ci 2187db96d56Sopenharmony_ci.. cmdoption:: --enable-optimizations 2197db96d56Sopenharmony_ci 2207db96d56Sopenharmony_ci Enable Profile Guided Optimization (PGO) using :envvar:`PROFILE_TASK` 2217db96d56Sopenharmony_ci (disabled by default). 2227db96d56Sopenharmony_ci 2237db96d56Sopenharmony_ci The C compiler Clang requires ``llvm-profdata`` program for PGO. On 2247db96d56Sopenharmony_ci macOS, GCC also requires it: GCC is just an alias to Clang on macOS. 2257db96d56Sopenharmony_ci 2267db96d56Sopenharmony_ci Disable also semantic interposition in libpython if ``--enable-shared`` and 2277db96d56Sopenharmony_ci GCC is used: add ``-fno-semantic-interposition`` to the compiler and linker 2287db96d56Sopenharmony_ci flags. 2297db96d56Sopenharmony_ci 2307db96d56Sopenharmony_ci .. versionadded:: 3.6 2317db96d56Sopenharmony_ci 2327db96d56Sopenharmony_ci .. versionchanged:: 3.10 2337db96d56Sopenharmony_ci Use ``-fno-semantic-interposition`` on GCC. 2347db96d56Sopenharmony_ci 2357db96d56Sopenharmony_ci.. envvar:: PROFILE_TASK 2367db96d56Sopenharmony_ci 2377db96d56Sopenharmony_ci Environment variable used in the Makefile: Python command line arguments for 2387db96d56Sopenharmony_ci the PGO generation task. 2397db96d56Sopenharmony_ci 2407db96d56Sopenharmony_ci Default: ``-m test --pgo --timeout=$(TESTTIMEOUT)``. 2417db96d56Sopenharmony_ci 2427db96d56Sopenharmony_ci .. versionadded:: 3.8 2437db96d56Sopenharmony_ci 2447db96d56Sopenharmony_ci.. cmdoption:: --with-lto=[full|thin|no|yes] 2457db96d56Sopenharmony_ci 2467db96d56Sopenharmony_ci Enable Link Time Optimization (LTO) in any build (disabled by default). 2477db96d56Sopenharmony_ci 2487db96d56Sopenharmony_ci The C compiler Clang requires ``llvm-ar`` for LTO (``ar`` on macOS), as well 2497db96d56Sopenharmony_ci as an LTO-aware linker (``ld.gold`` or ``lld``). 2507db96d56Sopenharmony_ci 2517db96d56Sopenharmony_ci .. versionadded:: 3.6 2527db96d56Sopenharmony_ci 2537db96d56Sopenharmony_ci .. versionadded:: 3.11 2547db96d56Sopenharmony_ci To use ThinLTO feature, use ``--with-lto=thin`` on Clang. 2557db96d56Sopenharmony_ci 2567db96d56Sopenharmony_ci.. cmdoption:: --with-computed-gotos 2577db96d56Sopenharmony_ci 2587db96d56Sopenharmony_ci Enable computed gotos in evaluation loop (enabled by default on supported 2597db96d56Sopenharmony_ci compilers). 2607db96d56Sopenharmony_ci 2617db96d56Sopenharmony_ci.. cmdoption:: --without-pymalloc 2627db96d56Sopenharmony_ci 2637db96d56Sopenharmony_ci Disable the specialized Python memory allocator :ref:`pymalloc <pymalloc>` 2647db96d56Sopenharmony_ci (enabled by default). 2657db96d56Sopenharmony_ci 2667db96d56Sopenharmony_ci See also :envvar:`PYTHONMALLOC` environment variable. 2677db96d56Sopenharmony_ci 2687db96d56Sopenharmony_ci.. cmdoption:: --without-doc-strings 2697db96d56Sopenharmony_ci 2707db96d56Sopenharmony_ci Disable static documentation strings to reduce the memory footprint (enabled 2717db96d56Sopenharmony_ci by default). Documentation strings defined in Python are not affected. 2727db96d56Sopenharmony_ci 2737db96d56Sopenharmony_ci Don't define the ``WITH_DOC_STRINGS`` macro. 2747db96d56Sopenharmony_ci 2757db96d56Sopenharmony_ci See the ``PyDoc_STRVAR()`` macro. 2767db96d56Sopenharmony_ci 2777db96d56Sopenharmony_ci.. cmdoption:: --enable-profiling 2787db96d56Sopenharmony_ci 2797db96d56Sopenharmony_ci Enable C-level code profiling with ``gprof`` (disabled by default). 2807db96d56Sopenharmony_ci 2817db96d56Sopenharmony_ci 2827db96d56Sopenharmony_ci.. _debug-build: 2837db96d56Sopenharmony_ci 2847db96d56Sopenharmony_ciPython Debug Build 2857db96d56Sopenharmony_ci------------------ 2867db96d56Sopenharmony_ci 2877db96d56Sopenharmony_ciA debug build is Python built with the :option:`--with-pydebug` configure 2887db96d56Sopenharmony_cioption. 2897db96d56Sopenharmony_ci 2907db96d56Sopenharmony_ciEffects of a debug build: 2917db96d56Sopenharmony_ci 2927db96d56Sopenharmony_ci* Display all warnings by default: the list of default warning filters is empty 2937db96d56Sopenharmony_ci in the :mod:`warnings` module. 2947db96d56Sopenharmony_ci* Add ``d`` to :data:`sys.abiflags`. 2957db96d56Sopenharmony_ci* Add :func:`sys.gettotalrefcount` function. 2967db96d56Sopenharmony_ci* Add :option:`-X showrefcount <-X>` command line option. 2977db96d56Sopenharmony_ci* Add :envvar:`PYTHONTHREADDEBUG` environment variable. 2987db96d56Sopenharmony_ci* Add support for the ``__lltrace__`` variable: enable low-level tracing in the 2997db96d56Sopenharmony_ci bytecode evaluation loop if the variable is defined. 3007db96d56Sopenharmony_ci* Install :ref:`debug hooks on memory allocators <default-memory-allocators>` 3017db96d56Sopenharmony_ci to detect buffer overflow and other memory errors. 3027db96d56Sopenharmony_ci* Define ``Py_DEBUG`` and ``Py_REF_DEBUG`` macros. 3037db96d56Sopenharmony_ci* Add runtime checks: code surrounded by ``#ifdef Py_DEBUG`` and ``#endif``. 3047db96d56Sopenharmony_ci Enable ``assert(...)`` and ``_PyObject_ASSERT(...)`` assertions: don't set 3057db96d56Sopenharmony_ci the ``NDEBUG`` macro (see also the :option:`--with-assertions` configure 3067db96d56Sopenharmony_ci option). Main runtime checks: 3077db96d56Sopenharmony_ci 3087db96d56Sopenharmony_ci * Add sanity checks on the function arguments. 3097db96d56Sopenharmony_ci * Unicode and int objects are created with their memory filled with a pattern 3107db96d56Sopenharmony_ci to detect usage of uninitialized objects. 3117db96d56Sopenharmony_ci * Ensure that functions which can clear or replace the current exception are 3127db96d56Sopenharmony_ci not called with an exception raised. 3137db96d56Sopenharmony_ci * Check that deallocator functions don't change the current exception. 3147db96d56Sopenharmony_ci * The garbage collector (:func:`gc.collect` function) runs some basic checks 3157db96d56Sopenharmony_ci on objects consistency. 3167db96d56Sopenharmony_ci * The :c:macro:`Py_SAFE_DOWNCAST()` macro checks for integer underflow and 3177db96d56Sopenharmony_ci overflow when downcasting from wide types to narrow types. 3187db96d56Sopenharmony_ci 3197db96d56Sopenharmony_ciSee also the :ref:`Python Development Mode <devmode>` and the 3207db96d56Sopenharmony_ci:option:`--with-trace-refs` configure option. 3217db96d56Sopenharmony_ci 3227db96d56Sopenharmony_ci.. versionchanged:: 3.8 3237db96d56Sopenharmony_ci Release builds and debug builds are now ABI compatible: defining the 3247db96d56Sopenharmony_ci ``Py_DEBUG`` macro no longer implies the ``Py_TRACE_REFS`` macro (see the 3257db96d56Sopenharmony_ci :option:`--with-trace-refs` option), which introduces the only ABI 3267db96d56Sopenharmony_ci incompatibility. 3277db96d56Sopenharmony_ci 3287db96d56Sopenharmony_ci 3297db96d56Sopenharmony_ciDebug options 3307db96d56Sopenharmony_ci------------- 3317db96d56Sopenharmony_ci 3327db96d56Sopenharmony_ci.. cmdoption:: --with-pydebug 3337db96d56Sopenharmony_ci 3347db96d56Sopenharmony_ci :ref:`Build Python in debug mode <debug-build>`: define the ``Py_DEBUG`` 3357db96d56Sopenharmony_ci macro (disabled by default). 3367db96d56Sopenharmony_ci 3377db96d56Sopenharmony_ci.. cmdoption:: --with-trace-refs 3387db96d56Sopenharmony_ci 3397db96d56Sopenharmony_ci Enable tracing references for debugging purpose (disabled by default). 3407db96d56Sopenharmony_ci 3417db96d56Sopenharmony_ci Effects: 3427db96d56Sopenharmony_ci 3437db96d56Sopenharmony_ci * Define the ``Py_TRACE_REFS`` macro. 3447db96d56Sopenharmony_ci * Add :func:`sys.getobjects` function. 3457db96d56Sopenharmony_ci * Add :envvar:`PYTHONDUMPREFS` environment variable. 3467db96d56Sopenharmony_ci 3477db96d56Sopenharmony_ci This build is not ABI compatible with release build (default build) or debug 3487db96d56Sopenharmony_ci build (``Py_DEBUG`` and ``Py_REF_DEBUG`` macros). 3497db96d56Sopenharmony_ci 3507db96d56Sopenharmony_ci .. versionadded:: 3.8 3517db96d56Sopenharmony_ci 3527db96d56Sopenharmony_ci.. cmdoption:: --with-assertions 3537db96d56Sopenharmony_ci 3547db96d56Sopenharmony_ci Build with C assertions enabled (default is no): ``assert(...);`` and 3557db96d56Sopenharmony_ci ``_PyObject_ASSERT(...);``. 3567db96d56Sopenharmony_ci 3577db96d56Sopenharmony_ci If set, the ``NDEBUG`` macro is not defined in the :envvar:`OPT` compiler 3587db96d56Sopenharmony_ci variable. 3597db96d56Sopenharmony_ci 3607db96d56Sopenharmony_ci See also the :option:`--with-pydebug` option (:ref:`debug build 3617db96d56Sopenharmony_ci <debug-build>`) which also enables assertions. 3627db96d56Sopenharmony_ci 3637db96d56Sopenharmony_ci .. versionadded:: 3.6 3647db96d56Sopenharmony_ci 3657db96d56Sopenharmony_ci.. cmdoption:: --with-valgrind 3667db96d56Sopenharmony_ci 3677db96d56Sopenharmony_ci Enable Valgrind support (default is no). 3687db96d56Sopenharmony_ci 3697db96d56Sopenharmony_ci.. cmdoption:: --with-dtrace 3707db96d56Sopenharmony_ci 3717db96d56Sopenharmony_ci Enable DTrace support (default is no). 3727db96d56Sopenharmony_ci 3737db96d56Sopenharmony_ci See :ref:`Instrumenting CPython with DTrace and SystemTap 3747db96d56Sopenharmony_ci <instrumentation>`. 3757db96d56Sopenharmony_ci 3767db96d56Sopenharmony_ci .. versionadded:: 3.6 3777db96d56Sopenharmony_ci 3787db96d56Sopenharmony_ci.. cmdoption:: --with-address-sanitizer 3797db96d56Sopenharmony_ci 3807db96d56Sopenharmony_ci Enable AddressSanitizer memory error detector, ``asan`` (default is no). 3817db96d56Sopenharmony_ci 3827db96d56Sopenharmony_ci .. versionadded:: 3.6 3837db96d56Sopenharmony_ci 3847db96d56Sopenharmony_ci.. cmdoption:: --with-memory-sanitizer 3857db96d56Sopenharmony_ci 3867db96d56Sopenharmony_ci Enable MemorySanitizer allocation error detector, ``msan`` (default is no). 3877db96d56Sopenharmony_ci 3887db96d56Sopenharmony_ci .. versionadded:: 3.6 3897db96d56Sopenharmony_ci 3907db96d56Sopenharmony_ci.. cmdoption:: --with-undefined-behavior-sanitizer 3917db96d56Sopenharmony_ci 3927db96d56Sopenharmony_ci Enable UndefinedBehaviorSanitizer undefined behaviour detector, ``ubsan`` 3937db96d56Sopenharmony_ci (default is no). 3947db96d56Sopenharmony_ci 3957db96d56Sopenharmony_ci .. versionadded:: 3.6 3967db96d56Sopenharmony_ci 3977db96d56Sopenharmony_ci 3987db96d56Sopenharmony_ciLinker options 3997db96d56Sopenharmony_ci-------------- 4007db96d56Sopenharmony_ci 4017db96d56Sopenharmony_ci.. cmdoption:: --enable-shared 4027db96d56Sopenharmony_ci 4037db96d56Sopenharmony_ci Enable building a shared Python library: ``libpython`` (default is no). 4047db96d56Sopenharmony_ci 4057db96d56Sopenharmony_ci.. cmdoption:: --without-static-libpython 4067db96d56Sopenharmony_ci 4077db96d56Sopenharmony_ci Do not build ``libpythonMAJOR.MINOR.a`` and do not install ``python.o`` 4087db96d56Sopenharmony_ci (built and enabled by default). 4097db96d56Sopenharmony_ci 4107db96d56Sopenharmony_ci .. versionadded:: 3.10 4117db96d56Sopenharmony_ci 4127db96d56Sopenharmony_ci 4137db96d56Sopenharmony_ciLibraries options 4147db96d56Sopenharmony_ci----------------- 4157db96d56Sopenharmony_ci 4167db96d56Sopenharmony_ci.. cmdoption:: --with-libs='lib1 ...' 4177db96d56Sopenharmony_ci 4187db96d56Sopenharmony_ci Link against additional libraries (default is no). 4197db96d56Sopenharmony_ci 4207db96d56Sopenharmony_ci.. cmdoption:: --with-system-expat 4217db96d56Sopenharmony_ci 4227db96d56Sopenharmony_ci Build the :mod:`pyexpat` module using an installed ``expat`` library 4237db96d56Sopenharmony_ci (default is no). 4247db96d56Sopenharmony_ci 4257db96d56Sopenharmony_ci.. cmdoption:: --with-system-ffi 4267db96d56Sopenharmony_ci 4277db96d56Sopenharmony_ci Build the :mod:`_ctypes` extension module using an installed ``ffi`` 4287db96d56Sopenharmony_ci library, see the :mod:`ctypes` module (default is system-dependent). 4297db96d56Sopenharmony_ci 4307db96d56Sopenharmony_ci.. cmdoption:: --with-system-libmpdec 4317db96d56Sopenharmony_ci 4327db96d56Sopenharmony_ci Build the ``_decimal`` extension module using an installed ``mpdec`` 4337db96d56Sopenharmony_ci library, see the :mod:`decimal` module (default is no). 4347db96d56Sopenharmony_ci 4357db96d56Sopenharmony_ci .. versionadded:: 3.3 4367db96d56Sopenharmony_ci 4377db96d56Sopenharmony_ci.. cmdoption:: --with-readline=editline 4387db96d56Sopenharmony_ci 4397db96d56Sopenharmony_ci Use ``editline`` library for backend of the :mod:`readline` module. 4407db96d56Sopenharmony_ci 4417db96d56Sopenharmony_ci Define the ``WITH_EDITLINE`` macro. 4427db96d56Sopenharmony_ci 4437db96d56Sopenharmony_ci .. versionadded:: 3.10 4447db96d56Sopenharmony_ci 4457db96d56Sopenharmony_ci.. cmdoption:: --without-readline 4467db96d56Sopenharmony_ci 4477db96d56Sopenharmony_ci Don't build the :mod:`readline` module (built by default). 4487db96d56Sopenharmony_ci 4497db96d56Sopenharmony_ci Don't define the ``HAVE_LIBREADLINE`` macro. 4507db96d56Sopenharmony_ci 4517db96d56Sopenharmony_ci .. versionadded:: 3.10 4527db96d56Sopenharmony_ci 4537db96d56Sopenharmony_ci.. cmdoption:: --with-libm=STRING 4547db96d56Sopenharmony_ci 4557db96d56Sopenharmony_ci Override ``libm`` math library to *STRING* (default is system-dependent). 4567db96d56Sopenharmony_ci 4577db96d56Sopenharmony_ci.. cmdoption:: --with-libc=STRING 4587db96d56Sopenharmony_ci 4597db96d56Sopenharmony_ci Override ``libc`` C library to *STRING* (default is system-dependent). 4607db96d56Sopenharmony_ci 4617db96d56Sopenharmony_ci.. cmdoption:: --with-openssl=DIR 4627db96d56Sopenharmony_ci 4637db96d56Sopenharmony_ci Root of the OpenSSL directory. 4647db96d56Sopenharmony_ci 4657db96d56Sopenharmony_ci .. versionadded:: 3.7 4667db96d56Sopenharmony_ci 4677db96d56Sopenharmony_ci.. cmdoption:: --with-openssl-rpath=[no|auto|DIR] 4687db96d56Sopenharmony_ci 4697db96d56Sopenharmony_ci Set runtime library directory (rpath) for OpenSSL libraries: 4707db96d56Sopenharmony_ci 4717db96d56Sopenharmony_ci * ``no`` (default): don't set rpath; 4727db96d56Sopenharmony_ci * ``auto``: auto-detect rpath from :option:`--with-openssl` and 4737db96d56Sopenharmony_ci ``pkg-config``; 4747db96d56Sopenharmony_ci * *DIR*: set an explicit rpath. 4757db96d56Sopenharmony_ci 4767db96d56Sopenharmony_ci .. versionadded:: 3.10 4777db96d56Sopenharmony_ci 4787db96d56Sopenharmony_ci 4797db96d56Sopenharmony_ciSecurity Options 4807db96d56Sopenharmony_ci---------------- 4817db96d56Sopenharmony_ci 4827db96d56Sopenharmony_ci.. cmdoption:: --with-hash-algorithm=[fnv|siphash13|siphash24] 4837db96d56Sopenharmony_ci 4847db96d56Sopenharmony_ci Select hash algorithm for use in ``Python/pyhash.c``: 4857db96d56Sopenharmony_ci 4867db96d56Sopenharmony_ci * ``siphash13`` (default); 4877db96d56Sopenharmony_ci * ``siphash24``; 4887db96d56Sopenharmony_ci * ``fnv``. 4897db96d56Sopenharmony_ci 4907db96d56Sopenharmony_ci .. versionadded:: 3.4 4917db96d56Sopenharmony_ci 4927db96d56Sopenharmony_ci .. versionadded:: 3.11 4937db96d56Sopenharmony_ci ``siphash13`` is added and it is the new default. 4947db96d56Sopenharmony_ci 4957db96d56Sopenharmony_ci.. cmdoption:: --with-builtin-hashlib-hashes=md5,sha1,sha256,sha512,sha3,blake2 4967db96d56Sopenharmony_ci 4977db96d56Sopenharmony_ci Built-in hash modules: 4987db96d56Sopenharmony_ci 4997db96d56Sopenharmony_ci * ``md5``; 5007db96d56Sopenharmony_ci * ``sha1``; 5017db96d56Sopenharmony_ci * ``sha256``; 5027db96d56Sopenharmony_ci * ``sha512``; 5037db96d56Sopenharmony_ci * ``sha3`` (with shake); 5047db96d56Sopenharmony_ci * ``blake2``. 5057db96d56Sopenharmony_ci 5067db96d56Sopenharmony_ci .. versionadded:: 3.9 5077db96d56Sopenharmony_ci 5087db96d56Sopenharmony_ci.. cmdoption:: --with-ssl-default-suites=[python|openssl|STRING] 5097db96d56Sopenharmony_ci 5107db96d56Sopenharmony_ci Override the OpenSSL default cipher suites string: 5117db96d56Sopenharmony_ci 5127db96d56Sopenharmony_ci * ``python`` (default): use Python's preferred selection; 5137db96d56Sopenharmony_ci * ``openssl``: leave OpenSSL's defaults untouched; 5147db96d56Sopenharmony_ci * *STRING*: use a custom string 5157db96d56Sopenharmony_ci 5167db96d56Sopenharmony_ci See the :mod:`ssl` module. 5177db96d56Sopenharmony_ci 5187db96d56Sopenharmony_ci .. versionadded:: 3.7 5197db96d56Sopenharmony_ci 5207db96d56Sopenharmony_ci .. versionchanged:: 3.10 5217db96d56Sopenharmony_ci 5227db96d56Sopenharmony_ci The settings ``python`` and *STRING* also set TLS 1.2 as minimum 5237db96d56Sopenharmony_ci protocol version. 5247db96d56Sopenharmony_ci 5257db96d56Sopenharmony_cimacOS Options 5267db96d56Sopenharmony_ci------------- 5277db96d56Sopenharmony_ci 5287db96d56Sopenharmony_ciSee ``Mac/README.rst``. 5297db96d56Sopenharmony_ci 5307db96d56Sopenharmony_ci.. cmdoption:: --enable-universalsdk 5317db96d56Sopenharmony_ci.. cmdoption:: --enable-universalsdk=SDKDIR 5327db96d56Sopenharmony_ci 5337db96d56Sopenharmony_ci Create a universal binary build. *SDKDIR* specifies which macOS SDK should 5347db96d56Sopenharmony_ci be used to perform the build (default is no). 5357db96d56Sopenharmony_ci 5367db96d56Sopenharmony_ci.. cmdoption:: --enable-framework 5377db96d56Sopenharmony_ci.. cmdoption:: --enable-framework=INSTALLDIR 5387db96d56Sopenharmony_ci 5397db96d56Sopenharmony_ci Create a Python.framework rather than a traditional Unix install. Optional 5407db96d56Sopenharmony_ci *INSTALLDIR* specifies the installation path (default is no). 5417db96d56Sopenharmony_ci 5427db96d56Sopenharmony_ci.. cmdoption:: --with-universal-archs=ARCH 5437db96d56Sopenharmony_ci 5447db96d56Sopenharmony_ci Specify the kind of universal binary that should be created. This option is 5457db96d56Sopenharmony_ci only valid when :option:`--enable-universalsdk` is set. 5467db96d56Sopenharmony_ci 5477db96d56Sopenharmony_ci Options: 5487db96d56Sopenharmony_ci 5497db96d56Sopenharmony_ci * ``universal2``; 5507db96d56Sopenharmony_ci * ``32-bit``; 5517db96d56Sopenharmony_ci * ``64-bit``; 5527db96d56Sopenharmony_ci * ``3-way``; 5537db96d56Sopenharmony_ci * ``intel``; 5547db96d56Sopenharmony_ci * ``intel-32``; 5557db96d56Sopenharmony_ci * ``intel-64``; 5567db96d56Sopenharmony_ci * ``all``. 5577db96d56Sopenharmony_ci 5587db96d56Sopenharmony_ci.. cmdoption:: --with-framework-name=FRAMEWORK 5597db96d56Sopenharmony_ci 5607db96d56Sopenharmony_ci Specify the name for the python framework on macOS only valid when 5617db96d56Sopenharmony_ci :option:`--enable-framework` is set (default: ``Python``). 5627db96d56Sopenharmony_ci 5637db96d56Sopenharmony_ci 5647db96d56Sopenharmony_ciCross Compiling Options 5657db96d56Sopenharmony_ci----------------------- 5667db96d56Sopenharmony_ci 5677db96d56Sopenharmony_ciCross compiling, also known as cross building, can be used to build Python 5687db96d56Sopenharmony_cifor another CPU architecture or platform. Cross compiling requires a Python 5697db96d56Sopenharmony_ciinterpreter for the build platform. The version of the build Python must match 5707db96d56Sopenharmony_cithe version of the cross compiled host Python. 5717db96d56Sopenharmony_ci 5727db96d56Sopenharmony_ci.. cmdoption:: --build=BUILD 5737db96d56Sopenharmony_ci 5747db96d56Sopenharmony_ci configure for building on BUILD, usually guessed by :program:`config.guess`. 5757db96d56Sopenharmony_ci 5767db96d56Sopenharmony_ci.. cmdoption:: --host=HOST 5777db96d56Sopenharmony_ci 5787db96d56Sopenharmony_ci cross-compile to build programs to run on HOST (target platform) 5797db96d56Sopenharmony_ci 5807db96d56Sopenharmony_ci.. cmdoption:: --with-build-python=path/to/python 5817db96d56Sopenharmony_ci 5827db96d56Sopenharmony_ci path to build ``python`` binary for cross compiling 5837db96d56Sopenharmony_ci 5847db96d56Sopenharmony_ci .. versionadded:: 3.11 5857db96d56Sopenharmony_ci 5867db96d56Sopenharmony_ci.. cmdoption:: CONFIG_SITE=file 5877db96d56Sopenharmony_ci 5887db96d56Sopenharmony_ci An environment variable that points to a file with configure overrides. 5897db96d56Sopenharmony_ci 5907db96d56Sopenharmony_ci Example *config.site* file:: 5917db96d56Sopenharmony_ci 5927db96d56Sopenharmony_ci # config.site-aarch64 5937db96d56Sopenharmony_ci ac_cv_buggy_getaddrinfo=no 5947db96d56Sopenharmony_ci ac_cv_file__dev_ptmx=yes 5957db96d56Sopenharmony_ci ac_cv_file__dev_ptc=no 5967db96d56Sopenharmony_ci 5977db96d56Sopenharmony_ci 5987db96d56Sopenharmony_ciCross compiling example:: 5997db96d56Sopenharmony_ci 6007db96d56Sopenharmony_ci CONFIG_SITE=config.site-aarch64 ../configure \ 6017db96d56Sopenharmony_ci --build=x86_64-pc-linux-gnu \ 6027db96d56Sopenharmony_ci --host=aarch64-unknown-linux-gnu \ 6037db96d56Sopenharmony_ci --with-build-python=../x86_64/python 6047db96d56Sopenharmony_ci 6057db96d56Sopenharmony_ci 6067db96d56Sopenharmony_ciPython Build System 6077db96d56Sopenharmony_ci=================== 6087db96d56Sopenharmony_ci 6097db96d56Sopenharmony_ciMain files of the build system 6107db96d56Sopenharmony_ci------------------------------ 6117db96d56Sopenharmony_ci 6127db96d56Sopenharmony_ci* :file:`configure.ac` => :file:`configure`; 6137db96d56Sopenharmony_ci* :file:`Makefile.pre.in` => :file:`Makefile` (created by :file:`configure`); 6147db96d56Sopenharmony_ci* :file:`pyconfig.h` (created by :file:`configure`); 6157db96d56Sopenharmony_ci* :file:`Modules/Setup`: C extensions built by the Makefile using 6167db96d56Sopenharmony_ci :file:`Module/makesetup` shell script; 6177db96d56Sopenharmony_ci* :file:`setup.py`: C extensions built using the :mod:`distutils` module. 6187db96d56Sopenharmony_ci 6197db96d56Sopenharmony_ciMain build steps 6207db96d56Sopenharmony_ci---------------- 6217db96d56Sopenharmony_ci 6227db96d56Sopenharmony_ci* C files (``.c``) are built as object files (``.o``). 6237db96d56Sopenharmony_ci* A static ``libpython`` library (``.a``) is created from objects files. 6247db96d56Sopenharmony_ci* ``python.o`` and the static ``libpython`` library are linked into the 6257db96d56Sopenharmony_ci final ``python`` program. 6267db96d56Sopenharmony_ci* C extensions are built by the Makefile (see :file:`Modules/Setup`) 6277db96d56Sopenharmony_ci and ``python setup.py build``. 6287db96d56Sopenharmony_ci 6297db96d56Sopenharmony_ciMain Makefile targets 6307db96d56Sopenharmony_ci--------------------- 6317db96d56Sopenharmony_ci 6327db96d56Sopenharmony_ci* ``make``: Build Python with the standard library. 6337db96d56Sopenharmony_ci* ``make platform:``: build the ``python`` program, but don't build the 6347db96d56Sopenharmony_ci standard library extension modules. 6357db96d56Sopenharmony_ci* ``make profile-opt``: build Python using Profile Guided Optimization (PGO). 6367db96d56Sopenharmony_ci You can use the configure :option:`--enable-optimizations` option to make 6377db96d56Sopenharmony_ci this the default target of the ``make`` command (``make all`` or just 6387db96d56Sopenharmony_ci ``make``). 6397db96d56Sopenharmony_ci* ``make buildbottest``: Build Python and run the Python test suite, the same 6407db96d56Sopenharmony_ci way than buildbots test Python. Set ``TESTTIMEOUT`` variable (in seconds) 6417db96d56Sopenharmony_ci to change the test timeout (1200 by default: 20 minutes). 6427db96d56Sopenharmony_ci* ``make install``: Build and install Python. 6437db96d56Sopenharmony_ci* ``make regen-all``: Regenerate (almost) all generated files; 6447db96d56Sopenharmony_ci ``make regen-stdlib-module-names`` and ``autoconf`` must be run separately 6457db96d56Sopenharmony_ci for the remaining generated files. 6467db96d56Sopenharmony_ci* ``make clean``: Remove built files. 6477db96d56Sopenharmony_ci* ``make distclean``: Same than ``make clean``, but remove also files created 6487db96d56Sopenharmony_ci by the configure script. 6497db96d56Sopenharmony_ci 6507db96d56Sopenharmony_ciC extensions 6517db96d56Sopenharmony_ci------------ 6527db96d56Sopenharmony_ci 6537db96d56Sopenharmony_ciSome C extensions are built as built-in modules, like the ``sys`` module. 6547db96d56Sopenharmony_ciThey are built with the ``Py_BUILD_CORE_BUILTIN`` macro defined. 6557db96d56Sopenharmony_ciBuilt-in modules have no ``__file__`` attribute:: 6567db96d56Sopenharmony_ci 6577db96d56Sopenharmony_ci >>> import sys 6587db96d56Sopenharmony_ci >>> sys 6597db96d56Sopenharmony_ci <module 'sys' (built-in)> 6607db96d56Sopenharmony_ci >>> sys.__file__ 6617db96d56Sopenharmony_ci Traceback (most recent call last): 6627db96d56Sopenharmony_ci File "<stdin>", line 1, in <module> 6637db96d56Sopenharmony_ci AttributeError: module 'sys' has no attribute '__file__' 6647db96d56Sopenharmony_ci 6657db96d56Sopenharmony_ciOther C extensions are built as dynamic libraries, like the ``_asyncio`` module. 6667db96d56Sopenharmony_ciThey are built with the ``Py_BUILD_CORE_MODULE`` macro defined. 6677db96d56Sopenharmony_ciExample on Linux x86-64:: 6687db96d56Sopenharmony_ci 6697db96d56Sopenharmony_ci >>> import _asyncio 6707db96d56Sopenharmony_ci >>> _asyncio 6717db96d56Sopenharmony_ci <module '_asyncio' from '/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'> 6727db96d56Sopenharmony_ci >>> _asyncio.__file__ 6737db96d56Sopenharmony_ci '/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so' 6747db96d56Sopenharmony_ci 6757db96d56Sopenharmony_ci:file:`Modules/Setup` is used to generate Makefile targets to build C extensions. 6767db96d56Sopenharmony_ciAt the beginning of the files, C extensions are built as built-in modules. 6777db96d56Sopenharmony_ciExtensions defined after the ``*shared*`` marker are built as dynamic libraries. 6787db96d56Sopenharmony_ci 6797db96d56Sopenharmony_ciThe :file:`setup.py` script only builds C extensions as shared libraries using 6807db96d56Sopenharmony_cithe :mod:`distutils` module. 6817db96d56Sopenharmony_ci 6827db96d56Sopenharmony_ciThe :c:macro:`PyAPI_FUNC()`, :c:macro:`PyAPI_API()` and 6837db96d56Sopenharmony_ci:c:macro:`PyMODINIT_FUNC()` macros of :file:`Include/pyport.h` are defined 6847db96d56Sopenharmony_cidifferently depending if the ``Py_BUILD_CORE_MODULE`` macro is defined: 6857db96d56Sopenharmony_ci 6867db96d56Sopenharmony_ci* Use ``Py_EXPORTED_SYMBOL`` if the ``Py_BUILD_CORE_MODULE`` is defined 6877db96d56Sopenharmony_ci* Use ``Py_IMPORTED_SYMBOL`` otherwise. 6887db96d56Sopenharmony_ci 6897db96d56Sopenharmony_ciIf the ``Py_BUILD_CORE_BUILTIN`` macro is used by mistake on a C extension 6907db96d56Sopenharmony_cibuilt as a shared library, its ``PyInit_xxx()`` function is not exported, 6917db96d56Sopenharmony_cicausing an :exc:`ImportError` on import. 6927db96d56Sopenharmony_ci 6937db96d56Sopenharmony_ci 6947db96d56Sopenharmony_ciCompiler and linker flags 6957db96d56Sopenharmony_ci========================= 6967db96d56Sopenharmony_ci 6977db96d56Sopenharmony_ciOptions set by the ``./configure`` script and environment variables and used by 6987db96d56Sopenharmony_ci``Makefile``. 6997db96d56Sopenharmony_ci 7007db96d56Sopenharmony_ciPreprocessor flags 7017db96d56Sopenharmony_ci------------------ 7027db96d56Sopenharmony_ci 7037db96d56Sopenharmony_ci.. envvar:: CONFIGURE_CPPFLAGS 7047db96d56Sopenharmony_ci 7057db96d56Sopenharmony_ci Value of :envvar:`CPPFLAGS` variable passed to the ``./configure`` script. 7067db96d56Sopenharmony_ci 7077db96d56Sopenharmony_ci .. versionadded:: 3.6 7087db96d56Sopenharmony_ci 7097db96d56Sopenharmony_ci.. envvar:: CPPFLAGS 7107db96d56Sopenharmony_ci 7117db96d56Sopenharmony_ci (Objective) C/C++ preprocessor flags, e.g. ``-I<include dir>`` if you have 7127db96d56Sopenharmony_ci headers in a nonstandard directory ``<include dir>``. 7137db96d56Sopenharmony_ci 7147db96d56Sopenharmony_ci Both :envvar:`CPPFLAGS` and :envvar:`LDFLAGS` need to contain the shell's 7157db96d56Sopenharmony_ci value for setup.py to be able to build extension modules using the 7167db96d56Sopenharmony_ci directories specified in the environment variables. 7177db96d56Sopenharmony_ci 7187db96d56Sopenharmony_ci.. envvar:: BASECPPFLAGS 7197db96d56Sopenharmony_ci 7207db96d56Sopenharmony_ci .. versionadded:: 3.4 7217db96d56Sopenharmony_ci 7227db96d56Sopenharmony_ci.. envvar:: PY_CPPFLAGS 7237db96d56Sopenharmony_ci 7247db96d56Sopenharmony_ci Extra preprocessor flags added for building the interpreter object files. 7257db96d56Sopenharmony_ci 7267db96d56Sopenharmony_ci Default: ``$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)``. 7277db96d56Sopenharmony_ci 7287db96d56Sopenharmony_ci .. versionadded:: 3.2 7297db96d56Sopenharmony_ci 7307db96d56Sopenharmony_ciCompiler flags 7317db96d56Sopenharmony_ci-------------- 7327db96d56Sopenharmony_ci 7337db96d56Sopenharmony_ci.. envvar:: CC 7347db96d56Sopenharmony_ci 7357db96d56Sopenharmony_ci C compiler command. 7367db96d56Sopenharmony_ci 7377db96d56Sopenharmony_ci Example: ``gcc -pthread``. 7387db96d56Sopenharmony_ci 7397db96d56Sopenharmony_ci.. envvar:: MAINCC 7407db96d56Sopenharmony_ci 7417db96d56Sopenharmony_ci C compiler command used to build the ``main()`` function of programs like 7427db96d56Sopenharmony_ci ``python``. 7437db96d56Sopenharmony_ci 7447db96d56Sopenharmony_ci Variable set by the :option:`--with-cxx-main` option of the configure 7457db96d56Sopenharmony_ci script. 7467db96d56Sopenharmony_ci 7477db96d56Sopenharmony_ci Default: ``$(CC)``. 7487db96d56Sopenharmony_ci 7497db96d56Sopenharmony_ci.. envvar:: CXX 7507db96d56Sopenharmony_ci 7517db96d56Sopenharmony_ci C++ compiler command. 7527db96d56Sopenharmony_ci 7537db96d56Sopenharmony_ci Used if the :option:`--with-cxx-main` option is used. 7547db96d56Sopenharmony_ci 7557db96d56Sopenharmony_ci Example: ``g++ -pthread``. 7567db96d56Sopenharmony_ci 7577db96d56Sopenharmony_ci.. envvar:: CFLAGS 7587db96d56Sopenharmony_ci 7597db96d56Sopenharmony_ci C compiler flags. 7607db96d56Sopenharmony_ci 7617db96d56Sopenharmony_ci.. envvar:: CFLAGS_NODIST 7627db96d56Sopenharmony_ci 7637db96d56Sopenharmony_ci :envvar:`CFLAGS_NODIST` is used for building the interpreter and stdlib C 7647db96d56Sopenharmony_ci extensions. Use it when a compiler flag should *not* be part of the 7657db96d56Sopenharmony_ci distutils :envvar:`CFLAGS` once Python is installed (:issue:`21121`). 7667db96d56Sopenharmony_ci 7677db96d56Sopenharmony_ci In particular, :envvar:`CFLAGS` should not contain: 7687db96d56Sopenharmony_ci 7697db96d56Sopenharmony_ci * the compiler flag ``-I`` (for setting the search path for include files). 7707db96d56Sopenharmony_ci The ``-I`` flags are processed from left to right, and any flags in 7717db96d56Sopenharmony_ci :envvar:`CFLAGS` would take precedence over user- and package-supplied ``-I`` 7727db96d56Sopenharmony_ci flags. 7737db96d56Sopenharmony_ci 7747db96d56Sopenharmony_ci * hardening flags such as ``-Werror`` because distributions cannot control 7757db96d56Sopenharmony_ci whether packages installed by users conform to such heightened 7767db96d56Sopenharmony_ci standards. 7777db96d56Sopenharmony_ci 7787db96d56Sopenharmony_ci .. versionadded:: 3.5 7797db96d56Sopenharmony_ci 7807db96d56Sopenharmony_ci.. envvar:: EXTRA_CFLAGS 7817db96d56Sopenharmony_ci 7827db96d56Sopenharmony_ci Extra C compiler flags. 7837db96d56Sopenharmony_ci 7847db96d56Sopenharmony_ci.. envvar:: CONFIGURE_CFLAGS 7857db96d56Sopenharmony_ci 7867db96d56Sopenharmony_ci Value of :envvar:`CFLAGS` variable passed to the ``./configure`` 7877db96d56Sopenharmony_ci script. 7887db96d56Sopenharmony_ci 7897db96d56Sopenharmony_ci .. versionadded:: 3.2 7907db96d56Sopenharmony_ci 7917db96d56Sopenharmony_ci.. envvar:: CONFIGURE_CFLAGS_NODIST 7927db96d56Sopenharmony_ci 7937db96d56Sopenharmony_ci Value of :envvar:`CFLAGS_NODIST` variable passed to the ``./configure`` 7947db96d56Sopenharmony_ci script. 7957db96d56Sopenharmony_ci 7967db96d56Sopenharmony_ci .. versionadded:: 3.5 7977db96d56Sopenharmony_ci 7987db96d56Sopenharmony_ci.. envvar:: BASECFLAGS 7997db96d56Sopenharmony_ci 8007db96d56Sopenharmony_ci Base compiler flags. 8017db96d56Sopenharmony_ci 8027db96d56Sopenharmony_ci.. envvar:: OPT 8037db96d56Sopenharmony_ci 8047db96d56Sopenharmony_ci Optimization flags. 8057db96d56Sopenharmony_ci 8067db96d56Sopenharmony_ci.. envvar:: CFLAGS_ALIASING 8077db96d56Sopenharmony_ci 8087db96d56Sopenharmony_ci Strict or non-strict aliasing flags used to compile ``Python/dtoa.c``. 8097db96d56Sopenharmony_ci 8107db96d56Sopenharmony_ci .. versionadded:: 3.7 8117db96d56Sopenharmony_ci 8127db96d56Sopenharmony_ci.. envvar:: CCSHARED 8137db96d56Sopenharmony_ci 8147db96d56Sopenharmony_ci Compiler flags used to build a shared library. 8157db96d56Sopenharmony_ci 8167db96d56Sopenharmony_ci For example, ``-fPIC`` is used on Linux and on BSD. 8177db96d56Sopenharmony_ci 8187db96d56Sopenharmony_ci.. envvar:: CFLAGSFORSHARED 8197db96d56Sopenharmony_ci 8207db96d56Sopenharmony_ci Extra C flags added for building the interpreter object files. 8217db96d56Sopenharmony_ci 8227db96d56Sopenharmony_ci Default: ``$(CCSHARED)`` when :option:`--enable-shared` is used, or an empty 8237db96d56Sopenharmony_ci string otherwise. 8247db96d56Sopenharmony_ci 8257db96d56Sopenharmony_ci.. envvar:: PY_CFLAGS 8267db96d56Sopenharmony_ci 8277db96d56Sopenharmony_ci Default: ``$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)``. 8287db96d56Sopenharmony_ci 8297db96d56Sopenharmony_ci.. envvar:: PY_CFLAGS_NODIST 8307db96d56Sopenharmony_ci 8317db96d56Sopenharmony_ci Default: ``$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal``. 8327db96d56Sopenharmony_ci 8337db96d56Sopenharmony_ci .. versionadded:: 3.5 8347db96d56Sopenharmony_ci 8357db96d56Sopenharmony_ci.. envvar:: PY_STDMODULE_CFLAGS 8367db96d56Sopenharmony_ci 8377db96d56Sopenharmony_ci C flags used for building the interpreter object files. 8387db96d56Sopenharmony_ci 8397db96d56Sopenharmony_ci Default: ``$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)``. 8407db96d56Sopenharmony_ci 8417db96d56Sopenharmony_ci .. versionadded:: 3.7 8427db96d56Sopenharmony_ci 8437db96d56Sopenharmony_ci.. envvar:: PY_CORE_CFLAGS 8447db96d56Sopenharmony_ci 8457db96d56Sopenharmony_ci Default: ``$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE``. 8467db96d56Sopenharmony_ci 8477db96d56Sopenharmony_ci .. versionadded:: 3.2 8487db96d56Sopenharmony_ci 8497db96d56Sopenharmony_ci.. envvar:: PY_BUILTIN_MODULE_CFLAGS 8507db96d56Sopenharmony_ci 8517db96d56Sopenharmony_ci Compiler flags to build a standard library extension module as a built-in 8527db96d56Sopenharmony_ci module, like the :mod:`posix` module. 8537db96d56Sopenharmony_ci 8547db96d56Sopenharmony_ci Default: ``$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN``. 8557db96d56Sopenharmony_ci 8567db96d56Sopenharmony_ci .. versionadded:: 3.8 8577db96d56Sopenharmony_ci 8587db96d56Sopenharmony_ci.. envvar:: PURIFY 8597db96d56Sopenharmony_ci 8607db96d56Sopenharmony_ci Purify command. Purify is a memory debugger program. 8617db96d56Sopenharmony_ci 8627db96d56Sopenharmony_ci Default: empty string (not used). 8637db96d56Sopenharmony_ci 8647db96d56Sopenharmony_ci 8657db96d56Sopenharmony_ciLinker flags 8667db96d56Sopenharmony_ci------------ 8677db96d56Sopenharmony_ci 8687db96d56Sopenharmony_ci.. envvar:: LINKCC 8697db96d56Sopenharmony_ci 8707db96d56Sopenharmony_ci Linker command used to build programs like ``python`` and ``_testembed``. 8717db96d56Sopenharmony_ci 8727db96d56Sopenharmony_ci Default: ``$(PURIFY) $(MAINCC)``. 8737db96d56Sopenharmony_ci 8747db96d56Sopenharmony_ci.. envvar:: CONFIGURE_LDFLAGS 8757db96d56Sopenharmony_ci 8767db96d56Sopenharmony_ci Value of :envvar:`LDFLAGS` variable passed to the ``./configure`` script. 8777db96d56Sopenharmony_ci 8787db96d56Sopenharmony_ci Avoid assigning :envvar:`CFLAGS`, :envvar:`LDFLAGS`, etc. so users can use 8797db96d56Sopenharmony_ci them on the command line to append to these values without stomping the 8807db96d56Sopenharmony_ci pre-set values. 8817db96d56Sopenharmony_ci 8827db96d56Sopenharmony_ci .. versionadded:: 3.2 8837db96d56Sopenharmony_ci 8847db96d56Sopenharmony_ci.. envvar:: LDFLAGS_NODIST 8857db96d56Sopenharmony_ci 8867db96d56Sopenharmony_ci :envvar:`LDFLAGS_NODIST` is used in the same manner as 8877db96d56Sopenharmony_ci :envvar:`CFLAGS_NODIST`. Use it when a linker flag should *not* be part of 8887db96d56Sopenharmony_ci the distutils :envvar:`LDFLAGS` once Python is installed (:issue:`35257`). 8897db96d56Sopenharmony_ci 8907db96d56Sopenharmony_ci In particular, :envvar:`LDFLAGS` should not contain: 8917db96d56Sopenharmony_ci 8927db96d56Sopenharmony_ci * the compiler flag ``-L`` (for setting the search path for libraries). 8937db96d56Sopenharmony_ci The ``-L`` flags are processed from left to right, and any flags in 8947db96d56Sopenharmony_ci :envvar:`LDFLAGS` would take precedence over user- and package-supplied ``-L`` 8957db96d56Sopenharmony_ci flags. 8967db96d56Sopenharmony_ci 8977db96d56Sopenharmony_ci.. envvar:: CONFIGURE_LDFLAGS_NODIST 8987db96d56Sopenharmony_ci 8997db96d56Sopenharmony_ci Value of :envvar:`LDFLAGS_NODIST` variable passed to the ``./configure`` 9007db96d56Sopenharmony_ci script. 9017db96d56Sopenharmony_ci 9027db96d56Sopenharmony_ci .. versionadded:: 3.8 9037db96d56Sopenharmony_ci 9047db96d56Sopenharmony_ci.. envvar:: LDFLAGS 9057db96d56Sopenharmony_ci 9067db96d56Sopenharmony_ci Linker flags, e.g. ``-L<lib dir>`` if you have libraries in a nonstandard 9077db96d56Sopenharmony_ci directory ``<lib dir>``. 9087db96d56Sopenharmony_ci 9097db96d56Sopenharmony_ci Both :envvar:`CPPFLAGS` and :envvar:`LDFLAGS` need to contain the shell's 9107db96d56Sopenharmony_ci value for setup.py to be able to build extension modules using the 9117db96d56Sopenharmony_ci directories specified in the environment variables. 9127db96d56Sopenharmony_ci 9137db96d56Sopenharmony_ci.. envvar:: LIBS 9147db96d56Sopenharmony_ci 9157db96d56Sopenharmony_ci Linker flags to pass libraries to the linker when linking the Python 9167db96d56Sopenharmony_ci executable. 9177db96d56Sopenharmony_ci 9187db96d56Sopenharmony_ci Example: ``-lrt``. 9197db96d56Sopenharmony_ci 9207db96d56Sopenharmony_ci.. envvar:: LDSHARED 9217db96d56Sopenharmony_ci 9227db96d56Sopenharmony_ci Command to build a shared library. 9237db96d56Sopenharmony_ci 9247db96d56Sopenharmony_ci Default: ``@LDSHARED@ $(PY_LDFLAGS)``. 9257db96d56Sopenharmony_ci 9267db96d56Sopenharmony_ci.. envvar:: BLDSHARED 9277db96d56Sopenharmony_ci 9287db96d56Sopenharmony_ci Command to build ``libpython`` shared library. 9297db96d56Sopenharmony_ci 9307db96d56Sopenharmony_ci Default: ``@BLDSHARED@ $(PY_CORE_LDFLAGS)``. 9317db96d56Sopenharmony_ci 9327db96d56Sopenharmony_ci.. envvar:: PY_LDFLAGS 9337db96d56Sopenharmony_ci 9347db96d56Sopenharmony_ci Default: ``$(CONFIGURE_LDFLAGS) $(LDFLAGS)``. 9357db96d56Sopenharmony_ci 9367db96d56Sopenharmony_ci.. envvar:: PY_LDFLAGS_NODIST 9377db96d56Sopenharmony_ci 9387db96d56Sopenharmony_ci Default: ``$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)``. 9397db96d56Sopenharmony_ci 9407db96d56Sopenharmony_ci .. versionadded:: 3.8 9417db96d56Sopenharmony_ci 9427db96d56Sopenharmony_ci.. envvar:: PY_CORE_LDFLAGS 9437db96d56Sopenharmony_ci 9447db96d56Sopenharmony_ci Linker flags used for building the interpreter object files. 9457db96d56Sopenharmony_ci 9467db96d56Sopenharmony_ci .. versionadded:: 3.8 947