3. Configurar Python
********************


3.1. Configurar opciones
========================

Enumerar todas las opciones del script "./configure" usando:

   ./configure --help

Consultar también "Misc/SpecialBuilds.txt" en la distribución fuente
de Python.


3.1.1. Opciones generales
-------------------------

--enable-loadable-sqlite-extensions

   Support loadable extensions in the "_sqlite" extension module
   (default is no) of the "sqlite3" module.

   Consultar el método "sqlite3.Connection.enable_load_extension()"
   del módulo "sqlite3".

   Nuevo en la versión 3.6.

--disable-ipv6

   Deshabilita la compatibilidad con IPv6 (habilitada de forma
   predeterminada si es compatible), consulte el módulo "socket".

--enable-big-digits=[15|30]

   Define el tamaño en bits de los dígitos "int" de Python: 15 o 30
   bits.

   Por defecto, el tamaño del dígito es 30.

   Define el "PYLONG_BITS_IN_DIGIT" en "15" o "30".

   Consultar "sys.int_info.bits_per_digit".

--with-cxx-main

--with-cxx-main=COMPILER

   Compila la función de Python "main()" y vincula el ejecutable de
   Python con el compilador de C++: "$CXX", o *COMPILER* si se
   especifica.

--with-suffix=SUFFIX

   Establece el sufijo ejecutable de Python en *SUFFIX*.

   El sufijo predeterminado es ".exe" en Windows y macOS (ejecutable
   "python.exe"), ".js" en el nodo Emscripten, ".html" en el navegador
   Emscripten, ".wasm" en WASI y una cadena vacía en otras plataformas
   (ejecutable "python").

   Distinto en la versión 3.11: El sufijo predeterminado en la
   plataforma WASM es uno de ".js", ".html" o ".wasm".

--with-tzpath=<list of absolute paths separated by pathsep>

   Select the default time zone search path for "zoneinfo.TZPATH". See
   the Compile-time configuration of the "zoneinfo" module.

   Por defecto: "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib
   /zoneinfo:/etc/zoneinfo".

   Consultar separador de rutas "os.pathsep" .

   Nuevo en la versión 3.9.

--without-decimal-contextvar

   Construye el módulo de extensión "_decimal" usando un contexto
   local de hilos en lugar de un contexto local de corutinas
   (predeterminado), consultar el módulo "decimal".

   See "decimal.HAVE_CONTEXTVAR" and the "contextvars" module.

   Nuevo en la versión 3.9.

--with-dbmliborder=<list of backend names>

   Sobrescribe el orden para verificar los de las bases datos para el
   módulo "dbm"

   Un valor válido es una cadena de caracteres separada por dos puntos
   (":") con los nombres de los backends:

   * "ndbm";

   * "gdbm";

   * "bdb".

--without-c-locale-coercion

   Deshabilita la coerción de configuración regional C a una
   configuración regional basada en UTF-8 (habilitada de forma
   predeterminada).

   No define la macro "PY_COERCE_C_LOCALE".

   Consultar "PYTHONCOERCECLOCALE" y el **PEP 538**.

--with-platlibdir=DIRNAME

   Nombre del directorio de la biblioteca de Python (por defecto es
   "lib").

   Fedora y SuSE usan "lib64" en plataformas 64-bit.

   Consultar "sys.platlibdir".

   Nuevo en la versión 3.9.

--with-wheel-pkg-dir=PATH

   Directorio de los paquetes *wheel* usados por el módulo "ensurepip"
   (ninguno por defecto)

   Some Linux distribution packaging policies recommend against
   bundling dependencies. For example, Fedora installs wheel packages
   in the "/usr/share/python-wheels/" directory and don't install the
   "ensurepip._bundled" package.

   Nuevo en la versión 3.10.

--with-pkg-config=[check|yes|no]

   Si configure debe usar **pkg-config** para detectar dependencias de
   compilación.

   * "check" (predeterminado): **pkg-config** es opcional

   * "yes": **pkg-config** es obligatorio

   * "no": configure no usa **pkg-config** incluso cuando está
     presente

   Nuevo en la versión 3.11.

--enable-pystats

   Active la recopilación de estadísticas internas.

   Las estadísticas se volcarán en un archivo arbitrario
   (probablemente único) en "/tmp/py_stats/" o "C:\temp\py_stats\" en
   Windows.

   Usa "Tools/scripts/summarize_stats.py" para leer las estadísticas.

   Nuevo en la versión 3.11.


