cc_common

Informar um problema Mostrar fonte

Utilitários para compilação, vinculação e geração de linha de comando em C++.

Participantes

action_is_enabled

bool cc_common.action_is_enabled(feature_configuration, action_name)

Retorna "True" se o action_config estiver ativado na configuração do recurso.

Parâmetros

Parâmetro Descrição
feature_configuration obrigatória
Configuração de recursos a ser consultada.
action_name obrigatório
Nome do action_config.

CcToolchainInfo

Provider cc_common.CcToolchainInfo

A chave usada para recuperar o provedor que contém informações sobre o conjunto de ferramentas C++ que está sendo usado.

configure_features

FeatureConfiguration cc_common.configure_features(ctx=None, cc_toolchain, language=None, requested_features=[], unsupported_features=[])

Cria uma instância feature_configuration. Requer o fragmento de configuração do cpp.

Parâmetros

Parâmetro Descrição
ctx ctx; ou None; o padrão é None.
O contexto da regra.
cc_toolchain obrigatório
cc_Dataset em que os recursos são configurados.
language string; ou None; o padrão é None
O idioma a ser configurado para: c++ ou objc (c++ padrão)
requested_features o padrão é []
Lista de recursos a serem ativados.
unsupported_features o padrão é []
Lista de recursos que não são compatíveis com a regra atual.

create_cc_toolchain_config_info

CcToolchainConfigInfo cc_common.create_cc_toolchain_config_info(ctx, features=[], action_configs=[], artifact_name_patterns=[], cxx_builtin_include_directories=[], toolchain_identifier, host_system_name=None, target_system_name, target_cpu, target_libc, compiler, abi_version=None, abi_libc_version=None, tool_paths=[], make_variables=[], builtin_sysroot=None, cc_target_os=None)

Cria um provedor CcToolchainConfigInfo

Parâmetros

Parâmetro Descrição
ctx obrigatório
O contexto da regra.
features o padrão é []
Contém todas as especificações de flag de um recurso.

Argumentos:

name: o nome do recurso. É possível introduzir um recurso sem uma mudança no Bazel adicionando uma seção "feature" ao conjunto de ferramentas e adicionando a string correspondente como recurso no arquivo BUILD.

enabled: se "Verdadeiro", este recurso será ativado, a menos que um tipo de regra o marque explicitamente como não compatível.

flag_sets: uma lista FlagSet. Se o recurso for ativado, os conjuntos de sinalizações serão aplicados para as ações para as quais foram especificadas.

env_sets: uma lista de EnvSet. Se o recurso for ativado, os conjuntos de ambientes serão aplicados às ações para as quais foram especificados.

requires: uma lista de conjuntos de recursos que definem quando esse recurso é compatível com o conjunto de ferramentas. O recurso terá suporte se qualquer um dos conjuntos de recursos for totalmente aplicado, ou seja, quando todos os recursos de um conjunto estiverem ativados. Se requires for omitido, o recurso será compatível independentemente de quais outros recursos estiverem ativados. Use isso, por exemplo, para filtrar flags dependendo do modo de build ativado (opt / fastbuild / dbg).

implies: uma lista de strings de recursos ou configurações de ação que são ativados automaticamente quando esse recurso é ativado. Se um dos recursos implícitos ou as configurações de ação não puderem ser ativados, esse recurso também não será ativado (silenciosamente).

provides: uma lista de nomes com que o recurso está em conflito.

Não será possível ativar um recurso se:
- provides tiver o nome de outro recurso ou configuração de ação que queremos ativar.
- provides contém o mesmo valor de "fornece" em uma configuração de recurso ou ação diferente que queremos ativar. Use esse método para garantir que recursos incompatíveis não sejam ativados acidentalmente ao mesmo tempo, o que dificulta o diagnóstico de erros do compilador.
action_configs o padrão é []
Uma configuração de ação corresponde a uma ação do Bazel e permite a seleção de uma ferramenta com base nos recursos ativados. A ativação da configuração da ação ocorre pela mesma semântica dos atributos: um recurso pode "solicitar" ou "implicar" uma configuração de ação da mesma forma que faria com outro recurso.

Argumentos:

