3. Configurando o Python
************************


3.1. Opções de configuração
===========================

Liste todas as opções do "./configure" usando:

   ./configure --help

Veja também o "Misc/SpecialBuilds.txt" na distribuição de código-fonte
do Python.


3.1.1. Opções gerais
--------------------

--enable-loadable-sqlite-extensions

   Suporte a extensões carregáveis no módulo de extensão "_sqlite" (o
   padrão é não) do módulo "sqlite3".

   Veja o método "sqlite3.Connection.enable_load_extension()" do
   módulo "sqlite3".

   Novo na versão 3.6.

--disable-ipv6

   Desabilita suporte a IPv6 (habilitado por padrão se houver
   suporte), veja o módulo "socket".

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

   Define o tamanho em bits dos dígitos de "int" do Python: 15 ou 30
   bits.

   Por padrão, o tamanho dos dígitos é 30.

   Define o "PYLONG_BITS_IN_DIGIT" para "15" ou "30".

   Veja "sys.int_info.bits_per_digit".

--with-cxx-main

--with-cxx-main=COMPILER

   Compila a função "main()" do Python e vincula o executável do
   Python ao compilador C++: "$CXX" ou *COMPILER* se especificado.

--with-suffix=SUFFIX

   Define o sufixo do executável do Python para *SUFFIX*.

   O sufixo padrão é ".exe" no Windows e macOS (executável
   "python.exe"), ".js" em nó Emscripten, ".html" em navegador
   Emscripten, ".wasm" em WASI e uma string vazia em outras
   plataformas (executável "python").

   Alterado na versão 3.11: O sufixo padrão na plataforma WASM é um
   entre ".js", ".html" ou ".wasm"

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

   Seleciona o caminho de pesquisa de fuso horário padrão para
   "zoneinfo.TZPATH". Veja a Configuração de tempo de compilação do
   módulo "zoneinfo".

   Padrão: "/usr/share/zoneinfo:/usr/lib/zoneinfo:/usr/share/lib/zone
   info:/etc/zoneinfo".

   Veja o separador de caminhos "os.pathsep".

   Novo na versão 3.9.

--without-decimal-contextvar

   Constrói o módulo de extensão "_decimal" usando um contexto local
   de thread ao invés de um contexto local de corrotina (padrão), veja
   o módulo "decimal".

   Veja "decimal.HAVE_CONTEXTVAR" e o módulo "contextvars".

   Novo na versão 3.9.

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

   Substitui a ordem de verificação de backends de banco de dados para
   o módulo "dbm"

   Um valor válido é uma string separada por dois pontos (":") com os
   nomes de backend:

   * "ndbm";

   * "gdbm";

   * "bdb".

--without-c-locale-coercion

   Desabilita a coerção de localidade C para uma localidade baseada em
   UTF-8 (ativada por padrão).

   Não define a macro "PY_COERCE_C_LOCALE".

   Consulte "PYTHONCOERCECLOCALE" e a **PEP 538**.

--with-platlibdir=DIRNAME

   Nome do diretório da biblioteca Python (o padrão é "lib").

   Fedora e SuSE usam "lib64" em plataformas de 64 bits.

   Veja "sys.platlibdir".

   Novo na versão 3.9.

--with-wheel-pkg-dir=PATH

   Diretório de pacotes de wheel usados pelo módulo "ensurepip"
   (nenhum por padrão).

   Algumas políticas de empacotamento de distribuição do Linux
   recomendam contra o empacotamento de dependências. Por exemplo, o
   Fedora instala pacotes wheel no diretório "/usr/share/python-
   wheels/" e não instala o pacote "ensurepip._bundled".

   Novo na versão 3.10.

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

   Se o configure deve usar **pkg-config** para detectar dependências
   de construção.

   * "check" (padrão): **pkg-config** é opcional

   * "yes": **pkg-config** é obrigatório

   * "no": configure não usa **pkg-config** mesmo quando presente

   Novo na versão 3.11.