3.1.2. Opciones de WebAssembly
------------------------------

--with-emscripten-target=[browser|node]

   Establezca el tipo de compilación para "wasm32-emscripten".

   * "browser" (predeterminado): precarga mínima stdlib, MEMFS
     predeterminado.

   * "node": soporte para NODERAWFS y pthread.

   Nuevo en la versión 3.11.

--enable-wasm-dynamic-linking

   Active la compatibilidad con enlaces dinámicos para WASM.

   La vinculación dinámica habilita "dlopen". El tamaño del archivo
   del ejecutable aumenta debido a la eliminación limitada de código
   muerto y características adicionales.

   Nuevo en la versión 3.11.

--enable-wasm-pthreads

   Active la compatibilidad con pthreads para WASM.

   Nuevo en la versión 3.11.


3.1.3. Opciones de instalación
------------------------------

--prefix=PREFIX

   Install architecture-independent files in PREFIX. On Unix, it
   defaults to "/usr/local".

   This value can be retrieved at runtime using "sys.prefix".

   As an example, one can use "--prefix="$HOME/.local/"" to install a
   Python in its home directory.

--exec-prefix=EPREFIX

   Install architecture-dependent files in EPREFIX, defaults to "--
   prefix".

   This value can be retrieved at runtime using "sys.exec_prefix".

--disable-test-modules

   Don't build nor install test modules, like the "test" package or
   the "_testcapi" extension module (built and installed by default).

   Nuevo en la versión 3.10.

--with-ensurepip=[upgrade|install|no]

   Selecciona el comando "ensurepip" que se ejecuta en la instalación
   de Python:

   * "upgrade" (por defecto): ejecutar el comando "python -m ensurepip
     --altinstall --upgrade".

   * "install": ejecutar el comando "python -m ensurepip
     --altinstall";

   * "no": no ejecuta ensurepip;

   Nuevo en la versión 3.6.


3.1.4. Opciones de desempeño
----------------------------

Se recomienda configurar Python usando "--enable-optimizations --with-
lto" (PGO + LTO) para obtener el mejor rendimiento.

--enable-optimizations

   Habilite la Optimización Guiada por Perfiles (*PGO* por sus siglas
   en inglés) usando "PROFILE_TASK" (deshabilitado de forma
   predeterminada).

   El compilador de C Clang requiere el programa "llvm-profdata" para
   PGO. En macOS, GCC también lo requiere: GCC es solo un alias de
   Clang en macOS.

   Desactiva también la interposición semántica en libpython si se usa
   "--enable-shared" y GCC: agregar "-fno-semantic-interposition" a
   los flags del compilador y del enlazador.

   Nuevo en la versión 3.6.

   Distinto en la versión 3.10: Usar "-fno-semantic-interposition" en
   GCC.

PROFILE_TASK

   Variable de entorno utilizada en el Makefile: argumentos de la
   línea de comando Python para la tarea de generación de PGO.

   Por defecto: "-m test --pgo --timeout=$(TESTTIMEOUT)".

   Nuevo en la versión 3.8.

--with-lto=[full|thin|no|yes]

   Habilita la Optimización de Tiempo de Enlace (*LTO* por sus siglas
   en inglés) en cualquier compilación (deshabilitado de forma
   predeterminada).

   El compilador de C Clang requiere "llvm-ar" para LTO ("ar" en
   macOS), así como un enlazador compatible con LTO ("ld.gold" o
   "lld").

   Nuevo en la versión 3.6.

   Nuevo en la versión 3.11: Para usar la función ThinLTO, use "--
   with-lto=thin" en Clang.

--with-computed-gotos

   Habilita los *gotos* calculados en el ciclo de evaluación
   (habilitado de forma predeterminada en los compiladores
   compatibles).

--without-pymalloc

   Deshabilita el asignador de memoria especializado de Python
   pymalloc (habilitado de forma predeterminada).

   Consultar también la variable de entorno "PYTHONMALLOC".

--without-doc-strings

   Deshabilita las cadenas de caracteres de documentación estáticas
   para reducir el espacio de memoria (habilitado de forma
   predeterminada). Las cadenas de caracteres de documentación
   definidas en Python no se ven afectadas.

   No define la macro "WITH_DOC_STRINGS".

   Consultar la macro "PyDoc_STRVAR()".