action_name: o nome da ação do Bazel a que esta configuração se aplica, por exemplo, "c-compile" ou "c-module-compile".

enabled: se for "True", esta ação será ativada, a menos que um tipo de regra a marque explicitamente como não compatível.

tools: a ferramenta aplicada à ação será a primeira com um conjunto de recursos que corresponda à configuração do recurso. Um erro será gerado se nenhuma ferramenta corresponder a uma configuração de recurso fornecida. Por isso, é uma boa ideia fornecer uma ferramenta padrão com um conjunto de recursos vazio.

flag_sets: se a configuração de ação especificada estiver ativada, os conjuntos de sinalizações serão aplicados à ação correspondente.

implies: uma lista de recursos ou configurações de ação que são ativados automaticamente quando essa configuração de ação é ativada. Se algum dos recursos implícitos ou configurações de ação não puder ser ativado, essa configuração de ação também não será ativada (silenciosamente).

artifact_name_patterns o padrão é []
O nome de um artefato de determinada categoria de artefatos de entrada ou saída para uma ação.

Argumentos:

category_name: a categoria de artefatos a que essa seleção se aplica. Esse campo é comparado com uma lista de categorias definidas no Bazel. Exemplos de categorias incluem "linked_output" ou o artefato dessa seleção. Com a extensão, ela é usada para criar um nome de artefato com base no nome do destino.

extension: a extensão para criar o artefato para esta seleção. Junto com o prefixo, ele é usado para criar um nome de artefato baseado no nome do destino.

cxx_builtin_include_directories o padrão é []

Diretórios de inclusão integrados para compilação em C++. Esses devem ser os caminhos exatos usados pelo compilador e geralmente são relativos à raiz de execução.

Os caminhos usados pelo compilador podem ser determinados por 'gcc -E -xc++ - -v'.

No momento, também usamos os caminhos C++ para a compilação em C, o que é seguro, desde que não haja conflitos de nome entre os arquivos de cabeçalho C++ e C.

Os caminhos relativos são resolvidos em relação ao diretório do arquivo de configuração.

Se o compilador tiver suporte a --sysroot, esses caminhos devem usar %sysroot% em vez do caminho de inclusão e especificar o atributo sysroot para fornecer ao blaze as informações necessárias para fazer as substituições corretas.

toolchain_identifier obrigatório

O identificador exclusivo do conjunto de ferramentas na versão do crosstool. Deve ser possível usá-lo como um nome de diretório em um caminho.

Ele precisa corresponder ao seguinte regex: [a-zA-Z_][\.\- \w]*

host_system_name string; ou None; o padrão é None
Ignorado.
target_system_name obrigatório
O nome do sistema GNU.
target_cpu obrigatório
A string da arquitetura de destino.
target_libc obrigatório
A string da versão da libc (por exemplo, "glibc-2.2.2").
compiler obrigatório
A string da versão do compilador (por exemplo, "gcc-4.1.1").
abi_version string; ou None; o padrão é None
A abi em uso, que é uma versão gcc. E.g.: “gcc-3.4”
abi_libc_version string; ou None; o padrão é None
é a versão da glibc usada pela abi que estamos usando.
tool_paths o padrão é []
Locais da ferramenta.

Argumentos:

name: nome da ferramenta.

path: localização da ferramenta. Pode ser um caminho absoluto (no caso de um conjunto de ferramentas não hermético) ou um caminho relativo para o pacote do cc_Dataset.

make_variables o padrão é []
Uma variável "make" que fica acessível para as regras.
builtin_sysroot string ou None. O padrão é None
. A sysroot integrada. Se esse atributo não estiver presente, o Bazel não permitirá o uso de uma sysroot diferente, ou seja, com a opção --grte_top.
cc_target_os string; ou None; o padrão é None
Somente para uso interno. Não usar.

create_compilation_context

CompilationContext cc_common.create_compilation_context(headers=unbound, system_includes=unbound, includes=unbound, quote_includes=unbound, framework_includes=unbound, defines=unbound, local_defines=unbound)

Cria uma CompilationContext.

Parâmetros