--enable-pystats

   Ativa a coleta de estatísticas internas.

   The statistics will be dumped to a arbitrary (probably unique) file
   in "/tmp/py_stats/", or "C:\temp\py_stats\" on Windows.

   Use "Tools/scripts/summarize_stats.py" para ler as estatísticas.

   Novo na versão 3.11.


3.1.2. Opções de WebAssembly
----------------------------

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

   Define o "sabor" de construção para "wasm32-emscripten".

   * "browser" (padrão): pré-carrega stdlib mínima, MEMFS padrão.

   * "node": suporte a NODERAWFS e pthread.

   Novo na versão 3.11.

--enable-wasm-dynamic-linking

   Ativa o suporte de vinculação dinâmica para WASM.

   A vinculação dinâmica permite "dlopen". O tamanho do arquivo
   executável aumenta devido à eliminação limitada de código morto e
   recursos adicionais.

   Novo na versão 3.11.

--enable-wasm-pthreads

   Ativa o suporte a pthreads para WASM.

   Novo na versão 3.11.


3.1.3. Opções de instalação
---------------------------

--prefix=PREFIX

   Instala arquivos independentes de arquitetura em PREFIX. No Unix, o
   padrão é "/usr/local".

   Este valor pode ser recuperado em tempo de execução usando
   "sys.prefix".

   Como exemplo, pode-se usar "--prefix="$HOME/.local/"" para instalar
   um Python em seu diretório pessoal (home).

--exec-prefix=EPREFIX

   Instala arquivos dependentes de arquitetura no EPREFIX, o padrão é
   "--prefix".

   Este valor pode ser recuperado em tempo de execução usando
   "sys.exec_prefix".

--disable-test-modules

   Não constrói nem instala módulos de teste, como o pacote "test" ou
   o módulo de extensão "_testcapi" (construído e instalado por
   padrão).

   Novo na versão 3.10.

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

   Seleciona o comando "ensurepip" executado na instalação do Python:

   * "upgrade" (padrão): executa o comando "python -m ensurepip
     --altinstall --upgrade".

   * "install": executa o comando "python -m ensurepip --altinstall";

   * "no": não executa ensurepip;

   Novo na versão 3.6.


3.1.4. Opções de desempenho
---------------------------

Configuring Python using "--enable-optimizations --with-lto" (PGO +
LTO) is recommended for best performance.

--enable-optimizations

   Habilita a otimização guiada por perfil (PGO, do inglês Profile
   Guided Optimization) usando "PROFILE_TASK" (desabilitado por
   padrão).

   O compilador C Clang requer o programa "llvm-profdata" para PGO. No
   macOS, o GCC também exige: o GCC é apenas um apelido para o Clang
   no macOS.

   Desabilita também a interposição semântica no libpython se "--
   enable-shared" e GCC forem usados: adiciona "-fno-semantic-
   interposition" aos sinalizadores do compilador e do vinculador.

   Novo na versão 3.6.

   Alterado na versão 3.10: Usa "-fno-semantic-interposition" no GCC.

PROFILE_TASK

   Variável de ambiente usada no Makefile: argumentos de linha de
   comando do Python para a tarefa de geração de PGO.

   Padrão: "-m test --pgo --timeout=$(TESTTIMEOUT)".

   Novo na versão 3.8.

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

   Habilita o otimização em tempo de vinculação (LTO, do inglês Link
   Time Optimization) em qualquer construção (desabilitado por
   padrão).

   O compilador C Clang requer "llvm-ar" para LTO ("ar" no macOS), bem
   como um vinculador compatível com LTO ("ld.gold" ou "lld").

   Novo na versão 3.6.

   Novo na versão 3.11: Para usar o recurso ThinLTO, use "--with-
   lto=thin" no Clang.

--with-computed-gotos

   Habilita "gotos" computados no laço de avaliação (habilitado por
   padrão em compiladores suportados).