--enable-profiling

   Habilita el análisis de rendimiento de código (*profiling*) de
   nivel C con "gprof" (deshabilitado de forma predeterminada).


3.1.5. Compilación de depuración de Python
------------------------------------------

Una compilación de depuración es Python construido con la opción de
configuración "--with-pydebug".

Efectos de una compilación de depuración:

* Muestra todas las advertencias de forma predeterminada: la lista de
  filtros de advertencia predeterminados está vacía en el módulo
  "warnings".

* Agrega "d" a "sys.abiflags".

* Add "sys.gettotalrefcount()" function.

* Agrega la opción de línea de comando "-X showrefcount".

* Agrega la variable de entorno "PYTHONTHREADDEBUG".

* Agregue soporte para la variable "__lltrace__": habilite el
  seguimiento de bajo nivel en el ciclo de evaluación del código de
  bytes si la variable está definida.

* Instala ganchos de depuración en los asignadores de memoria para
  detectar el desbordamiento del búfer y otros errores de memoria.

* Define las macros "Py_DEBUG" y "Py_REF_DEBUG".

* Agregue verificaciones de tiempo de ejecución: código rodeado por
  "#ifdef Py_DEBUG" y "#endif". Habilite las aserciones "assert(...)"
  y "_PyObject_ASSERT(...)": no configure la macro "NDEBUG" (vea
  también la opción de configuración "--with-assertions").
  Comprobaciones principales de tiempo de ejecución:

  * Agregue controles de sanidad en los argumentos de la función.

  * Los objetos unicode e int se crean con su memoria completa con un
    patrón para detectar el uso de objetos no inicializados.

  * Asegúrese de que las funciones que pueden borrar o reemplazar la
    excepción actual no se invocan con una excepción lanzada.

  * Verifique que las funciones de desasignador no cambien la
    excepción actual.

  * El recolector de basura (función "gc.collect()") ejecuta algunas
    comprobaciones básicas sobre la consistencia de los objetos.

  * The "Py_SAFE_DOWNCAST()" macro checks for integer underflow and
    overflow when downcasting from wide types to narrow types.

Consultar también Modo de Desarrollo de Python y la opción de
configuración "--with-trace-refs".

Distinto en la versión 3.8: Las compilaciones de lanzamiento y las
compilaciones de depuración ahora son compatibles con ABI: definir la
macro "Py_DEBUG" ya no implica la macro "Py_TRACE_REFS" (consultar la
opción "--with-trace-refs"), que presenta la única Incompatibilidad
ABI.


3.1.6. Opciones de depuración
-----------------------------

--with-pydebug

   Compila Python en modo de depuración: define la macro "Py_DEBUG"
   (deshabilitada por defecto).

--with-trace-refs

   Habilita las referencias de seguimiento con fines de depuración
   (deshabilitado de forma predeterminada).

   Efectos:

   * Define la macro "Py_TRACE_REFS".

   * Add "sys.getobjects()" function.

   * Agrega la variable de entorno "PYTHONDUMPREFS".

   Esta compilación no es ABI compatible con la compilación de
   lanzamiento (compilación predeterminada) o la compilación de
   depuración (macros "Py_DEBUG" y "Py_REF_DEBUG").

   Nuevo en la versión 3.8.

--with-assertions

   Compila con las aserciones de C habilitadas (el valor
   predeterminado es no): "assert(...);" y "_PyObject_ASSERT(...);".

   Si se establece, la macro "NDEBUG" no está definida en la variable
   del compilador "OPT".

   Consultar también la opción "--with-pydebug" (compilación de
   depuración) que también habilita las aserciones.

   Nuevo en la versión 3.6.

--with-valgrind

   Habilite la compatibilidad con Valgrind (el valor predeterminado es
   no).

--with-dtrace

   Habilite la compatibilidad con DTrace (el valor predeterminado es
   no).

   Consultar Instrumentación de CPython con DTrace y SystemTap.

   Nuevo en la versión 3.6.

--with-address-sanitizer

   Habilita el detector de errores de memoria AddressSanitizer, "asan"
   (el valor predeterminado es no).

   Nuevo en la versión 3.6.