Parâmetro Descrição
headers o padrão é unbound
Conjunto de cabeçalhos necessários para compilar esse destino
system_includes padrão é unbound
Conjunto de caminhos de pesquisa para arquivos de cabeçalho referenciados por colchetes angulares, ou seja, #include <foo/bar/header.h>. Eles podem ser relativos à raiz de execução ou absolutos. Normalmente passado com -isystem
includes padrão é unbound
Conjunto de caminhos de pesquisa para arquivos de cabeçalho referenciados por colchete angular e aspas. Normalmente, é transmitido com -I.
quote_includes o padrão é unbound
Conjunto de caminhos de pesquisa para arquivos de cabeçalho referenciados por aspas, ou seja, #include "foo/bar/header.h". Eles podem ser relativos à raiz de execução ou absolutos. Normalmente passado com -iquote
framework_includes o padrão é unbound
Conjunto de caminhos de pesquisa de framework para arquivos de cabeçalho (somente na plataforma Apple)
defines o padrão é unbound
Conjunto de definições necessárias para compilar esse destino. Cada definição é uma string. Propagada de forma transitiva para dependentes.
local_defines o padrão é unbound
Conjunto de definições necessárias para compilar esse destino. Cada definição é uma string. Não propagados de forma transitiva para dependentes.

create_compilation_outputs

CcCompilationOutputs cc_common.create_compilation_outputs(objects=None, pic_objects=None)

Cria o objeto de saídas de compilação.

Parâmetros

Parâmetro Descrição
objects depset ou None; o padrão é None
Lista de arquivos de objeto.
pic_objects depset ou None; o padrão é None
Lista de arquivos de objeto pic.

create_compile_variables

Variables cc_common.create_compile_variables(cc_toolchain, feature_configuration, source_file=None, output_file=None, user_compile_flags=None, include_directories=None, quote_include_directories=None, system_include_directories=None, framework_include_directories=None, preprocessor_defines=None, thinlto_index=None, thinlto_input_bitcode_file=None, thinlto_output_object_file=None, use_pic=False, add_legacy_cxx_options=False, variables_extension=unbound)

Retorna variáveis usadas para ações de compilação.

Parâmetros

Parâmetro Descrição
cc_toolchain obrigatório
cc_Dataset para o qual estamos criando variáveis de build.
feature_configuration obrigatória
Configuração de recursos a ser consultada.
source_file o padrão é None
Arquivo de origem opcional para a compilação. Prefira transmitir o arquivo source_file aqui em vez de anexá-lo ao final da linha de comando gerada por cc_common.get_memory_inefficient_command_line, já que o autor do conjunto de ferramentas pode especificar e posicionar corretamente as flags do compilador.
output_file o padrão é None
Arquivo de saída opcional da compilação. Prefira transmitir o output_file aqui em vez de anexá-lo ao final da linha de comando gerada por cc_common.get_memory_in performance_command_line, já que o autor do conjunto de ferramentas já pode especificar e posicionar corretamente as flags do compilador.
user_compile_flags sequência de strings ou None. O padrão é None
Lista de outras flags de compilação (copts).
include_directories depset; ou None; o padrão é None
Depset de diretórios de inclusão.
quote_include_directories depset; ou None; o padrão é None
O conjunto de diretórios de inclusão de aspas.
system_include_directories depset; ou None; o padrão é None
O conjunto de diretórios de inclusão do sistema.
framework_include_directories depset; ou None; o padrão é None
Depset de diretórios de inclusão do framework.
preprocessor_defines depset; ou None; o padrão é None
O conjunto de pré-processador define.
thinlto_index string ou None; o padrão é None
caminho do arquivo de índice LTO.
thinlto_input_bitcode_file string; ou None; o padrão é None
. Arquivo de bitcode de entrada para o back-end de LTO.
thinlto_output_object_file string; ou None; o padrão é None
. Arquivo de objeto que é gerado pelo back-end de LTO.
use_pic O padrão é False
Quando verdadeiro, a compilação gera um código independente de posição.
add_legacy_cxx_options o padrão é False
Não usado.
variables_extension dict; o padrão é unbound.
Um dicionário de variáveis extras usado pelas ações de compilação.