--without-pymalloc

   Desabilita o alocador de memória especializado do Python pymalloc
   (habilitado por padrão).

   Veja também a variável de ambiente "PYTHONMALLOC".

--without-doc-strings

   Desabilita as strings de documentação estática para reduzir o
   consumo de memória (habilitado por padrão). As strings de
   documentação definidas em Python não são afetadas.

   Não define a macro "WITH_DOC_STRINGS".

   Veja a macro "PyDoc_STRVAR()".

--enable-profiling

   Habilita o perfil de código a nível C com "gprof" (desabilitado por
   padrão).


3.1.5. Compilação de depuração do Python
----------------------------------------

Uma compilação de depuração é Python compilada com a opção de
configuração "--with-pydebug".

Efeitos de uma compilação de depuração:

* Exibe todos os avisos por padrão: a lista de filtros de aviso padrão
  está vazia no módulo "warnings".

* Adiciona "d" a "sys.abiflags".

* Adiciona a função "sys.gettotalrefcount()".

* Adiciona a opção de linha de comando "-X showrefcount".

* Add "PYTHONTHREADDEBUG" environment variable.

* Adiciona suporte para a variável "__lltrace__": habilita o
  rastreamento de baixo nível no laço de avaliação de bytecode se a
  variável estiver definida.

* Instala ganchos de depuração nos alocadores de memória para detectar
  estouro de buffer e outros erros de memória.

* Define as macros "Py_DEBUG" e "Py_REF_DEBUG".

* Adiciona verificações de tempo de execução: código cercado por
  "#ifdef Py_DEBUG" e "#endif". Habilita as asserções "assert(...)" e
  "_PyObject_ASSERT(...)": não define a macro "NDEBUG" (veja também a
  configuração "--with-assertions" opção). Principais verificações de
  tempo de execução:

  * Adiciona verificações de sanidade nos argumentos da função.

  * Objetos Unicode e int são criados com sua memória preenchida com
    um padrão para detectar o uso de objetos não inicializados.

  * Garante que as funções que podem limpar ou substituir a exceção
    atual não sejam chamadas com uma exceção levantada.

  * Verifica se as funções desalocadoras não alteram a exceção atual.

  * O coletor de lixo (função "gc.collect()") executa algumas
    verificações básicas na consistência dos objetos.

  * A macro "Py_SAFE_DOWNCAST()" verifica o underflow e o overflow de
    inteiros ao fazer o downcast de tipos largos para tipos estreitos.

Veja também o Modo de Desenvolvimento do Python e a opção de
configuração "--with-trace-refs".