--with-memory-sanitizer

   Habilita el detector de errores de asignación MemorySanitizer,
   "msan" (el valor predeterminado es no).

   Nuevo en la versión 3.6.

--with-undefined-behavior-sanitizer

   Habilita el detector de comportamiento indefinido
   UndefinedBehaviorSanitizer, "ubsan" (el valor predeterminado es
   no).

   Nuevo en la versión 3.6.


3.1.7. Opciones del enlazador
-----------------------------

--enable-shared

   Habilita la compilación de una biblioteca compartida de Python
   :"libpython" (el valor predeterminado es no).

--without-static-libpython

   No compila "libpythonMAJOR.MINOR.a" y no instala "python.o"
   (compilado y habilitado de forma predeterminada).

   Nuevo en la versión 3.10.


3.1.8. Opciones de bibliotecas
------------------------------

--with-libs='lib1 ...'

   Enlace con bibliotecas adicionales (el valor predeterminado es no).

--with-system-expat

   Build the "pyexpat" module using an installed "expat" library
   (default is no).

--with-system-ffi

   Compila el módulo de extensión "_ctypes" usando la biblioteca
   instalada "ffi", consultar el módulo "ctypes" (el valor
   predeterminado es dependiente del sistema).

--with-system-libmpdec

   Compila el módulo de extensión "_decimal" usando la biblioteca
   instalada "mpdec", ver el módulo "decimal" (el valor predeterminado
   es no).

   Nuevo en la versión 3.3.

--with-readline=editline

   Utilice la biblioteca "editline" para el backend del módulo
   "readline".

   Define la macro "WITH_EDITLINE".

   Nuevo en la versión 3.10.

--without-readline

   No cree el módulo "readline" (es construido por defecto).

   No defina la macro "HAVE_LIBREADLINE".

   Nuevo en la versión 3.10.

--with-libm=STRING

   Sobreescribe la biblioteca matemática "libm" a *STRING* (el valor
   predeterminado es dependiente del sistema).

--with-libc=STRING

   Sobreescribe la biblioteca C "libc" a *STRING* (el valor
   predeterminado es dependiente del sistema).

--with-openssl=DIR

   Raíz del directorio OpenSSL.

   Nuevo en la versión 3.7.

--with-openssl-rpath=[no|auto|DIR]

   Configura el directorio de la biblioteca en tiempo de ejecución
   (rpath) para las bibliotecas OpenSSL:

   * "no" (por defecto): no establece rpath;

   * "auto": autodetecta rpath desde "--with-openssl" y "pkg-config";

   * *DIR*: establece un rpath explícito.

   Nuevo en la versión 3.10.


3.1.9. Opciones de seguridad
----------------------------

--with-hash-algorithm=[fnv|siphash13|siphash24]

   Selecciona el algoritmo hash para usar en "Python/pyhash.c":

   * "siphash13" (por defecto);

   * "siphash24";

   * "fnv".

   Nuevo en la versión 3.4.

   Nuevo en la versión 3.11: Se agrega "siphash13" y es el nuevo valor
   predeterminado.

--with-builtin-hashlib-hashes=md5,sha1,sha256,sha512,sha3,blake2

   Módulos hash incorporados:

   * "md5";

   * "sha1";

   * "sha256";

   * "sha512";

   * "sha3" (con shake);

   * "blake2".

   Nuevo en la versión 3.9.

--with-ssl-default-suites=[python|openssl|STRING]

   Sobreescribe la cadena de conjuntos de cifrado predeterminada de
   OpenSSL:

   * "python" (por defecto): usa la selección principal de Python;

   * "openssl": deja intactos los valores predeterminados de OpenSSL;

   * *STRING*: usa una cadena de caracteres personalizada

   Consultar el módulo "ssl".

   Nuevo en la versión 3.7.

   Distinto en la versión 3.10: Las configuraciones "python" y
   *STRING* también establecen TLS 1.2 como versión mínima del
   protocolo.


3.1.10. Opciones macOS
----------------------

Ver "Mac/README.rst".

--enable-universalsdk

--enable-universalsdk=SDKDIR

   Crea una compilación binaria universal. *SDKDIR* especifica qué
   macOS SDK debe usarse para realizar la compilación (el valor
   predeterminado es no).

--enable-framework