LibraryToLink cc_common.create_library_to_link(actions, feature_configuration=None, cc_toolchain=None, static_library=None, pic_static_library=None, dynamic_library=None, interface_library=None, pic_objects=unbound, objects=unbound, alwayslink=False, dynamic_library_symlink_path='', interface_library_symlink_path='')

Cria LibraryToLink

Parâmetros

Parâmetro Descrição
actions objeto
actions obrigatório.
feature_configuration o padrão é None
feature_configuration para ser consultado.
cc_toolchain O padrão é o provedor None
CcToolchainInfo a ser usado.
static_library Arquivo; ou None; o padrão é None
File da biblioteca estática a ser vinculada.
pic_static_library File; ou None; o padrão é None
File da biblioteca estática de imagens a ser vinculada.
dynamic_library Arquivo ou None. O padrão é None
File da biblioteca dinâmica a ser vinculada. Sempre usado para o ambiente de execução e para vinculação se interface_library não for transmitido.
interface_library File; ou None; o padrão é None
File da biblioteca de interface a ser vinculada.
pic_objects sequência de arquivos. O padrão é unbound
Experimental, não usar
objects sequência de arquivos. O padrão é unbound
Experimental, não usar
o padrão é False
Define se a biblioteca/objetos estáticos serão vinculados no bloco --whole_archive.
string; o padrão é ''
Modifique o caminho padrão do link da biblioteca dinâmica no diretório solib. String em branco para usar o padrão.
o padrão é ''
Substitua o caminho padrão do link da biblioteca de interface no diretório solib. String em branco para usar o padrão.

Variables cc_common.create_link_variables(cc_toolchain, feature_configuration, library_search_directories=None, runtime_library_search_directories=None, user_link_flags=None, output_file=None, param_file=None, def_file=None, is_using_linker=True, is_linking_dynamic_library=False, must_keep_debug=True, use_test_only_flags=False, is_static_linking_mode=True)

Retorna variáveis de vinculação usadas para ações de vinculação.

Parâmetros

Parâmetro Descrição
obrigatório
cc_Dataset para o qual estamos criando variáveis de build.
obrigatória
Configuração de recursos a ser consultada.
None; ou depset; o padrão é None
Conjunto de diretórios em que o vinculador procurará bibliotecas no momento da vinculação.
None ou depset; o padrão é None
Conjunto de diretórios em que o carregador procurará por bibliotecas no momento da execução.
None; ou Sequence; o padrão é None
Lista de outras flags de vinculação (linkopts).
o padrão é None
Caminho do arquivo de saída opcional.
o padrão é None
Caminho do arquivo de parâmetro opcional.
o padrão é None
Caminho de arquivo .def opcional.
o padrão é True
Verdadeiro ao usar o vinculador, "Falso" ao usar o arquivador. O autor da chamada é responsável por manter isso sincronizado com o nome da ação usado (is_using_linker = True para vincular a biblioteca executável ou dinâmica, is_using_linker = False para arquivamento da biblioteca estática).
o padrão é False
Verdadeiro ao criar uma biblioteca dinâmica, "Falso" quando uma biblioteca executável ou estática. O autor da chamada é responsável por manter isso sincronizado com o nome da ação usado. Este campo será removido assim que b/65151735 for corrigido.
o padrão é True
Quando definida como falsa, o bazel expõe a variável "strip_debug_symbols", que geralmente é usada para usar o vinculador para remover símbolos de depuração do arquivo de saída.
o padrão é False
Quando definida como verdadeira, a variável "is_cc_test" é definida.
o padrão é True
Não usado.

create_linker_input

LinkerInput cc_common.create_linker_input(owner, libraries=None, user_link_flags=None, additional_inputs=None)

Cria uma LinkerInput.

Parâmetros

Parâmetro Descrição
owner obrigatório
O rótulo do destino que produziu todos os arquivos usados nesta entrada.
libraries None ou depset; o padrão é None
Lista de LibraryToLink.
None ou depset de strings; ou sequência de stringss. O padrão é None
Sinalizações de links do usuário transmitidas como strings. Aceita [String], [[String]] ou depset(String). O último método não é recomendado, já que é mantido apenas para fins de compatibilidade, e o conjunto é nivelado. Se você quiser propagar user_link_flags por meio de depsets() sem nivelamento, una-as em um LinkerInput para que não sejam niveladas até o final.
additional_inputs None; ou depset; o padrão é None
Para entradas adicionais para a ação de vinculação, por exemplo: scripts de vinculação.

