Members
- action_is_enabled
- CcToolchainInfo
- compile
- configure_features
- create_cc_toolchain_config_info
- create_compilation_context
- create_compilation_outputs
- create_compile_variables
- create_library_to_link
- create_link_variables
- create_linker_input
- create_linking_context
- create_linking_context_from_compilation_outputs
- do_not_use_tools_cpp_compiler_present
- get_environment_variables
- get_execution_requirements
- get_memory_inefficient_command_line
- get_tool_for_action
- is_enabled
- link
- merge_compilation_contexts
- merge_compilation_outputs
action_is_enabled
bool cc_common.action_is_enabled(feature_configuration, action_name)
Parameters
| Parameter | Description |
|---|---|
feature_configuration
|
required Feature configuration to be queried. |
action_name
|
required Name of the action_config. |
CcToolchainInfo
Provider cc_common.CcToolchainInfo
compile
tuple cc_common.compile(actions, feature_configuration, cc_toolchain, srcs=[], public_hdrs=[], private_hdrs=[], includes=[], quote_includes=[], system_includes=[], framework_includes=[], defines=[], local_defines=[], include_prefix='', strip_include_prefix='', user_compile_flags=[], compilation_contexts=[], name, disallow_pic_outputs=False, disallow_nopic_outputs=False, additional_inputs=[])
CompilationContext, CcCompilationOutputs).
Parameters
| Parameter | Description |
|---|---|
actions
|
requiredactions object.
|
feature_configuration
|
requiredfeature_configuration to be queried.
|
cc_toolchain
|
requiredCcToolchainInfo provider to be used.
|
srcs
|
default is []The list of source files to be compiled. |
public_hdrs
|
default is []List of headers needed for compilation of srcs and may be included by dependent rules transitively. |
private_hdrs
|
default is []List of headers needed for compilation of srcs and NOT to be included by dependent rules. |
includes
|
sequence; or depset;
default is []Search paths for header files referenced both by angle bracket and quotes. Usually passed with -I. Propagated to dependents transitively. |
quote_includes
|
default is []Search paths for header files referenced by quotes, e.g. #include "foo/bar/header.h". They can be either relative to the exec root or absolute. Usually passed with -iquote. Propagated to dependents transitively. |
system_includes
|
default is []Search paths for header files referenced by angle brackets, e.g. #include <foo/bar/header.h>. They can be either relative to the exec root or absolute. Usually passed with -isystem. Propagated to dependents transitively. |
framework_includes
|
default is []Search paths for header files from Apple frameworks. They can be either relative to the exec root or absolute. Usually passed with -F. Propagated to dependents transitively. |
defines
|
default is []Set of defines needed to compile this target. Each define is a string. Propagated to dependents transitively. |
local_defines
|
default is []Set of defines needed to compile this target. Each define is a string. Not propagated to dependents transitively. |
include_prefix
|
default is ''The prefix to add to the paths of the headers of this rule. When set, the headers in the hdrs attribute of this rule are accessible at is the value of this attribute prepended to their repository-relative path. The prefix in the strip_include_prefix attribute is removed before this prefix is added. |
strip_include_prefix
|
default is ''The prefix to strip from the paths of the headers of this rule. When set, the headers in the hdrs attribute of this rule are accessible at their path with this prefix cut off. If it's a relative path, it's taken as a package-relative one. If it's an absolute one, it's understood as a repository-relative path. The prefix in the include_prefix attribute is added after this prefix is stripped. |
user_compile_flags
|
default is []Additional list of compilation options. |
compilation_contexts
|
default is []Headers from dependencies used for compilation. |
name
|
required This is used for naming the output artifacts of actions created by this method. See also the `main_output` arg. |
disallow_pic_outputs
|
default is FalseWhether PIC outputs should be created. |
disallow_nopic_outputs
|
default is FalseWhether NOPIC outputs should be created. |
additional_inputs
|
default is []List of additional files needed for compilation of srcs |
configure_features
FeatureConfiguration cc_common.configure_features(ctx=None, cc_toolchain, language=None, requested_features=[], unsupported_features=[])
Parameters
| Parameter | Description |
|---|---|
ctx
|
ctx; or None;
default is NoneThe rule context. |
cc_toolchain
|
required cc_toolchain for which we configure features. |
language
|
string; or None;
default is NoneThe language to configure for: either c++ or objc (default c++) |
requested_features
|
default is []List of features to be enabled. |
unsupported_features
|
default is []List of features that are unsupported by the current rule. |
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)
CcToolchainConfigInfo provider
Parameters
| Parameter | Description |
|---|---|
ctx
|
required The rule context. |
features
|
default is []Contains all flag specifications for one feature. Arguments:
provides contains the name of a different feature or action config that we want to enable.- provides contains the same value as a 'provides' in a different feature or action config that we want to enable. Use this in order to ensure that incompatible features cannot be accidentally activated at the same time, leading to hard to diagnose compiler errors.
|
action_configs
|
default is []An action config corresponds to a Bazel action, and allows selection of a tool based on activated features. Action config activation occurs by the same semantics as features: a feature can 'require' or 'imply' an action config in the same way that it would another feature. Arguments:
|
artifact_name_patterns
|
default is []The name for an artifact of a given category of input or output artifacts to an action. Arguments:
|
cxx_builtin_include_directories
|
default is []Built-in include directories for C++ compilation. These should be the exact paths used by the compiler, and are generally relative to the exec root. The paths used by the compiler can be determined by 'gcc -E -xc++ - -v'. We currently use the C++ paths also for C compilation, which is safe as long as there are no name clashes between C++ and C header files. Relative paths are resolved relative to the configuration file directory. If the compiler has --sysroot support, then these paths should use %sysroot% rather than the include path, and specify the sysroot attribute in order to give blaze the information necessary to make the correct replacements. |
toolchain_identifier
|
required The unique identifier of the toolchain within the crosstool release. It must be possible to use this as a directory name in a path. It has to match the following regex: [a-zA-Z_][\.\- \w]* |
host_system_name
|
string; or None;
default is NoneIgnored. |
target_system_name
|
required The GNU System Name. |
target_cpu
|
required The target architecture string. |
target_libc
|
required The libc version string (e.g. "glibc-2.2.2"). |
compiler
|
required The compiler version string (e.g. "gcc-4.1.1"). |
abi_version
|
string; or None;
default is NoneThe abi in use, which is a gcc version. E.g.: "gcc-3.4" |
abi_libc_version
|
string; or None;
default is NoneThe glibc version used by the abi we're using. |
tool_paths
|
default is []Tool locations. Arguments:
|
make_variables
|
default is []A make variable that is made accessible to rules. |
builtin_sysroot
|
string; or None;
default is NoneThe built-in sysroot. If this attribute is not present, Bazel does not allow using a different sysroot, i.e. through the --grte_top option. |
cc_target_os
|
string; or None;
default is NoneInternal purpose only, do not 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)
CompilationContext.
Parameters
| Parameter | Description |
|---|---|
headers
|
default is unboundSet of headers needed to compile this target |
system_includes
|
default is unboundSet of search paths for header files referenced by angle brackets, i.e. #include <foo/bar/header.h>. They can be either relative to the exec root or absolute. Usually passed with -isystem |
includes
|
default is unboundSet of search paths for header files referenced both by angle bracket and quotes.Usually passed with -I |
quote_includes
|
default is unboundSet of search paths for header files referenced by quotes, i.e. #include "foo/bar/header.h". They can be either relative to the exec root or absolute. Usually passed with -iquote |
framework_includes
|
default is unboundSet of framework search paths for header files (Apple platform only) |
defines
|
default is unboundSet of defines needed to compile this target. Each define is a string. Propagated transitively to dependents. |
local_defines
|
default is unboundSet of defines needed to compile this target. Each define is a string. Not propagated transitively to dependents. |
create_compilation_outputs
CcCompilationOutputs cc_common.create_compilation_outputs(objects=None, pic_objects=None)
Parameters
| Parameter | Description |
|---|---|
objects
|
depset; or None;
default is NoneList of object files. |
pic_objects
|
depset; or None;
default is NoneList of pic object files. |
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)
Parameters
| Parameter | Description |
|---|---|
cc_toolchain
|
required cc_toolchain for which we are creating build variables. |
feature_configuration
|
required Feature configuration to be queried. |
source_file
|
default is NoneOptional source file for the compilation. Please prefer passing source_file here over appending it to the end of the command line generated from cc_common.get_memory_inefficient_command_line, as then it's in the power of the toolchain author to properly specify and position compiler flags. |
output_file
|
default is NoneOptional output file of the compilation. Please prefer passing output_file here over appending it to the end of the command line generated from cc_common.get_memory_inefficient_command_line, as then it's in the power of the toolchain author to properly specify and position compiler flags. |
user_compile_flags
|
sequence of strings; or None;
default is NoneList of additional compilation flags (copts). |
include_directories
|
depset; or None;
default is NoneDepset of include directories. |
quote_include_directories
|
depset; or None;
default is NoneDepset of quote include directories. |
system_include_directories
|
depset; or None;
default is NoneDepset of system include directories. |
framework_include_directories
|
depset; or None;
default is NoneDepset of framework include directories. |
preprocessor_defines
|
depset; or None;
default is NoneDepset of preprocessor defines. |
thinlto_index
|
string; or None;
default is NoneLTO index file path. |
thinlto_input_bitcode_file
|
string; or None;
default is NoneBitcode file that is input to LTO backend. |
thinlto_output_object_file
|
string; or None;
default is NoneObject file that is output by LTO backend. |
use_pic
|
default is FalseWhen true the compilation will generate position independent code. |
add_legacy_cxx_options
|
default is FalseUnused. |
variables_extension
|
dict;
default is unboundA dictionary of additional variables used by compile actions. |
create_library_to_link
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='')
LibraryToLink
Parameters
| Parameter | Description |
|---|---|
actions
|
requiredactions object.
|
feature_configuration
|
default is Nonefeature_configuration to be queried.
|
cc_toolchain
|
default is NoneCcToolchainInfo provider to be used.
|
static_library
|
File; or None;
default is NoneFile of static library to be linked.
|
pic_static_library
|
File; or None;
default is NoneFile of pic static library to be linked.
|
dynamic_library
|
File; or None;
default is NoneFile of dynamic library to be linked. Always used for runtime and used for linking if interface_library is not passed.
|
interface_library
|
File; or None;
default is NoneFile of interface library to be linked.
|
pic_objects
|
sequence of Files;
default is unboundExperimental, do not use |
objects
|
sequence of Files;
default is unboundExperimental, do not use |
alwayslink
|
default is FalseWhether to link the static library/objects in the --whole_archive block. |
dynamic_library_symlink_path
|
string;
default is ''Override the default path of the dynamic library link in the solib directory. Empty string to use the default. |
interface_library_symlink_path
|
default is ''Override the default path of the interface library link in the solib directory. Empty string to use the default. |
create_link_variables
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)
Parameters
| Parameter | Description |
|---|---|
cc_toolchain
|
required cc_toolchain for which we are creating build variables. |
feature_configuration
|
required Feature configuration to be queried. |
library_search_directories
|
None; or depset;
default is NoneDepset of directories where linker will look for libraries at link time. |
runtime_library_search_directories
|
None; or depset;
default is NoneDepset of directories where loader will look for libraries at runtime. |
user_link_flags
|
None; or sequence;
default is NoneList of additional link flags (linkopts). |
output_file
|
default is NoneOptional output file path. |
param_file
|
default is NoneOptional param file path. |
def_file
|
default is NoneOptional .def file path. |
is_using_linker
|
default is TrueTrue when using linker, False when archiver. Caller is responsible for keeping this in sync with action name used (is_using_linker = True for linking executable or dynamic library, is_using_linker = False for archiving static library). |
is_linking_dynamic_library
|
default is FalseTrue when creating dynamic library, False when executable or static library. Caller is responsible for keeping this in sync with action name used. This field will be removed once b/65151735 is fixed. |
must_keep_debug
|
default is TrueWhen set to False, bazel will expose 'strip_debug_symbols' variable, which is usually used to use the linker to strip debug symbols from the output file. |
use_test_only_flags
|
default is FalseWhen set to true, 'is_cc_test' variable will be set. |
is_static_linking_mode
|
default is TrueUnused. |
create_linker_input
LinkerInput cc_common.create_linker_input(owner, libraries=None, user_link_flags=None, additional_inputs=None)
LinkerInput.
Parameters
| Parameter | Description |
|---|---|
owner
|
required The label of the target that produced all files used in this input. |
libraries
|
None; or depset;
default is NoneList of LibraryToLink.
|
user_link_flags
|
None; or depset of strings; or sequence of strings;
default is NoneUser link flags passed as strings. Accepts either [String], [[String]] or depset(String). The latter is discouraged as it's only kept for compatibility purposes, the depset is flattened. If you want to propagate user_link_flags via unflattened depsets() wrap them in a LinkerInput so that they are not flattened till the end. |
additional_inputs
|
None; or depset;
default is NoneFor additional inputs to the linking action, e.g.: linking scripts. |
create_linking_context
LinkingContext cc_common.create_linking_context(linker_inputs=None, libraries_to_link=None, user_link_flags=None, additional_inputs=None)
LinkingContext.
Parameters
| Parameter | Description |
|---|---|
linker_inputs
|
None; or depset;
default is NoneDepset of LinkerInput.
|
libraries_to_link
|
None; or sequence;
default is NoneDeprecated. This parameter is deprecated and will be removed soon. Please do not depend on it. It is disabled with --+incompatible_require_linker_input_cc_api. Use this flag to verify your code is compatible with its imminent removal. List of LibraryToLink.
|
user_link_flags
|
None; or sequence;
default is NoneDeprecated. This parameter is deprecated and will be removed soon. Please do not depend on it. It is disabled with --+incompatible_require_linker_input_cc_api. Use this flag to verify your code is compatible with its imminent removal. List of user link flags passed as strings. |
additional_inputs
|
None; or sequence;
default is NoneDeprecated. This parameter is deprecated and will be removed soon. Please do not depend on it. It is disabled with --+incompatible_require_linker_input_cc_api. Use this flag to verify your code is compatible with its imminent removal. For additional inputs to the linking action, e.g.: linking scripts. |
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)
CcLinkingContext, CcLinkingOutputs).
Parameters
| Parameter | Description |
|---|---|
actions
|
requiredactions object.
|
feature_configuration
|
requiredfeature_configuration to be queried.
|
cc_toolchain
|
requiredCcToolchainInfo provider to be used.
|
compilation_outputs
|
required Compilation outputs containing object files to link. |
user_link_flags
|
default is []Additional list of linking options. |
linking_contexts
|
default is []Libraries from dependencies. These libraries will be linked into the output artifact of the link() call, be it a binary or a library. |
name
|
required This is used for naming the output artifacts of actions created by this method. |
language
|
default is 'c++'Only C++ supported for now. Do not use this parameter. |
alwayslink
|
default is FalseWhether this library should always be linked. |
additional_inputs
|
default is []For additional inputs to the linking action, e.g.: linking scripts. |
disallow_static_libraries
|
default is FalseWhether static libraries should be created. |
disallow_dynamic_library
|
default is FalseWhether a dynamic library should be created. |
do_not_use_tools_cpp_compiler_present
None cc_common.do_not_use_tools_cpp_compiler_presentget_environment_variables
dict cc_common.get_environment_variables(feature_configuration, action_name, variables)
Parameters
| Parameter | Description |
|---|---|
feature_configuration
|
required Feature configuration to be queried. |
action_name
|
required Name of the action. Has to be one of the names in @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl) |
variables
|
required Build variables to be used for template expansion. |
get_execution_requirements
sequence cc_common.get_execution_requirements(feature_configuration, action_name)
Parameters
| Parameter | Description |
|---|---|
feature_configuration
|
required Feature configuration to be queried. |
action_name
|
required Name of the action. Has to be one of the names in @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)
Parameters
| Parameter | Description |
|---|---|
feature_configuration
|
required Feature configuration to be queried. |
action_name
|
required Name of the action. Has to be one of the names in @bazel_tools//tools/build_defs/cc:action_names.bzl (https://github.com/bazelbuild/bazel/blob/master/tools/build_defs/cc/action_names.bzl) |
variables
|
required Build variables to be used for template expansions. |
get_tool_for_action
string cc_common.get_tool_for_action(feature_configuration, action_name)
Parameters
| Parameter | Description |
|---|---|
feature_configuration
|
required Feature configuration to be queried. |
action_name
|
required Name of the action. Has to be one of the names in @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)
Parameters
| Parameter | Description |
|---|---|
feature_configuration
|
required Feature configuration to be queried. |
feature_name
|
required Name of the feature. |
link
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)
Parameters
| Parameter | Description |
|---|---|
actions
|
requiredactions object.
|
feature_configuration
|
requiredfeature_configuration to be queried.
|
cc_toolchain
|
requiredCcToolchainInfo provider to be used.
|
compilation_outputs
|
CcCompilationOutputs; or None;
default is NoneCompilation outputs containing object files to link. |
user_link_flags
|
default is []Additional list of linker options. |
linking_contexts
|
default is []Linking contexts from dependencies to be linked into the linking context generated by this rule. |
name
|
required This is used for naming the output artifacts of actions created by this method. |
language
|
default is 'c++'Only C++ supported for now. Do not use this parameter. |
output_type
|
default is 'executable'Can be either 'executable' or 'dynamic_library'. |
link_deps_statically
|
default is TrueTrue to link dependencies statically, False dynamically. |
stamp
|
default is 0Whether to include build information in the linked executable, if output_type is 'executable'. If 1, build information is always included. If 0 (the default build information is always excluded. If -1, uses the default behavior, which may be overridden by the --[no]stamp flag. This should be unset (or set to 0) when generating the executable output for test rules. |
additional_inputs
|
sequence; or depset;
default is []For additional inputs to the linking action, e.g.: linking scripts. |
additional_outputs
|
sequence;
default is unboundFor additional outputs to the linking action, e.g.: map files. |
merge_compilation_contexts
CompilationContext cc_common.merge_compilation_contexts(compilation_contexts=[])
CompilationContextss into one.
Parameters
| Parameter | Description |
|---|---|
compilation_contexts
|
default is []List of CompilationContextss to be merged. The headers of each context will be exported by the direct fields in the returned provider.
|
merge_compilation_outputs
CcCompilationOutputs cc_common.merge_compilation_outputs(compilation_outputs=[])
Parameters
| Parameter | Description |
|---|---|
compilation_outputs
|
default is [] |