--enable-framework=INSTALLDIR

   Crear un Python.framework en lugar de una instalación Unix
   tradicional. Opcionalmente *INSTALLDIR* especifica la ruta de
   instalación (el valor predeterminado es no).

--with-universal-archs=ARCH

   Especifique el tipo de binario universal que se debe crear. Esta
   opción solo es válida cuando se establece "--enable-universalsdk".

   Opciones:

   * "universal2";

   * "32-bit";

   * "64-bit";

   * "3-way";

   * "intel";

   * "intel-32";

   * "intel-64";

   * "all".

--with-framework-name=FRAMEWORK

   Especifica el nombre del framework de Python en macOS, solo es
   válido cuando "--enable-framework" está configurada (por defecto:
   "Python").


3.1.11. Opciones de compilación cruzada
---------------------------------------

La compilación cruzada, también conocida como construcción cruzada, se
puede usar para construir Python para otra plataforma o arquitectura
de CPU. La compilación cruzada requiere un intérprete de Python para
la plataforma de compilación. La versión de Python de compilación debe
coincidir con la versión de Python host de compilación cruzada.

--build=BUILD

   configure para construir en BUILD, generalmente adivinado por
   **config.guess**.

--host=HOST

   compilación cruzada para crear programas que se ejecuten en HOST
   (plataforma de destino)

--with-build-python=path/to/python

   ruta para construir el binario "python" para compilación cruzada

   Nuevo en la versión 3.11.

CONFIG_SITE=file

   Una variable de entorno que apunta a un archivo con anulaciones de
   configuración.

   Example *config.site* file:

      # config.site-aarch64
      ac_cv_buggy_getaddrinfo=no
      ac_cv_file__dev_ptmx=yes
      ac_cv_file__dev_ptc=no

Ejemplo de compilación cruzada:

   CONFIG_SITE=config.site-aarch64 ../configure \
       --build=x86_64-pc-linux-gnu \
       --host=aarch64-unknown-linux-gnu \
       --with-build-python=../x86_64/python


3.2. Sistema de compilación Python
==================================


3.2.1. Archivos principales del sistema de compilación
------------------------------------------------------

* "configure.ac" => "configure";

* "Makefile.pre.in" => "Makefile" (creado por "configure");

* "pyconfig.h" (creado por "configure");

* "Modules/Setup": Extensiones C creadas por Makefile usando el script
  de shell "Module/makesetup";

* "setup.py": extensiones C creadas con el módulo "distutils".


3.2.2. Pasos principales de compilación
---------------------------------------

* Los archivos C (".c") se crean como archivos objeto (".o").

* La biblioteca estática "libpython" (".a") se crea a a partir de
  archivos de objetos.

* "python.o" y la biblioteca estática "libpython" están enlazadas al
  programa final "python".

* Las extensiones C son creadas por Makefile (ver "Midules/Setup") y
  "python setup.py build".


3.2.3. Objetivos principales de Makefile
----------------------------------------

* "make": Compilar Python con la biblioteca estándar.

* "make platform:": compila el programa "python", pero no construye
  los módulos de extensión de la biblioteca estándar.

* "make profile-opt": compila Python utilizando la optimización guiada
  por perfiles (PGO). Puede usar la opción de configuración "--enable-
  optimizations" para hacer que este sea el objetivo predeterminado
  del comando "make" ("make all" o simplemente "make").

* "make buildbottest": compila Python y ejecuta el conjunto de pruebas
  de Python, de la misma manera que los buildbots prueban Python.
  Configure la variable "TESTTIMEOUT" (en segundos) para cambiar el
  tiempo de espera de la prueba (1200 por defecto: 20 minutos).

* "make install": Compila e instala Python.

* "make regen-all": regenera (casi) todos los archivos generados;
  "make regen-stdlib-module-names" y "autoconf" deben ejecutarse por
  separado para los archivos generados restantes.

* "make clean": elimina los archivos compilados.

* "make distclean": Similar a "make clean", pero elimina también los
  archivos creados por el script de configuración.


3.2.4. Extensiones C
--------------------

Some C extensions are built as built-in modules, like the "sys"
module. They are built with the "Py_BUILD_CORE_BUILTIN" macro defined.
Built-in modules have no "__file__" attribute:

   >>> import sys
   >>> sys
   <module 'sys' (built-in)>
   >>> sys.__file__
   Traceback (most recent call last):
     File "<stdin>", line 1, in <module>
   AttributeError: module 'sys' has no attribute '__file__'