create_linking_context

LinkingContext cc_common.create_linking_context(linker_inputs=None, libraries_to_link=None, user_link_flags=None, additional_inputs=None)

Cria uma LinkingContext.

Parâmetros

Parâmetro Descrição
linker_inputs None; ou depset; o padrão é None
Depset de LinkerInput.
None; ou sequência; o padrão é None
Descontinuado. Esse parâmetro está obsoleto e será removido em breve. Não dependa disso. Ele está desativado com --+incompatible_require_linker_input_cc_api. Use essa sinalização para verificar se seu código é compatível com a remoção iminente.
Lista com LibraryToLink.
None; ou sequência; o padrão é None
Descontinuado. Esse parâmetro está obsoleto e será removido em breve. Não dependa disso. Ele está desativado com --+incompatible_require_linker_input_cc_api. Use essa sinalização para verificar se seu código é compatível com a remoção iminente.
Lista de sinalizações de links de usuários transmitidas como strings.
additional_inputs None; ou sequência; o padrão é None
Descontinuado. Esse parâmetro está obsoleto e será removido em breve. Não dependa disso. Ele está desativado com --+incompatible_require_linker_input_cc_api. Use essa sinalização para verificar se seu código é compatível com a remoção iminente.
Para entradas adicionais para a ação de vinculação, por exemplo: scripts de vinculação.

create_linking_context_from_compilation_outputs

tuple cc_common.create_linking_context_from_compilation_outputs(actions, feature_configuration, cc_toolchain, compilation_outputs, user_link_flags=[], linking_contexts=[], name, language='c++', alwayslink=False, additional_inputs=[], disallow_static_libraries=False, disallow_dynamic_library=False)

É usado para criar regras de biblioteca que possam propagar informações downstream a fim de serem vinculadas mais tarde por uma regra de nível superior que faça vinculação transitiva para criar uma biblioteca executável ou dinâmica. Retorna a tupla de (CcLinkingContext, CcLinkingOutputs).

Parâmetros

Parâmetro Descrição
actions objeto
actions obrigatório.
feature_configuration necessário
feature_configuration para ser consultado.
cc_toolchain necessário
CcToolchainInfo provedor para ser usado.
compilation_outputs obrigatório
Saídas de compilação contendo arquivos de objeto a serem vinculados.
o padrão é []
Lista adicional de opções de vinculação.
linking_contexts o padrão é []
Bibliotecas de dependências. Essas bibliotecas serão vinculadas ao artefato de saída da chamada link(), seja um binário ou uma biblioteca.
name obrigatório
Ele é usado para nomear os artefatos de saída das ações criadas por esse método.
language o padrão é 'c++'
No momento, só há suporte para C++. Não use esse parâmetro.
o padrão é False.
Define se essa biblioteca precisa estar sempre vinculada.
additional_inputs o padrão é []
Para entradas adicionais para a ação de vinculação, por exemplo: scripts de vinculação.
disallow_static_libraries o padrão é False
Define se bibliotecas estáticas precisam ser criadas.
disallow_dynamic_library o padrão é False
Define se uma biblioteca dinâmica precisa ser criada.

do_not_use_tools_cpp_compiler_present

None cc_common.do_not_use_tools_cpp_compiler_present

Não use este campo, ele apenas ajuda na migração de config_setting.values{'compiler') para config_settings.flag_values{'@bazel_tools//tools/cpp:compiler'}

get_environment_variables

dict cc_common.get_environment_variables(feature_configuration, action_name, variables)

Retorna variáveis de ambiente a serem definidas para determinada ação.

Parâmetros

Parâmetro Descrição
feature_configuration obrigatória
Configuração de recursos a ser consultada.
action_name obrigatório
Nome da ação. Precisa ser um dos nomes em @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl)
variables obrigatórios
Variáveis de build a serem usadas na expansão de modelo.

get_execution_requirements

sequence cc_common.get_execution_requirements(feature_configuration, action_name)

Retorna os requisitos de execução para uma determinada ação.