Alterado na versão 3.8: Compilações de lançamento e compilações de
depuração agora são compatíveis com ABI: definir a macro "Py_DEBUG"
não implica mais na macro "Py_TRACE_REFS" (consulte a opção "--with-
trace-refs"), que apresenta a única incompatibilidade de ABI.


3.1.6. Opções de depuração
--------------------------

--with-pydebug

   Construção de depuração do Python: define a macro "Py_DEBUG"
   (desabilitada por padrão).

--with-trace-refs

   Habilita referências de rastreamento para fins de depuração
   (desabilitado por padrão).

   Efeitos:

   * Define a macro "Py_TRACE_REFS".

   * Adiciona a função "sys.getobjects()".

   * Adiciona a variável de ambiente "PYTHONDUMPREFS".

   Esta construção não é compatível com ABI com a construção de
   lançamento (construção padrão) ou construção de depuração (macros
   "Py_DEBUG" e "Py_REF_DEBUG").

   Novo na versão 3.8.

--with-assertions

   Constrói com asserções C habilitadas (o padrão é não):
   "assert(...);" e "_PyObject_ASSERT(...);".

   Se definido, a macro "NDEBUG" não é definida na variável do
   compilador "OPT".

   Veja também a opção "--with-pydebug" (construção de depuração) que
   também habilita asserções.

   Novo na versão 3.6.

--with-valgrind

   Habilita suporte ao Valgrind (o padrão é não).

--with-dtrace

   Habilita suporte ao DTrace (o padrão é não).

   Veja Instrumentando o CPython com DTrace e SystemTap.

   Novo na versão 3.6.

--with-address-sanitizer

   Habilita o detector de erros de memória AddressSanitizer, "asan" (o
   padrão é não).

   Novo na versão 3.6.

--with-memory-sanitizer

   Habilita o detector de erros de alocação do MemorySanitizer, "msan"
   (o padrão é não).

   Novo na versão 3.6.

--with-undefined-behavior-sanitizer

   Habilita o detector de comportamento indefinido
   UndefinedBehaviorSanitizer, "ubsan" (o padrão é não).

   Novo na versão 3.6.


3.1.7. Opções da ligação
------------------------

--enable-shared

   Habilita a construção de uma biblioteca Python compartilhada:
   "libpython" (o padrão é não).

--without-static-libpython

   Não constrói "libpythonMAJOR.MINOR.a" e não instala "python.o"
   (construído e habilitado por padrão).

   Novo na versão 3.10.


3.1.8. Opções da biblioteca
---------------------------

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

   Vincula bibliotecas adicionais (o padrão é não).

--with-system-expat

   Constrói o módulo "pyexpat" usando uma biblioteca "expat" instalada
   (o padrão é não).

--with-system-ffi

   Build the "_ctypes" extension module using an installed "ffi"
   library, see the "ctypes" module (default is system-dependent).

--with-system-libmpdec

   Constrói o módulo de extensão "_decimal" usando uma biblioteca
   "mpdec" instalada, veja o módulo "decimal" (o padrão é não).

   Novo na versão 3.3.

--with-readline=editline

   Usa a biblioteca "editline" para backend do módulo "readline".

   Define a macro "WITH_EDITLINE".

   Novo na versão 3.10.

--without-readline

   Não constrói o módulo "readline" (construído por padrão).

   Não define a macro "HAVE_LIBREADLINE".

   Novo na versão 3.10.

--with-libm=STRING

   Substitui a biblioteca matemática "libm" por *STRING* (o padrão
   depende do sistema).

--with-libc=STRING

   Substitui a biblioteca C "libc" por *STRING* (o padrão depende do
   sistema).

--with-openssl=DIR

   Raiz do diretório OpenSSL.

   Novo na versão 3.7.

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

   Define o diretório da biblioteca de tempo de execução (rpath) para
   bibliotecas OpenSSL:

   * "no" (padrão): não define o rpath;

   * "auto": detecta automaticamente o rpath de "--with-openssl" e
     "pkg-config";

   * *DIR*: define um rpath explícito.

   Novo na versão 3.10.


3.1.9. Opções de segurança
--------------------------

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

   Seleciona o algoritmo de hash para usar em "Python/pyhash.c":

   * "siphash13" (padrão);

   * "siphash24";

   * "fnv".

   Novo na versão 3.4.

   Novo na versão 3.11: "siphash13" é adicionado e é o novo padrão.

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

   Módulos embutidos de hash

   * "md5";

   * "sha1";

   * "sha256";

   * "sha512";

   * "sha3" (com shake);

   * "blake2".

   Novo na versão 3.9.

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

   Substitui a string dos conjuntos de criptografia padrão do OpenSSL:

   * "python" (padrão): use a seleciona preferida do Python;

   * "openssl": mantém inalterados os padrões do OpenSSL;

   * *STRING*: usa uma string personalizada

   Veja o módulo "ssl".

   Novo na versão 3.7.

   Alterado na versão 3.10: As configurações "python" e *STRING*
   também definem TLS 1.2 como versão mínima do protocolo.


3.1.10. Opções do macOS
-----------------------

Veja "Mac/README.rst".

--enable-universalsdk

--enable-universalsdk=SDKDIR

   Cria uma construção binária universal. *SDKDIR* especifica qual SDK
   do macOS deve ser usado para executar a construção (o padrão é
   não).

--enable-framework

--enable-framework=INSTALLDIR

   Cria um Python.framework em vez de uma instalação tradicional do
   Unix. O *INSTALLDIR* opcional especifica o caminho de instalação (o
   padrão é não).

--with-universal-archs=ARCH

   Especifica o tipo de binário universal que deve ser criado. Esta
   opção só é válida quando "--enable-universalsdk" está definido.

   Opções:

   * "universal2";

   * "32-bit";

   * "64-bit";

   * "3-way";

   * "intel";

   * "intel-32";

   * "intel-64";

   * "all".

--with-framework-name=FRAMEWORK

   Especifica o nome do framework python no macOS válido apenas quando
   "--enable-framework" está definido (padrão: "Python").


3.1.11. Opções de compilação cruzada
------------------------------------

A compilação cruzada, também conhecida como construção cruzada, pode
ser usada para construir Python para outra arquitetura ou plataforma
de CPU. A compilação cruzada requer um interpretador Python para a
plataforma de construção. A versão do Python para construção deve
corresponder à versão do Python da compilação cruzada do host.

--build=BUILD

   configura para construir em BUILD, geralmente adivinhado por
   **config.guess**.

--host=HOST

   faz compilação cruzada para construir programas para executar no
   HOST (plataforma de destino)

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

   caminho para construir o binário "python" para compilação cruzada

   Novo na versão 3.11.

CONFIG_SITE=file

   Uma variável de ambiente que aponta para um arquivo com
   substituições de configuração.

   Exemplo de arquivo *config.site*:

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

Exemplo de compilação 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 Construção Python
=================================


3.2.1. Arquivos principais do sistema de construção
---------------------------------------------------

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

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

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

* "Modules/Setup": Extensões C construídas pelo Makefile usando o
  shell script "Module/makesetup";

* "setup.py": C extensions built using the "distutils" module.


3.2.2. Principais etapas de construção
--------------------------------------

* Arquivos C (".c") são construídos como arquivos objeto (".o").

* Uma biblioteca estática "libpython" (".a") é criada a partir de
  arquivos de objetos.

* "python.o" e a biblioteca estática "libpython" estão vinculadas ao
  programa final "python".

* C extensions are built by the Makefile (see "Modules/Setup") and
  "python setup.py build".


3.2.3. Alvos principais do Makefile
-----------------------------------

* "make": Constrói o Python com a biblioteca padrão.

* "make platform:": constrói o programa "python", mas não constrói os
  módulos de extensão da biblioteca padrão.

* : constrói "make profile-opt" o Python usando otimização guiada por
  perfil (ou Profile Guided Optimization -- PGO). Você pode usar a
  opção "--enable-optimizations" do configure para tornar este o alvo
  padrão do comando "make" ("make all" ou apenas "make").

* "make buildbottest": Constrói o Python e executa o conjunto de
  testes do Python, da mesma forma que os buildbots testam o Python.
  Defina a variável "TESTTIMEOUT" (em segundos) para alterar o tempo
  limite do teste (1200 por padrão: 20 minutos).

* "make install": Constrói e instala o Python.

* "make regen-all": Regenera (quase) todos os arquivos gerados; "make
  regen-stdlib-module-names" e "autoconf" deve ser executado
  separadamente para os arquivos gerados restantes.

* "make clean": Remove os arquivos construídos.

* "make distclean": Mesmo que "make clean", mas também remove arquivos
  criados pelo script de configuração.


3.2.4. Extensões C
------------------

Algumas extensões C são construídas como módulos embutidos, como o
módulo "sys". Eles são construídos com a macro "Py_BUILD_CORE_BUILTIN"
definida. Módulos embutidos não possuem nenhum atributo "__file__":

   >>> 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__'

Outras extensões C são construídas como bibliotecas dinâmicas, como o
módulo "_asyncio". Eles são construídos com a macro
"Py_BUILD_CORE_MODULE" definida. Exemplo no 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" é usado para gerar alvos Makefile para construir
extensões C. No início dos arquivos, as extensões C são construídas
como módulos embutidos. Extensões definidas após o marcador "*shared*"
são construídas como bibliotecas dinâmicas.

The "setup.py" script only builds C extensions as shared libraries
using the "distutils" module.

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:

* Usa "Py_EXPORTED_SYMBOL" se "Py_BUILD_CORE_MODULE" estiver definido

* Do contrário, usa "Py_IMPORTED_SYMBOL".

Se a macro "Py_BUILD_CORE_BUILTIN" for usada por engano em uma
extensão C construída como uma biblioteca compartilhada, sua função
"PyInit_*xxx*()" não será exportada, causando um "ImportError" na
importação.


3.3. Sinalizadores do compilador e do vinculador
================================================

Opções definidas pelo script "./configure" e variáveis de ambiente e
usadas por "Makefile".


3.3.1. Sinalizadores do pré-processador
---------------------------------------

CONFIGURE_CPPFLAGS

   Valor da variável "CPPFLAGS" passado para o script "./configure".

   Novo na versão 3.6.

CPPFLAGS

   Sinalizadores de pré-processador C++ / (Objective) C, p.ex.
   "-I*include_dir*" se você tiver cabeçalhos em um diretório não
   padrão *include_dir*.

   Both "CPPFLAGS" and "LDFLAGS" need to contain the shell's value for
   setup.py to be able to build extension modules using the
   directories specified in the environment variables.

BASECPPFLAGS

   Novo na versão 3.4.

PY_CPPFLAGS

   Sinalizadores extras de pré-processador adicionados para construir
   os arquivos de objeto do interpretador.

   Padrão: "$(BASECPPFLAGS) -I. -I$(srcdir)/Include
   $(CONFIGURE_CPPFLAGS) $(CPPFLAGS)".

   Novo na versão 3.2.


3.3.2. Sinalizadores do compilador
----------------------------------

CC

   Comando do compilador C.

   Exemplo: "gcc -pthread".

MAINCC

   C compiler command used to build the "main()" function of programs
   like "python".

   Variable set by the "--with-cxx-main" option of the configure
   script.

   Default: "$(CC)".

CXX

   Comando do compilador C++.

   Used if the "--with-cxx-main" option is used.

   Exemplo: "g++ -pthread".

CFLAGS

   Sinalizadores do compilador C.

CFLAGS_NODIST

   "CFLAGS_NODIST" is used for building the interpreter and stdlib C
   extensions.  Use it when a compiler flag should *not* be part of
   the distutils "CFLAGS" once Python is installed (bpo-21121).

   Em particular, "CFLAGS" não deve conter:

   * o sinalizador do compilador "-I" (para definir o caminho de
     pesquisa para arquivos incluídos). Os sinalizadores "-I" são
     processadas da esquerda para a direita, e quaisquer sinalizadores
     em "CFLAGS" terão precedência sobre os sinalizadores "-I"
     fornecidos pelo usuário e pelo pacote.

   * sinalizadores de segurança como "-Werror" porque as distribuições
     não podem controlar se os pacotes instalados pelos usuários estão
     em conformidade com esses padrões elevados.

   Novo na versão 3.5.

EXTRA_CFLAGS

   Sinalizadores extra do compilador C.

CONFIGURE_CFLAGS

   Valor da variável "CFLAGS" passado para o script "./configure".

   Novo na versão 3.2.

CONFIGURE_CFLAGS_NODIST

   Valor da variável "CFLAGS_NODIST" passado para o script
   "./configure".

   Novo na versão 3.5.

BASECFLAGS

   Sinalizadores base do compilador.

OPT

   Sinalizadores de otimização.

CFLAGS_ALIASING

   Sinalizadores de alias estritos ou não estritos usados para
   compilar "Python/dtoa.c".

   Novo na versão 3.7.

CCSHARED

   Sinalizadores de compilador usados para construir uma biblioteca
   compartilhada.

   Por exemplo, "-fPIC" é usado no Linux e no BSD.

CFLAGSFORSHARED

   Sinalizadores extras de C adicionados para construir os arquivos de
   objeto do interpretador.

   Padrão: "$(CCSHARED)" quando "--enable-shared" é usado, ou uma
   string vazia caso contrário.

PY_CFLAGS

   Padrão: "$(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS)
   $(EXTRA_CFLAGS)".

PY_CFLAGS_NODIST

   Padrão: "$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST)
   -I$(srcdir)/Include/internal".

   Novo na versão 3.5.

PY_STDMODULE_CFLAGS

   Sinalizadores do C usados para construir os arquivos de objeto do
   interpretador.

   Padrão: "$(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS)
   $(CFLAGSFORSHARED)".

   Novo na versão 3.7.

PY_CORE_CFLAGS

   Padrão: "$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE".

   Novo na versão 3.2.

PY_BUILTIN_MODULE_CFLAGS

   Sinalizadores do compilador para construir um módulo de extensão de
   biblioteca padrão como um módulo embutido, como o módulo "posix".

   Padrão: "$(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN".

   Novo na versão 3.8.

PURIFY

   Comando de Purify. Purify é um programa depurador de memória.

   Padrão: string vazia (não usada).


3.3.3. Sinalizadores do vinculador
----------------------------------

LINKCC

   Comando do vinculador usado para construir programas como "python"
   e "_testembed".

   Default: "$(PURIFY) $(MAINCC)".

CONFIGURE_LDFLAGS

   Valor da variável "LDFLAGS" passado para o script "./configure".

   Evite atribuir "CFLAGS", "LDFLAGS", etc. para que os usuários
   possam usá-los na linha de comando para anexar a esses valores sem
   pisotear os valores predefinidos.

   Novo na versão 3.2.

LDFLAGS_NODIST

   "LDFLAGS_NODIST" is used in the same manner as "CFLAGS_NODIST".
   Use it when a linker flag should *not* be part of the distutils
   "LDFLAGS" once Python is installed (bpo-35257).

   Em particular, "LDFLAGS" não deve conter:

   * o sinalizador do compilador "-L" (para definir o caminho de
     pesquisa para arquivos incluídos). Os sinalizadores "-L" são
     processadas da esquerda para a direita, e quaisquer sinalizadores
     em "LDFLAGS" terão precedência sobre os sinalizadores "-L"
     fornecidos pelo usuário e pelo pacote.

CONFIGURE_LDFLAGS_NODIST

   Valor da variável "LDFLAGS_NODIST" passado para o script
   "./configure".

   Novo na versão 3.8.

LDFLAGS

   Sinalizadores do vinculador, p.ex. "-L*lib_dir*", se você tiver
   bibliotecas em um diretório não padrão *lib_dir*.

   Both "CPPFLAGS" and "LDFLAGS" need to contain the shell's value for
   setup.py to be able to build extension modules using the
   directories specified in the environment variables.

LIBS

   Sinalizadores do vinculador para passar bibliotecas para o
   vinculador ao vincular o executável Python.

   Exemplo: "-lrt".

LDSHARED

   Comando para construir uma biblioteca compartilhada.

   Padrão: "@LDSHARED@ $(PY_LDFLAGS)".

BLDSHARED

   Comando para construir a biblioteca compartilhada "libpython".

   Padrão: "@BLDSHARED@ $(PY_CORE_LDFLAGS)".

PY_LDFLAGS

   Padrão: "$(CONFIGURE_LDFLAGS) $(LDFLAGS)".

PY_LDFLAGS_NODIST

   Padrão: "$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST)".

   Novo na versão 3.8.

PY_CORE_LDFLAGS

   Sinalizadores de vinculador usados para construir os arquivos de
   objeto do interpretador.

   Novo na versão 3.8.