Other C extensions are built as dynamic libraries, like the "_asyncio"
module. They are built with the "Py_BUILD_CORE_MODULE" macro defined.
Example on Linux x86-64:

   >>> import _asyncio
   >>> _asyncio
   <module '_asyncio' from '/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'>
   >>> _asyncio.__file__
   '/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-linux-gnu.so'

"Modules/Setup" se usa para generar objetivos Makefile para compilar
extensiones C. Al principio de los archivos, las extensiones C se
crean como módulos incorporados. Las extensiones definidas después del
marcador "*shared*" se crean como bibliotecas dinámicas.

El script "setup.py" solo crea extensiones C como bibliotecas
compartidas usando el módulo "distutils".

The "PyAPI_FUNC()", "PyAPI_DATA()" and "PyMODINIT_FUNC" macros of
"Include/pyport.h" are defined differently depending if the
"Py_BUILD_CORE_MODULE" macro is defined:

* Use "Py_EXPORTED_SYMBOL" si "Py_BUILD_CORE_MODULE" es definido

* Use "Py_IMPORTED_SYMBOL" de lo contrario.

If the "Py_BUILD_CORE_BUILTIN" macro is used by mistake on a C
extension built as a shared library, its "PyInit_*xxx*()" function is
not exported, causing an "ImportError" on import.


3.3. Banderas de compilador y vinculación
=========================================

Opciones establecidas por el script "./configure" y las variables de
entorno y utilizadas por "Makefile".


3.3.1. Banderas del preprocesador
---------------------------------

CONFIGURE_CPPFLAGS

   Valor de la variable "CPPFLAGS" pasado al script "./configure".

   Nuevo en la versión 3.6.

CPPFLAGS

   (Objective) C/C++ preprocessor flags, e.g. "-I*include_dir*" if you
   have headers in a nonstandard directory *include_dir*.

   Ambos "CPPFLAGS" y "LDFLAGS" necesitan contener el valor del shell
   para setup.py para poder compilar módulos de extensión usando los
   directorios especificados en las variables de entorno.

BASECPPFLAGS

   Nuevo en la versión 3.4.

PY_CPPFLAGS

   Se agregaron indicadores de preprocesador adicionales para
   construir los archivos de objeto del intérprete.

   Por defecto: "$(BASECPPFLAGS) -I. -I$(srcdir)/Include
   $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)".

   Nuevo en la versión 3.2.


3.3.2. Banderas del compilador
------------------------------

CC

   Comando del compilador C.

   Ejemplo: "gcc -pthread".

MAINCC

   Comando del compilador de C usado para construir la función
   "main()" de programas como "python".

   Variable establecida por la opción "--with-cxx-main" del script de
   configuración.

   Por defecto: "$(CC)".

CXX

   Comando del compilador de C++.

   Se usa si se usa la opción "--with-cxx-main".

   Ejemplo: "g++ -pthread".

CFLAGS

   Banderas del compilador de C.

CFLAGS_NODIST

   "CFLAGS_NODIST" se usa para compilar el intérprete y las
   extensiones stdlib C. Úselo cuando una bandera del compilador *no*
   sea parte de distutils "CFLAGS" una vez que Python esté instalado
   (bpo-21121).

   En particular, "CFLAGS" no debe contener:

   * el indicador del compilador "-I" (para configurar la ruta de
     búsqueda de archivos de inclusión). Los indicadores "-I" se
     procesan de izquierda a derecha, y cualquier indicador en
     "CFLAGS" tendrá prioridad sobre los indicadores "-I"
     proporcionados por el usuario y el paquete.

   * banderas de endurecimiento como "-Werror" porque las
     distribuciones no pueden controlar si los paquetes instalados por
     los usuarios cumplen con estándares tan elevados.

   Nuevo en la versión 3.5.

EXTRA_CFLAGS

   Banderas adicionales del compilador de C.

CONFIGURE_CFLAGS

   Valor de la variable "CFLAGS" pasada al script "./configure".

   Nuevo en la versión 3.2.

CONFIGURE_CFLAGS_NODIST

   Valor de la variable "CFLAGS_NODIST" pasada al script
   "./configure".

   Nuevo en la versión 3.5.

