cc_common

Informar um problema Mostrar fonte Noite · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

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

Membros

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ório
Configuração do recurso a ser consultado.
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 configuramos os recursos.
language string; ou None o padrão é None
A linguagem a ser configurada 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 incompatí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 de 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 sinalização de um recurso.

Argumentos:

name: o nome do recurso. É possível introduzir um recurso sem mudar o Bazel adicionando um "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 de ações ocorre pela mesma semântica dos atributos: um recurso pode "require" 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 essa 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 uma 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 da 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. Por exemplo: “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 das ferramentas.

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 do make que é acessível para as regras.
builtin_sysroot string; ou None o padrão é None
O sysroot integrado. Se esse atributo não estiver presente, o Bazel não vai 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 use.

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 este destino
system_includes o padrão é unbound
Conjunto de caminhos de pesquisa para arquivos de cabeçalho referenciados por sinais de maior e menor, ou seja, #include <foo/bar/header.h>. Eles podem ser relativos à raiz de execução ou absolutos. Normalmente passado com -isystem
includes o padrão é unbound
Conjunto de caminhos de pesquisa para arquivos de cabeçalho referenciados por colchete angular e aspas.Normalmente, passado 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 objetos.
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 compilação.
feature_configuration obrigatório
Configuração do recurso a ser consultado.
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_inefficiency_command_line. Assim, o autor do conjunto de ferramentas poderá especificar e posicionar as flags do compilador corretamente.
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
Remoção de diretórios "include".
quote_include_directories depset; ou None o padrão é None
Diretórios de inclusão de aspas.
system_include_directories depset; ou None o padrão é None
Remoção dos diretórios incluídos do sistema.
framework_include_directories depset; ou None o padrão é None
A dependência do framework inclui diretórios.
preprocessor_defines depset; ou None o padrão é None
A desativação do pré-processador define.
thinlto_index string; ou None o padrão é None
Caminho do arquivo de índice da LTO.
thinlto_input_bitcode_file string; ou None o padrão é None
Arquivo de bitcode que é inserido no back-end de LTO.
thinlto_output_object_file string; ou None o padrão é None
Arquivo de objeto 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 utilizado.
variables_extension dict; o padrão é unbound
Um dicionário de variáveis adicionais usadas por 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 obrigatório
objeto actions.
feature_configuration o padrão é None
feature_configuration para ser consultado.
cc_toolchain o padrão é 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 Arquivo ou None o padrão é None
File da biblioteca de imagens estática 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 Arquivo ou None o padrão é None
File da biblioteca de interfaces a ser vinculada.
pic_objects Sequência de Files; o padrão é unbound
Experimental, não usar
objects Sequência de Files; 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 é ''
Substituir 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 compilação.
obrigatório
Configuração do recurso a ser consultado.
None ou depset o padrão é None
Remoção de diretórios em que o vinculador procurará bibliotecas no momento da vinculação.
None ou depset o padrão é None
Remoção dos diretórios em que o carregador vai procurar bibliotecas no momento da execução.
None ou sequência; o padrão é None
Lista de sinalizações de link adicionais (linkopts).
o padrão é None
Caminho do arquivo de saída opcional.
o padrão é None
Caminho opcional do arquivo de parâmetro.
o padrão é None
Caminho de arquivo .def opcional.
o padrão é True
"True" ao usar o vinculador, "False" 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
True ao criar uma biblioteca dinâmica, False 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 definido como "False", o Bazel expõe "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 definido como verdadeiro, "is_cc_test" será definida.
o padrão é True
Não utilizado.

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 de usuários 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
Remoção 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)

É usada para criar regras de biblioteca que possam propagar informações downstream a fim de serem vinculadas depois 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 obrigatório
objeto actions.
feature_configuration obrigatório
feature_configuration para ser consultado.
cc_toolchain obrigatório
CcToolchainInfo provedor a 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
Isso é 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
Indica se a 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ório
Configuração do recurso a ser consultado.
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ório
Crie variáveis a serem usadas para 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ório
Configuração do recurso a ser consultado.
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ório
Configuração do recurso a ser consultado.
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ório
Crie variáveis 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ório
Configuração do recurso a ser consultado.
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ório
Configuração do recurso a ser consultado.
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 obrigatório
objeto actions.
feature_configuration obrigatório
feature_configuration para ser consultado.
cc_toolchain obrigatório
CcToolchainInfo provedor a ser usado.
compilation_outputs CcCompilationOutputs; ou None o padrão é None
Saídas de compilação contendo arquivos de objeto a serem vinculados.
o padrão é []
Lista adicional de opções do vinculador.
linking_contexts o padrão é []
Vinculação de contextos de dependências que serão vinculados ao contexto de vinculação gerado por esta regra.
name obrigatório
Isso é 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 "dynamic_library".
o padrão é True
Verdadeiro para vincular dependências estaticamente e Falso dinamicamente.
stamp o padrão é 0
Indica se informações de compilação 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 é []