# 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/zoneinfo:/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`: Build Python with the standard library.

- `make platform:`: build the `python` program, but don’t build the standard library extension modules.

- `make profile-opt`: build Python using Profile Guided Optimization (PGO). You can use the configure `--enable-optimizations` option to make this the default target of the `make` command (`make all` or just `make`).

- `make buildbottest`: Build Python and run the Python test suite, the same way than buildbots test Python. Set `TESTTIMEOUT` variable (in seconds) to change the test timeout (1200 by default: 20 minutes).

- `make install`: Build and install Python.

- `make regen-all`: Regenerate (almost) all generated files; `make regen-stdlib-module-names` and `autoconf` must be run separately for the remaining generated files.

- `make clean`: Remove built files.

- `make distclean`: Same than `make clean`, but remove also files created by the configure script.

### 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. `-Iinclude_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. `-Llib_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.