BASECFLAGS

   Banderas base del compilador.

OPT

   Banderas de optimización.

CFLAGS_ALIASING

   Banderas de alias estrictos o no estrictos que se utilizan para
   compilar "Python/dtoa.c".

   Nuevo en la versión 3.7.

CCSHARED

   Banderas del compilador que se utilizan para compilar una
   biblioteca compartida.

   Por ejemplo, "-fPIC" se usa en Linux y BSD.

CFLAGSFORSHARED

   Se agregaron banderas C adicionales para compilar los archivos de
   objeto del intérprete.

   Por defecto: "$(CCSHARED)" cuando se usa "--enable-shared", o una
   cadena de caracteres vacía en caso contrario.

PY_CFLAGS

   Por defecto: "$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS)
   $(EXTRA_CFLAGS)".

PY_CFLAGS_NODIST

   Por defecto: "$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST)
   -I$(srcdir)/Include/internal".

   Nuevo en la versión 3.5.

PY_STDMODULE_CFLAGS

   Banderas de C que se utilizan para compilar los archivos de objeto
   del intérprete.

   Por defecto: "$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS)
   $(CFLAGSFORSHARED)".

   Nuevo en la versión 3.7.

PY_CORE_CFLAGS

   Por defecto: "$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE".

   Nuevo en la versión 3.2.

PY_BUILTIN_MODULE_CFLAGS

   Banderas del compilador para construir un módulo de extensión de
   biblioteca estándar como un módulo incorporado, como el módulo
   "posix".

   Por defecto: "$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN".

   Nuevo en la versión 3.8.

PURIFY

   Comando Purify. Purify es un programa de depuración de memoria.

   Por defecto: cadena de caracteres vacía (no utilizado).


3.3.3. Banderas de vinculación
------------------------------

LINKCC

   Comando de vinculación usado para compilar programas como "python"
   y "_testembed".

   Por defecto: "$(PURIFY) $(MAINCC)".

CONFIGURE_LDFLAGS

   Valor de la variable "LDFLAGS" pasada al script "./configure".

   Evite asignar "CFLAGS", "LDFLAGS", etc. así los usuarios pueden
   usarlos en la línea de comando para agregar estos valores sin pisar
   los valores preestablecidos.

   Nuevo en la versión 3.2.

LDFLAGS_NODIST

   "LDFLAGS_NODIST" se usa de la misma manera que "CFLAGS_NODIST".
   Usar cuando una bandera del enlazador *no* sea parte de distutils
   "LDFLAGS" una vez que Python esté instalado (bpo-35257).

   En particular, "LDFLAGS" no debe contener:

   * el indicador del compilador "-L" (para establecer la ruta de
     búsqueda de bibliotecas). Los indicadores "-L" se procesan de
     izquierda a derecha, y cualquier indicador en "LDFLAGS" tendrá
     prioridad sobre los indicadores "-L" proporcionados por el
     usuario y el paquete.

CONFIGURE_LDFLAGS_NODIST

   Valor de la variable "LDFLAGS_NODIST" pasado al script
   "./configure".

   Nuevo en la versión 3.8.

LDFLAGS

   Linker flags, e.g. "-L*lib_dir*" if you have libraries in a
   nonstandard directory *lib_dir*.

   Ambos "CPPFLAGS" y "LDFLAGS" necesitan contener el valor del shell
   para setup.py para poder compilar módulos de extensión usando los
   directorios especificados en las variables de entorno.

LIBS

   Banderas de vinculación para pasar bibliotecas al vinculador al
   enlazar el ejecutable de Python.

   Ejemplo: "-lrt".

LDSHARED

   Comando para construir una biblioteca compartida.

   Por defecto: "@LDSHARED@ $(PY_LDFLAGS)".

BLDSHARED

   Comando para compilar la biblioteca compartida "libpython".

   Por defecto: "@BLDSHARED@ $(PY_CORE_LDFLAGS)".

PY_LDFLAGS

   Por defecto: "$(CONFIGURE_LDFLAGS) $(LDFLAGS)".

PY_LDFLAGS_NODIST

   Por defecto: "$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)".

   Nuevo en la versión 3.8.

PY_CORE_LDFLAGS

   Banderas de vinculación que se utilizan para crear los archivos de
   objeto del intérprete.

   Nuevo en la versión 3.8.