Parâmetros

Parâmetro Descrição
feature_configuration obrigatória
Configuração de recursos a ser consultada.
action_name obrigatório
Nome da ação. Precisa ser um dos nomes em @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl)

get_memory_inefficient_command_line

sequence cc_common.get_memory_inefficient_command_line(feature_configuration, action_name, variables)

Retorna sinalizações de linha de comando simplificadas para determinada ação, usando variáveis fornecidas para expansão. Nivela conjuntos aninhados e, idealmente, não deve ser usado, ou pelo menos não deve sobreviver à análise. O trabalho na função eficiente de memória que retorna Args está em andamento.

Parâmetros

Parâmetro Descrição
feature_configuration obrigatória
Configuração de recursos a ser consultada.
action_name obrigatório
Nome da ação. Precisa ser um dos nomes em @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl)
variables obrigatórios
Variáveis de build a serem usadas para expansões de modelo.

get_tool_for_action

string cc_common.get_tool_for_action(feature_configuration, action_name)

Retorna o caminho da ferramenta para uma ação específica.

Parâmetros

Parâmetro Descrição
feature_configuration obrigatória
Configuração de recursos a ser consultada.
action_name obrigatório
Nome da ação. Precisa ser um dos nomes em @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl)

is_enabled

bool cc_common.is_enabled(feature_configuration, feature_name)

Retorna "True" se um determinado recurso está ativado na configuração do recurso.

Parâmetros

Parâmetro Descrição
feature_configuration obrigatória
Configuração de recursos a ser consultada.
feature_name obrigatório
Nome do recurso.

CcLinkingOutputs cc_common.link(actions, feature_configuration, cc_toolchain, compilation_outputs=None, user_link_flags=[], linking_contexts=[], name, language='c++', output_type='executable', link_deps_statically=True, stamp=0, additional_inputs=[], additional_outputs=unbound)

Deve ser usado para vinculação transitiva de C++.

Parâmetros

Parâmetro Descrição
actions objeto
actions obrigatório.
feature_configuration necessário
feature_configuration para ser consultado.
cc_toolchain necessário
CcToolchainInfo provedor para ser usado.
compilation_outputs CcCompilationOutputs; ou None; o padrão é None
Saídas de compilação que contêm arquivos de objetos a serem vinculados.
o padrão é []
Lista adicional de opções do vinculador.
linking_contexts o padrão é []
Vincular contextos de dependências a serem vinculados ao contexto de vinculação gerado por esta regra.
name obrigatório
Ele é usado para nomear os artefatos de saída das ações criadas por esse método.
language o padrão é 'c++'
No momento, só há suporte para C++. Não use esse parâmetro.
output_type o padrão é 'executable'.
Pode ser "executável" ou "dinâmica_biblioteca".
o padrão é True
Verdadeiro para vincular dependências estaticamente e Falso dinamicamente.
stamp o padrão é 0
Define se informações de build serão incluídas no executável vinculado, se output_type for "executável". Se 1, as informações da versão serão sempre incluídas. Se 0 (as informações de build padrão são sempre excluídas. Se for -1, usa o comportamento padrão, que pode ser substituído pela sinalização --[no]stamp. Essa definição precisa ser deixada sem definição (ou definida como 0) ao gerar a saída executável para regras de teste.
additional_inputs sequência; ou depset; o padrão é []
Para entradas adicionais para a ação de vinculação, por exemplo: scripts de vinculação.
additional_outputs Sequência; o padrão é unbound
Para saídas adicionais para a ação de vinculação, por exemplo: arquivos de mapa.

merge_compilation_contexts

CompilationContext cc_common.merge_compilation_contexts(compilation_contexts=[])

Mescla vários CompilationContextss em um.

Parâmetros

Parâmetro Descrição
compilation_contexts o padrão é []
Lista de CompilationContextss a serem mescladas. Os cabeçalhos de cada contexto serão exportados pelos campos diretos no provedor retornado.

merge_compilation_outputs

CcCompilationOutputs cc_common.merge_compilation_outputs(compilation_outputs=[])

Mesclar saídas de compilação.

Parâmetros

Parâmetro Descrição
compilation_outputs o padrão é []