• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1****************
2Configure Python
3****************
4
5.. _configure-options:
6
7Configure Options
8=================
9
10List all ``./configure`` script options using::
11
12    ./configure --help
13
14See also the :file:`Misc/SpecialBuilds.txt` in the Python source distribution.
15
16General Options
17---------------
18
19.. cmdoption:: --enable-loadable-sqlite-extensions
20
21   Support loadable extensions in the :mod:`_sqlite` extension module (default
22   is no).
23
24   See the :meth:`sqlite3.Connection.enable_load_extension` method of the
25   :mod:`sqlite3` module.
26
27   .. versionadded:: 3.6
28
29.. cmdoption:: --disable-ipv6
30
31   Disable IPv6 support (enabled by default if supported), see the
32   :mod:`socket` module.
33
34.. cmdoption:: --enable-big-digits=[15|30]
35
36   Define the size in bits of Python :class:`int` digits: 15 or 30 bits.
37
38   By default, the number of bits is selected depending on ``sizeof(void*)``:
39   30 bits if ``void*`` size is 64-bit or larger, 15 bits otherwise.
40
41   Define the ``PYLONG_BITS_IN_DIGIT`` to ``15`` or ``30``.
42
43   See :data:`sys.int_info.bits_per_digit <sys.int_info>`.
44
45.. cmdoption:: --with-cxx-main
46.. cmdoption:: --with-cxx-main=COMPILER
47
48   Compile the Python ``main()`` function and link Python executable with C++
49   compiler: ``$CXX``, or *COMPILER* if specified.
50
51.. cmdoption:: --with-suffix=SUFFIX
52
53   Set the Python executable suffix to *SUFFIX*.
54
55   The default suffix is ``.exe`` on Windows and macOS (``python.exe``
56   executable), and an empty string on other platforms (``python`` executable).
57
58.. cmdoption:: --with-tzpath=<list of absolute paths separated by pathsep>
59
60   Select the default time zone search path for :data:`zoneinfo.TZPATH`.
61   See the :ref:`Compile-time configuration
62   <zoneinfo_data_compile_time_config>` of the :mod:`zoneinfo` module.
63
64   Default: ``/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zoneinfo:/etc/zoneinfo``.
65
66   See :data:`os.pathsep` path separator.
67
68   .. versionadded:: 3.9
69
70.. cmdoption:: --without-decimal-contextvar
71
72   Build the ``_decimal`` extension module using a thread-local context rather
73   than a coroutine-local context (default), see the :mod:`decimal` module.
74
75   See :data:`decimal.HAVE_CONTEXTVAR` and the :mod:`contextvars` module.
76
77   .. versionadded:: 3.9
78
79.. cmdoption:: --with-dbmliborder=db1:db2:...
80
81   Override order to check db backends for the :mod:`dbm` module
82
83   A valid value is a colon (``:``) separated string with the backend names:
84
85   * ``ndbm``;
86   * ``gdbm``;
87   * ``bdb``.
88
89.. cmdoption:: --without-c-locale-coercion
90
91   Disable C locale coercion to a UTF-8 based locale (enabled by default).
92
93   Don't define the ``PY_COERCE_C_LOCALE`` macro.
94
95   See :envvar:`PYTHONCOERCECLOCALE` and the :pep:`538`.
96
97.. cmdoption:: --with-platlibdir=DIRNAME
98
99   Python library directory name (default is ``lib``).
100
101   Fedora and SuSE use ``lib64`` on 64-bit platforms.
102
103   See :data:`sys.platlibdir`.
104
105   .. versionadded:: 3.9
106
107.. cmdoption:: --with-wheel-pkg-dir=PATH
108
109   Directory of wheel packages used by the :mod:`ensurepip` module
110   (none by default).
111
112   Some Linux distribution packaging policies recommend against bundling
113   dependencies. For example, Fedora installs wheel packages in the
114   ``/usr/share/python-wheels/`` directory and don't install the
115   :mod:`ensurepip._bundled` package.
116
117   .. versionadded:: 3.10
118
119
120Install Options
121---------------
122
123.. cmdoption:: --disable-test-modules
124
125   Don't build nor install test modules, like the :mod:`test` package or the
126   :mod:`_testcapi` extension module (built and installed by default).
127
128   .. versionadded:: 3.10
129
130.. cmdoption:: --with-ensurepip=[upgrade|install|no]
131
132   Select the :mod:`ensurepip` command run on Python installation:
133
134   * ``upgrade`` (default): run ``python -m ensurepip --altinstall --upgrade``
135     command.
136   * ``install``: run ``python -m ensurepip --altinstall`` command;
137   * ``no``: don't run ensurepip;
138
139   .. versionadded:: 3.6
140
141
142Performance options
143-------------------
144
145Configuring Python using ``--enable-optimizations --with-lto`` (PGO + LTO) is
146recommended for best performance.
147
148.. cmdoption:: --enable-optimizations
149
150   Enable Profile Guided Optimization (PGO) using :envvar:`PROFILE_TASK`
151   (disabled by default).
152
153   The C compiler Clang requires ``llvm-profdata`` program for PGO. On
154   macOS, GCC also requires it: GCC is just an alias to Clang on macOS.
155
156   Disable also semantic interposition in libpython if ``--enable-shared`` and
157   GCC is used: add ``-fno-semantic-interposition`` to the compiler and linker
158   flags.
159
160   .. versionadded:: 3.6
161
162   .. versionchanged:: 3.10
163      Use ``-fno-semantic-interposition`` on GCC.
164
165.. envvar:: PROFILE_TASK
166
167   Environment variable used in the Makefile: Python command line arguments for
168   the PGO generation task.
169
170   Default: ``-m test --pgo --timeout=$(TESTTIMEOUT)``.
171
172   .. versionadded:: 3.8
173
174.. cmdoption:: --with-lto
175
176   Enable Link Time Optimization (LTO) in any build (disabled by default).
177
178   The C compiler Clang requires ``llvm-ar`` for LTO (``ar`` on macOS), as well
179   as an LTO-aware linker (``ld.gold`` or ``lld``).
180
181   .. versionadded:: 3.6
182
183.. cmdoption:: --with-computed-gotos
184
185   Enable computed gotos in evaluation loop (enabled by default on supported
186   compilers).
187
188.. cmdoption:: --without-pymalloc
189
190   Disable the specialized Python memory allocator :ref:`pymalloc <pymalloc>`
191   (enabled by default).
192
193   See also :envvar:`PYTHONMALLOC` environment variable.
194
195.. cmdoption:: --without-doc-strings
196
197   Disable static documentation strings to reduce the memory footprint (enabled
198   by default). Documentation strings defined in Python are not affected.
199
200   Don't define the ``WITH_DOC_STRINGS`` macro.
201
202   See the ``PyDoc_STRVAR()`` macro.
203
204.. cmdoption:: --enable-profiling
205
206   Enable C-level code profiling with ``gprof`` (disabled by default).
207
208
209.. _debug-build:
210
211Python Debug Build
212------------------
213
214A debug build is Python built with the :option:`--with-pydebug` configure
215option.
216
217Effects of a debug build:
218
219* Display all warnings by default: the list of default warning filters is empty
220  in the :mod:`warnings` module.
221* Add ``d`` to :data:`sys.abiflags`.
222* Add :func:`sys.gettotalrefcount` function.
223* Add :option:`-X showrefcount <-X>` command line option.
224* Add :envvar:`PYTHONTHREADDEBUG` environment variable.
225* Add support for the ``__ltrace__`` variable: enable low-level tracing in the
226  bytecode evaluation loop if the variable is defined.
227* Install :ref:`debug hooks on memory allocators <default-memory-allocators>`
228  to detect buffer overflow and other memory errors.
229* Define ``Py_DEBUG`` and ``Py_REF_DEBUG`` macros.
230* Add runtime checks: code surroundeded by ``#ifdef Py_DEBUG`` and ``#endif``.
231  Enable ``assert(...)`` and ``_PyObject_ASSERT(...)`` assertions: don't set
232  the ``NDEBUG`` macro (see also the :option:`--with-assertions` configure
233  option). Main runtime checks:
234
235  * Add sanity checks on the function arguments.
236  * Unicode and int objects are created with their memory filled with a pattern
237    to detect usage of uninitialized objects.
238  * Ensure that functions which can clear or replace the current exception are
239    not called with an exception raised.
240  * The garbage collector (:func:`gc.collect` function) runs some basic checks
241    on objects consistency.
242  * The :c:macro:`Py_SAFE_DOWNCAST()` macro checks for integer underflow and
243    overflow when downcasting from wide types to narrow types.
244
245See also the :ref:`Python Development Mode <devmode>` and the
246:option:`--with-trace-refs` configure option.
247
248.. versionchanged:: 3.8
249   Release builds and debug builds are now ABI compatible: defining the
250   ``Py_DEBUG`` macro no longer implies the ``Py_TRACE_REFS`` macro (see the
251   :option:`--with-trace-refs` option), which introduces the only ABI
252   incompatibility.
253
254
255Debug options
256-------------
257
258.. cmdoption:: --with-pydebug
259
260   :ref:`Build Python in debug mode <debug-build>`: define the ``Py_DEBUG``
261   macro (disabled by default).
262
263.. cmdoption:: --with-trace-refs
264
265   Enable tracing references for debugging purpose (disabled by default).
266
267   Effects:
268
269   * Define the ``Py_TRACE_REFS`` macro.
270   * Add :func:`sys.getobjects` function.
271   * Add :envvar:`PYTHONDUMPREFS` environment variable.
272
273   This build is not ABI compatible with release build (default build) or debug
274   build (``Py_DEBUG`` and ``Py_REF_DEBUG`` macros).
275
276   .. versionadded:: 3.8
277
278.. cmdoption:: --with-assertions
279
280   Build with C assertions enabled (default is no): ``assert(...);`` and
281   ``_PyObject_ASSERT(...);``.
282
283   If set, the ``NDEBUG`` macro is not defined in the :envvar:`OPT` compiler
284   variable.
285
286   See also the :option:`--with-pydebug` option (:ref:`debug build
287   <debug-build>`) which also enables assertions.
288
289   .. versionadded:: 3.6
290
291.. cmdoption:: --with-valgrind
292
293   Enable Valgrind support (default is no).
294
295.. cmdoption:: --with-dtrace
296
297   Enable DTrace support (default is no).
298
299   See :ref:`Instrumenting CPython with DTrace and SystemTap
300   <instrumentation>`.
301
302   .. versionadded:: 3.6
303
304.. cmdoption:: --with-address-sanitizer
305
306   Enable AddressSanitizer memory error detector, ``asan`` (default is no).
307
308   .. versionadded:: 3.6
309
310.. cmdoption:: --with-memory-sanitizer
311
312   Enable MemorySanitizer allocation error detector, ``msan`` (default is no).
313
314   .. versionadded:: 3.6
315
316.. cmdoption:: --with-undefined-behavior-sanitizer
317
318   Enable UndefinedBehaviorSanitizer undefined behaviour detector, ``ubsan``
319   (default is no).
320
321   .. versionadded:: 3.6
322
323
324Linker options
325--------------
326
327.. cmdoption:: --enable-shared
328
329   Enable building a shared Python library: ``libpython`` (default is no).
330
331.. cmdoption:: --without-static-libpython
332
333   Do not build ``libpythonMAJOR.MINOR.a`` and do not install ``python.o``
334   (built and enabled by default).
335
336   .. versionadded:: 3.10
337
338
339Libraries options
340-----------------
341
342.. cmdoption:: --with-libs='lib1 ...'
343
344   Link against additional libraries (default is no).
345
346.. cmdoption:: --with-system-expat
347
348   Build the :mod:`pyexpat` module using an installed ``expat`` library
349   (default is no).
350
351.. cmdoption:: --with-system-ffi
352
353   Build the :mod:`_ctypes` extension module using an installed ``ffi``
354   library, see the :mod:`ctypes` module (default is system-dependent).
355
356.. cmdoption:: --with-system-libmpdec
357
358   Build the ``_decimal`` extension module using an installed ``mpdec``
359   library, see the :mod:`decimal` module (default is no).
360
361   .. versionadded:: 3.3
362
363.. cmdoption:: --with-readline=editline
364
365   Use ``editline`` library for backend of the :mod:`readline` module.
366
367   Define the ``WITH_EDITLINE`` macro.
368
369   .. versionadded:: 3.10
370
371.. cmdoption:: --without-readline
372
373   Don't build the :mod:`readline` module (built by default).
374
375   Don't define the ``HAVE_LIBREADLINE`` macro.
376
377   .. versionadded:: 3.10
378
379.. cmdoption:: --with-tcltk-includes='-I...'
380
381   Override search for Tcl and Tk include files.
382
383.. cmdoption:: --with-tcltk-libs='-L...'
384
385   Override search for Tcl and Tk libraries.
386
387.. cmdoption:: --with-libm=STRING
388
389   Override ``libm`` math library to *STRING* (default is system-dependent).
390
391.. cmdoption:: --with-libc=STRING
392
393   Override ``libc`` C library to *STRING* (default is system-dependent).
394
395.. cmdoption:: --with-openssl=DIR
396
397   Root of the OpenSSL directory.
398
399   .. versionadded:: 3.7
400
401.. cmdoption:: --with-openssl-rpath=[no|auto|DIR]
402
403   Set runtime library directory (rpath) for OpenSSL libraries:
404
405   * ``no`` (default): don't set rpath;
406   * ``auto``: auto-detect rpath from :option:`--with-openssl` and
407     ``pkg-config``;
408   * *DIR*: set an explicit rpath.
409
410   .. versionadded:: 3.10
411
412
413Security Options
414----------------
415
416.. cmdoption:: --with-hash-algorithm=[fnv|siphash24]
417
418   Select hash algorithm for use in ``Python/pyhash.c``:
419
420   * ``siphash24`` (default).
421   * ``fnv``;
422
423   .. versionadded:: 3.4
424
425.. cmdoption:: --with-builtin-hashlib-hashes=md5,sha1,sha256,sha512,sha3,blake2
426
427   Built-in hash modules:
428
429   * ``md5``;
430   * ``sha1``;
431   * ``sha256``;
432   * ``sha512``;
433   * ``sha3`` (with shake);
434   * ``blake2``.
435
436   .. versionadded:: 3.9
437
438.. cmdoption:: --with-ssl-default-suites=[python|openssl|STRING]
439
440   Override the OpenSSL default cipher suites string:
441
442   * ``python`` (default): use Python's preferred selection;
443   * ``openssl``: leave OpenSSL's defaults untouched;
444   * *STRING*: use a custom string
445
446   See the :mod:`ssl` module.
447
448   .. versionadded:: 3.7
449
450   .. versionchanged:: 3.10
451
452      The settings ``python`` and *STRING* also set TLS 1.2 as minimum
453      protocol version.
454
455macOS Options
456-------------
457
458See ``Mac/README.rst``.
459
460.. cmdoption:: --enable-universalsdk
461.. cmdoption:: --enable-universalsdk=SDKDIR
462
463   Create a universal binary build. *SDKDIR* specifies which macOS SDK should
464   be used to perform the build (default is no).
465
466.. cmdoption:: --enable-framework
467.. cmdoption:: --enable-framework=INSTALLDIR
468
469   Create a Python.framework rather than a traditional Unix install. Optional
470   *INSTALLDIR* specifies the installation path (default is no).
471
472.. cmdoption:: --with-universal-archs=ARCH
473
474   Specify the kind of universal binary that should be created. This option is
475   only valid when :option:`--enable-universalsdk` is set.
476
477   Options:
478
479   * ``universal2``;
480   * ``32-bit``;
481   * ``64-bit``;
482   * ``3-way``;
483   * ``intel``;
484   * ``intel-32``;
485   * ``intel-64``;
486   * ``all``.
487
488.. cmdoption:: --with-framework-name=FRAMEWORK
489
490   Specify the name for the python framework on macOS only valid when
491   :option:`--enable-framework` is set (default: ``Python``).
492
493
494Python Build System
495===================
496
497Main files of the build system
498------------------------------
499
500* :file:`configure.ac` => :file:`configure`;
501* :file:`Makefile.pre.in` => :file:`Makefile` (created by :file:`configure`);
502* :file:`pyconfig.h` (created by :file:`configure`);
503* :file:`Modules/Setup`: C extensions built by the Makefile using
504  :file:`Module/makesetup` shell script;
505* :file:`setup.py`: C extensions built using the :mod:`distutils` module.
506
507Main build steps
508----------------
509
510* C files (``.c``) are built as object files (``.o``).
511* A static ``libpython`` library (``.a``) is created from objects files.
512* ``python.o`` and the static ``libpython`` library are linked into the
513  final ``python`` program.
514* C extensions are built by the Makefile (see :file:`Modules/Setup`)
515  and ``python setup.py build``.
516
517Main Makefile targets
518---------------------
519
520* ``make``: Build Python with the standard library.
521* ``make platform:``: build the ``python`` program, but don't build the
522  standard library extension modules.
523* ``make profile-opt``: build Python using Profile Guided Optimization (PGO).
524  You can use the configure :option:`--enable-optimizations` option to make
525  this the default target of the ``make`` command (``make all`` or just
526  ``make``).
527* ``make buildbottest``: Build Python and run the Python test suite, the same
528  way than buildbots test Python. Set ``TESTTIMEOUT`` variable (in seconds)
529  to change the test timeout (1200 by default: 20 minutes).
530* ``make install``: Build and install Python.
531* ``make regen-all``: Regenerate (almost) all generated files;
532  ``make regen-stdlib-module-names`` and ``autoconf`` must be run separately
533  for the remaining generated files.
534* ``make clean``: Remove built files.
535* ``make distclean``: Same than ``make clean``, but remove also files created
536  by the configure script.
537
538C extensions
539------------
540
541Some C extensions are built as built-in modules, like the ``sys`` module.
542They are built with the ``Py_BUILD_CORE_BUILTIN`` macro defined.
543Built-in modules have no ``__file__`` attribute::
544
545    >>> import sys
546    >>> sys
547    <module 'sys' (built-in)>
548    >>> sys.__file__
549    Traceback (most recent call last):
550      File "<stdin>", line 1, in <module>
551    AttributeError: module 'sys' has no attribute '__file__'
552
553Other C extensins are built as dynamic libraries, like the ``_asyncio`` module.
554They are built with the ``Py_BUILD_CORE_MODULE`` macro defined.
555Example on Linux x86-64::
556
557    >>> import _asyncio
558    >>> _asyncio
559    <module '_asyncio' from '/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'>
560    >>> _asyncio.__file__
561    '/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'
562
563:file:`Modules/Setup` is used to generate Makefile targets to build C extensions.
564At the beginning of the files, C extensions are built as built-in modules.
565Extensions defined after the ``*shared*`` marker are built as dynamic libraries.
566
567The :file:`setup.py` script only builds C extensions as shared libraries using
568the :mod:`distutils` module.
569
570The :c:macro:`PyAPI_FUNC()`, :c:macro:`PyAPI_API()` and
571:c:macro:`PyMODINIT_FUNC()` macros of :file:`Include/pyport.h` are defined
572differently depending if the ``Py_BUILD_CORE_MODULE`` macro is defined:
573
574* Use ``Py_EXPORTED_SYMBOL`` if the ``Py_BUILD_CORE_MODULE`` is defined
575* Use ``Py_IMPORTED_SYMBOL`` otherwise.
576
577If the ``Py_BUILD_CORE_BUILTIN`` macro is used by mistake on a C extension
578built as a shared library, its ``PyInit_xxx()`` function is not exported,
579causing an :exc:`ImportError` on import.
580
581
582Compiler and linker flags
583=========================
584
585Options set by the ``./configure`` script and environment variables and used by
586``Makefile``.
587
588Preprocessor flags
589------------------
590
591.. envvar:: CONFIGURE_CPPFLAGS
592
593   Value of :envvar:`CPPFLAGS` variable passed to the ``./configure`` script.
594
595   .. versionadded:: 3.6
596
597.. envvar:: CPPFLAGS
598
599   (Objective) C/C++ preprocessor flags, e.g. ``-I<include dir>`` if you have
600   headers in a nonstandard directory ``<include dir>``.
601
602   Both :envvar:`CPPFLAGS` and :envvar:`LDFLAGS` need to contain the shell's
603   value for setup.py to be able to build extension modules using the
604   directories specified in the environment variables.
605
606.. envvar:: BASECPPFLAGS
607
608   .. versionadded:: 3.4
609
610.. envvar:: PY_CPPFLAGS
611
612   Extra preprocessor flags added for building the interpreter object files.
613
614   Default: ``$(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)``.
615
616   .. versionadded:: 3.2
617
618Compiler flags
619--------------
620
621.. envvar:: CC
622
623   C compiler command.
624
625   Example: ``gcc -pthread``.
626
627.. envvar:: MAINCC
628
629   C compiler command used to build the ``main()`` function of programs like
630   ``python``.
631
632   Variable set by the :option:`--with-cxx-main` option of the configure
633   script.
634
635   Default: ``$(CC)``.
636
637.. envvar:: CXX
638
639   C++ compiler command.
640
641   Used if the :option:`--with-cxx-main` option is used.
642
643   Example: ``g++ -pthread``.
644
645.. envvar:: CFLAGS
646
647   C compiler flags.
648
649.. envvar:: CFLAGS_NODIST
650
651   :envvar:`CFLAGS_NODIST` is used for building the interpreter and stdlib C
652   extensions.  Use it when a compiler flag should *not* be part of the
653   distutils :envvar:`CFLAGS` once Python is installed (:issue:`21121`).
654
655   .. versionadded:: 3.5
656
657.. envvar:: EXTRA_CFLAGS
658
659   Extra C compiler flags.
660
661.. envvar:: CONFIGURE_CFLAGS
662
663   Value of :envvar:`CFLAGS` variable passed to the ``./configure``
664   script.
665
666   .. versionadded:: 3.2
667
668.. envvar:: CONFIGURE_CFLAGS_NODIST
669
670   Value of :envvar:`CFLAGS_NODIST` variable passed to the ``./configure``
671   script.
672
673   .. versionadded:: 3.5
674
675.. envvar:: BASECFLAGS
676
677   Base compiler flags.
678
679.. envvar:: OPT
680
681   Optimization flags.
682
683.. envvar:: CFLAGS_ALIASING
684
685   Strict or non-strict aliasing flags used to compile ``Python/dtoa.c``.
686
687   .. versionadded:: 3.7
688
689.. envvar:: CCSHARED
690
691   Compiler flags used to build a shared library.
692
693   For example, ``-fPIC`` is used on Linux and on BSD.
694
695.. envvar:: CFLAGSFORSHARED
696
697   Extra C flags added for building the interpreter object files.
698
699   Default: ``$(CCSHARED)`` when :option:`--enable-shared` is used, or an empty
700   string otherwise.
701
702.. envvar:: PY_CFLAGS
703
704   Default: ``$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS)``.
705
706.. envvar:: PY_CFLAGS_NODIST
707
708   Default: ``$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal``.
709
710   .. versionadded:: 3.5
711
712.. envvar:: PY_STDMODULE_CFLAGS
713
714   C flags used for building the interpreter object files.
715
716   Default: ``$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED)``.
717
718   .. versionadded:: 3.7
719
720.. envvar:: PY_CORE_CFLAGS
721
722   Default: ``$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE``.
723
724   .. versionadded:: 3.2
725
726.. envvar:: PY_BUILTIN_MODULE_CFLAGS
727
728   Compiler flags to build a standard library extension module as a built-in
729   module, like the :mod:`posix` module.
730
731   Default: ``$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN``.
732
733   .. versionadded:: 3.8
734
735.. envvar:: PURIFY
736
737   Purify command. Purify is a memory debugger program.
738
739   Default: empty string (not used).
740
741
742Linker flags
743------------
744
745.. envvar:: LINKCC
746
747   Linker command used to build programs like ``python`` and ``_testembed``.
748
749   Default: ``$(PURIFY) $(MAINCC)``.
750
751.. envvar:: CONFIGURE_LDFLAGS
752
753   Value of :envvar:`LDFLAGS` variable passed to the ``./configure`` script.
754
755   Avoid assigning :envvar:`CFLAGS`, :envvar:`LDFLAGS`, etc. so users can use
756   them on the command line to append to these values without stomping the
757   pre-set values.
758
759   .. versionadded:: 3.2
760
761.. envvar:: LDFLAGS_NODIST
762
763   :envvar:`LDFLAGS_NODIST` is used in the same manner as
764   :envvar:`CFLAGS_NODIST`.  Use it when a linker flag should *not* be part of
765   the distutils :envvar:`LDFLAGS` once Python is installed (:issue:`35257`).
766
767.. envvar:: CONFIGURE_LDFLAGS_NODIST
768
769   Value of :envvar:`LDFLAGS_NODIST` variable passed to the ``./configure``
770   script.
771
772   .. versionadded:: 3.8
773
774.. envvar:: LDFLAGS
775
776   Linker flags, e.g. ``-L<lib dir>`` if you have libraries in a nonstandard
777   directory ``<lib dir>``.
778
779   Both :envvar:`CPPFLAGS` and :envvar:`LDFLAGS` need to contain the shell's
780   value for setup.py to be able to build extension modules using the
781   directories specified in the environment variables.
782
783.. envvar:: LIBS
784
785   Linker flags to pass libraries to the linker when linking the Python
786   executable.
787
788   Example: ``-lrt``.
789
790.. envvar:: LDSHARED
791
792   Command to build a shared library.
793
794   Default: ``@LDSHARED@ $(PY_LDFLAGS)``.
795
796.. envvar:: BLDSHARED
797
798   Command to build ``libpython`` shared library.
799
800   Default: ``@BLDSHARED@ $(PY_CORE_LDFLAGS)``.
801
802.. envvar:: PY_LDFLAGS
803
804   Default: ``$(CONFIGURE_LDFLAGS) $(LDFLAGS)``.
805
806.. envvar:: PY_LDFLAGS_NODIST
807
808   Default: ``$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)``.
809
810   .. versionadded:: 3.8
811
812.. envvar:: PY_CORE_LDFLAGS
813
814   Linker flags used for building the interpreter object files.
815
816   .. versionadded:: 3.8
817