Documentation Index
Fetch the complete documentation index at: https://bazel-pr-29439.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Commands
aquery | Analyzes the given targets and queries the action graph. |
build | Builds the specified targets. |
canonicalize-flags | Canonicalizes a list of bazel options. |
clean | Removes output files and optionally stops the server. |
coverage | Generates code coverage report for specified test targets. |
cquery | Loads, analyzes, and queries the specified targets w/ configurations. |
dump | Dumps the internal state of the bazel server process. |
fetch | Fetches external repositories that are prerequisites to the targets. |
help | Prints help for commands, or the index. |
info | Displays runtime info about the bazel server. |
license | Prints the license of this software. |
mobile-install | Installs targets to mobile devices. |
mod | Queries the Bzlmod external dependency graph |
print_action | Prints the command line args for compiling a file. |
query | Executes a dependency graph query. |
run | Runs the specified target. |
shutdown | Stops the bazel server. |
test | Builds and runs the specified test targets. |
vendor | Fetches external repositories into a folder specified by the flag —vendor_dir. |
version | Prints version information for bazel. |
Startup Options
Options that appear before the command and are parsed by the clientWhen —noautodetect_server_javabase is passed, Bazel does not fall back to the local JDK for running the bazel server and instead exits.Tags:
affects_outputs, loses_incremental_stateIf set, Bazel will be run as just a client process without a server, instead of in the standard client/server mode. This is deprecated and will be removed, please prefer shutting down the server explicitly if you wish to avoid lingering servers.Tags:
loses_incremental_state, bazel_internal_configuration, deprecatedOnly on Linux; use ‘batch’ CPU scheduling for Blaze. This policy is useful for workloads that are non-interactive, but do not want to lower their nice value. See ‘man 2 sched_setscheduler’. If false, then Bazel does not perform a system call.Tags:
host_machine_resource_optimizationsThe location of the user .bazelrc file containing default values of Bazel options.
/dev/null indicates that all further --bazelrcs will be ignored, which is useful to
disable the search for a user rc file, e.g. in release builds.
This option can also be specified multiple times. e.g. with
--bazelrc=x.rc --bazelrc=y.rc --bazelrc=/dev/null --bazelrc=z.rc.x.rcandy.rcare read.z.rcis ignored due to the prior/dev/null. If unspecified, Bazel uses the first.bazelrcfile it finds in the following two locations: the workspace directory, then the user’s home directory.
changes_inputsWhen —noblock_for_lock is passed, Bazel does not wait for a running command to complete, but instead exits immediately.Tags:
eagerness_to_exitIf true, log debug information from the client to stderr. Changing this option will not cause the server to restart.Tags:
affects_outputs, bazel_monitoringThe amount of time the client waits for each attempt to connect to the serverTags:
bazel_internal_configurationThe hash function to use when computing file digests.Tags:
loses_incremental_state, bazel_internal_configurationThe cgroup where to start the bazel server as an absolute path. The server process will be started in the specified cgroup for each supported controller. For example, if the value of this flag is /build/bazel and the cpu and memory controllers are mounted respectively on /sys/fs/cgroup/cpu and /sys/fs/cgroup/memory, the server will be started in the cgroups /sys/fs/cgroup/cpu/build/bazel and /sys/fs/cgroup/memory/build/bazel.It is not an error if the specified cgroup is not writable for one or more of the controllers. This options does not have any effect on platforms that do not support cgroups.Tags:
bazel_monitoring, executionIf true, the Bazel server will be run with systemd-run, and the user will own the cgroup. This flag only takes effect on Linux.Tags:
bazel_monitoring, executionA colon-separated list of classpath entries to be added to the classpath of the Bazel server.Tags:
bazel_internal_configurationIf set, specifies a location to write a failure_detail protobuf message if the server experiences a failure and cannot report it via gRPC, as normal. Otherwise, the location will be ${OUTPUT_BASE}/failure_detail.rawproto.Tags:
affects_outputs, loses_incremental_stateWhether or not to look for the home bazelrc file at
$HOME/.bazelrcTags: changes_inputsRun System.gc() when the server is idleTags:
loses_incremental_state, host_machine_resource_optimizationsDisables all rc files, regardless of the values of other rc-modifying flags, even if these flags come later in the list of startup options.Tags:
changes_inputsOnly on Linux; set a level from 0-7 for best-effort IO scheduling using the sys_ioprio_set system call. 0 is highest priority, 7 is lowest. The anticipatory scheduler may only honor up to priority 4. If set to a negative value, then Bazel does not perform a system call.Tags:
host_machine_resource_optimizationsThe maximum amount of time the client waits to connect to the serverTags:
bazel_internal_configurationSets the QoS service class of the bazel server when running on macOS. This flag has no effect on all other platforms but is supported to ensure rc files can be shared among them without changes. Possible values are: user-interactive, user-initiated, default, utility, and background.Tags:
host_machine_resource_optimizationsThe number of seconds the build server will wait idling before shutting down. Zero means that the server will never shutdown. This is only read on server-startup, changing this option will not cause the server to restart.Tags:
eagerness_to_exit, loses_incremental_stateIf set, specifies the output location to which all build output will be written. Otherwise, the location will be ${OUTPUT_ROOT}/blaze${USER}/${MD5_OF_WORKSPACE_ROOT}. Note: If you specify a different option from one to the next Bazel invocation for this value, you’ll likely start up a new, additional Bazel server. Bazel starts exactly one server per specified output base. Typically there is one output base per workspace - however, with this option you may have multiple output bases per workspace and thereby run multiple builds for the same client on the same machine concurrently. See ‘bazel help shutdown’ on how to shutdown a Bazel server.Tags:
affects_outputs, loses_incremental_stateThe user-specific directory beneath which all build outputs are written; by default, this is a function of $USER, but by specifying a constant, build outputs can be shared between collaborating users.Tags:
affects_outputs, loses_incremental_stateIf true, the command can be preempted if another command is started.Tags:
eagerness_to_exitIf true, no informational messages are emitted on the console, only errors. Changing this option will not cause the server to restart.Tags:
affects_outputs, bazel_monitoringThe location to write the server’s JVM’s output. If unset then defaults to a location in output_base.Tags:
affects_outputs, loses_incremental_stateIf max_idle_secs is set and the build server has been idle for a while, shut down the server when the system is low on free RAM. Linux and MacOS only.Tags:
eagerness_to_exit, loses_incremental_stateWhether or not to look for the system-wide bazelrc.Tags:
changes_inputsRaises the soft coredump limit to the hard limit to make coredumps of the server (including the JVM) and the client possible under common conditions. Stick this flag in your bazelrc once and forget about it so that you get coredumps when you actually encounter a condition that triggers them.Tags:
bazel_internal_configurationIf true, real symbolic links will be created on Windows instead of file copying. Requires Windows developer mode to be enabled and Windows 10 version 1703 or greater.Tags:
bazel_internal_configurationWhether or not to look for the workspace bazelrc file at
$workspace/.bazelrcTags: changes_inputsIf enabled, the remote cache will be used to store the results of reproducible repository
rules. If a repository rule needs to be evaluated and its result is already in the remote
cache, the contents of the repository will be kept in an in-memory file system and are
only downloaded when needed, either by Bazel itself or an action that runs locally.Tags:
loading_and_analysisFlags to pass to the JVM executing Blaze.May be used multiple times; values are accumulated.
Convenience option to add some additional JVM startup flags, which cause the JVM to wait during startup until you connect from a JDWP-compliant debugger (like Eclipse) to port 5005.Expands to:
--host_jvm_args=-agentlib:jdwp=transport=dt_socket,server=y,address=5005
Path to the JVM used to execute Bazel itself.
Options Common to all Commands
Options that appear before the command and are parsed by the clientAdditional places to search for archives before accessing the network to download them.May be used multiple times; values are accumulated.Tags:
bazel_internal_configurationIf set, the repository cache will hardlink the file in case of a cache hit, rather than copying. This is intended to save disk space.Tags:
bazel_internal_configurationThe maximum number of attempts to retry a download error. If set to 0, retries are disabled.Tags:
experimentalScale all timeouts in Starlark repository rules by this factor. In this way, external repositories can be made working on machines that are slower than the rule author expected, without changing the source codeTags:
bazel_internal_configuration, experimentalThe maximum number of attempts for http downloads.Tags:
bazel_internal_configurationThe maximum timeout for http download retries. With a value of 0, no timeout maximum is defined.Tags:
bazel_internal_configurationThe maximum number parallel http downloads.Tags:
bazel_internal_configurationScale all timeouts related to http downloads by the given factorTags:
bazel_internal_configurationSpecifies the location of the repo contents cache, which contains fetched repo
directories shareable across workspaces. An empty string as argument requests the repo
contents cache to be disabled, otherwise the default of
{--repository_cache}/contents
is used. Note that this means setting --repository_cache= would by default disable the
repo contents cache as well, unless --repo_contents_cache={some_path} is also set.Tags: bazel_internal_configurationSpecifies the amount of time the server must remain idle before garbage collection happens
to the repo contents cache.Tags:
bazel_internal_configurationSpecifies the amount of time an entry in the repo contents cache can stay unused before
it’s garbage collected. If set to zero, only duplicate entries will be garbage collected.Tags:
bazel_internal_configurationSpecifies the cache location of the downloaded values obtained
during the fetching of external repositories. An empty string
as argument requests the cache to be disabled,
otherwise the default of
{--output_user_root}/cache/repos/v1 is used.Tags: bazel_internal_configurationIf set, downloading using
ctx.download{,_and_extract} is not allowed during repository
fetching. Note that network access is not completely disabled; ctx.execute could
still run an arbitrary executable that accesses the Internet.Tags: bazel_internal_configurationThe maximum size of the stdout / stderr files that will be printed to the console. -1 implies no limit.Tags:
executionAt any point after an invocation has been running for at least one minute, if Blaze has spent at least this percentage of the invocation’s wall time doing full GCs, Blaze will give up and fail with an OOM. A value of 100 effectively means to never give up for this reason.Tags:
host_machine_resource_optimizationsIf set to a value in [0, 100] and this is a command that takes top-level targets (e.g. build but not query) and there are multiple such top-level targets, overrides —gc_churning_threshold. Useful to configure more aggressive OOMing behavior (i.e. a lower value than —gc_churning_threshold) when they are multiple top-level targets so that the invoker of Bazel can split and retry while still having less aggressive behavior when there is a single top-level target.Tags:
host_machine_resource_optimizationsThe percent of tenured space occupied (0-100) above which GcThrashingDetector considers memory pressure events against its limits (—gc_thrashing_limits). If set to 100, GcThrashingDetector is disabled.Tags:
host_machine_resource_optimizationsIf true, proto lang rules define toolchains from protobuf repository.Tags:
loading_and_analysis, incompatible_changeMaximum number of open files allowed during BEP artifact upload.Tags:
affects_outputsIf true, repository rules and module extensions will only inherit
PATH, PATHEXT
(on Windows), and environment variables explicitly specified by --repo_env.
Note that unless --incompatible_repo_env_ignores_action_env is true,
--action_env=NAME=VALUE will also be included.Tags: loading_and_analysis, experimentalIf true,
--action_env=NAME=VALUE will no longer affect repository rule and module extension environments.Tags: loading_and_analysis, incompatible_changeDownloads all remote outputs to the local machine. This flag is an alias for —remote_download_outputs=all.Expands to:
--remote_download_outputs=all
affects_outputsDoes not download any remote build outputs to the local machine. This flag is an alias for —remote_download_outputs=minimal.Expands to:
--remote_download_outputs=minimal
affects_outputsIf set to ‘minimal’ doesn’t download any remote build outputs to the local machine, except the ones required by local actions. If set to ‘toplevel’ behaves like ‘minimal’ except that it also downloads outputs of top level targets to the local machine. Both options can significantly reduce build times if network bandwidth is a bottleneck.Tags:
affects_outputsInstead of downloading remote build outputs to the local machine, create symbolic links. The target of the symbolic links can be specified in the form of a template string. This template string may contain {hash} and {size_bytes} that expand to the hash of the object and the size in bytes, respectively. These symbolic links may, for example, point to a FUSE file system that loads objects from the CAS on demand.Tags:
affects_outputsOnly downloads remote outputs of top level targets to the local machine. This flag is an alias for —remote_download_outputs=toplevel.Expands to:
--remote_download_outputs=toplevel
affects_outputs--repo_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies additional environment variables to be available only for repository rules. Note that repository rules see the full environment anyway, but in this way variables can be set via command-line flags and
.bazelrc entries. The special syntax =NAME can be used to explicitly unset a variable. The string %bazel_workspace% in a value will be replaced with the absolute path of the workspace as printed by bazel info workspace.May be used multiple times; values are accumulated.Tags: action_command_linesIf enabled, issue only a warning instead of an error for loads of experimental .bzls.Tags:
build_file_semanticsIf disabled, .bzl load visibility errors are demoted to warnings.Tags:
build_file_semanticsIf enabled (or set to ‘error’), fail if Starlark files are not UTF-8 encoded. If set to ‘warning’, emit a warning instead. If set to ‘off’, Bazel assumes that Starlark files are UTF-8 encoded but does not verify this assumption. Note that Starlark files which are not UTF-8 encoded can cause Bazel to behave inconsistently.Tags:
loading_and_analysis, incompatible_changeIf enabled, adds a
visibility() function that .bzl files may call during top-level evaluation to set their visibility for the purpose of load() statements.Tags: loading_and_analysis, experimentalIf set to true, rule attributes and Starlark API methods needed for the rule cc_shared_library will be availableTags:
build_file_semantics, loading_and_analysis, experimentalIf set to true, the auto-generated //external package will not be available anymore. Bazel will still be unable to parse the file ‘external/BUILD’, but globs reaching into external/ from the unnamed package will work.Tags:
loading_and_analysis, loses_incremental_state, experimentalIf set to true, attr.label(materializer=), attr(for_dependency_resolution=), attr.dormant_label(), attr.dormant_label_list() and rule(for_dependency_resolution=) are allowed.Tags:
build_file_semantics, experimentalIf set to true, enables the APIs required to support the Android Starlark migration.Tags:
build_file_semanticsIf set to true, enables the
macro() construct for defining symbolic macros.Tags: build_file_semanticsIf set to true, .scl files may be used in load() statements.Tags:
build_file_semanticsIf true, enable the set data type and set() constructor in Starlark.Tags:
build_file_semantics, experimentalIf set to true, exposes a number of experimental pieces of Starlark build API pertaining to Google legacy code.Tags:
loading_and_analysis, experimentalIf true, enables the
isolate parameter in the use_extension function.Tags: loading_and_analysisIf set to true, enables a number of platform-related Starlark APIs useful for debugging.Tags:
loading_and_analysis, experimentalIf set to true, repository_rule gains some remote execution capabilities.Tags:
build_file_semantics, loading_and_analysis, experimentalIf true enables the repository_ctx
load_wasm and execute_wasm methods.Tags: loading_and_analysis, experimentalIf set to true, non-main repositories are planted as symlinks to the main repository in the execution root. That is, all repositories are direct children of the $output_base/execution_root directory. This has the side effect of freeing up $output_base/execution_root/main/external for the real top-level ‘external’ directory.Tags:
action_command_lines, bazel_internal_configuration, loading_and_analysis, loses_incremental_state, experimentalIf enabled, the register_toolchain function may not include target patterns which may refer to more than one package.Tags:
loading_and_analysis, incompatible_changeEnables dynamic type checking of arguments and return values for functions that contain type annotations or related syntax.Tags:
loading_and_analysis, experimentalEnables static type checking in files and functions that contain type annotations or related syntax.Tags:
loading_and_analysis, experimentalEnables both static and dynamic type checking in files and functions that contain type annotations or related syntax. This is an expansion flag for —experimental_starlark_static_type_checking and —experimental_starlark_dynamic_type_checking. (When both flags are disabled, Bazel is more forgiving of invalid types in type annotations.)Expands to:
--experimental_starlark_static_type_checking--experimental_starlark_dynamic_type_checking
loading_and_analysis, experimentalEnables type annotations and related syntax in .bzl files. Locations of files where these are allowed is further restricted by
--experimental_starlark_types_allowed_paths.
Type syntax is never permitted in .scl files regardless of this flag.Tags: loading_and_analysis, experimentalList of canonical Label prefixes under which Starlark type annotations are allowed.Tags:
loading_and_analysis, experimentalIf —force_starlark_stack_trace=true, Starlark stace traces will always be printed from calls to fail(), including those normally supressed with fail(…, stack_trace = False)Tags:
loading_and_analysisIf set to true, tags will be propagated from a target to the actions’ execution requirements; otherwise tags are not propagated. See https://github.com/bazelbuild/bazel/issues/8830 for details.Tags:
build_file_semantics, experimentalCheck the validity of elements added to depsets, in all constructors. Elements must be immutable, but historically the depset(direct=…) constructor forgot to check. Use tuples instead of lists in depset elements. See https://github.com/bazelbuild/bazel/issues/10313 for details.Tags:
build_file_semantics, incompatible_changeDisable objc_library’s custom transition and inherit from the top level target instead (No-op in Bazel)Tags:
build_file_semantics, incompatible_changeIf set to true, rule attributes cannot set ‘cfg = “host”’. Rules should set ‘cfg = “exec”’ instead.Tags:
loading_and_analysis, incompatible_changeIf set to true, disable the ability to utilize the default provider via field syntax. Use provider-key syntax instead. For example, instead of using
ctx.attr.dep.files to access files, utilize `ctx.attr.dep[DefaultInfo].files See https://github.com/bazelbuild/bazel/issues/9014 for details.Tags: build_file_semantics, incompatible_changeA comma-separated list of flags that cannot be used in transitions inputs or outputs.Tags:
loading_and_analysis, incompatible_change, non_configurableIf set to true, calling the deprecated ctx.resolve_tools API always fails. Uses of this API should be replaced by an executable or tools argument to ctx.actions.run or ctx.actions.run_shell.Tags:
loading_and_analysis, incompatible_changeIf set to true, the default value of the
allow_empty argument of glob() is False.Tags: build_file_semantics, incompatible_changeIf enabled, certain deprecated APIs (native.repository_name, Label.workspace_name, Label.relative) can be used.Tags:
loading_and_analysisIf enabled, targets that have unknown attributes set to None fail.Tags:
loading_and_analysis, incompatible_changeIn package_group’s
packages attribute, changes the meaning of the value ”//…” to refer to all packages in the current repository instead of all packages in any repository. You can use the special value “public” in place of ”//…” to obtain the old behavior. This flag requires that —incompatible_package_group_has_public_syntax also be enabled.Tags: build_file_semantics, incompatible_changeWhether a target that provides an executable expands to the executable rather than the files in
DefaultInfo.files under $(locations …) expansion if the number of files is not 1.Tags: loading_and_analysis, incompatible_changeIf set to true, disables the function
attr.license.Tags: build_file_semantics, incompatible_changeIf set, (used) source files are package private unless exported explicitly. See https://github.com/bazelbuild/proposals/blob/master/designs/2019-10-24-file-visibility.mdTags:
build_file_semantics, incompatible_changeIf true, then methods on
repository_ctx that are passed a Label will no longer automatically watch the file under that label for changes even if watch = "no", and repository_ctx.path no longer causes the returned path to be watched. Use repository_ctx.watch instead.Tags: loading_and_analysis, incompatible_changeIf set to true, disables the
outputs parameter of the rule() Starlark function.Tags: build_file_semantics, incompatible_changeIn package_group’s
packages attribute, allows writing “public” or “private” to refer to all packages or no packages respectively.Tags: build_file_semantics, incompatible_changeIf set to true, ctx.actions.run and ctx.actions.run_shell will require an explicit mnemonicTags:
build_file_semantics, incompatible_changeIf enabled, string keys in dicts passed to select() in .bzl files are immediately resolved to Labels relative to the file instead of being interpreted relative to the BUILD file they are ultimately loaded from.Tags:
loading_and_analysis, incompatible_changeIf set to true, the command parameter of actions.run_shell will only accept stringTags:
build_file_semantics, incompatible_changeIf true, simplify configurable rule attributes which contain only unconditional selects; for example, if [“a”] + select(“//conditions:default”, [“b”]) is assigned to a rule attribute, it is stored as [“a”, “b”]. This option does not affect attributes of symbolic macros or attribute default values.Tags:
build_file_semantics, incompatible_changeIf set to true, deprecated ctx.build_file_path will not be available. ctx.label.package + ‘/BUILD’ can be used instead.Tags:
loading_and_analysis, incompatible_changeIf enabled, certain language-specific modules (such as
cc_common) are unavailable in user .bzl files and may only be called from their respective rules repositories.Tags: loading_and_analysis, incompatible_changeWhen true, Bazel will stringify the label @//foo:bar to @//foo:bar, instead of //foo:bar. This only affects the behavior of str(), the % operator, and so on; the behavior of repr() is unchanged. See https://github.com/bazelbuild/bazel/issues/15916 for more information.Tags:
loading_and_analysis, incompatible_changeThe maximum number of Starlark computation steps that may be executed by a BUILD file (zero means no limit).Tags:
build_file_semanticsThe maximum depth of the graph internal to a depset (also known as NestedSet), above which the depset() constructor will fail.Tags:
loading_and_analysisSpecified the module versions in the form of
{module1}@{version1},module2@{version2} that will be allowed in the resolved
dependency graph even if they are declared yanked in the registry where they come
from (if they are not coming from a NonRegistryOverride).
Otherwise, yanked versions will cause the resolution to fail. You can also define allowed
yanked versions with the BZLMOD_ALLOW_YANKED_VERSIONS environment variable. You can
disable this check by using the keyword all (not recommended).May be used multiple times; values are accumulated.Tags: loading_and_analysisCheck bazel version compatibility of Bazel modules. Valid values are
error to escalate it to a resolution failure, off to disable the check, or warning to print a warning when mismatch detected.Tags: loading_and_analysisCheck if the direct
bazel_dep dependencies declared in the root module are the same versions you get in the resolved dependency graph. Valid values are off to disable the check, warning to print a warning when mismatch detected or error to escalate it to a resolution failure.Tags: loading_and_analysisIf true, Bazel ignores
bazel_dep and use_extension declared as dev_dependency in
the MODULE.bazel of the root module. Note that, those dev dependencies are always
ignored in the MODULE.bazel if it’s not the root module regardless of the value
of this flag.Tags: loading_and_analysisSpecifies how and whether or not to use the lockfile. Valid values are
update to use the lockfile and update it if there are changes, refresh to additionally refresh mutable information (yanked versions and previously missing modules) from remote registries from time to time, error to use the lockfile but throw an error if it’s not up-to-date, or off to neither read from or write to the lockfile.Tags: loading_and_analysisSpecifies URLs under which the source URLs of Bazel modules can be found, in addition
to and taking precedence over any registry-provided mirror URLs. This flag can be
specified per-registry using the syntax
--module_mirrors=<registry>=<mirror1>[,<mirror2>,...] (e.g.,
--module_mirrors=https://bcr.bazel.build=https://mirror.example.com). It can also
be specified as a comma-separated list of mirror URLs that applies to all registries that
don’t have an explicit list (e.g., --module_mirrors=https://mirror1,https://mirror2).
Set this to an empty value to disable the use of any mirrors not specified by the
registries. Later uses of this flag override earlier ones with the same (or no) registry.
The default set of mirrors may change over time, but all downloads from mirrors are
verified by hashes stored in the registry (and thus pinned by the lockfile).May be used multiple times; values are accumulated.Tags: loading_and_analysisOverride a module with a local path in the form of
{module name}={path}. If the given
path is an absolute path, it will be used as it is. If the given path is a
relative path, it is relative to the current working directory. If the given path
starts with %workspace%, it is relative to the workspace root, which is the
output of bazel info workspace. If the given path is empty, then remove any
previous overrides.May be used multiple times; values are accumulated.Specifies the registries to use to locate Bazel module dependencies. The order is important: modules will be looked up in earlier registries first, and only fall back to later registries when they’re missing from the earlier ones.May be used multiple times; values are accumulated.Tags:
changes_inputsSpecifies the directory that should hold the external repositories in vendor mode, whether for the purpose of fetching them into it or using them while building. The path can be specified as either an absolute path or a path relative to the workspace directory.Tags:
loading_and_analysisLimits which, if reached, cause GcThrashingDetector to crash Bazel with an OOM. Each limit is specified as <period>:<count> where period is a duration and count is a positive integer. If more than —gc_thrashing_threshold percent of tenured space (old gen heap) remains occupied after <count> consecutive full GCs within <period>, an OOM is triggered. Multiple limits can be specified separated by commas.Tags:
host_machine_resource_optimizationsIf true, Blaze will remove FileState and DirectoryListingState nodes after related File and DirectoryListing node is done to save memory. We expect that it is less likely that these nodes will be needed again. If so, the program will re-evaluate them.Tags:
loses_incremental_stateWhen true, Bazel no longer modifies command line flags used for linking, and also doesn’t selectively decide which flags go to the param file and which don’t. See https://github.com/bazelbuild/bazel/issues/7670 for details.Tags:
loading_and_analysis, incompatible_changeIf false, Blaze will discard the inmemory state from this build when the build finishes. Subsequent builds will not have any incrementality with respect to this one.Tags:
loses_incremental_stateFlag for advanced configuration of Bazel’s internal Skyframe engine. If Bazel detects its retained heap percentage usage exceeds the threshold set by —skyframe_high_water_mark_threshold, when a full GC event occurs, it will drop unnecessary temporary Skyframe state, up to this many times per invocation. Defaults to 10. Zero means that full GC events will never trigger drops. If the limit is reached, Skyframe state will no longer be dropped when a full GC event occurs and that retained heap percentage threshold is exceeded.Tags:
host_machine_resource_optimizationsFlag for advanced configuration of Bazel’s internal Skyframe engine. If Bazel detects its retained heap percentage usage exceeds the threshold set by —skyframe_high_water_mark_threshold, when a minor GC event occurs, it will drop unnecessary temporary Skyframe state, up to this many times per invocation. Defaults to 10. Zero means that minor GC events will never trigger drops. If the limit is reached, Skyframe state will no longer be dropped when a minor GC event occurs and that retained heap percentage threshold is exceeded.Tags:
host_machine_resource_optimizationsFlag for advanced configuration of Bazel’s internal Skyframe engine. If Bazel detects its retained heap percentage usage is at least this threshold, it will drop unnecessary temporary Skyframe state. Tweaking this may let you mitigate wall time impact of GC thrashing, when the GC thrashing is (i) caused by the memory usage of this temporary state and (ii) more costly than reconstituting the state when it is needed.Tags:
host_machine_resource_optimizationsIf false, Blaze will not persist data that allows for invalidation and re-evaluation on incremental builds in order to save memory on this build. Subsequent builds will not have any incrementality with respect to this one. Usually you will want to specify —batch when setting this to false.Tags:
loses_incremental_stateWhether to announce rc options.Tags:
affects_outputsWhen printing the location part of messages, attempt to use a path relative to the workspace directory or one of the directories specified by —package_path.Tags:
terminal_outputSpecifies the build event service (BES) backend endpoint in the form
[SCHEME://]HOST[:PORT]. The default is to disable BES uploads. Supported schemes
are grpc and grpcs (grpc with TLS enabled). If no scheme is provided, Bazel
assumes grpcs.Tags: affects_outputsSets the field
check_preceding_lifecycle_events_present on
PublishBuildToolEventStreamRequest which tells BES to check whether it previously
received InvocationAttemptStarted and BuildEnqueued events matching the current
tool event.Tags: affects_outputsSpecify a header in
NAME=VALUE form that will be included in BES requests.
Multiple headers can be passed by specifying the flag multiple times. Multiple
values for the same name will be converted to a comma-separated list.May be used multiple times; values are accumulated.Tags: affects_outputsSpecifies the instance name under which the BES will persist uploaded BEP. Defaults to null.Tags:
affects_outputsSpecifies a list of notification keywords to be added the default set of keywords
published to BES (
command_name={command_name}, protocol_name=BEP).
Defaults to none.May be used multiple times; values are accumulated.Tags: affects_outputsSpecifies whether to publish BES lifecycle events. (defaults to ‘true’).Tags:
affects_outputsSpecifies how long bazel should wait for the BES/BEP upload to complete while OOMing. This flag ensures termination when the JVM is severely GC thrashing and cannot make progress on any user thread.Tags:
bazel_monitoringSpecifies the maximal size of stdout or stderr to be buffered in BEP, before it is
reported as a progress event. Individual writes are still reported in a single
event, even if larger than the specified value up to
--bes_outerr_chunk_size.Tags: affects_outputsSpecifies the maximal size of stdout or stderr to be sent to BEP in a single message.Tags:
affects_outputsConnect to the Build Event Service through a proxy. Currently this flag can only be
used to configure a Unix domain socket (
unix:/path/to/socket).Specifies the base URL where a user can view the information streamed to the BES backend. Bazel will output the URL appended by the invocation id to the terminal.Tags:
terminal_outputSpecifies a list of notification keywords to be included directly, without the
user_keyword= prefix included for keywords supplied via --bes_keywords.
Intended for Build service operators that set --bes_lifecycle_events=false and
include keywords when calling PublishLifecycleEvent. Build service operators
using this flag should prevent users from overriding the flag value.May be used multiple times; values are accumulated.Tags: affects_outputsSpecifies how long bazel should wait for the BES/BEP upload to complete after the
build and tests have finished. A valid timeout is a natural number followed by a
unit: Days (d), hours (h), minutes (m), seconds (s), and milliseconds (ms). The
default value is
0 which means that there is no timeout.Tags: affects_outputs--bes_upload_mode
wait_for_upload_complete, nowait_for_upload_complete or fully_async
default:"wait_for_upload_complete"
Specifies whether the Build Event Service upload should block the build completion or
should end the invocation immediately and finish the upload in the
background.
wait_for_upload_complete: blocks at the end of the current invocation until all events (including lifecycle events if applicable) are uploaded and acknowledged by the backend.nowait_for_upload_complete: blocks at the beginning of the next invocation until all events (including lifecycle events if applicable) are uploaded and acknowledged by the backend.fully_async: blocks at the beginning of the next invocation until all events are uploaded but does not wait for acknowledgements. Events may be lost in case of (transient) failures and backends may report streams as incomplete in this mode. There is no guarantee thatFinishInvocationAttemptorFinishBuildlifecycle events are sent.
eagerness_to_exitIf non-empty, write a varint delimited binary representation of representation of the
build event protocol to that file. This option implies
--bes_upload_mode=wait_for_upload_complete.Tags: affects_outputsConvert paths in the binary file representation of the build event protocol to more
globally valid URIs whenever possible; if disabled, the
file:// uri scheme will
always be usedTags: affects_outputs--build_event_binary_file_upload_mode
wait_for_upload_complete, nowait_for_upload_complete or fully_async
default:"wait_for_upload_complete"
Specifies whether the Build Event Service upload for
--build_event_binary_file should
block the build completion or should end the invocation immediately and finish
the upload in the background. Either wait_for_upload_complete (default),
nowait_for_upload_complete, or fully_async.Tags: eagerness_to_exitIf non-empty, write a JSON serialisation of the build event protocol to that file.
This option implies
--bes_upload_mode=wait_for_upload_complete.Tags: affects_outputsConvert paths in the json file representation of the build event protocol to more
globally valid URIs whenever possible; if disabled, the
file:// uri scheme will
always be usedTags: affects_outputs--build_event_json_file_upload_mode
wait_for_upload_complete, nowait_for_upload_complete or fully_async
default:"wait_for_upload_complete"
Specifies whether the Build Event Service upload for
--build_event_json_file should
block the build completion or should end the invocation immediately and finish
the upload in the background. Either wait_for_upload_complete (default),
nowait_for_upload_complete, or fully_async.Tags: eagerness_to_exitThe maximum number of entries for a single
named_set_of_files event; values smaller
than 2 are ignored and no event splitting is performed. This is intended for
limiting the maximum event size in the build event protocol, although it does not
directly control event size. The total event size is a function of the structure
of the set as well as the file and uri lengths, which may in turn depend on the
hash function.Tags: affects_outputsWhether all actions should be published.Tags:
affects_outputsIf non-empty, write a textual representation of the build event protocol to that fileTags:
affects_outputsConvert paths in the text file representation of the build event protocol to more
globally valid URIs whenever possible; if disabled, the
file:// uri scheme will
always be usedTags: affects_outputs--build_event_text_file_upload_mode
wait_for_upload_complete, nowait_for_upload_complete or fully_async
default:"wait_for_upload_complete"
Specifies whether the Build Event Service upload for
--build_event_text_file should
block the build completion or should end the invocation immediately and finish
the upload in the background. Either wait_for_upload_complete (default),
nowait_for_upload_complete, or fully_async.Tags: eagerness_to_exitThe maximum number of times Bazel should retry uploading a build event.Tags:
bazel_internal_configurationWhether to publish
TargetSummary events.If true, expand Filesets in the BEP when presenting output files.Tags:
affects_outputs--experimental_build_event_output_group_mode
an output group name followed by an OutputGroupFileMode, e.g. default=both
Specify how an output group’s files will be represented in
TargetComplete/AspectComplete
BEP events. Values are an assignment of an output group name to one of
NAMED_SET_OF_FILES_ONLY, INLINE_ONLY, or BOTH. The default value is
NAMED_SET_OF_FILES_ONLY. If an output group is repeated, the final value to
appear is used. The default value sets the mode for coverage artifacts to BOTH:
--experimental_build_event_output_group_mode=baseline.lcov=bothMay be used multiple times; values are accumulated.Tags: affects_outputsInitial, minimum delay for exponential backoff retries when BEP upload fails. (exponent: 1.6)Tags:
bazel_internal_configurationSelects how to upload artifacts referenced in the build event protocol. In Bazel
the valid options include
local and remote. The default value is local.Tags: affects_outputsIf enabled, the profiler collects the system’s overall load average.Tags:
bazel_monitoringIf enabled, the profiler collects the Linux PSI data.Tags:
bazel_monitoringIf enabled, the profiler collects CPU and memory usage estimation for local actions.Tags:
bazel_monitoringIf enabled, the profiler collects SkyFunction counts in the Skyframe graph over time for key function types, like configured targets and action executions. May have a performance hit as this visits the ENTIRE Skyframe graph at every profiling time unit. Do not use this flag with performance-critical measurements.Tags:
bazel_monitoringIf enabled, the profiler collects the system’s network usage.Tags:
bazel_monitoringIf enabled, the profiler collects worker’s aggregated resource data.Tags:
bazel_monitoringRecords a Java Flight Recorder profile for the duration of the command. One of the supported profiling event types (cpu, wall, alloc or lock) must be given as an argument. The profile is written to a file named after the event type under the output base directory. The syntax and semantics of this flag might change in the future to support additional profile types or output formats; use at your own risk.
--experimental_profile_additional_tasks
phase, action, discover_inputs, action_check, action_lock, action_update, action_complete, action_rewinding, bzlmod, info, create_package, remote_execution, local_execution, scanner, local_parse, upload_time, remote_process_time, remote_queue, remote_setup, fetch, local_process_time, vfs_stat, vfs_dir, vfs_readlink, vfs_md5, vfs_xattr, vfs_delete, vfs_open, vfs_read, vfs_write, vfs_glob, vfs_vmfs_stat, vfs_vmfs_dir, vfs_vmfs_read, wait, thread_name, thread_sort_index, skyframe_eval, skyfunction, critical_path, critical_path_component, handle_gc_notification, local_action_counts, starlark_parser, starlark_user_fn, starlark_builtin_fn, starlark_user_compiled_fn, starlark_repository_fn, starlark_thread_context, action_fs_staging, remote_cache_check, remote_download, remote_network, filesystem_traversal, worker_execution, worker_setup, worker_borrow, worker_working, worker_copying_outputs, credential_helper, conflict_check, dynamic_lock, repository_fetch, repository_vendor, repo_cache_gc_wait, spawn_log, rpc, skycache, wasm_load, wasm_exec or unknown
Specifies additional profile tasks to be included in the profile.May be used multiple times; values are accumulated.Tags:
bazel_monitoringIncludes the extra “out” attribute in action events that contains the exec path to the action’s primary output.Tags:
bazel_monitoringIncludes target configuration hash in action events’ JSON profile data.Tags:
bazel_monitoringIncludes target label in action events’ JSON profile data.Tags:
bazel_monitoringControls the output of BEP ActionSummary and BuildGraphMetrics, limiting the number of mnemonics in ActionData and number of entries reported in BuildGraphMetrics.AspectCount/RuleClassCount. By default the number of types is limited to the top 20, by number of executed actions for ActionData, and instances for RuleClass and Asepcts. Setting this option will write statistics for all mnemonics, rule classes and aspects.
Controls the output of BEP BuildGraphMetrics, including expensive to compute skyframe metrics about Skykeys, RuleClasses and Aspects. With this flag set to false BuildGraphMetrics.rule_count and aspect fields will not be populated in the BEP.
Whether to include the command-line residue in run build events which could contain the residue. By default, the residue is not included in run command build events that could contain the residue.Tags:
affects_outputsStream log file uploads directly to the remote storage rather than writing them to disk.Tags:
affects_outputsLog certain Workspace Rules events into this file as delimited WorkspaceEvent protos.
If enabled, Bazel profiles the build and writes a JSON-format profile into a file in the output base. View profile by loading into chrome://tracing. By default Bazel writes the profile for all build-like commands and query.Tags:
bazel_monitoringWhether to manually output a heap dump if an OOM is thrown (including manual OOMs due to reaching —gc_thrashing_limits). The dump will be written to <output_base>/<invocation_id>.heapdump.hprof. This option effectively replaces -XX:+HeapDumpOnOutOfMemoryError, which has no effect for manual OOMs.Tags:
bazel_monitoring--jvm_heap_histogram_internal_object_pattern
a valid Java regular expression
default:"jdk\\.internal\\.vm\\.Filler.+"
Regex for overriding the matching logic for JDK21+ JVM heap memory collection. We are relying on volatile internal G1 GC implemenation details to get a clean memory metric, this option allows us to adapt to changes in that internal implementation without having to wait for a binary release. Passed to JDK Matcher.find()
Use this to suppress generation of the legacy
important_outputs field in the
TargetComplete event. important_outputs are required for Bazel to ResultStore/BTX
integration.Tags: affects_outputsThe logging level.Tags:
affects_outputsIf set, write memory usage data to the specified file at phase ends and stable heap to master log at end of build.Tags:
bazel_monitoring--memory_profile_stable_heap_parameters
integers, separated by a comma expected in pairs
default:"1,0"
Tune memory profile’s computation of stable heap at end of build. Should be and even number of integers separated by commas. In each pair the first integer is the number of GCs to perform. The second integer in each pair is the number of seconds to wait between GCs. Ex: 2,4,4,0 would 2 GCs with a 4sec pause, followed by 4 GCs with zero second pauseTags:
bazel_monitoringIf set, profile Bazel and write data to the specified file. See https://bazel.build/advanced/performance/json-trace-profile for more information.Tags:
bazel_monitoringNumber of profiles to retain in the output base. If there are more than this number of profiles in the output base, the oldest are deleted until the total is under the limit.Tags:
bazel_monitoringBy default, Bazel profiler will record only aggregated data for fast but numerous events (such as statting the file). If this option is enabled, profiler will record each event - resulting in more precise profiling data but LARGE performance hit. Option only has effect if —profile used as well.Tags:
bazel_monitoringIf true and supported, instrumentation output is redirected to be written locally on a different machine than where bazel is running on.Tags:
bazel_monitoringChoose when to print remote execution messages. Valid values are
failure, to print only on failures, success to print only on successes and all to print always.Tags: terminal_outputSlims down the size of the JSON profile by merging events if the profile gets too large.Tags:
bazel_monitoringWrites into the specified file a pprof profile of CPU usage by all Starlark threads.Tags:
bazel_monitoringA tool name to attribute this Bazel invocation to.Tags:
affects_outputs, bazel_monitoringSpecifies which events to show in the UI. It is possible to add or remove events to the default ones using leading +/-, or override the default set completely with direct assignment. The set of supported event kinds include INFO, DEBUG, ERROR and more.May be used multiple times; values are accumulated.Tags:
terminal_outputWhether or not to write the command.log fileTags:
bazel_monitoringSpecify a file to configure the remote downloader with.
This file consists of directives, one per line, that adjust how the
Bazel downloader acts. The directives are: An example config may look like:See also: Insulating Builds from the InternetMay be used multiple times; values are accumulated.
allow, block, rewrite,
and all_blocked_message. The directives are applied in the order
rewrite, allow, block.
Comments are allowed and must be on their own line (no trailing comments)
and preceded by a #. Example: # evil.com is known to host malicious code
The allow and block directives take a host name as an argument. For
example: block mvnrepository.com.example or allow github.com.example. The given host
and all subdomains will be allowed or blocked. Do not include the URL
scheme (http:// or https://). You can block all hosts with the *
wildcard: block *.
The rewrite directive takes two regex patterns: the first to match a URL
and the second to substitute matched URLs with. For example, rewrite github.com.example/bazel-contrib/rules_python/releases/download/(.*)/(.*) mycorp.example/rules_python_mirror/$1/$2 will cause the downloader
to access mycorp.example/rules_python_mirror whenever attempting
to download rules_python from example.com. The substitute URL supports
back-references starting from $1. It is possible for multiple
rewrite directives for the same matched URL to be provided, and in
this case multiple URLs will be returned and tried sequentially. Do not
include the URL scheme (http:// or https://) in the patterns.
The all_blocked_message directive allows you to customize the message
that is shown when the rewriter is configured to block all URLs for
a particular resource. This directive can only be given once, and the
message must exist on a single line. Example: all_blocked_message Hey, I think the downloader config is wrong. Bummer!.
Note that it is not possible to directly block a particular path for
a given host while still allowing other paths on the host. This can be
worked around by rewrite the path to a blocked host:Specifies the strategy for the circuit breaker to use. Available strategies are “failure”. On invalid value for the option the behavior same as the option is not set.Tags:
executionIf enabled, large blobs are split into content-defined chunks using FastCDC 2020 and uploaded/downloaded in chunks, enabling deduplication across blobs. The server must advertise SplitBlob/SpliceBlob RPCs and FastCDC 2020 parameters in its capabilities.Tags:
experimentalThe minimum blob size required to compress/decompress with zstd. Ineffectual unless —remote_cache_compression is set.
If set to true, Bazel will extend the lease for outputs of remote actions during the build by sending
FindMissingBlobs calls periodically to remote cache. The frequency is based on the value of --experimental_remote_cache_ttl.The guaranteed minimal TTL of blobs in the remote cache after their digests are recently referenced e.g. by an ActionResult or FindMissingBlobs. Bazel does several optimizations based on the blobs’ TTL e.g. doesn’t repeatedly call GetActionResult in an incremental build. The value should be set slightly less than the real TTL since there is a gap between when the server returns the digests and when Bazel receives them.Tags:
executionA path to a directory where the corrupted outputs will be captured to.
If set to true, discard in-memory copies of the input root’s Merkle tree and associated input mappings during calls to GetActionResult() and Execute(). This reduces memory usage significantly, but does require Bazel to recompute them upon remote cache misses and retries.
A Remote Asset API endpoint URI, to be used as a remote download proxy. The supported schemes are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no scheme is provided Bazel will default to grpcs. See: https://github.com/bazelbuild/remote-apis/blob/master/build/bazel/remote/asset/v1/remote_asset.proto
Whether to fall back to the local downloader if remote downloader fails.
Whether to propagate credentials from netrc and credential helper to the remote downloader server. The server implementation needs to support the new
http_header_url:<url-index>:<header-key> qualifier where the <url-index> is a 0-based position of the URL inside the FetchBlobRequest’s uris field. The URL-specific headers should take precedence over the global headers.Sets the allowed number of failure rate in percentage for a specific time window after which it stops calling to the remote cache/executor. By default the value is 10. Setting this to 0 means no limitation.Tags:
executionThe interval in which the failure rate of the remote requests are computed. On zero or negative value the failure duration is computed the whole duration of the execution.Following units can be used: Days (d), hours (h), minutes (m), seconds (s), and milliseconds (ms). If the unit is omitted, the value is interpreted as seconds.Tags:
executionIf set to true, Bazel will mark inputs as tool inputs for the remote executor. This can be used to implement remote persistent workers.
HOST or HOST:PORT of a remote output service endpoint. The supported schemes are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no scheme is provided Bazel will default to grpcs. Specify grpc:// or unix: scheme to disable TLS.
The path under which the contents of output directories managed by the —experimental_remote_output_service are placed. The actual output directory used by a build will be a descendant of this path and determined by the output service.
If set to true, enforce that all actions that can run remotely are cached, or else fail the build. This is useful to troubleshoot non-determinism issues as it allows checking whether actions that should be cached are actually cached without spuriously injecting new results into the cache.
Enables remote cache key scrubbing with the supplied configuration file, which must be a protocol buffer in text format (see src/main/protobuf/remote_scrubbing.proto).
This feature is intended to facilitate sharing a remote/disk cache between actions executing on different platforms but targeting the same platform. It should be used with extreme care, as improper settings may cause accidental sharing of cache entries and result in incorrect builds.
Scrubbing does not affect how an action is executed, only how its remote/disk cache key is computed for the purpose of retrieving or storing an action result. Scrubbed actions are incompatible with remote execution, and will always be executed locally instead.
Modifying the scrubbing configuration does not invalidate outputs present in the local filesystem or internal caches; a clean build is required to reexecute affected actions.
In order to successfully use this feature, you likely want to set a custom —host_platform together with —experimental_platform_in_output_dir (to normalize output prefixes).
Set this to ‘full’ to enable checking the ctime of all input files of an action before uploading it to a remote cache. There may be cases where the Linux kernel delays writing of files, which could cause false positives. The default is ‘lite’, which only checks source files in the main repository. Setting this to ‘off’ disables all checks. This is not recommended, as the cache may be polluted when a source file is changed while an action that takes it as an input is executing.Tags:
executionWhether —remote_local_fallback applies to —remote_cache.
Whether to accept remotely cached action results.
If set to ‘all’, all local outputs referenced by BEP are uploaded to remote cache.
If set to ‘minimal’, local outputs referenced by BEP are not uploaded to the remote cache, except for files that are important to the consumers of BEP (e.g. test logs and timing profile). bytestream:// scheme is always used for the uri of files even if they are missing from remote cache.
Default to ‘minimal’.
The hostname and instance name to be used in bytestream:// URIs that are written into build event streams. This option can be set when builds are performed using a proxy, which causes the values of —remote_executor and —remote_instance_name to no longer correspond to the canonical name of the remote execution service. When not set, it will default to ”${hostname}/${instance_name}”.
A URI of a caching endpoint. The supported schemes are http, https, grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no scheme is provided Bazel will default to grpcs. Specify grpc://, http:// or unix: scheme to disable TLS. See https://bazel.build/remote/caching
If true, uploading of action results to a disk or remote cache will happen in the background instead of blocking the completion of an action. Some actions are incompatible with background uploads, and may still block even when this flag is set.
If enabled, compress/decompress cache blobs with zstd when their size is at least —experimental_remote_cache_compression_threshold.
Specify a header that will be included in cache requests: —remote_cache_header=Name=Value. Multiple headers can be passed by specifying the flag multiple times. Multiple values for the same name will be converted to a comma-separated list.May be used multiple times; values are accumulated.
Set the default exec properties to be used as the remote execution platform if an execution platform does not already set exec_properties.May be used multiple times; values are accumulated.Tags:
affects_outputsForce remote build outputs whose path matches this pattern to be downloaded, irrespective of —remote_download_outputs. Multiple patterns may be specified by repeating this flag.May be used multiple times; values are accumulated.Tags:
affects_outputsSpecify a header that will be included in remote downloader requests: —remote_downloader_header=Name=Value. Multiple headers can be passed by specifying the flag multiple times. Multiple values for the same name will be converted to a comma-separated list.May be used multiple times; values are accumulated.
Specify a header that will be included in execution requests: —remote_exec_header=Name=Value. Multiple headers can be passed by specifying the flag multiple times. Multiple values for the same name will be converted to a comma-separated list.May be used multiple times; values are accumulated.
The relative priority of actions to be executed remotely. The semantics of the particular priority values are server-dependent.
HOST or HOST:PORT of a remote execution endpoint. The supported schemes are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no scheme is provided Bazel will default to grpcs. Specify grpc:// or unix: scheme to disable TLS.
If specified, a path to a file to log gRPC call related details. This log consists of a sequence of serialized com.google.devtools.build.lib.remote.logging.RemoteExecutionLog.LogEntry protobufs with each message prefixed by a varint denoting the size of the following serialized protobuf message, as performed by the method LogEntry.writeDelimitedTo(OutputStream).
Specify a header that will be included in requests: —remote_header=Name=Value. Multiple headers can be passed by specifying the flag multiple times. Multiple values for the same name will be converted to a comma-separated list.May be used multiple times; values are accumulated.
Value to pass as instance_name in the remote execution API.
Whether to fall back to standalone local execution strategy if remote execution fails.
Deprecated. See https://github.com/bazelbuild/bazel/issues/7480 for details.Tags:
deprecatedLimit the max number of concurrent requests per gRPC connection. By default the value is 100.Tags:
host_machine_resource_optimizationsLimit the max number of concurrent connections to remote cache/executor. By default the value is 100. Setting this to 0 means no limitation.
For HTTP remote cache, one TCP connection could handle one request at one time, so Bazel could make up to —remote_max_connections concurrent requests.
For gRPC remote cache/executor, one gRPC channel could usually handle 100+ concurrent requests (controlled by —remote_max_concurrency_per_connection), so Bazel could make around
--remote_max_connections * 100 concurrent requests.Tags: host_machine_resource_optimizationsConnect to the remote cache through a proxy. Currently this flag can only be used to configure a Unix domain socket (unix:/path/to/socket).
The relative priority of remote actions to be stored in remote cache. The semantics of the particular priority values are server-dependent.
The maximum number of attempts to retry a transient error. If set to 0, retries are disabled.
The maximum backoff delay between remote retry attempts. Following units can be used: Days (d), hours (h), minutes (m), seconds (s), and milliseconds (ms). If the unit is omitted, the value is interpreted as seconds.
The maximum amount of time to wait for remote execution and cache calls. For the REST cache, this is both the connect and the read timeout. Following units can be used: Days (d), hours (h), minutes (m), seconds (s), and milliseconds (ms). If the unit is omitted, the value is interpreted as seconds.
Whether to upload locally executed action results to the remote cache if the remote cache supports it and the user is authorized to do so.
If set to true, Bazel will compute the hash sum of all remote downloads and discard the remotely cached values if they don’t match the expected value.
Custom key-value string pairs to supply in a build event.May be used multiple times; values are accumulated.Tags:
terminal_outputUse terminal controls to colorize output.
Selects additional config sections from the rc files; for every <command>, it also pulls in the options from <command>:<config> if such a section exists; if this section doesn’t exist in any .rc file, Blaze fails with an error. The config sections and flag combinations they are equivalent to are located in the tools/*.blazerc config files.May be used multiple times; values are accumulated.
Configures a credential helper conforming to the Credential Helper Specification
to use for retrieving authorization credentials for repository
fetching, remote caching and execution, and the build event service.
The path to the credential helper may be absolute, relative to the PATH environment variable,
or %workspace%-relative. The path may be optionally prefixed by a scope followed by an ’=’.
The scope is a domain name, optionally with a single leading ’*’ wildcard component. A helper
applies to URIs matching its scope, with more specific scopes preferred. If a helper has no
scope, it applies to every URI.
Credentials supplied by a helper take precedence over credentials supplied by
--google_default_credentials, --google_credentials, a .netrc file, or the
auth parameter to repository_ctx.download() and
repository_ctx.download_and_extract().
May be specified multiple times to set up multiple helpers.
See Configuring Bazel’s Credential Helper - Engflow Blog for instructions.May be used multiple times; values are accumulated.How long to cache credentials for if the credential helper doesn’t return an expiration time. Changing the value of this flag clears the cache.
Configures the timeout for a credential helper.
Credential helpers failing to respond within this timeout will fail the invocation.
Use terminal cursor controls to minimize scrolling output.
A path to a directory where Bazel can read and write actions and action outputs. If the directory does not exist, it will be created. Use —disk_cache with no value (or —disk_cache=true) to use a default location under the output user root (<outputUserRoot>/cache/disk). Use —nodisk_cache or —disk_cache=false to disable.
If true, Bazel picks up host-OS-specific config lines from bazelrc files. For example, if the host OS is Linux and you run bazel build, Bazel picks up lines starting with build:linux. Supported OS identifiers are linux, macos, windows, freebsd, and openbsd. Enabling this flag is equivalent to using —config=linux on Linux, —config=windows on Windows, etc.
How long the server must remain idle before a garbage collection of the action cache is attempted. Ineffectual unless —experimental_action_cache_gc_max_age is nonzero.Tags:
host_machine_resource_optimizationsIf set to a nonzero value, the action cache will be periodically garbage collected to remove entries older than this age. Garbage collection occurs in the background once the server has become idle, as determined by the —experimental_action_cache_gc_idle_delay and —experimental_action_cache_gc_threshold flags.Tags:
host_machine_resource_optimizationsThe percentage of stale action cache entries required for garbage collection to be triggered. Ineffectual unless —experimental_action_cache_gc_max_age is nonzero.Tags:
host_machine_resource_optimizationsHow long the server must remain idle before a garbage collection of the disk cache occurs. To specify the garbage collection policy, set —experimental_disk_cache_gc_max_size and/or —experimental_disk_cache_gc_max_age.
If set to a positive value, the disk cache will be periodically garbage collected to remove entries older than this age. If set in conjunction with —experimental_disk_cache_gc_max_size, both criteria are applied. Garbage collection occurrs in the background once the server has become idle, as determined by the —experimental_disk_cache_gc_idle_delay flag.
--experimental_disk_cache_gc_max_size
a size in bytes, optionally followed by a K, M, G or T multiplier
default:"0"
If set to a positive value, the disk cache will be periodically garbage collected to stay under this size. If set in conjunction with —experimental_disk_cache_gc_max_age, both criteria are applied. Garbage collection occurrs in the background once the server has become idle, as determined by the —experimental_disk_cache_gc_idle_delay flag.
Whether to enable thread dumps. If true, Bazel will dump the state of all threads (including virtual threads) to a file every —experimental_thread_dump_interval, or after action execution being inactive for —experimental_thread_dump_action_execution_inactivity_duration. The dumps will be written to the <output_base>/server/thread_dumps/ directory.Tags:
bazel_monitoringHow long an install base must go unused before it’s eligible for garbage collection. If nonzero, the server will attempt to garbage collect other install bases when idle.Tags:
host_machine_resource_optimizationsEnable experimental rule extension API and subrule APIsTags:
loading_and_analysis, experimental--experimental_thread_dump_action_execution_inactivity_duration
An immutable length of time.
default:"0"
Dump the threads when action execution being inactive for this duration. If zero, no thread dumps are written for action execution being inactive.Tags:
bazel_monitoringHow often to dump the threads periodically. If zero, no thread dumps are written periodically.Tags:
bazel_monitoringIf true, experimental Windows support for —watchfs is enabled. Otherwise —watchfsis a non-op on Windows. Make sure to also enable —watchfs.
--google_auth_scopes
comma-separated list of options
default:"https://www.googleapis.com/auth/cloud-platform"
A comma-separated list of Google Cloud authentication scopes.
Specifies the file to get authentication credentials from. See https://cloud.google.com/docs/authentication for details.
Whether to use ‘Google Application Default Credentials’ for authentication.
See Authentication methods at Google - Google Cloud for details.
Disabled by default.
Configures keep-alive pings for outgoing gRPC connections. If this is set, then Bazel
sends pings after this much time of no read operations on the connection, but
only if there is at least one pending gRPC call. The value 0 disables the keep-alives.
Configures a keep-alive timeout for outgoing gRPC connections. If keep-alive pings are
enabled with
--grpc_keepalive_time, then Bazel times out a connection if it does
not receive a ping reply after this much time. Times are treated as second
granularity; it is an error to set a value less than one second. If keep-alive
pings are disabled, then this setting is ignored.If true, java_binary is always executable. create_executable attribute is removed.Tags:
loading_and_analysis, incompatible_changeAdds a new repository with a local path in the form of
{repository name}={path}. This
only takes effect with --enable_bzlmod and is equivalent to adding a
corresponding local_repository to the root module’s MODULE.bazel file via
use_repo_rule. If the given path is an absolute path, it will be used as it is.
If the given path is a relative path, it is relative to the current working
directory. If the given path starts with %workspace%, it is relative to the
workspace root, which is the output of bazel info workspace. If the given path
is empty, then remove any previous injections.May be used multiple times; values are accumulated.Unique identifier, in UUID format, for the command being run. If explicitly specified uniqueness must be ensured by the caller. The UUID is printed to stderr, the BEP and remote execution protocol.Tags:
bazel_monitoring, bazel_internal_configurationOverride a repository with a local path in the form of
{repository name}={path},
where the repository name can be either a canonical name or an apparent name from the
point of view of the main repository.
Note that if this is flag is used to override a module’s repository, changes to the
MODULE.bazel file will not be effective if the module is obtained from a registry. Use
--override_module instead to for that purpose.
If the given path is an absolute path, it will be used as it is. If the given path is a
relative path, it is relative to the current working directory. If the given path starts
with %workspace%, it is relative to the workspace root, which is the output of bazel info workspace. If the given path is empty, then remove any previous overrides.May be used multiple times; values are accumulated.Show the command progress in the terminal title. Useful to see what bazel is doing when having multiple terminal tabs.
Display progress messages during a build.
Minimum number of seconds between progress messages in the output.
Include timestamps in messages
Specify a path to a TLS certificate that is trusted to sign server certificates.
Specify the TLS client certificate to use; you also need to provide a client key to enable client authentication.
Specify the TLS client key to use; you also need to provide a client certificate to enable client authentication.
Number of concurrent actions shown in the detailed progress bar; each action is shown on a separate line. The progress bar always shows at least one one, all numbers less than 1 are mapped to 1.Tags:
terminal_outputOn Linux/macOS: If true, bazel tries to use the operating system’s file watch service for local changes instead of scanning every file for a change. On Windows: this flag currently is a non-op but can be enabled in conjunction with —experimental_windows_watchfs. On any OS: The behavior is undefined if your workspace is on a network file system, and files are edited on a remote machine.
Aquery Options
Inherits all options from build. Options relating to query output and semanticsHow to resolve aspect dependencies when the output format is one of {xml,proto,record}. ‘off’ means no aspect dependencies are resolved, ‘conservative’ (the default) means all declared aspect dependencies are added regardless of whether they are given the rule class of direct dependencies, ‘precise’ means that only those aspects are added that are possibly active given the rule class of the direct dependencies. Note that precise mode requires loading other packages to evaluate a single target thus making it slower than the other modes. Also note that even precise mode is not completely precise: the decision whether to compute an aspect is decided in the analysis phase, which is not run during ‘bazel query’.Tags:
build_file_semanticsIf enabled, every query command emits labels as if by the Starlark
str function applied to a Label instance. This is useful for tools that need to match the output of different query commands and/or labels emitted by rules. If not enabled, output formatters are free to emit apparent repository names (relative to the main repository) instead to make the output more readable.Tags: terminal_outputaquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).Tags:
terminal_outputIf true, then the graph will be emitted ‘factored’, i.e. topologically-equivalent nodes will be merged together and their labels concatenated. This option is only applicable to —output=graph.Tags:
terminal_outputThe maximum length of the label string for a graph node in the output. Longer labels will be truncated; -1 means no truncation. This option is only applicable to —output=graph.Tags:
terminal_outputIf enabled, implicit dependencies will be included in the dependency graph over which the query operates. An implicit dependency is one that is not explicitly specified in the BUILD file but added by bazel. For cquery, this option controls filtering resolved toolchains.Tags:
build_file_semanticsIncludes names of the action inputs and outputs in the output (potentially large).Tags:
terminal_outputaquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).Tags:
terminal_outputIncludes the content of the action command lines in the output (potentially large).Tags:
terminal_outputInclude the file contents for the FileWrite, SourceSymlinkManifest, and RepoMappingManifest actions (potentially large).Tags:
terminal_outputInclude the content of the param files used in the command (potentially large). Note: Enabling this flag will automatically enable the —include_commandline flag.Tags:
terminal_outputIncludes action inputs that were pruned during action execution. Only affects actions that discover inputs and have been executed in a previous invocation. Only takes effect if —include_artifacts is also set.Tags:
terminal_outputIf enabled,
blaze query --output=build will output package_group targets.Tags: terminal_output, incompatible_changeIf enabled, when outputting package_group’s
packages attribute, the leading // will not be omitted.Tags: terminal_output, incompatible_changeIf set and —universe_scope is unset, then a value of —universe_scope will be inferred as the list of unique target patterns in the query expression. Note that the —universe_scope value inferred for a query expression that uses universe-scoped functions (e.g.
allrdeps) may not be what you want, so you should use this option only if you know what you are doing. See https://bazel.build/reference/query#sky-query for details and examples. If —universe_scope is set, then this option’s value is ignored. Note: this option applies only to query (i.e. not cquery).Tags: loading_and_analysisWhether each format is terminated with \0 instead of newline.Tags:
terminal_outputIf enabled, deps from “nodep” attributes will be included in the dependency graph over which the query operates. A common example of a “nodep” attribute is “visibility”. Run and parse the output of
info build-language to learn about all the “nodep” attributes in the build language.Tags: build_file_semanticsThe format in which the aquery results should be printed. Allowed values for aquery are: text, textproto, proto, streamed_proto, jsonproto.Tags:
terminal_outputWhen specified, query results will be written directly to this file, and nothing will be printed to Bazel’s standard output stream (stdout). In benchmarks, this is generally faster than
bazel query > file.Tags: terminal_outputIf true, attributes whose value is not explicitly specified in the BUILD file are included; otherwise they are omitted. This option is applicable to —output=protoTags:
terminal_outputPopulate the definition_stack proto field, which records for each rule instance the Starlark call stack at the moment the rule’s class was defined.Tags:
terminal_outputIf enabled, configurable attributes created by select() are flattened. For list types the flattened representation is a list containing each value of the select map exactly once. Scalar types are flattened to null.Tags:
build_file_semanticsPopulate the source_aspect_name proto field of each Attribute with the source aspect that the attribute came from (empty string if it did not).Tags:
terminal_outputUse the starlark environment in the value of the generated $internal_attr_hash attribute. This ensures that the starlark rule definition (and its transitive imports) are part of this identifier.Tags:
terminal_outputWhether or not to calculate and populate the $internal_attr_hash attribute.Tags:
terminal_outputPopulate the instantiation call stack of each rule. Note that this requires the stack to be presentTags:
terminal_outputWhether to output location information in proto output at all.Tags:
terminal_outputComma separated list of attributes to include in output. Defaults to all attributes. Set to empty string to not output any attribute. This option is applicable to —output=proto.Tags:
terminal_outputPopulate the rule_class_key field of each rule; and for the first rule with a given rule_class_key, also populate its rule_class_info proto field. The rule_class_key field uniquely identifies a rule class, and the rule_class_info field is a Stardoc-format rule class API definition.Tags:
terminal_outputWhether or not to populate the rule_input and rule_output fields.Tags:
terminal_outputIf set, query will read the query from the file named here, rather than on the command line. It is an error to specify a file here as well as a command-line query.Tags:
changes_inputsIf true, the location of BUILD files in xml and proto outputs will be relative. By default, the location output is an absolute path and will not be consistent across machines. You can set this option to true to have a consistent result across machines.Tags:
terminal_outputWithout performing extra analysis, dump the current Action Graph from Skyframe. Note: Specifying a target with —skyframe_state is currently not supported. This flag is only available with —output=proto or —output=textproto.Tags:
terminal_outputQuery: If disabled, dependencies on ‘exec configuration’ will not be included in the dependency graph over which the query operates. An ‘exec configuration’ dependency edge, such as the one from any ‘proto_library’ rule to the Protocol Compiler, usually points to a tool executed during the build rather than a part of the same ‘target’ program.
Cquery: If disabled, filters out all configured targets which cross an execution transition from the top-level target that discovered this configured target. That means if the top-level target is in the target configuration, only configured targets also in the target configuration will be returned. If the top-level target is in the exec configuration, only exec configured targets will be returned. This option will NOT exclude resolved toolchains.Tags:
build_file_semanticsA comma-separated set of target patterns (additive and subtractive). The query may be performed in the universe defined by the transitive closure of the specified targets. This option is used for the query and cquery commands.
For cquery, the input to this option is the targets all answers are built under and so this option may affect configurations and transitions. If this option is not specified, the top-level targets are assumed to be the targets parsed from the query expression. Note: For cquery, not specifying this option may cause the build to break if targets parsed from the query expression are not buildable with top-level options.Tags:
loading_and_analysisEnable persistent aar extractor by using workers.Tags:
execution, experimentalWhether to make source manifest actions remotableTags:
loading_and_analysis, execution, experimentalIf true, then Bazel will run coverage postprocessing for test in a new spawn.Tags:
execution, experimentalWhen enabled, passing multiple
--modify_execution_info flags is additive.
When disabled, only the last flag is taken into account.Tags: execution, affects_outputs, loading_and_analysis, incompatible_changeAdd or remove keys from an action’s execution info based on action mnemonic.
Applies only to actions which support execution info. Many common actions
support execution info, e.g. Genrule, CppCompile, Javac, StarlarkAction,
TestRunner. When specifying multiple values, order matters because
many regexes may apply to the same mnemonic.
Syntax:
regex=[+-]key,regex=[+-]key,....
Examples:.*=+x,.*=-y,.*=+zaddsxandzto, and removesyfrom, the execution info for all actions.Genrule=+requires-xaddsrequires-xto the execution info for all Genrule actions.(?!Genrule).*=-requires-xremovesrequires-xfrom the execution info for all non-Genrule actions.
execution, affects_outputs, loading_and_analysisEnable persistent Android dex and desugar actions by using workers.Expands to:
--internal_persistent_android_dex_desugar--strategy=Desugar=worker--strategy=DexBuilder=worker
host_machine_resource_optimizations, executionEnable persistent Android resource processor by using workers.Expands to:
--internal_persistent_busybox_tools--strategy=AaptPackage=worker--strategy=AndroidResourceParser=worker--strategy=AndroidResourceValidator=worker--strategy=AndroidResourceCompiler=worker--strategy=RClassGenerator=worker--strategy=AndroidResourceLink=worker--strategy=AndroidAapt2=worker--strategy=AndroidAssetMerger=worker--strategy=AndroidResourceMerger=worker--strategy=AndroidCompiledResourceMerger=worker--strategy=ManifestMerger=worker--strategy=AndroidManifestMerger=worker--strategy=Aapt2Optimize=worker--strategy=AARGenerator=worker--strategy=ProcessDatabinding=worker--strategy=GenerateDataBindingBaseClasses=worker
host_machine_resource_optimizations, executionEnable persistent multiplexed Android dex and desugar actions by using workers.Expands to:
--persistent_android_dex_desugar--internal_persistent_multiplex_android_dex_desugar
host_machine_resource_optimizations, executionEnable persistent multiplexed Android resource processor by using workers.Expands to:
--persistent_android_resource_processor--modify_execution_info=AaptPackage=+supports-multiplex-workers--modify_execution_info=AndroidResourceParser=+supports-multiplex-workers--modify_execution_info=AndroidResourceValidator=+supports-multiplex-workers--modify_execution_info=AndroidResourceCompiler=+supports-multiplex-workers--modify_execution_info=RClassGenerator=+supports-multiplex-workers--modify_execution_info=AndroidResourceLink=+supports-multiplex-workers--modify_execution_info=AndroidAapt2=+supports-multiplex-workers--modify_execution_info=AndroidAssetMerger=+supports-multiplex-workers--modify_execution_info=AndroidResourceMerger=+supports-multiplex-workers--modify_execution_info=AndroidCompiledResourceMerger=+supports-multiplex-workers--modify_execution_info=ManifestMerger=+supports-multiplex-workers--modify_execution_info=AndroidManifestMerger=+supports-multiplex-workers--modify_execution_info=Aapt2Optimize=+supports-multiplex-workers--modify_execution_info=AARGenerator=+supports-multiplex-workers
host_machine_resource_optimizations, executionEnable persistent and multiplexed Android tools (dexing, desugaring, resource processing).Expands to:
--internal_persistent_multiplex_busybox_tools--persistent_multiplex_android_resource_processor--persistent_multiplex_android_dex_desugar
host_machine_resource_optimizations, executionIf true, use the target platform for running tests rather than the test exec group.Tags:
executionThe Android target compiler.Tags:
affects_outputs, loading_and_analysis, loses_incremental_stateSelects the manifest merger to use for android_binary rules. Flag to help the transition to the Android manifest merger from the legacy merger.Tags:
affects_outputs, loading_and_analysis, loses_incremental_stateSets the platforms that android_binary targets use. If multiple platforms are specified, then the binary is a fat APKs, which contains native binaries for each specified target platform.Tags:
changes_inputs, loading_and_analysis, loses_incremental_stateSpecifies a suffix to be added to the configuration directory.Tags:
affects_outputsThe C++ compiler to use for compiling the target.Tags:
loading_and_analysis, executionLocation of the binary that is used to postprocess raw coverage reports. This must
be a binary target. Defaults to
@bazel_tools//tools/test:lcov_merger.Tags: changes_inputs, affects_outputs, loading_and_analysisLocation of the binary that is used to generate coverage reports. This must
be a binary target. Defaults to
@bazel_tools//tools/test:coverage_report_generator.Tags: changes_inputs, affects_outputs, loading_and_analysisLocation of support files that are required on the inputs of every test action
that collects code coverage. Defaults to
//tools/test:coverage_support.Tags: changes_inputs, affects_outputs, loading_and_analysisSpecifies a custom malloc implementation. This setting overrides malloc attributes in build rules.Tags:
changes_inputs, affects_outputsIf set, add a “requires-xcode:{version}” execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a “requires-xcode-label:{version_label}” execution requirement.Tags:
loses_incremental_state, loading_and_analysis, execution, experimentalIf true, use the most recent Xcode that is available both locally and remotely. If false, or if there are no mutual available versions, use the local Xcode version selected via xcode-select.Tags:
loses_incremental_state, experimentalThe platforms that are available as execution platforms to run actions.
Platforms can be specified by exact target, or as a target pattern.
These platforms will be considered before those declared in the
WORKSPACE file by
register_execution_platforms(). This option may only be set once; later
instances will override earlier flag settings.Tags: executionThe toolchain rules to be considered during toolchain resolution.
Toolchains can be specified by exact target, or as a target pattern.
These toolchains will be considered before those declared in the
WORKSPACE file
by register_toolchains().May be used multiple times; values are accumulated.Tags: affects_outputs, changes_inputs, loading_and_analysisA label to a checked-in libc library. The default value is selected by the crosstool toolchain, and you almost never need to override it.Tags:
action_command_lines, affects_outputsNo-op flag. Will be removed in a future release.Tags:
loading_and_analysis, executionIf specified, this setting overrides the libc top-level directory (—grte_top) for the exec configuration.Tags:
action_command_lines, affects_outputsThe label of a platform rule that describes the host system.Tags:
affects_outputs, changes_inputs, loading_and_analysisIf enabled,
bazel test --run_under=//:runner builds //:runner in the exec
configuration. If disabled, it builds //:runner in the target configuration.
Bazel executes tests on exec machines, so the former is more correct. This
doesn’t affect bazel run, which always builds --run_under=//foo in the
target configuration.Tags: affects_outputs, incompatible_changeWhether to emit a strip action as part of objc linking.Tags:
action_command_lines, incompatible_changeIf true, Bazel will not enable ‘host’ and ‘nonhost’ features in the c++ toolchain (see https://github.com/bazelbuild/bazel/issues/7407 for more information).Tags:
loading_and_analysis, incompatible_changeIf true, Bazel will not link library dependencies as whole archive by default (see https://github.com/bazelbuild/bazel/issues/7362 for migration instructions).Tags:
loading_and_analysis, incompatible_changeIf true, strip action for executables will use flag -x, which does not break dynamic symbol resolution.Tags:
action_command_lines, incompatible_changeUse interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.Tags:
loading_and_analysis, affects_outputs, affects_outputsSpecifies the version of the iOS SDK to use to build iOS applications. If unspecified, uses the default iOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateSpecifies the version of the macOS SDK to use to build macOS applications. If unspecified, uses the default macOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateThe minimum OS version which your compilation targets.Tags:
loading_and_analysis, affects_outputsThe location of a mapping file that describes which platform to use if none is set or
which flags to set when a platform already exists. Must be relative to the main
workspace root. Defaults to
platform_mappings (a file directly under the
workspace root).Tags: affects_outputs, changes_inputs, loading_and_analysis, non_configurableThe labels of the platform rules describing the target platforms for the current command.Tags:
affects_outputs, changes_inputs, loading_and_analysisSpecifies the version of the tvOS SDK to use to build tvOS applications. If unspecified, uses the default tvOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateMakes apple_crosstool_transition fall back to using the value of
--platforms flag instead of legacy --cpu when needed.Tags: loading_and_analysis--watchos_sdk_version
a dotted version (for example '2.3' or '3.3alpha2.4')
default:"see description"
Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses the default watchOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateIf specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.Tags:
loses_incremental_stateThe label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.Tags:
loses_incremental_state, loading_and_analysisWhether to generate debug symbol(.dSYM) file(s).Tags:
affects_outputs, action_command_linesIf true, build runfiles symlink forests for all targets. If false, write them only when required by a local action, test or run command.Tags:
affects_outputsIf true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.Tags:
affects_outputsIf enabled, when building C++ tests statically and with fission the .dwp file for the test binary will be automatically built as well.Tags:
loading_and_analysis, affects_outputsSets the suffixes of header files that a cc_proto_library creates.Tags:
affects_outputs, loading_and_analysisSets the suffixes of source files that a cc_proto_library creates.Tags:
affects_outputs, loading_and_analysisRun extra actions for alternative Java api versions in a proto_library.Tags:
affects_outputs, loading_and_analysis, experimentalSave the state of enabled and requested feautres as an output of compilation.Tags:
affects_outputs, experimentalSpecifies which compilation modes use fission for C++ compilations and links. May be any combination of {‘fastbuild’, ‘dbg’, ‘opt’} or the special values ‘yes’ to enable all modes and ‘no’ to disable all modes.Tags:
loading_and_analysis, action_command_lines, affects_outputsIf true, native rules add
DefaultInfo.files of data dependencies to their runfiles,
which matches the recommended behavior for Starlark rules (runfiles features to avoid).Tags: affects_outputs, incompatible_changeIf enabled, the
{binary}.repo_mapping file emits a module extension’s repo mapping
only once instead of once for each repo generated by the extension that
contributes runfiles.Tags: affects_outputs, incompatible_changeList of flags for which the use in
select() is disabled.Tags: loading_and_analysis, incompatible_change, non_configurableIf true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.Tags:
incompatible_changeSpecifies whether to generate a linkmap file.Tags:
affects_outputsIf set, temporary outputs from gcc will be saved. These include .s files (assembler code), .i files (preprocessed C) and .ii files (preprocessed C++).Tags:
affects_outputs--action_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies the set of environment variables available to actions with target
configuration. Variables can be either specified by
name, in which case
the value will be taken from the invocation environment, by the name=value
pair which sets the value independent of the invocation environment, or by
=name, which unsets the variable of that name. This option can be used
multiple times; for options given for the same variable, the latest wins,
options for different variables accumulate.
Note that unless --incompatible_repo_env_ignores_action_env is true, all name=value
pairs will be available to repository rules.May be used multiple times; values are accumulated.Tags: action_command_linesAllowed values for the
--cpu flag.Tags: changes_inputs, affects_outputsDetermines whether C++ deps of Android rules will be linked dynamically when a cc_binary does not explicitly create a shared library. ‘default’ means bazel will choose whether to link dynamically. ‘fully’ means all libraries will be linked dynamically. ‘off’ means that all libraries will be linked in mostly static mode.Tags:
affects_outputs, loading_and_analysis--android_manifest_merger_order
alphabetical, alphabetical_by_configuration or dependency
default:"alphabetical"
Sets the order of manifests passed to the manifest merger for Android binaries. ALPHABETICAL means manifests are sorted by path relative to the execroot. ALPHABETICAL_BY_CONFIGURATION means manifests are sorted by paths relative to the configuration directory within the output directory. DEPENDENCY means manifests are ordered with each library’s manifest coming before the manifests of its dependencies.Tags:
action_command_lines, executionEnables resource shrinking for android_binary APKs that use ProGuard.Tags:
affects_outputs, loading_and_analysisIf specified, Bazel will instrument code (using offline instrumentation where
possible) and will collect coverage information during tests. Only targets that
match
--instrumentation_filter will be affected. Usually this option should
not be specified directly - bazel coverage command should be used instead.Tags: affects_outputsShort form:
-cSpecify the mode the binary will be built in. Values: fastbuild, dbg, opt.Tags: affects_outputs, action_command_linesAdditional option to pass to gcc when compiling C source files.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional options to pass to gcc.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsDeprecated: this flag is not used internally by Blaze although there are legacy platform
mappings to allow for backwards compatibility. Do not use this flag, instead use
--platforms with an appropriate platform definition.Tags: changes_inputs, affects_outputsUse CSFDO profile information to optimize compilation. Specify the absolute path name of the zip file containing the profile file, a raw or an indexed LLVM profile file.Tags:
affects_outputsGenerate binaries with context sensitive FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.Tags:
affects_outputsThe cs_fdo_profile representing the context sensitive profile to be used for optimization.Tags:
affects_outputsAdditional option to pass to gcc when compiling C++ source files.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsEach
--define option specifies an assignment for a build variable.
In case of multiple values for a variable, the last one wins.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsDetermines whether C++ binaries will be linked dynamically. ‘default’ means Bazel will choose whether to link dynamically. ‘fully’ means all libraries will be linked dynamically. ‘off’ means that all libraries will be linked in mostly static mode.Tags:
loading_and_analysis, affects_outputsIf set, any use of absolute paths for propeller optimize will raise an error.Tags:
affects_outputsIf set, any use of absolute paths for FDO will raise an error.Tags:
affects_outputsEnable runfiles symlink tree; By default, it’s off on Windows, on on other platforms.Tags:
affects_outputsComma-separated list of aspects to be applied to exec-configured targets, regardless of whether or not they are top-level targets. This is an experimental feature and is subject to change.May be used multiple times; values are accumulated.Tags:
loading_and_analysisDeprecated in favor of aspects. Use
action_listener to attach an extra_action to
existing build actions.May be used multiple times; values are accumulated.Tags: execution, experimentalCompress Java resources in APKsTags:
affects_outputs, loading_and_analysis, experimentalEnables resource shrinking for android_binary APKs that use ProGuard.Tags:
affects_outputs, loading_and_analysis, experimentalIf specified, Bazel will also generate collect coverage information for generated files.Tags:
affects_outputs, experimentalIf true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.Tags:
action_command_lines, affects_outputs, experimentalWhich model to use for where in the output tree rules write their outputs, particularly
for multi-platform / multi-configuration builds. This is highly experimental. See
GH-6526 for details. Starlark actions can opt into path mapping by adding the key
supports-path-mapping to the execution_requirements dict.Tags: loses_incremental_state, bazel_internal_configuration, affects_outputs, executionEach entry should be of the form
label=value where label refers to a platform and values
is the desired shortname to override the platform’s CPU name in $(TARGET_CPU)
make variable and output path. Only used when
--experimental_platform_in_output_dir, --incompatible_target_cpu_from_platform or
--incompatible_bep_cpu_from_platform is true. Has highest naming priority.May be used multiple times; values are accumulated.Tags: affects_outputs, experimentalIf true, a shortname for the target platform is used in the output directory name
instead of the CPU. The exact scheme is experimental and subject to change:
- First, in the rare case the
--platformsoption does not have exactly one value, a hash of the platforms option is used. - Next, if any shortname for the current platform was registered by
--experimental_override_name_platform_in_output_dir, then that shortname is used. - Then, if
--experimental_use_platforms_in_output_dir_legacy_heuristicis set, use a shortname based off the current platform Label. - Finally, a hash of the platform option is used as a last resort.
affects_outputs, experimentalIf specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.Tags:
changes_inputs, affects_outputs, loading_and_analysis, experimentalPlease only use this flag as part of a suggested migration or testing strategy. Note
that the heuristic has known deficiencies and it is suggested to migrate to
relying on just
--experimental_override_name_platform_in_output_dir.Tags: affects_outputs, experimentalGenerate binaries with FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.Tags:
affects_outputsUse FDO profile information to optimize compilation. Specify the name of a zip file containing a .gcda file tree, an afdo file containing an auto profile, or an LLVM profile file. This flag also accepts files specified as labels (e.g.
//foo/bar:file.afdo - you may need to add an exports_files directive to the corresponding package) and labels pointing to fdo_profile targets. This flag will be superseded by the fdo_profile rule.Tags: affects_outputsUse cache prefetch hints.Tags:
affects_outputsThe fdo_profile representing the profile to be used for optimization.Tags:
affects_outputsThe given features will be enabled or disabled by default for targets built in the target configuration.
Specifying
-{feature} will disable the feature. Negative features always override positive ones.
See also --host_features.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsIf enabled, all C++ compilations produce position-independent code (“-fPIC”), links prefer PIC pre-built libraries over non-PIC libraries, and links produce position-independent executables (“-pie”).Tags:
loading_and_analysis, affects_outputs--host_action_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies the set of environment variables available to actions with execution
configurations. Variables can be either specified by
name, in which case the
value will be taken from the invocation environment, by the name=value pair
which sets the value independent of the invocation environment, or by
=name, which unsets the variable of that name. This option can
be used multiple times; for options given for the same variable, the latest
wins, options for different variables accumulate.May be used multiple times; values are accumulated.Tags: action_command_linesSpecify the mode the tools used during the build will be built in. Values:
fastbuild, dbg, opt.Tags: affects_outputs, action_command_linesAdditional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional options to pass to the C compiler for tools built in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsThe host CPU.Tags:
changes_inputs, affects_outputsAdditional options to pass to C++ compiler for tools built in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsThe given features will be enabled or disabled by default for targets built in the exec configuration.
Specifying
-{feature} will disable the feature. Negative features always override positive ones.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsAdditional option to pass to linker when linking tools in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputs--host_macos_minimum_os
a dotted version (for example '2.3' or '3.3alpha2.4')
default:"see description"
Minimum compatible macOS version for host targets. If unspecified, uses ‘macos_sdk_version’.Tags:
loses_incremental_state--host_per_file_copt
a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options
Additional options to selectively pass to the C/C++ compiler when compiling certain files in the exec configurations. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,…,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see —instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: —host_per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsWhen enabled, an exec groups is automatically created for each toolchain used by a rule.
For this to work rule needs to specify
toolchain parameter on its actions. For
more information, see GH-17134.Tags: affects_outputs, incompatible_changeIf true, the genfiles directory is folded into the bin directory.Tags:
affects_outputs, incompatible_changeIf specified, the value of the cpu constraint (
@platforms//cpu:cpu) of
the target platform is used to set the $(TARGET_CPU) make variable.Tags: loading_and_analysis, incompatible_changeWhen coverage is enabled, specifies whether to consider instrumenting test rules.
When set, test rules included by
--instrumentation_filter are instrumented.
Otherwise, test rules are always excluded from coverage instrumentation.Tags: affects_outputs--instrumentation_filter
a comma-separated list of regex expressions with prefix '-' specifying excluded paths
default:"-/javatests[/:],-/test/java[/:]"
When coverage is enabled, only rules with names included by the
specified regex-based filter will be instrumented. Rules prefixed
with ’-’ are excluded instead. Note that only non-test rules are
instrumented unless
--instrument_test_targets is enabled.Tags: affects_outputsMinimum compatible iOS version for target simulators and devices. If unspecified, uses ‘ios_sdk_version’.Tags:
loses_incremental_stateComma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisAdditional option to pass to gcc when linking.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional option to pass to the LTO backend step (under —features=thin_lto).May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional option to pass to the LTO indexing step (under —features=thin_lto).May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsComma-separated list of architectures for which to build Apple macOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisMinimum compatible macOS version for targets. If unspecified, uses ‘macos_sdk_version’.Tags:
loses_incremental_stateUse memprof profile.Tags:
affects_outputsWhether to perform symbol and dead-code strippings on linked binaries. Binary strippings will be performed if both this flag and —compilation_mode=opt are specified.Tags:
action_command_linesAdditional options to pass to gcc when compiling Objective-C/C++ source files.May be used multiple times; values are accumulated.Tags:
action_command_lines--per_file_copt
a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options
Additional options to selectively pass to gcc when compiling certain files. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,…,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see —instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: —per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputs--per_file_ltobackendopt
a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options
Additional options to selectively pass to LTO backend (under —features=thin_lto) when compiling certain backend objects. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,…,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns. option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: —per_file_ltobackendopt=//foo/.*.o,-//foo/bar.o@-O0 adds the -O0 command line option to the LTO backend command line of all o files in //foo/ except bar.o.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsSpecifies a suffix to be added to the configuration directory.Tags:
loses_incremental_state, affects_outputs, loading_and_analysisUse Propeller profile information to optimize the build target.A propeller profile must consist of at least one of two files, a cc profile and a ld profile. This flag accepts a build label which must refer to the propeller profile input files. For example, the BUILD file that defines the label, in a/b/BUILD:propeller_optimize( name = “propeller_profile”, cc_profile = “propeller_cc_profile.txt”, ld_profile = “propeller_ld_profile.txt”,)An exports_files directive may have to be added to the corresponding package to make these files visible to Bazel. The option must be used as: —propeller_optimize=//a/b:propeller_profileTags:
action_command_lines, affects_outputsAbsolute path name of cc_profile file for Propeller Optimized builds.Tags:
affects_outputsAbsolute path name of ld_profile file for Propeller Optimized builds.Tags:
affects_outputsPrefix to insert before the executables for the
test and run commands.
If the value is foo -bar, and the execution command line is test_binary -baz,
then the final command line is foo -bar test_binary -baz.
This can also be a label to an executable target. Some examples are:valgrindstracestrace -cvalgrind --quiet --num-callers=20//package:target//package:target --options
action_command_linesIf true, native libraries that contain identical functionality will be shared among different targetsTags:
loading_and_analysis, affects_outputsStamp binaries with the date, username, hostname, workspace information, etc.Tags:
affects_outputsSpecifies whether to strip binaries and shared libraries (using “-Wl,—strip-debug”). The default value of ‘sometimes’ means strip iff —compilation_mode=fastbuild.Tags:
affects_outputsAdditional options to pass to strip when generating a ‘<name>.stripped’ binary.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsComma-separated list of architectures for which to build Apple tvOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisMinimum compatible tvOS version for target simulators and devices. If unspecified, uses ‘tvos_sdk_version’.Tags:
loses_incremental_stateComma-separated list of architectures for which to build Apple visionOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisComma-separated list of architectures for which to build Apple watchOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisMinimum compatible watchOS version for target simulators and devices. If unspecified, uses ‘watchos_sdk_version’.Tags:
loses_incremental_stateUse XbinaryFDO profile information to optimize compilation. Specify the name of default cross binary profile. When the option is used together with —fdo_instrument/—fdo_optimize/—fdo_profile, those options will always prevail as if xbinary_fdo is never specified.Tags:
affects_outputsIf disabled, visibility errors in target dependencies are demoted to warnings.Tags:
build_file_semantics, non_configurableWhether to desugar Java 8 bytecode before dexing.Tags:
affects_outputs, loading_and_analysis, loses_incremental_stateWhether to include supported Java 8 libraries in apps for legacy devices.Tags:
affects_outputs, loading_and_analysis, loses_incremental_state, experimentalChecks the environments each target is compatible with and reports errors if any target has dependencies that don’t support the same environmentsTags:
build_file_semanticsIf true, enable package()s to set the transitive_visibility attribute to restrict which packages may depend on them.Tags:
build_file_semantics, experimentalWhen enabled, enforce that a java_binary rule can’t contain more than one version of the same class file on the classpath. This enforcement can break the build, or can just result in warnings.Tags:
loading_and_analysisIf true, checks that a Java target explicitly declares all directly used targets as dependencies.Tags:
build_file_semantics, eagerness_to_exitIf enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.Tags:
build_file_semantics, incompatible_changeNo-op. Kept here for backwards compatibility.Tags:
eagerness_to_exit, incompatible_change, deprecatedWhen enabled, and with experimental_one_version_enforcement set to a non-NONE value, enforce one version on java_test targets. This flag can be disabled to improve incremental test performance at the expense of missing potential one version violations.Tags:
loading_and_analysisUnless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.Tags:
build_file_semantics, eagerness_to_exit, incompatible_changeUnless OFF, checks that a proto_library target explicitly declares all targets used in ‘import public’ as exported.Tags:
build_file_semantics, eagerness_to_exit, incompatible_changeIf true, headers found through system include paths (-isystem) are also required to be declared.Tags:
loading_and_analysis, eagerness_to_exitDeclares this build’s target environment. Must be a label reference to an
environment rule. If specified, all top-level targets must be compatible with this
environment.
See also --platforms.May be used multiple times; values are accumulated.Tags: changes_inputsImplementation to use to sign APKsTags:
action_command_lines, affects_outputs, loading_and_analysisIf set, and compilation mode is not ‘opt’, objc apps will include debug entitlements when signing.Tags:
changes_inputsIf true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library and objc_import.Tags:
build_file_semantics, incompatible_changeIf true, make the default value true for alwayslink attributes in objc_library and objc_import.Tags:
build_file_semantics, incompatible_changeIf true, an analysis failure of a rule target results in the target’s propagation
of an instance of
AnalysisFailureInfo containing the error description, instead
of resulting in a build failure.Tags: loading_and_analysis, experimentalSets the maximum number of transitive dependencies through a rule attribute with
a
for_analysis_testing configuration transition.
Exceeding this limit will result in a rule error.Tags: loading_and_analysis--default_test_resources
a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100
Override the default resources amount for tests. The expected format is
{resource}={value}. If a single positive number is specified as {value}
it will override the default resources for all test sizes. If 4
comma-separated numbers are specified, they will override the resource
amount for respectively the small, medium, large, enormous test sizes.
Values can also be HOST_RAM/HOST_CPU, optionally followed
by [-|*]{float} (eg. memory=HOST_RAM*.1,HOST_RAM*.2,HOST_RAM*.3,HOST_RAM*.4).
The default test resources specified by this flag are overridden by explicit
resources specified in tags.May be used multiple times; values are accumulated.Specifies number of times to run each test. If any of those attempts fail for any
reason, the whole test is considered failed. Normally the value specified is
just an integer.
Example:
--runs_per_test=3 will run all tests 3 times.
Alternate syntax: regex_filter@runs_per_test. Where runs_per_test stands for
an integer value and regex_filter stands for a list of include and exclude
regular expression patterns (Also see —instrumentation_filter).
Example: --runs_per_test=//foo/.*,-//foo/bar/.*@3 runs all tests in //foo/ except
those under //foo/bar three times. This option can be passed multiple times. The most
recently passed argument that matches takes precedence. If nothing matches,
the test is only run once.May be used multiple times; values are accumulated.--test_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies additional environment variables to be injected into the test runner
environment. Variables can be either specified by
name, in which
case its value will be read from the Bazel client environment, or by the
name=value pair.
Previously set variables can be unset via =name.
This option can be used multiple times to specify several variables.
Used only by the ‘bazel test’ command.May be used multiple times; values are accumulated.Tags: test_runnerOverride the default test timeout values for test timeouts (in secs). If a single
positive integer value is specified it will override all categories. If 4
comma-separated integers are specified, they will override the timeouts for
short, moderate, long and eternal (in that order). In either form, a value of
-1 tells blaze to use its default timeouts for that category.If true, undeclared test outputs will be archived in a zip file.Tags:
test_runnerWhether to generate and analyze .d files.Tags:
loading_and_analysis, execution, changes_inputsWhether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.Tags:
loading_and_analysis, execution, changes_inputs, experimentalIf enabled, C++ .d files will be passed through in memory directly from the remote build nodes instead of being written to disk.Tags:
loading_and_analysis, execution, affects_outputs, experimentalIf enabled, the dependency (.jdeps) files generated from Java compilations will be passed through in memory directly from the remote build nodes instead of being written to disk.Tags:
loading_and_analysis, execution, affects_outputs, experimentalWhen enabled,
--trim_test_configuration will not trim the test configuration for rules
marked testonly=1. This is meant to reduce action conflict issues when non-test
rules depend on cc_test rules. No effect if --trim_test_configuration is
false.Tags: loading_and_analysis, loses_incremental_state, experimentalWhether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.Tags:
loading_and_analysis, execution, changes_inputs, experimentalIf set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.Tags:
changes_inputs, loading_and_analysisWhen building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).Tags:
executionWhen enabled, test-related options will be cleared below the top level of the build. When this flag is active, tests cannot be built as dependencies of non-test rules, but changes to test-related options will not cause non-test rules to be re-analyzed.Tags:
loading_and_analysis, loses_incremental_state--toolchain_resolution_debug
a comma-separated list of regex expressions with prefix '-' specifying excluded paths
default:"-.*"
Print debug information during toolchain resolution. The flag takes a regex, which is checked against toolchain types and specific targets to see which to debug. Multiple regexes may be separated by commas, and then each regex is checked separately. Note: The output of this flag is very complex and will likely only be useful to experts in toolchain resolution.Tags:
terminal_outputIf enabled, visibility errors include additional diagnostic information.Tags:
build_file_semantics, non_configurableSets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
{key}={value} as an argument.May be used multiple times; values are accumulated.Tags: changes_inputs, non_configurableShort form:
-tIf set to auto, Bazel reruns a test if and only if:- Bazel detects changes in the test or its dependencies,
- The test is marked as
external, - Multiple test runs were requested with
--runs_per_test, or - The test previously failed.
If set to
yes, Bazel caches all test results except for tests marked asexternal. If set tono, Bazel does not cache any test results.
If
on_failed or on_passed, then Blaze will cancel concurrently running tests on the first
successful run with that result. This is only useful in combination with
--runs_per_test_detects_flakes.Tags: affects_outputs, loading_and_analysis, experimentalIf true, then Bazel fetches the entire coverage data directory for each test during a coverage run.Tags:
affects_outputs, loading_and_analysis, experimentalIf true, coverage for clang will generate an LCOV report.Tags:
affects_outputs, loading_and_analysis, experimentalEnables reduced classpaths for Java compilations.
Whether to validate java_* sources.Tags:
affects_outputs, experimentalThe number of CPUs to reserve for Turbine.
Explicitly specify a dependency to JUnit or Hamcrest in a java_test instead of accidentally obtaining from the TestRunner’s deps. Only works for bazel right now.
The Java launcher used by tools that are executed during a build.
Additional options to pass to javac when building tools that are executed during a build.May be used multiple times; values are accumulated.
Additional options to pass to the Java VM when building tools that are executed during the build. These options will get added to the VM startup options of each java_binary target.May be used multiple times; values are accumulated.
If true, exclusive tests will run with sandboxed strategy. Add
local tag to force
an exclusive test run locallyTags: incompatible_changeIf true, Bazel uses an environment with a static value for PATH and does not
inherit
LD_LIBRARY_PATH. Use --action_env=ENV_VARIABLE if you want to
inherit specific environment variables from the client, but note that doing so
can prevent cross-user caching if a shared cache is used.Tags: loading_and_analysis, incompatible_changeAdditional options to pass to the J2ObjC tool.May be used multiple times; values are accumulated.
Causes the Java virtual machine of a java test to wait for a connection from a JDWP-compliant debugger (such as jdb) before starting the test. Implies -test_output=streamed.Expands to:
--test_arg=--wrapper_script_flag=--debug--test_output=streamed--test_strategy=exclusive--test_timeout=9999--nocache_test_results
Generate dependency information (for now, compile-time classpath) per Java target.
Compile ijars directly from source.
The Java language version
The Java launcher to use when building Java binaries. If this flag is set to the empty string, the JDK launcher is used. The “launcher” attribute overrides this flag.
The Java runtime version
Additional options to pass to javac.May be used multiple times; values are accumulated.
Additional options to pass to the Java VM. These options will get added to the VM startup options of each java_binary target.May be used multiple times; values are accumulated.
Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.
Specifies a binary to use to do dexing without sharding.
Plugins to use in the build. Currently works with java_plugin.May be used multiple times; values are accumulated.
Specifies which version of ProGuard to use for code removal when building a Java binary.
The label of the proto-compiler.Tags:
affects_outputs, loading_and_analysisWhether to pass profile_path to the proto compiler.Tags:
affects_outputs, loading_and_analysisThe profile to pass to the proto compiler as profile_path. If unset, but —proto_profile is true (the default), infers the path from —fdo_optimize.Tags:
affects_outputs, loading_and_analysisLabel of proto_lang_toolchain() which describes how to compile C++ protosTags:
affects_outputs, loading_and_analysisLabel of proto_lang_toolchain() which describes how to compile Java protosTags:
affects_outputs, loading_and_analysis--proto_toolchain_for_javalite
a build target label
default:"@bazel_tools//tools/proto:javalite_toolchain"
Label of proto_lang_toolchain() which describes how to compile JavaLite protosTags:
affects_outputs, loading_and_analysisAdditional options to pass to the protobuf compiler.May be used multiple times; values are accumulated.Tags:
affects_outputsIf true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.
Absolute path to the shell executable for Bazel to use. If this is unset, but the
BAZEL_SH environment variable is set on the first Bazel invocation (that starts
up a Bazel server), Bazel uses that. If neither is set, Bazel uses a hard-coded
default path depending on the operating system it runs on;- Windows:
c:/msys64/usr/bin/bash.exe - FreeBSD:
/usr/local/bin/bash - All others:
/bin/bash.
bash may lead
to build failures or runtime failures of the generated binaries.Tags: loading_and_analysisSpecifies additional options and arguments that should be passed to the test
executable. Can be used multiple times to specify several arguments.
If multiple tests are executed, each of them will receive identical arguments.
Used only by the
bazel test command.May be used multiple times; values are accumulated.Specifies a filter to forward to the test framework. Used to limit the tests run. Note that this does not affect which targets are built.
This option is deprecated and has no effect.Tags:
deprecatedForwards fail fast option to the test runner. The test runner should stop execution upon first failure.
--test_sharding_strategy
explicit, disabled or forced=k where k is the number of shards to enforce
default:"explicit"
Specify strategy for test sharding:
explicitto only use sharding if theshard_countBUILDattribute is present.disabledto never use test sharding.forced=kto enforcekshards for testing regardless of theshard_countBUILDattribute.
The Java language version used to execute the tools that are needed during a build
The Java runtime version used to execute tools during the build
If enabled, this option causes Java compilation to use interface jars. This will result in faster incremental compilation, but error messages can be different.
Build Options
Options that control build executionIf set, allow at least one action to run even if the resource is not enough or unavailable.Tags:
executionFilters spawn strategies by the execution platform without affecting order.
For example:With the above options;
- Actions configured for the host platform will be given
remote,sandboxed,worker. - Actions configured for the
//:linux_amd64platform will be givenremote. - Actions configured for the
//:linux_amd64platform with mnemonicGenrulewill be given no strategies and fail to spawn.
executionDon’t perform the build, just check if it is up-to-date. If all targets are up-to-date, the build completes successfully. If any step needs to be executed an error is reported and the build fails.Tags:
executionHow many milliseconds should local execution be delayed, if remote execution was faster during a build at least once?Tags:
execution, host_machine_resource_optimizationsThe local strategies, in order, to use for the given mnemonic - the first applicable strategy is used. For example,
worker,sandboxed runs actions that support persistent workers using the worker strategy, and all others using the sandboxed strategy. If no mnemonic is given, the list of strategies is used as the fallback for all mnemonics. The default fallback list is worker,sandboxed, orworker,sandboxed,standalone if experimental_local_lockfree_output is set. Takes [mnemonic=]local_strategy[,local_strategy,…]May be used multiple times; values are accumulated.Tags: execution, host_machine_resource_optimizationsThe remote strategies, in order, to use for the given mnemonic - the first applicable strategy is used. If no mnemonic is given, the list of strategies is used as the fallback for all mnemonics. The default fallback list is
remote, so this flag usually does not need to be set explicitly. Takes [mnemonic=]remote_strategy[,remote_strategy,…]May be used multiple times; values are accumulated.Tags: execution, host_machine_resource_optimizationsIf set to true, Bazel is allowed to run action in a virtual thread. The number of
actions in flight is still capped with
--jobs.Tags: host_machine_resource_optimizations, execution, incompatible_changeThe number of maximum concurrent actions to run with async execution. If the value is
less than
--jobs, it is clamped to --jobs.Tags: host_machine_resource_optimizations, executionSpecify a Docker image name (e.g. “ubuntu:latest”) that should be used to execute a sandboxed action when using the docker strategy and the action itself doesn’t already have a container-image attribute in its exec_properties in the platform description. The value of this flag is passed verbatim to ‘docker run’, so it supports the same syntax and mechanisms as Docker itself.Tags:
executionIf enabled, injects the uid and gid of the current user into the Docker image before using it. This is required if your build / tests depend on the user having a name and home directory inside the container. This is on by default, but you can disable it in case the automatic image customization feature doesn’t work in your case or you know that you don’t need it.Tags:
executionWhen set, targets that are build “for tool” are not subject to dynamic execution. Such targets are extremely unlikely to be built incrementally and thus not worth spending local cycles on.Tags:
execution, host_machine_resource_optimizationsControls how much load from dynamic execution to put on the local machine. This flag adjusts how many actions in dynamic execution we will schedule concurrently. It is based on the number of CPUs Blaze thinks is available, which can be controlled with the —local_resources=cpu= flag.
If this flag is 0, all actions are scheduled locally immediately. If > 0, the amount of actions scheduled locally is limited by the number of CPUs available. If < 1, the load factor is used to reduce the number of locally scheduled actions when the number of actions waiting to schedule is high. This lessens the load on the local machine in the clean build case, where the local machine does not contribute much.Tags:
execution, host_machine_resource_optimizationsIf >0, the time a dynamically run action must run remote-only before we prioritize its local execution to avoid remote timeouts. This may hide some problems on the remote execution system. Do not turn this on without monitoring of remote execution issues.Tags:
execution, host_machine_resource_optimizationsEnable Docker-based sandboxing. This option has no effect if Docker is not installed.Tags:
executionIf set to true, the contents of stashed sandboxes for reuse_sandbox_directories will be tracked in memory. This reduces the amount of I/O needed during reuse. Depending on the build this flag may improve wall time. Depending on the build as well this flag may use a significant amount of additional memory.Tags:
host_machine_resource_optimizations, execution--experimental_sandbox_async_tree_delete_idle_threads
an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]<float>) eg. "auto", "HOST_CPUS*.5"
default:"4"
If 0, sandboxes are deleted as soon as actions finish, blocking action completion. If greater than 0, sandboxes are deleted asynchronously in the background without blocking action completion. Asynchronous deletion uses a single thread while a command is running, but ramps up to as many threads as the value of this flag once the server becomes idle. Set to
auto to use as many threads as the number of CPUs. A server shutdown blocks on any pending asynchronous deletions.Tags: host_machine_resource_optimizations, executionIf true, actions whose mnemonic matches the input regex will have their resources request enforced as limits, overriding the value of —experimental_sandbox_limits, if the resource type supports it. For example a test that declares cpu:3 and resources:memory:10, will run with at most 3 cpus and 10 megabytes of memory.Tags:
execution--experimental_sandbox_limits
a named double, 'name=value', where value is an integer, or a keyword ("HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]<float>) eg. "HOST_CPUS", "HOST_CPUS*.5"
If > 0, each Linux sandbox will be limited to the given amount for the specified resource. Requires —incompatible_use_new_cgroup_implementation and overrides —experimental_sandbox_memory_limit_mb. Requires cgroups v1 or v2 and permissions for the users to the cgroups dir.May be used multiple times; values are accumulated.Tags:
execution--experimental_sandbox_memory_limit_mb
an integer number of MBs, or "HOST_RAM", optionally followed by [-|*]<float>.
default:"0"
If > 0, each Linux sandbox will be limited to the given amount of memory (in MB). Requires cgroups v1 or v2 and permissions for the users to the cgroups dir.Tags:
executionIf enabled, could shrink worker pool if worker memory pressure is high. This flag works only when flag experimental_total_worker_memory_limit_mb is enabled.Tags:
execution, host_machine_resource_optimizations--experimental_total_worker_memory_limit_mb
an integer number of MBs, or "HOST_RAM", optionally followed by [-|*]<float>.
default:"0"
If this limit is greater than zero idle workers might be killed if the total memory usage of all workers exceed the limit.Tags:
execution, host_machine_resource_optimizationsIf set to true, do not mount root, only mount whats provided with sandbox_add_mount_pair. Input files will be hardlinked to the sandbox instead of symlinked to from the sandbox. If action input files are located on a filesystem different from the sandbox, then the input files will be copied instead.Tags:
executionUse Windows sandbox to run actions. If “yes”, the binary provided by —experimental_windows_sandbox_path must be valid and correspond to a supported version of sandboxfs. If “auto”, the binary may be missing or not compatible.Tags:
executionPath to the Windows sandbox binary to use when —experimental_use_windows_sandbox is true. If a bare name, use the first binary of that name found in the PATH.Tags:
executionIf non-empty, only allow using persistent workers with the given worker key mnemonic.Tags:
execution, host_machine_resource_optimizationsIf enabled, Bazel may send cancellation requests to workers that support them.Tags:
execution--experimental_worker_memory_limit_mb
an integer number of MBs, or "HOST_RAM", optionally followed by [-|*]<float>.
default:"0"
If this limit is greater than zero, workers might be killed if the memory usage of the worker exceeds the limit. If not used together with dynamic execution and
--experimental_dynamic_ignore_local_signals=9, this may crash your build.Tags: execution, host_machine_resource_optimizationsThe interval between collecting worker metrics and possibly attempting evictions. Cannot effectively be less than 1s for performance reasons.Tags:
execution, host_machine_resource_optimizationsIf enabled, multiplex workers with a ‘supports-multiplex-sandboxing’ execution requirement will run in a sandboxed environment, using a separate sandbox directory per work request. Multiplex workers with the execution requirement are always sandboxed when running under the dynamic execution strategy, irrespective of this flag.Tags:
executionIf enabled, workers are run in a hardened sandbox, if the implementation allows it. If hardening is enabled then tmp directories are distinct for different workers.Tags:
executionA worker key mnemonic for which the contents of the sandbox directory are tracked in memory. This may improve build performance at the cost of additional memory usage. Only affects sandboxed workers. May be specified multiple times for different mnemonics.May be used multiple times; values are accumulated.Tags:
executionIf enabled, actions arguments for workers that do not follow the worker specification will cause an error. Worker arguments must have exactly one @flagfile argument as the last of its list of arguments.Tags:
executionSpecify how to execute genrules. This flag will be phased out. Instead, use —spawn_strategy=<value> to control all actions or —strategy=Genrule=<value> to control genrules only.Tags:
executionIf true, use the new implementation for cgroups. The old implementation only supports the memory controller and ignores the value of —experimental_sandbox_limits.Tags:
executionPlaceholder option so that we can tell in Blaze whether the spawn scheduler was enabled.Tags:
execution, host_machine_resource_optimizations--jobs
an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]<float>) eg. "auto", "HOST_CPUS*.5"
default:"auto"
Short form:
-jThe number of concurrent jobs to run. Takes an integer, or a keyword (“auto”, “HOST_CPUS”, “HOST_RAM”), optionally followed by an operation ([-|]<float>) eg. “auto”, “HOST_CPUS.5”. Values must be between 1 and 5000. Values above 2500 may cause memory issues. “auto” calculates a reasonable default based on host resources.Tags: host_machine_resource_optimizations, executionShort form:
-kContinue as much as possible after an error. While the target that failed and those that depend on it cannot be analyzed, other prerequisites of these targets can be.Tags: eagerness_to_exit--loading_phase_threads
an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]<float>) eg. "auto", "HOST_CPUS*.5"
default:"auto"
Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword (“auto”, “HOST_CPUS”, “HOST_RAM”), optionally followed by an operation ([-|]<float>) eg. “auto”, “HOST_CPUS.5”. “auto” sets a reasonable default based on host resources. Must be at least 1.Tags:
bazel_internal_configurationIf set to true, directories used by sandboxed non-worker execution may be reused to avoid unnecessary setup costs.Tags:
host_machine_resource_optimizations, executionLets the sandbox create its sandbox directories underneath this path. Specify a path on tmpfs (like /run/shm) to possibly improve performance a lot when your build / tests have many input files. Note: You need enough RAM and free space on the tmpfs to hold output and intermediate files generated by running actions.Tags:
host_machine_resource_optimizations, executionIf true, a loopback device will be set up in the linux-sandbox network namespace for local actions.Tags:
executionExplicitly enable the creation of pseudoterminals for sandboxed actions. Some linux distributions require setting the group id of the process to ‘tty’ inside the sandbox in order for pseudoterminals to function. If this is causing issues, this flag can be disabled to enable other groups to be used.Tags:
executionFor sandboxed actions, mount an empty, writable directory at this absolute path (if supported by the sandboxing implementation, ignored otherwise).May be used multiple times; values are accumulated.Tags:
host_machine_resource_optimizations, executionSkip incompatible targets that are explicitly listed on the command line.
By default, building such targets results in an error but they are
silently skipped when this option is enabled. See: Skipping incompatible targetsTags:
loading_and_analysisSpecify how spawn actions are executed by default. Accepts a comma-separated list of strategies from highest to lowest priority. For each action Bazel picks the strategy with the highest priority that can execute the action. The default value is “remote,worker,sandboxed,local”. See https://blog.bazel.build/2019/06/19/list-strategy.html for details.Tags:
executionSpecify how to distribute compilation of other spawn actions. Accepts a comma-separated list of strategies from highest to lowest priority. For each action Bazel picks the strategy with the highest priority that can execute the action. The default value is “remote,worker,sandboxed,local”. This flag overrides the values set by —spawn_strategy (and —genrule_strategy if used with mnemonic Genrule). See https://blog.bazel.build/2019/06/19/list-strategy.html for details.May be used multiple times; values are accumulated.Tags:
executionOverride which spawn strategy should be used to execute spawn actions that have descriptions matching a certain regex_filter. See —per_file_copt for details on regex_filter matching. The last regex_filter that matches the description is used. This option overrides other flags for specifying strategy. Example: —strategy_regexp=//foo..cc,-//foo/bar=local means to run actions using local strategy if their descriptions match //foo..cc but not //foo/bar. Example: —strategy_regexp=‘Compiling.*/bar=local —strategy_regexp=Compiling=sandboxed will run ‘Compiling //foo/bar/baz’ with the ‘local’ strategy, but reversing the order would run it with ‘sandboxed’.May be used multiple times; values are accumulated.Tags:
executionExtra command-flags that will be passed to worker processes in addition to —persistent_worker, keyed by mnemonic (e.g. —worker_extra_flag=Javac=—debug.May be used multiple times; values are accumulated.Tags:
execution, host_machine_resource_optimizations--worker_max_instances
[name=]value, where value is an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]<float>) eg. "auto", "HOST_CPUS*.5"
How many instances of each kind of persistent worker may be launched if you use the ‘worker’ strategy. May be specified as [name=value] to give a different value per mnemonic. The limit is based on worker keys, which are differentiated based on mnemonic, but also on startup flags and environment, so there can in some cases be more workers per mnemonic than this flag specifies. Takes an integer, or a keyword (“auto”, “HOST_CPUS”, “HOST_RAM”), optionally followed by an operation ([-|]<float>) eg. “auto”, “HOST_CPUS.5”. ‘auto’ calculates a reasonable default based on machine capacity. “=value” sets a default for unspecified mnemonics.May be used multiple times; values are accumulated.Tags:
execution, host_machine_resource_optimizations--worker_max_multiplex_instances
[name=]value, where value is an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]<float>) eg. "auto", "HOST_CPUS*.5"
How many WorkRequests a multiplex worker process may receive in parallel if you use the ‘worker’ strategy with —worker_multiplex. May be specified as [name=value] to give a different value per mnemonic. The limit is based on worker keys, which are differentiated based on mnemonic, but also on startup flags and environment, so there can in some cases be more workers per mnemonic than this flag specifies. Takes an integer, or a keyword (“auto”, “HOST_CPUS”, “HOST_RAM”), optionally followed by an operation ([-|]<float>) eg. “auto”, “HOST_CPUS.5”. ‘auto’ calculates a reasonable default based on machine capacity. “=value” sets a default for unspecified mnemonics.May be used multiple times; values are accumulated.Tags:
execution, host_machine_resource_optimizationsIf enabled, workers will use multiplexing if they support it.Tags:
execution, host_machine_resource_optimizationsIf enabled, all workers quit after a build is done.Tags:
execution, host_machine_resource_optimizationsIf enabled, singleplex workers will run in a sandboxed environment. Singleplex workers are always sandboxed when running under the dynamic execution strategy, irrespective of this flag.Tags:
executionIf enabled, prints verbose messages when workers are started, shutdown, …
Execute the build; this is the usual behaviour.
Specifying
--nobuild causes the build to stop before executing the build
actions, returning zero if the package loading and analysis phases completed
successfully; this mode is useful for testing those phases.Tags: execution, affects_outputsWhether to run validation actions using aspect (for parallelism with tests).Tags:
execution, affects_outputsA list of comma-separated output group names, each of which optionally prefixed by a
+
or a -. A group prefixed by + is added to the default set of output groups,
while a group prefixed by - is removed from the default set. If at least one
group is not prefixed, the default set of output groups is omitted. For example,
--output_groups=+foo,+bar builds the union of the default set, foo, and bar,
while --output_groups=foo,bar overrides the default set such that only foo and
bar are built.May be used multiple times; values are accumulated.Tags: execution, affects_outputsWhether to run validation actions as part of the build. See Validation Actions.Tags:
execution, affects_outputsDump a profile of serialized frontier bytes. Specifies the output path.Tags:
bazel_monitoringComma-separated list of aspects to be applied to top-level targets. In the list, if
aspect
some_aspect specifies required aspect providers via
required_aspect_providers, some_aspect will run after
every aspect that was mentioned before it in the aspects list whose advertised
providers satisfy some_aspect required aspect providers. Moreover,
some_aspect will run after all its required aspects specified by
requires attribute.
some_aspect will then have access to the values of those aspects’
providers.
{bzl-file-label}%{aspect_name}, for example //tools:my_def.bzl%my_aspect, where
my_aspect is a top-level value from a file tools/my_def.bzl.May be used multiple times; values are accumulated.Maximum number of open files allowed during BEP artifact upload.Tags:
affects_outputsThis flag controls how the convenience symlinks (the symlinks that appear in the
workspace after the build) will be managed. Possible values:
normal(default): Each kind of convenience symlink will be created or deleted, as determined by the build.clean: All symlinks will be unconditionally deleted.ignore: Symlinks will not be created or cleaned up.log_only: Generate log messages as ifnormalwere passed, but don’t actually perform any filesystem operations (useful for tools).
--symlink_prefix can be affected; if the prefix changes, any pre-existing
symlinks will be left alone.Tags: affects_outputsThis flag controls whether or not we will post the build event
ConvenienceSymlinksIdentified to the Build Event Protocol. If the value is true,
the BEP will have an entry for convenienceSymlinksIdentified,
listing all of the convenience symlinks created in your workspace. If false, then
the convenienceSymlinksIdentified entry in the BEP will be empty.Tags: affects_outputsDownloads all remote outputs to the local machine. This flag is an alias for —remote_download_outputs=all.Expands to:
--remote_download_outputs=all
affects_outputsDoes not download any remote build outputs to the local machine. This flag is an alias for —remote_download_outputs=minimal.Expands to:
--remote_download_outputs=minimal
affects_outputsIf set to ‘minimal’ doesn’t download any remote build outputs to the local machine, except the ones required by local actions. If set to ‘toplevel’ behaves like ‘minimal’ except that it also downloads outputs of top level targets to the local machine. Both options can significantly reduce build times if network bandwidth is a bottleneck.Tags:
affects_outputsInstead of downloading remote build outputs to the local machine, create symbolic links. The target of the symbolic links can be specified in the form of a template string. This template string may contain {hash} and {size_bytes} that expand to the hash of the object and the size in bytes, respectively. These symbolic links may, for example, point to a FUSE file system that loads objects from the CAS on demand.Tags:
affects_outputsOnly downloads remote outputs of top level targets to the local machine. This flag is an alias for —remote_download_outputs=toplevel.Expands to:
--remote_download_outputs=toplevel
affects_outputsThe prefix that is prepended to any of the convenience symlinks that are created
after a build. If omitted, the default value is the name of the build tool
followed by a hyphen. If
/ is passed, then no symlinks are created and no
warning is emitted. Warning: the special functionality for / will be deprecated
soon; use --experimental_convenience_symlinks=ignore instead.Tags: affects_outputsIf enabled, Bazel will pass the —privileged flag to ‘docker run’ when running actions. This might be required by your build, but it might also result in reduced hermeticity.Tags:
executionNo-opTags:
host_machine_resource_optimizations, executionAdd additional path pair to mount in sandbox.May be used multiple times; values are accumulated.Tags:
executionFor sandboxed actions, disallow access to this path.May be used multiple times; values are accumulated.Tags:
executionAllow network access by default for actions; this may not work with all sandboxing implementations.Tags:
executionChange the current hostname to ‘localhost’ for sandboxed actions.Tags:
executionChange the current username to ‘nobody’ for sandboxed actions.Tags:
executionFor sandboxed actions, make an existing directory writable in the sandbox (if supported by the sandboxing implementation, ignored otherwise).May be used multiple times; values are accumulated.Tags:
executionIf incompatible_enforce_config_setting_visibility=false, this is a noop. Else, if this flag is false, any config_setting without an explicit visibility attribute is //visibility:public. If this flag is true, config_setting follows the same visibility logic as all other rules. See https://github.com/bazelbuild/bazel/issues/12933.Tags:
loading_and_analysis, incompatible_changeIf true, enforce config_setting visibility restrictions. If false, every config_setting is visible to every target. See https://github.com/bazelbuild/bazel/issues/12932.Tags:
loading_and_analysis, incompatible_changeDon’t run tests, just check if they are up-to-date. If all tests results are up-to-date, the testing completes successfully. If any test needs to be built or executed, an error is reported and the testing fails. This option implies —check_up_to_date behavior.Tags:
execution--flaky_test_attempts
a positive integer, the string "default", or test_regex@attempts. This flag may be passed more than once
Each test will be retried up to the specified number of times in case of any test failure. Tests that required more than one attempt to pass are marked as ‘FLAKY’ in the test summary. Normally the value specified is just an integer or the string ‘default’. If an integer, then all tests will be run up to N times. If ‘default’, then only a single test attempt will be made for regular tests and three for tests marked explicitly as flaky by their rule (flaky=1 attribute). Alternate syntax: regex_filter@flaky_test_attempts. Where flaky_test_attempts is as above and regex_filter stands for a list of include and exclude regular expression patterns (Also see —runs_per_test). Example: —flaky_test_attempts=//foo/.,-//foo/bar/.@3 deflakes all tests in //foo/ except those under foo/bar three times. This option can be passed multiple times. The most recently passed argument that matches takes precedence. If nothing matches, behavior is as if ‘default’ above.May be used multiple times; values are accumulated.Tags:
execution--local_test_jobs
an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]<float>) eg. "auto", "HOST_CPUS*.5"
default:"auto"
The max number of local test jobs to run concurrently. Takes an integer, or a keyword (“auto”, “HOST_CPUS”, “HOST_RAM”), optionally followed by an operation ([-|]<float>) eg. “auto”, “HOST_CPUS.5”. 0 means local resources will limit the number of local test jobs to run concurrently instead. Setting this greater than the value for —jobs is ineffectual.Tags:
executionWhen disabled, any non-passing test will cause the entire build to stop. By default all tests are run, even if some do not pass.Tags:
executionSpecifies the base temporary directory for ‘bazel test’ to use.
If greater than 0, configures Bazel to cache file digests in memory based on their metadata instead of recomputing the digests from disk every time they are needed. Setting this to 0 ensures correctness because not all file changes can be noted from file metadata. When not 0, the number indicates the size of the cache as the number of file digests to be cached.
Active directories for Skyfocus and remote analysis caching. Specify as comma-separated workspace root-relative paths. This is a stateful flag. Defining one persists it for subsequent invocations, until it is redefined with a new set.Tags:
host_machine_resource_optimizationsEnables the experimental local execution scheduling based on CPU load, not estimation of actions one by one. Experimental scheduling have showed the large benefit on a large local builds on a powerful machines with the large number of cores. Recommended to use with —local_resources=cpu=HOST_CPUSTags:
execution--experimental_dynamic_ignore_local_signals
a comma-separated list of signal numbers
default:"see description"
Takes a list of OS signal numbers. If a local branch of dynamic execution gets killed with any of these signals, the remote branch will be allowed to finish instead. For persistent workers, this only affects signals that kill the worker process.Tags:
executionIf true, enable the use of —experimental_active_directories to reduce Bazel’s memory footprint for incremental builds. This feature is known as Skyfocus.Tags:
host_machine_resource_optimizations--local_resources
a named double, 'name=value', where value is an integer, or a keyword ("HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]<float>) eg. "HOST_CPUS", "HOST_CPUS*.5"
Set the number of resources available to Bazel. Takes in an assignment to a float or HOST_RAM/HOST_CPUS, optionally followed by [-|]<float> (eg. memory=HOST_RAM.5 to use half the available RAM). Can be used multiple times to specify multiple types of resources. Bazel will limit concurrently running actions based on the available resources and the resources required. Tests can declare the amount of resources they need by using a tag of the “resources:<resource name>:<amount>” format.May be used multiple times; values are accumulated.Tags:
host_machine_resource_optimizationsThe maximum number of times Bazel should retry uploading a build event.Tags:
bazel_internal_configurationWhether to publish
TargetSummary events.If true, expand Filesets in the BEP when presenting output files.Tags:
affects_outputs--experimental_build_event_output_group_mode
an output group name followed by an OutputGroupFileMode, e.g. default=both
Specify how an output group’s files will be represented in
TargetComplete/AspectComplete
BEP events. Values are an assignment of an output group name to one of
NAMED_SET_OF_FILES_ONLY, INLINE_ONLY, or BOTH. The default value is
NAMED_SET_OF_FILES_ONLY. If an output group is repeated, the final value to
appear is used. The default value sets the mode for coverage artifacts to BOTH:
--experimental_build_event_output_group_mode=baseline.lcov=bothMay be used multiple times; values are accumulated.Tags: affects_outputsInitial, minimum delay for exponential backoff retries when BEP upload fails. (exponent: 1.6)Tags:
bazel_internal_configurationSelects how to upload artifacts referenced in the build event protocol. In Bazel
the valid options include
local and remote. The default value is local.Tags: affects_outputsIf enabled, Bazel will print more verbose messages about the Docker sandbox strategy.Tags:
executionStrategies to handle potential incorrectness from changes beyond the frontier (i.e. outside the active directories)Tags:
eagerness_to_exitIf true, Bazel will print instructions for fixing Skycache violationsTags:
terminal_outputIf materializing param files, do so with direct writes to disk.Tags:
executionWhether to include the command-line residue in run build events which could contain the residue. By default, the residue is not included in run command build events that could contain the residue.Tags:
affects_outputsFor debugging Skyfocus. Dump the focused SkyKeys (roots, leafs, focused deps, focused rdeps).Tags:
terminal_outputFor debugging Skyfocus. If enabled, trigger manual GC before/after focusing to report heap sizes reductions. This will increase the Skyfocus latency.Tags:
terminal_outputStream log file uploads directly to the remote storage rather than writing them to disk.Tags:
affects_outputsCauses the build system to explain each executed step of the build. The explanation is written to the specified log file.Tags:
affects_outputsUse this to suppress generation of the legacy
important_outputs field in the
TargetComplete event. important_outputs are required for Bazel to ResultStore/BTX
integration.Tags: affects_outputsWrites intermediate parameter files to output tree even when using remote action execution or caching. Useful when debugging actions. This is implied by —subcommands and —verbose_failures.Tags:
executionWhen discarding the analysis cache due to a change in the build options, displays up to the given number of changed option names. If the number given is -1, all changed options will be displayed.Tags:
terminal_outputSpecifies maximum per-test-log size that can be emitted when —test_output is ‘errors’ or ‘all’. Useful for avoiding overwhelming the output with excessively noisy test output. The test header is included in the log size. Negative values imply no limit. Output is all or nothing.Tags:
test_runner, terminal_output, executionOnly shows warnings and action outputs for rules with a name matching the provided regular expression.Tags:
affects_outputsThe number of seconds to wait between reports on still running jobs. The
default value 0 means the first report will be printed after 10
seconds, then 30 seconds and after that progress is reported once every minute.
When
--curses is enabled, progress is reported every second.Tags: affects_outputsIf set, a JSON file is written to this location that contains a detailed log of the behavior of remote analysis caching. It’s interpreted as a path relative to the current working directory.Tags:
bazel_monitoringChoose when to print remote execution messages. Valid values are
failure, to print only on failures, success to print only on successes and all to print always.Tags: terminal_outputEnables debugging features for the sandboxing feature. This includes two things: first, the sandbox root contents are left untouched after a build; and second, prints extra debugging information on execution. This can help developers of Bazel or Starlark rules with debugging failures due to missing input files, etc.Tags:
terminal_outputShow the results of the build. For each target, state whether or not it was brought
up-to-date, and if so, a list of output files that were built. The printed files
are convenient strings for copy+pasting to the shell, to execute them.
This option requires an integer argument, which is the threshold number of targets
above which result information is not printed. Thus zero causes suppression of
the message and
MAX_INT causes printing of the result to occur always. The
default is one.
If nothing was built for a target its results may be omitted to keep the output
under the threshold.Tags: affects_outputsShort form:
-sDisplay the subcommands executed during a build. Related flags: —execution_log_json_file, —execution_log_binary_file (for logging subcommands to a file in a tool-friendly format).Tags: terminal_outputSpecifies desired output mode. Not to be confused with
--test_summary which controls
the test summary printed on command completion.
Valid values are;summary(default) to print summaries for failed tests,errorsto also print test logs for failed tests,allto print summaries and logs for all tests andstreamedto output logs for all tests in real time (this will force tests to be executed locally one at a time regardless of--test_strategyvalue).
test_runner, terminal_output, execution--test_summary
short, short_uncached, terse, detailed, detailed_uncached, none or testcase
default:"short"
Specifies the desired format of the test summary. Valid values are;
shortto list all tests that ran to completion.short_uncachedto list tests that ran to completion, omitting cached tests.terseto list only failed and flaky tests.detailedto list tests that ran to completion and their test cases.detailed_uncachedto list tests that ran to completion and their test cases, omitting cached tests.testcaseto print summary in test case resolution without detailed information about failed test cases.noneto omit the summary.
terminal_outputIf a command fails, print out the full command line.Tags:
terminal_outputSpecifies the values of the command-line aspects parameters. Each parameter value is
specified via
<param_name>=<param_value>, for example my_param=my_val where
my_param is a parameter of some aspect in --aspects list or required by an
aspect in the list. This option can be used multiple times. However, it is not
allowed to assign values to the same parameter more than once.May be used multiple times; values are accumulated.Tags: loading_and_analysisIf set, build will read patterns from the file named here, rather than on the command line. It is an error to specify a file here as well as command-line patterns.Tags:
changes_inputsSpecifies the strategy for the circuit breaker to use. Available strategies are “failure”. On invalid value for the option the behavior same as the option is not set.Tags:
executionIf enabled, large blobs are split into content-defined chunks using FastCDC 2020 and uploaded/downloaded in chunks, enabling deduplication across blobs. The server must advertise SplitBlob/SpliceBlob RPCs and FastCDC 2020 parameters in its capabilities.Tags:
experimentalThe minimum blob size required to compress/decompress with zstd. Ineffectual unless —remote_cache_compression is set.
The maximum number of attempts to retry if the build encountered a transient remote cache error that would otherwise fail the build. Applies for example when artifacts are evicted from the remote cache, or in certain cache failure conditions. A new invocation id will be generated for each attempt.Tags:
executionIf set to true, Bazel will extend the lease for outputs of remote actions during the build by sending
FindMissingBlobs calls periodically to remote cache. The frequency is based on the value of --experimental_remote_cache_ttl.The guaranteed minimal TTL of blobs in the remote cache after their digests are recently referenced e.g. by an ActionResult or FindMissingBlobs. Bazel does several optimizations based on the blobs’ TTL e.g. doesn’t repeatedly call GetActionResult in an incremental build. The value should be set slightly less than the real TTL since there is a gap between when the server returns the digests and when Bazel receives them.Tags:
executionA path to a directory where the corrupted outputs will be captured to.
If set to true, discard in-memory copies of the input root’s Merkle tree and associated input mappings during calls to GetActionResult() and Execute(). This reduces memory usage significantly, but does require Bazel to recompute them upon remote cache misses and retries.
A Remote Asset API endpoint URI, to be used as a remote download proxy. The supported schemes are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no scheme is provided Bazel will default to grpcs. See: https://github.com/bazelbuild/remote-apis/blob/master/build/bazel/remote/asset/v1/remote_asset.proto
Whether to fall back to the local downloader if remote downloader fails.
Whether to propagate credentials from netrc and credential helper to the remote downloader server. The server implementation needs to support the new
http_header_url:<url-index>:<header-key> qualifier where the <url-index> is a 0-based position of the URL inside the FetchBlobRequest’s uris field. The URL-specific headers should take precedence over the global headers.Sets the allowed number of failure rate in percentage for a specific time window after which it stops calling to the remote cache/executor. By default the value is 10. Setting this to 0 means no limitation.Tags:
executionThe interval in which the failure rate of the remote requests are computed. On zero or negative value the failure duration is computed the whole duration of the execution.Following units can be used: Days (d), hours (h), minutes (m), seconds (s), and milliseconds (ms). If the unit is omitted, the value is interpreted as seconds.Tags:
executionIf set to true, Bazel will mark inputs as tool inputs for the remote executor. This can be used to implement remote persistent workers.
HOST or HOST:PORT of a remote output service endpoint. The supported schemes are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no scheme is provided Bazel will default to grpcs. Specify grpc:// or unix: scheme to disable TLS.
The path under which the contents of output directories managed by the —experimental_remote_output_service are placed. The actual output directory used by a build will be a descendant of this path and determined by the output service.
If set to true, enforce that all actions that can run remotely are cached, or else fail the build. This is useful to troubleshoot non-determinism issues as it allows checking whether actions that should be cached are actually cached without spuriously injecting new results into the cache.
Enables remote cache key scrubbing with the supplied configuration file, which must be a protocol buffer in text format (see src/main/protobuf/remote_scrubbing.proto).
This feature is intended to facilitate sharing a remote/disk cache between actions executing on different platforms but targeting the same platform. It should be used with extreme care, as improper settings may cause accidental sharing of cache entries and result in incorrect builds.
Scrubbing does not affect how an action is executed, only how its remote/disk cache key is computed for the purpose of retrieving or storing an action result. Scrubbed actions are incompatible with remote execution, and will always be executed locally instead.
Modifying the scrubbing configuration does not invalidate outputs present in the local filesystem or internal caches; a clean build is required to reexecute affected actions.
In order to successfully use this feature, you likely want to set a custom —host_platform together with —experimental_platform_in_output_dir (to normalize output prefixes).
Set this to ‘full’ to enable checking the ctime of all input files of an action before uploading it to a remote cache. There may be cases where the Linux kernel delays writing of files, which could cause false positives. The default is ‘lite’, which only checks source files in the main repository. Setting this to ‘off’ disables all checks. This is not recommended, as the cache may be polluted when a source file is changed while an action that takes it as an input is executing.Tags:
executionWhether —remote_local_fallback applies to —remote_cache.
Whether to accept remotely cached action results.
If set to ‘all’, all local outputs referenced by BEP are uploaded to remote cache.
If set to ‘minimal’, local outputs referenced by BEP are not uploaded to the remote cache, except for files that are important to the consumers of BEP (e.g. test logs and timing profile). bytestream:// scheme is always used for the uri of files even if they are missing from remote cache.
Default to ‘minimal’.
The hostname and instance name to be used in bytestream:// URIs that are written into build event streams. This option can be set when builds are performed using a proxy, which causes the values of —remote_executor and —remote_instance_name to no longer correspond to the canonical name of the remote execution service. When not set, it will default to ”${hostname}/${instance_name}”.
A URI of a caching endpoint. The supported schemes are http, https, grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no scheme is provided Bazel will default to grpcs. Specify grpc://, http:// or unix: scheme to disable TLS. See https://bazel.build/remote/caching
If true, uploading of action results to a disk or remote cache will happen in the background instead of blocking the completion of an action. Some actions are incompatible with background uploads, and may still block even when this flag is set.
If enabled, compress/decompress cache blobs with zstd when their size is at least —experimental_remote_cache_compression_threshold.
Specify a header that will be included in cache requests: —remote_cache_header=Name=Value. Multiple headers can be passed by specifying the flag multiple times. Multiple values for the same name will be converted to a comma-separated list.May be used multiple times; values are accumulated.
Set the default exec properties to be used as the remote execution platform if an execution platform does not already set exec_properties.May be used multiple times; values are accumulated.Tags:
affects_outputsForce remote build outputs whose path matches this pattern to be downloaded, irrespective of —remote_download_outputs. Multiple patterns may be specified by repeating this flag.May be used multiple times; values are accumulated.Tags:
affects_outputsSpecify a header that will be included in remote downloader requests: —remote_downloader_header=Name=Value. Multiple headers can be passed by specifying the flag multiple times. Multiple values for the same name will be converted to a comma-separated list.May be used multiple times; values are accumulated.
Specify a header that will be included in execution requests: —remote_exec_header=Name=Value. Multiple headers can be passed by specifying the flag multiple times. Multiple values for the same name will be converted to a comma-separated list.May be used multiple times; values are accumulated.
The relative priority of actions to be executed remotely. The semantics of the particular priority values are server-dependent.
HOST or HOST:PORT of a remote execution endpoint. The supported schemes are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no scheme is provided Bazel will default to grpcs. Specify grpc:// or unix: scheme to disable TLS.
If specified, a path to a file to log gRPC call related details. This log consists of a sequence of serialized com.google.devtools.build.lib.remote.logging.RemoteExecutionLog.LogEntry protobufs with each message prefixed by a varint denoting the size of the following serialized protobuf message, as performed by the method LogEntry.writeDelimitedTo(OutputStream).
Specify a header that will be included in requests: —remote_header=Name=Value. Multiple headers can be passed by specifying the flag multiple times. Multiple values for the same name will be converted to a comma-separated list.May be used multiple times; values are accumulated.
Value to pass as instance_name in the remote execution API.
Whether to fall back to standalone local execution strategy if remote execution fails.
Deprecated. See https://github.com/bazelbuild/bazel/issues/7480 for details.Tags:
deprecatedLimit the max number of concurrent requests per gRPC connection. By default the value is 100.Tags:
host_machine_resource_optimizationsLimit the max number of concurrent connections to remote cache/executor. By default the value is 100. Setting this to 0 means no limitation.
For HTTP remote cache, one TCP connection could handle one request at one time, so Bazel could make up to —remote_max_connections concurrent requests.
For gRPC remote cache/executor, one gRPC channel could usually handle 100+ concurrent requests (controlled by —remote_max_concurrency_per_connection), so Bazel could make around
--remote_max_connections * 100 concurrent requests.Tags: host_machine_resource_optimizationsConnect to the remote cache through a proxy. Currently this flag can only be used to configure a Unix domain socket (unix:/path/to/socket).
The relative priority of remote actions to be stored in remote cache. The semantics of the particular priority values are server-dependent.
The maximum number of attempts to retry a transient error. If set to 0, retries are disabled.
The maximum backoff delay between remote retry attempts. Following units can be used: Days (d), hours (h), minutes (m), seconds (s), and milliseconds (ms). If the unit is omitted, the value is interpreted as seconds.
The maximum amount of time to wait for remote execution and cache calls. For the REST cache, this is both the connect and the read timeout. Following units can be used: Days (d), hours (h), minutes (m), seconds (s), and milliseconds (ms). If the unit is omitted, the value is interpreted as seconds.
Whether to upload locally executed action results to the remote cache if the remote cache supports it and the user is authorized to do so.
If set to true, Bazel will compute the hash sum of all remote downloads and discard the remotely cached values if they don’t match the expected value.
If discarding the analysis cache due to a change in the build system, setting this
option to false will cause bazel to exit, rather than continuing with the build.
This option has no effect when
--discard_analysis_cache is also set.Tags: eagerness_to_exitIf —output_filter is not specified, then the value for this option is used create a filter automatically. Allowed values are ‘none’ (filter nothing / show everything), ‘all’ (filter everything / show nothing), ‘packages’ (include output from rules in packages mentioned on the Blaze command line), and ‘subpackages’ (like ‘packages’, but also include subpackages). For the ‘packages’ and ‘subpackages’ values //java/foo and //javatests/foo are treated as one package)’.
Forces test targets tagged ‘manual’ to be built. ‘manual’ tests are excluded from processing. This option forces them to be built (but not executed).
Specifies a comma-separated list of tags. Each tag can be optionally preceded with ’-’ to specify excluded tags. Only those targets will be built that contain at least one included tag and do not contain any excluded tags. This option does not affect the set of tests executed with the ‘test’ command; those are be governed by the test filtering options, for example ‘—test_tag_filters’
If specified, only *_test and test_suite rules will be built and other targets specified on the command line will be ignored. By default everything that was requested will be built.
Specifies desired cumulative coverage report type. At this point only LCOV is supported.
Compile a single dependency of the argument files. This is useful for syntax checking source files in IDEs, for example, by rebuilding a single target that depends on the source file to detect errors as early as possible in the edit/build/test cycle. This argument affects the way all non-flag arguments are interpreted; instead of being targets to build they are source filenames. For each source filename an arbitrary target that depends on it will be built.
A comma-separated list of names of packages which the build system will consider non-existent, even if they are visible somewhere on the package path.
Use this option when deleting a subpackage ‘x/y’ of an existing package ‘x’. For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label ‘//x:y/z’ if that is still provided by another package_path entry. Specifying —deleted_packages x/y avoids this problem.May be used multiple times; values are accumulated.
Discard the analysis cache immediately after the analysis phase completes. Reduces memory usage by ~10%, but makes further incremental builds slower.
A path to a directory where Bazel can read and write actions and action outputs. If the directory does not exist, it will be created. Use —disk_cache with no value (or —disk_cache=true) to use a default location under the output user root (<outputUserRoot>/cache/disk). Use —nodisk_cache or —disk_cache=false to disable.
Embed source control revision or release label in binary
Log the executed spawns into this file as length-delimited SpawnExec protos, according to src/main/protobuf/spawn.proto. Prefer —execution_log_compact_file, which is significantly smaller and cheaper to produce. The flag accepts boolean and string values. If string, it represents a local path. If true, then —experimental_stream_log_file_uploads must be set, whereby it will stream the execution log to remote storage. If false, then logging to the execution log is disabled. Related flags: —execution_log_compact_file (compact format; mutually exclusive), —execution_log_json_file (text JSON format; mutually exclusive), —execution_log_sort (whether to sort the execution log), —subcommands (for displaying subcommands in terminal output).
Log the executed spawns into this file as length-delimited ExecLogEntry protos, according to src/main/protobuf/spawn.proto. The entire file is zstd compressed. The flag accepts boolean and string values. If string, it represents a local path. If true, then —experimental_stream_log_file_uploads must be set, whereby it will stream the execution log to remote storage. If false, then logging to the execution log is disabled. Related flags: —execution_log_binary_file (binary protobuf format; mutually exclusive), —execution_log_json_file (text JSON format; mutually exclusive), —subcommands (for displaying subcommands in terminal output).
Log the executed spawns into this file as newline-delimited JSON representations of SpawnExec protos, according to src/main/protobuf/spawn.proto. Prefer —execution_log_compact_file, which is significantly smaller and cheaper to produce. The flag accepts boolean and string values. If string, it represents a local path. If true, then —experimental_stream_log_file_uploads must be set, whereby it will stream the execution log to remote storage. If false, then logging to the execution log is disabled. Related flags: —execution_log_compact_file (compact format; mutually exclusive), —execution_log_binary_file (binary protobuf format; mutually exclusive), —execution_log_sort (whether to sort the execution log), —subcommands (for displaying subcommands in terminal output).
--execution_log_mnemonic_filter
a comma-separated list of regex expressions with prefix '-' specifying excluded paths
default:".*"
Filter the execution log by mnemonic. Only spawns with a matching mnemonic will be logged. Supports a comma-separated list of regexes, with optional ’-’ prefix for exclusions. The default is to log every spawn.
Whether to sort the execution log, making it easier to compare logs across invocations. Set to false to avoid potentially significant CPU and memory usage at the end of the invocation, at the cost of producing the log in nondeterministic execution order. Only applies to the binary and JSON formats; the compact format is never sorted.
Expand test_suite targets into their constituent tests before analysis. When this flag is turned on (the default), negative target patterns will apply to the tests belonging to the test suite, otherwise they will not. Turning off this flag is useful when top-level aspects are applied at command line: then they can analyze test_suite targets.Tags:
loading_and_analysisHow long the server must remain idle before a garbage collection of the disk cache occurs. To specify the garbage collection policy, set —experimental_disk_cache_gc_max_size and/or —experimental_disk_cache_gc_max_age.
If set to a positive value, the disk cache will be periodically garbage collected to remove entries older than this age. If set in conjunction with —experimental_disk_cache_gc_max_size, both criteria are applied. Garbage collection occurrs in the background once the server has become idle, as determined by the —experimental_disk_cache_gc_idle_delay flag.
--experimental_disk_cache_gc_max_size
a size in bytes, optionally followed by a K, M, G or T multiplier
default:"0"
If set to a positive value, the disk cache will be periodically garbage collected to stay under this size. If set in conjunction with —experimental_disk_cache_gc_max_age, both criteria are applied. Garbage collection occurrs in the background once the server has become idle, as determined by the —experimental_disk_cache_gc_idle_delay flag.
--experimental_extra_action_filter
a comma-separated list of regex expressions with prefix '-' specifying excluded paths
Deprecated in favor of aspects. Filters set of targets to schedule extra_actions for.
Deprecated in favor of aspects. Only schedules extra_actions for top level targets.
Enable dynamic execution by running actions locally and remotely in parallel. Bazel spawns each action locally and remotely and picks the one that completes first. If an action supports workers, the local action will be run in the persistent worker mode. To enable dynamic execution for an individual action mnemonic, use the
--internal_spawn_scheduler and --strategy=<mnemonic>=dynamic flags instead.Expands to:--internal_spawn_scheduler--spawn_strategy=dynamic
deprecatedAllows the command to fetch external dependencies. If set to false, the command will utilize any cached version of the dependency, and if none exists, the command will result in failure.
Time to wait between terminating a local process due to timeout and forcefully shutting it down.
A colon-separated list of where to look for packages. Elements beginning with ‘%workspace%’ are relative to the enclosing workspace. If omitted or empty, the default is the output of ‘bazel info default-package-path’.
If enabled, causes Bazel to print “Loading package:” messages.
Specifies a comma-separated list of test languages. Each language can be optionally preceded with ’-’ to specify excluded languages. Only those test targets will be found that are written in the specified languages. The name used for each language should be the same as the language prefix in the *_test rule, e.g. one of ‘cc’, ‘java’, ‘py’, etc. This option affects —build_tests_only behavior and the test command.
Specifies a comma-separated list of test sizes. Each size can be optionally preceded with ’-’ to specify excluded sizes. Only those test targets will be found that contain at least one included size and do not contain any excluded sizes. This option affects —build_tests_only behavior and the test command.
Specifies a comma-separated list of test tags. Each tag can be optionally preceded with ’-’ to specify excluded tags. Only those test targets will be found that contain at least one included tag and do not contain any excluded tags. This option affects —build_tests_only behavior and the test command.
Specifies a comma-separated list of test timeouts. Each timeout can be optionally preceded with ’-’ to specify excluded timeouts. Only those test targets will be found that contain at least one included timeout and do not contain any excluded timeouts. This option affects —build_tests_only behavior and the test command.
A command invoked at the beginning of the build to provide status
information about the workspace in the form of key/value pairs.
See the User’s Manual for the full specification. Also see
tools/buildstamp/get_workspace_status for an example.Enable persistent aar extractor by using workers.Tags:
execution, experimentalWhether to make source manifest actions remotableTags:
loading_and_analysis, execution, experimentalIf true, then Bazel will run coverage postprocessing for test in a new spawn.Tags:
execution, experimentalWhen enabled, passing multiple
--modify_execution_info flags is additive.
When disabled, only the last flag is taken into account.Tags: execution, affects_outputs, loading_and_analysis, incompatible_changeAdd or remove keys from an action’s execution info based on action mnemonic.
Applies only to actions which support execution info. Many common actions
support execution info, e.g. Genrule, CppCompile, Javac, StarlarkAction,
TestRunner. When specifying multiple values, order matters because
many regexes may apply to the same mnemonic.
Syntax:
regex=[+-]key,regex=[+-]key,....
Examples:.*=+x,.*=-y,.*=+zaddsxandzto, and removesyfrom, the execution info for all actions.Genrule=+requires-xaddsrequires-xto the execution info for all Genrule actions.(?!Genrule).*=-requires-xremovesrequires-xfrom the execution info for all non-Genrule actions.
execution, affects_outputs, loading_and_analysisEnable persistent Android dex and desugar actions by using workers.Expands to:
--internal_persistent_android_dex_desugar--strategy=Desugar=worker--strategy=DexBuilder=worker
host_machine_resource_optimizations, executionEnable persistent Android resource processor by using workers.Expands to:
--internal_persistent_busybox_tools--strategy=AaptPackage=worker--strategy=AndroidResourceParser=worker--strategy=AndroidResourceValidator=worker--strategy=AndroidResourceCompiler=worker--strategy=RClassGenerator=worker--strategy=AndroidResourceLink=worker--strategy=AndroidAapt2=worker--strategy=AndroidAssetMerger=worker--strategy=AndroidResourceMerger=worker--strategy=AndroidCompiledResourceMerger=worker--strategy=ManifestMerger=worker--strategy=AndroidManifestMerger=worker--strategy=Aapt2Optimize=worker--strategy=AARGenerator=worker--strategy=ProcessDatabinding=worker--strategy=GenerateDataBindingBaseClasses=worker
host_machine_resource_optimizations, executionEnable persistent multiplexed Android dex and desugar actions by using workers.Expands to:
--persistent_android_dex_desugar--internal_persistent_multiplex_android_dex_desugar
host_machine_resource_optimizations, executionEnable persistent multiplexed Android resource processor by using workers.Expands to:
--persistent_android_resource_processor--modify_execution_info=AaptPackage=+supports-multiplex-workers--modify_execution_info=AndroidResourceParser=+supports-multiplex-workers--modify_execution_info=AndroidResourceValidator=+supports-multiplex-workers--modify_execution_info=AndroidResourceCompiler=+supports-multiplex-workers--modify_execution_info=RClassGenerator=+supports-multiplex-workers--modify_execution_info=AndroidResourceLink=+supports-multiplex-workers--modify_execution_info=AndroidAapt2=+supports-multiplex-workers--modify_execution_info=AndroidAssetMerger=+supports-multiplex-workers--modify_execution_info=AndroidResourceMerger=+supports-multiplex-workers--modify_execution_info=AndroidCompiledResourceMerger=+supports-multiplex-workers--modify_execution_info=ManifestMerger=+supports-multiplex-workers--modify_execution_info=AndroidManifestMerger=+supports-multiplex-workers--modify_execution_info=Aapt2Optimize=+supports-multiplex-workers--modify_execution_info=AARGenerator=+supports-multiplex-workers
host_machine_resource_optimizations, executionEnable persistent and multiplexed Android tools (dexing, desugaring, resource processing).Expands to:
--internal_persistent_multiplex_busybox_tools--persistent_multiplex_android_resource_processor--persistent_multiplex_android_dex_desugar
host_machine_resource_optimizations, executionIf true, use the target platform for running tests rather than the test exec group.Tags:
executionThe Android target compiler.Tags:
affects_outputs, loading_and_analysis, loses_incremental_stateSelects the manifest merger to use for android_binary rules. Flag to help the transition to the Android manifest merger from the legacy merger.Tags:
affects_outputs, loading_and_analysis, loses_incremental_stateSets the platforms that android_binary targets use. If multiple platforms are specified, then the binary is a fat APKs, which contains native binaries for each specified target platform.Tags:
changes_inputs, loading_and_analysis, loses_incremental_stateSpecifies a suffix to be added to the configuration directory.Tags:
affects_outputsThe C++ compiler to use for compiling the target.Tags:
loading_and_analysis, executionLocation of the binary that is used to postprocess raw coverage reports. This must
be a binary target. Defaults to
@bazel_tools//tools/test:lcov_merger.Tags: changes_inputs, affects_outputs, loading_and_analysisLocation of the binary that is used to generate coverage reports. This must
be a binary target. Defaults to
@bazel_tools//tools/test:coverage_report_generator.Tags: changes_inputs, affects_outputs, loading_and_analysisLocation of support files that are required on the inputs of every test action
that collects code coverage. Defaults to
//tools/test:coverage_support.Tags: changes_inputs, affects_outputs, loading_and_analysisSpecifies a custom malloc implementation. This setting overrides malloc attributes in build rules.Tags:
changes_inputs, affects_outputsIf set, add a “requires-xcode:{version}” execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a “requires-xcode-label:{version_label}” execution requirement.Tags:
loses_incremental_state, loading_and_analysis, execution, experimentalIf true, use the most recent Xcode that is available both locally and remotely. If false, or if there are no mutual available versions, use the local Xcode version selected via xcode-select.Tags:
loses_incremental_state, experimentalThe platforms that are available as execution platforms to run actions.
Platforms can be specified by exact target, or as a target pattern.
These platforms will be considered before those declared in the
WORKSPACE file by
register_execution_platforms(). This option may only be set once; later
instances will override earlier flag settings.Tags: executionThe toolchain rules to be considered during toolchain resolution.
Toolchains can be specified by exact target, or as a target pattern.
These toolchains will be considered before those declared in the
WORKSPACE file
by register_toolchains().May be used multiple times; values are accumulated.Tags: affects_outputs, changes_inputs, loading_and_analysisA label to a checked-in libc library. The default value is selected by the crosstool toolchain, and you almost never need to override it.Tags:
action_command_lines, affects_outputsNo-op flag. Will be removed in a future release.Tags:
loading_and_analysis, executionIf specified, this setting overrides the libc top-level directory (—grte_top) for the exec configuration.Tags:
action_command_lines, affects_outputsThe label of a platform rule that describes the host system.Tags:
affects_outputs, changes_inputs, loading_and_analysisIf enabled,
bazel test --run_under=//:runner builds //:runner in the exec
configuration. If disabled, it builds //:runner in the target configuration.
Bazel executes tests on exec machines, so the former is more correct. This
doesn’t affect bazel run, which always builds --run_under=//foo in the
target configuration.Tags: affects_outputs, incompatible_changeWhether to emit a strip action as part of objc linking.Tags:
action_command_lines, incompatible_changeIf true, Bazel will not enable ‘host’ and ‘nonhost’ features in the c++ toolchain (see https://github.com/bazelbuild/bazel/issues/7407 for more information).Tags:
loading_and_analysis, incompatible_changeIf true, Bazel will not link library dependencies as whole archive by default (see https://github.com/bazelbuild/bazel/issues/7362 for migration instructions).Tags:
loading_and_analysis, incompatible_changeIf true, strip action for executables will use flag -x, which does not break dynamic symbol resolution.Tags:
action_command_lines, incompatible_changeUse interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.Tags:
loading_and_analysis, affects_outputs, affects_outputsSpecifies the version of the iOS SDK to use to build iOS applications. If unspecified, uses the default iOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateSpecifies the version of the macOS SDK to use to build macOS applications. If unspecified, uses the default macOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateThe minimum OS version which your compilation targets.Tags:
loading_and_analysis, affects_outputsThe location of a mapping file that describes which platform to use if none is set or
which flags to set when a platform already exists. Must be relative to the main
workspace root. Defaults to
platform_mappings (a file directly under the
workspace root).Tags: affects_outputs, changes_inputs, loading_and_analysis, non_configurableThe labels of the platform rules describing the target platforms for the current command.Tags:
affects_outputs, changes_inputs, loading_and_analysisSpecifies the version of the tvOS SDK to use to build tvOS applications. If unspecified, uses the default tvOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateMakes apple_crosstool_transition fall back to using the value of
--platforms flag instead of legacy --cpu when needed.Tags: loading_and_analysis--watchos_sdk_version
a dotted version (for example '2.3' or '3.3alpha2.4')
default:"see description"
Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses the default watchOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateIf specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.Tags:
loses_incremental_stateThe label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.Tags:
loses_incremental_state, loading_and_analysisWhether to generate debug symbol(.dSYM) file(s).Tags:
affects_outputs, action_command_linesIf true, build runfiles symlink forests for all targets. If false, write them only when required by a local action, test or run command.Tags:
affects_outputsIf true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.Tags:
affects_outputsIf enabled, when building C++ tests statically and with fission the .dwp file for the test binary will be automatically built as well.Tags:
loading_and_analysis, affects_outputsSets the suffixes of header files that a cc_proto_library creates.Tags:
affects_outputs, loading_and_analysisSets the suffixes of source files that a cc_proto_library creates.Tags:
affects_outputs, loading_and_analysisRun extra actions for alternative Java api versions in a proto_library.Tags:
affects_outputs, loading_and_analysis, experimentalSave the state of enabled and requested feautres as an output of compilation.Tags:
affects_outputs, experimentalSpecifies which compilation modes use fission for C++ compilations and links. May be any combination of {‘fastbuild’, ‘dbg’, ‘opt’} or the special values ‘yes’ to enable all modes and ‘no’ to disable all modes.Tags:
loading_and_analysis, action_command_lines, affects_outputsIf true, native rules add
DefaultInfo.files of data dependencies to their runfiles,
which matches the recommended behavior for Starlark rules (runfiles features to avoid).Tags: affects_outputs, incompatible_changeIf enabled, the
{binary}.repo_mapping file emits a module extension’s repo mapping
only once instead of once for each repo generated by the extension that
contributes runfiles.Tags: affects_outputs, incompatible_changeList of flags for which the use in
select() is disabled.Tags: loading_and_analysis, incompatible_change, non_configurableIf true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.Tags:
incompatible_changeSpecifies whether to generate a linkmap file.Tags:
affects_outputsIf set, temporary outputs from gcc will be saved. These include .s files (assembler code), .i files (preprocessed C) and .ii files (preprocessed C++).Tags:
affects_outputs--action_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies the set of environment variables available to actions with target
configuration. Variables can be either specified by
name, in which case
the value will be taken from the invocation environment, by the name=value
pair which sets the value independent of the invocation environment, or by
=name, which unsets the variable of that name. This option can be used
multiple times; for options given for the same variable, the latest wins,
options for different variables accumulate.
Note that unless --incompatible_repo_env_ignores_action_env is true, all name=value
pairs will be available to repository rules.May be used multiple times; values are accumulated.Tags: action_command_linesAllowed values for the
--cpu flag.Tags: changes_inputs, affects_outputsDetermines whether C++ deps of Android rules will be linked dynamically when a cc_binary does not explicitly create a shared library. ‘default’ means bazel will choose whether to link dynamically. ‘fully’ means all libraries will be linked dynamically. ‘off’ means that all libraries will be linked in mostly static mode.Tags:
affects_outputs, loading_and_analysis--android_manifest_merger_order
alphabetical, alphabetical_by_configuration or dependency
default:"alphabetical"
Sets the order of manifests passed to the manifest merger for Android binaries. ALPHABETICAL means manifests are sorted by path relative to the execroot. ALPHABETICAL_BY_CONFIGURATION means manifests are sorted by paths relative to the configuration directory within the output directory. DEPENDENCY means manifests are ordered with each library’s manifest coming before the manifests of its dependencies.Tags:
action_command_lines, executionEnables resource shrinking for android_binary APKs that use ProGuard.Tags:
affects_outputs, loading_and_analysisIf specified, Bazel will instrument code (using offline instrumentation where
possible) and will collect coverage information during tests. Only targets that
match
--instrumentation_filter will be affected. Usually this option should
not be specified directly - bazel coverage command should be used instead.Tags: affects_outputsShort form:
-cSpecify the mode the binary will be built in. Values: fastbuild, dbg, opt.Tags: affects_outputs, action_command_linesAdditional option to pass to gcc when compiling C source files.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional options to pass to gcc.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsDeprecated: this flag is not used internally by Blaze although there are legacy platform
mappings to allow for backwards compatibility. Do not use this flag, instead use
--platforms with an appropriate platform definition.Tags: changes_inputs, affects_outputsUse CSFDO profile information to optimize compilation. Specify the absolute path name of the zip file containing the profile file, a raw or an indexed LLVM profile file.Tags:
affects_outputsGenerate binaries with context sensitive FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.Tags:
affects_outputsThe cs_fdo_profile representing the context sensitive profile to be used for optimization.Tags:
affects_outputsAdditional option to pass to gcc when compiling C++ source files.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsEach
--define option specifies an assignment for a build variable.
In case of multiple values for a variable, the last one wins.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsDetermines whether C++ binaries will be linked dynamically. ‘default’ means Bazel will choose whether to link dynamically. ‘fully’ means all libraries will be linked dynamically. ‘off’ means that all libraries will be linked in mostly static mode.Tags:
loading_and_analysis, affects_outputsIf set, any use of absolute paths for propeller optimize will raise an error.Tags:
affects_outputsIf set, any use of absolute paths for FDO will raise an error.Tags:
affects_outputsEnable runfiles symlink tree; By default, it’s off on Windows, on on other platforms.Tags:
affects_outputsComma-separated list of aspects to be applied to exec-configured targets, regardless of whether or not they are top-level targets. This is an experimental feature and is subject to change.May be used multiple times; values are accumulated.Tags:
loading_and_analysisDeprecated in favor of aspects. Use
action_listener to attach an extra_action to
existing build actions.May be used multiple times; values are accumulated.Tags: execution, experimentalCompress Java resources in APKsTags:
affects_outputs, loading_and_analysis, experimentalEnables resource shrinking for android_binary APKs that use ProGuard.Tags:
affects_outputs, loading_and_analysis, experimentalIf specified, Bazel will also generate collect coverage information for generated files.Tags:
affects_outputs, experimentalIf true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.Tags:
action_command_lines, affects_outputs, experimentalWhich model to use for where in the output tree rules write their outputs, particularly
for multi-platform / multi-configuration builds. This is highly experimental. See
GH-6526 for details. Starlark actions can opt into path mapping by adding the key
supports-path-mapping to the execution_requirements dict.Tags: loses_incremental_state, bazel_internal_configuration, affects_outputs, executionEach entry should be of the form
label=value where label refers to a platform and values
is the desired shortname to override the platform’s CPU name in $(TARGET_CPU)
make variable and output path. Only used when
--experimental_platform_in_output_dir, --incompatible_target_cpu_from_platform or
--incompatible_bep_cpu_from_platform is true. Has highest naming priority.May be used multiple times; values are accumulated.Tags: affects_outputs, experimentalIf true, a shortname for the target platform is used in the output directory name
instead of the CPU. The exact scheme is experimental and subject to change:
- First, in the rare case the
--platformsoption does not have exactly one value, a hash of the platforms option is used. - Next, if any shortname for the current platform was registered by
--experimental_override_name_platform_in_output_dir, then that shortname is used. - Then, if
--experimental_use_platforms_in_output_dir_legacy_heuristicis set, use a shortname based off the current platform Label. - Finally, a hash of the platform option is used as a last resort.
affects_outputs, experimentalIf specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.Tags:
changes_inputs, affects_outputs, loading_and_analysis, experimentalPlease only use this flag as part of a suggested migration or testing strategy. Note
that the heuristic has known deficiencies and it is suggested to migrate to
relying on just
--experimental_override_name_platform_in_output_dir.Tags: affects_outputs, experimentalGenerate binaries with FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.Tags:
affects_outputsUse FDO profile information to optimize compilation. Specify the name of a zip file containing a .gcda file tree, an afdo file containing an auto profile, or an LLVM profile file. This flag also accepts files specified as labels (e.g.
//foo/bar:file.afdo - you may need to add an exports_files directive to the corresponding package) and labels pointing to fdo_profile targets. This flag will be superseded by the fdo_profile rule.Tags: affects_outputsUse cache prefetch hints.Tags:
affects_outputsThe fdo_profile representing the profile to be used for optimization.Tags:
affects_outputsThe given features will be enabled or disabled by default for targets built in the target configuration.
Specifying
-{feature} will disable the feature. Negative features always override positive ones.
See also --host_features.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsIf enabled, all C++ compilations produce position-independent code (“-fPIC”), links prefer PIC pre-built libraries over non-PIC libraries, and links produce position-independent executables (“-pie”).Tags:
loading_and_analysis, affects_outputs--host_action_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies the set of environment variables available to actions with execution
configurations. Variables can be either specified by
name, in which case the
value will be taken from the invocation environment, by the name=value pair
which sets the value independent of the invocation environment, or by
=name, which unsets the variable of that name. This option can
be used multiple times; for options given for the same variable, the latest
wins, options for different variables accumulate.May be used multiple times; values are accumulated.Tags: action_command_linesSpecify the mode the tools used during the build will be built in. Values:
fastbuild, dbg, opt.Tags: affects_outputs, action_command_linesAdditional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional options to pass to the C compiler for tools built in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsThe host CPU.Tags:
changes_inputs, affects_outputsAdditional options to pass to C++ compiler for tools built in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsThe given features will be enabled or disabled by default for targets built in the exec configuration.
Specifying
-{feature} will disable the feature. Negative features always override positive ones.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsAdditional option to pass to linker when linking tools in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputs--host_macos_minimum_os
a dotted version (for example '2.3' or '3.3alpha2.4')
default:"see description"
Minimum compatible macOS version for host targets. If unspecified, uses ‘macos_sdk_version’.Tags:
loses_incremental_state--host_per_file_copt
a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options
Additional options to selectively pass to the C/C++ compiler when compiling certain files in the exec configurations. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,…,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see —instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: —host_per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsWhen enabled, an exec groups is automatically created for each toolchain used by a rule.
For this to work rule needs to specify
toolchain parameter on its actions. For
more information, see GH-17134.Tags: affects_outputs, incompatible_changeIf true, the genfiles directory is folded into the bin directory.Tags:
affects_outputs, incompatible_changeIf specified, the value of the cpu constraint (
@platforms//cpu:cpu) of
the target platform is used to set the $(TARGET_CPU) make variable.Tags: loading_and_analysis, incompatible_changeWhen coverage is enabled, specifies whether to consider instrumenting test rules.
When set, test rules included by
--instrumentation_filter are instrumented.
Otherwise, test rules are always excluded from coverage instrumentation.Tags: affects_outputs--instrumentation_filter
a comma-separated list of regex expressions with prefix '-' specifying excluded paths
default:"-/javatests[/:],-/test/java[/:]"
When coverage is enabled, only rules with names included by the
specified regex-based filter will be instrumented. Rules prefixed
with ’-’ are excluded instead. Note that only non-test rules are
instrumented unless
--instrument_test_targets is enabled.Tags: affects_outputsMinimum compatible iOS version for target simulators and devices. If unspecified, uses ‘ios_sdk_version’.Tags:
loses_incremental_stateComma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisAdditional option to pass to gcc when linking.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional option to pass to the LTO backend step (under —features=thin_lto).May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional option to pass to the LTO indexing step (under —features=thin_lto).May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsComma-separated list of architectures for which to build Apple macOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisMinimum compatible macOS version for targets. If unspecified, uses ‘macos_sdk_version’.Tags:
loses_incremental_stateUse memprof profile.Tags:
affects_outputsWhether to perform symbol and dead-code strippings on linked binaries. Binary strippings will be performed if both this flag and —compilation_mode=opt are specified.Tags:
action_command_linesAdditional options to pass to gcc when compiling Objective-C/C++ source files.May be used multiple times; values are accumulated.Tags:
action_command_lines--per_file_copt
a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options
Additional options to selectively pass to gcc when compiling certain files. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,…,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see —instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: —per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputs--per_file_ltobackendopt
a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options
Additional options to selectively pass to LTO backend (under —features=thin_lto) when compiling certain backend objects. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,…,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns. option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: —per_file_ltobackendopt=//foo/.*.o,-//foo/bar.o@-O0 adds the -O0 command line option to the LTO backend command line of all o files in //foo/ except bar.o.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsSpecifies a suffix to be added to the configuration directory.Tags:
loses_incremental_state, affects_outputs, loading_and_analysisUse Propeller profile information to optimize the build target.A propeller profile must consist of at least one of two files, a cc profile and a ld profile. This flag accepts a build label which must refer to the propeller profile input files. For example, the BUILD file that defines the label, in a/b/BUILD:propeller_optimize( name = “propeller_profile”, cc_profile = “propeller_cc_profile.txt”, ld_profile = “propeller_ld_profile.txt”,)An exports_files directive may have to be added to the corresponding package to make these files visible to Bazel. The option must be used as: —propeller_optimize=//a/b:propeller_profileTags:
action_command_lines, affects_outputsAbsolute path name of cc_profile file for Propeller Optimized builds.Tags:
affects_outputsAbsolute path name of ld_profile file for Propeller Optimized builds.Tags:
affects_outputsPrefix to insert before the executables for the
test and run commands.
If the value is foo -bar, and the execution command line is test_binary -baz,
then the final command line is foo -bar test_binary -baz.
This can also be a label to an executable target. Some examples are:valgrindstracestrace -cvalgrind --quiet --num-callers=20//package:target//package:target --options
action_command_linesIf true, native libraries that contain identical functionality will be shared among different targetsTags:
loading_and_analysis, affects_outputsStamp binaries with the date, username, hostname, workspace information, etc.Tags:
affects_outputsSpecifies whether to strip binaries and shared libraries (using “-Wl,—strip-debug”). The default value of ‘sometimes’ means strip iff —compilation_mode=fastbuild.Tags:
affects_outputsAdditional options to pass to strip when generating a ‘<name>.stripped’ binary.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsComma-separated list of architectures for which to build Apple tvOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisMinimum compatible tvOS version for target simulators and devices. If unspecified, uses ‘tvos_sdk_version’.Tags:
loses_incremental_stateComma-separated list of architectures for which to build Apple visionOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisComma-separated list of architectures for which to build Apple watchOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisMinimum compatible watchOS version for target simulators and devices. If unspecified, uses ‘watchos_sdk_version’.Tags:
loses_incremental_stateUse XbinaryFDO profile information to optimize compilation. Specify the name of default cross binary profile. When the option is used together with —fdo_instrument/—fdo_optimize/—fdo_profile, those options will always prevail as if xbinary_fdo is never specified.Tags:
affects_outputsIf disabled, visibility errors in target dependencies are demoted to warnings.Tags:
build_file_semantics, non_configurableWhether to desugar Java 8 bytecode before dexing.Tags:
affects_outputs, loading_and_analysis, loses_incremental_stateWhether to include supported Java 8 libraries in apps for legacy devices.Tags:
affects_outputs, loading_and_analysis, loses_incremental_state, experimentalChecks the environments each target is compatible with and reports errors if any target has dependencies that don’t support the same environmentsTags:
build_file_semanticsIf true, enable package()s to set the transitive_visibility attribute to restrict which packages may depend on them.Tags:
build_file_semantics, experimentalWhen enabled, enforce that a java_binary rule can’t contain more than one version of the same class file on the classpath. This enforcement can break the build, or can just result in warnings.Tags:
loading_and_analysisIf true, checks that a Java target explicitly declares all directly used targets as dependencies.Tags:
build_file_semantics, eagerness_to_exitIf enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.Tags:
build_file_semantics, incompatible_changeNo-op. Kept here for backwards compatibility.Tags:
eagerness_to_exit, incompatible_change, deprecatedWhen enabled, and with experimental_one_version_enforcement set to a non-NONE value, enforce one version on java_test targets. This flag can be disabled to improve incremental test performance at the expense of missing potential one version violations.Tags:
loading_and_analysisUnless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.Tags:
build_file_semantics, eagerness_to_exit, incompatible_changeUnless OFF, checks that a proto_library target explicitly declares all targets used in ‘import public’ as exported.Tags:
build_file_semantics, eagerness_to_exit, incompatible_changeIf true, headers found through system include paths (-isystem) are also required to be declared.Tags:
loading_and_analysis, eagerness_to_exitDeclares this build’s target environment. Must be a label reference to an
environment rule. If specified, all top-level targets must be compatible with this
environment.
See also --platforms.May be used multiple times; values are accumulated.Tags: changes_inputsImplementation to use to sign APKsTags:
action_command_lines, affects_outputs, loading_and_analysisIf set, and compilation mode is not ‘opt’, objc apps will include debug entitlements when signing.Tags:
changes_inputsIf true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library and objc_import.Tags:
build_file_semantics, incompatible_changeIf true, make the default value true for alwayslink attributes in objc_library and objc_import.Tags:
build_file_semantics, incompatible_changeIf true, an analysis failure of a rule target results in the target’s propagation
of an instance of
AnalysisFailureInfo containing the error description, instead
of resulting in a build failure.Tags: loading_and_analysis, experimentalSets the maximum number of transitive dependencies through a rule attribute with
a
for_analysis_testing configuration transition.
Exceeding this limit will result in a rule error.Tags: loading_and_analysis--default_test_resources
a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100
Override the default resources amount for tests. The expected format is
{resource}={value}. If a single positive number is specified as {value}
it will override the default resources for all test sizes. If 4
comma-separated numbers are specified, they will override the resource
amount for respectively the small, medium, large, enormous test sizes.
Values can also be HOST_RAM/HOST_CPU, optionally followed
by [-|*]{float} (eg. memory=HOST_RAM*.1,HOST_RAM*.2,HOST_RAM*.3,HOST_RAM*.4).
The default test resources specified by this flag are overridden by explicit
resources specified in tags.May be used multiple times; values are accumulated.Specifies number of times to run each test. If any of those attempts fail for any
reason, the whole test is considered failed. Normally the value specified is
just an integer.
Example:
--runs_per_test=3 will run all tests 3 times.
Alternate syntax: regex_filter@runs_per_test. Where runs_per_test stands for
an integer value and regex_filter stands for a list of include and exclude
regular expression patterns (Also see —instrumentation_filter).
Example: --runs_per_test=//foo/.*,-//foo/bar/.*@3 runs all tests in //foo/ except
those under //foo/bar three times. This option can be passed multiple times. The most
recently passed argument that matches takes precedence. If nothing matches,
the test is only run once.May be used multiple times; values are accumulated.--test_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies additional environment variables to be injected into the test runner
environment. Variables can be either specified by
name, in which
case its value will be read from the Bazel client environment, or by the
name=value pair.
Previously set variables can be unset via =name.
This option can be used multiple times to specify several variables.
Used only by the ‘bazel test’ command.May be used multiple times; values are accumulated.Tags: test_runnerOverride the default test timeout values for test timeouts (in secs). If a single
positive integer value is specified it will override all categories. If 4
comma-separated integers are specified, they will override the timeouts for
short, moderate, long and eternal (in that order). In either form, a value of
-1 tells blaze to use its default timeouts for that category.If true, undeclared test outputs will be archived in a zip file.Tags:
test_runnerWhether to generate and analyze .d files.Tags:
loading_and_analysis, execution, changes_inputsWhether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.Tags:
loading_and_analysis, execution, changes_inputs, experimentalIf enabled, C++ .d files will be passed through in memory directly from the remote build nodes instead of being written to disk.Tags:
loading_and_analysis, execution, affects_outputs, experimentalIf enabled, the dependency (.jdeps) files generated from Java compilations will be passed through in memory directly from the remote build nodes instead of being written to disk.Tags:
loading_and_analysis, execution, affects_outputs, experimentalWhen enabled,
--trim_test_configuration will not trim the test configuration for rules
marked testonly=1. This is meant to reduce action conflict issues when non-test
rules depend on cc_test rules. No effect if --trim_test_configuration is
false.Tags: loading_and_analysis, loses_incremental_state, experimentalWhether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.Tags:
loading_and_analysis, execution, changes_inputs, experimentalIf set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.Tags:
changes_inputs, loading_and_analysisWhen building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).Tags:
executionWhen enabled, test-related options will be cleared below the top level of the build. When this flag is active, tests cannot be built as dependencies of non-test rules, but changes to test-related options will not cause non-test rules to be re-analyzed.Tags:
loading_and_analysis, loses_incremental_state--toolchain_resolution_debug
a comma-separated list of regex expressions with prefix '-' specifying excluded paths
default:"-.*"
Print debug information during toolchain resolution. The flag takes a regex, which is checked against toolchain types and specific targets to see which to debug. Multiple regexes may be separated by commas, and then each regex is checked separately. Note: The output of this flag is very complex and will likely only be useful to experts in toolchain resolution.Tags:
terminal_outputIf enabled, visibility errors include additional diagnostic information.Tags:
build_file_semantics, non_configurableSets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
{key}={value} as an argument.May be used multiple times; values are accumulated.Tags: changes_inputs, non_configurableShort form:
-tIf set to auto, Bazel reruns a test if and only if:- Bazel detects changes in the test or its dependencies,
- The test is marked as
external, - Multiple test runs were requested with
--runs_per_test, or - The test previously failed.
If set to
yes, Bazel caches all test results except for tests marked asexternal. If set tono, Bazel does not cache any test results.
If
on_failed or on_passed, then Blaze will cancel concurrently running tests on the first
successful run with that result. This is only useful in combination with
--runs_per_test_detects_flakes.Tags: affects_outputs, loading_and_analysis, experimentalIf true, then Bazel fetches the entire coverage data directory for each test during a coverage run.Tags:
affects_outputs, loading_and_analysis, experimentalIf true, coverage for clang will generate an LCOV report.Tags:
affects_outputs, loading_and_analysis, experimentalEnables reduced classpaths for Java compilations.
Whether to validate java_* sources.Tags:
affects_outputs, experimentalThe number of CPUs to reserve for Turbine.
Explicitly specify a dependency to JUnit or Hamcrest in a java_test instead of accidentally obtaining from the TestRunner’s deps. Only works for bazel right now.
The Java launcher used by tools that are executed during a build.
Additional options to pass to javac when building tools that are executed during a build.May be used multiple times; values are accumulated.
Additional options to pass to the Java VM when building tools that are executed during the build. These options will get added to the VM startup options of each java_binary target.May be used multiple times; values are accumulated.
If true, exclusive tests will run with sandboxed strategy. Add
local tag to force
an exclusive test run locallyTags: incompatible_changeIf true, Bazel uses an environment with a static value for PATH and does not
inherit
LD_LIBRARY_PATH. Use --action_env=ENV_VARIABLE if you want to
inherit specific environment variables from the client, but note that doing so
can prevent cross-user caching if a shared cache is used.Tags: loading_and_analysis, incompatible_changeAdditional options to pass to the J2ObjC tool.May be used multiple times; values are accumulated.
Causes the Java virtual machine of a java test to wait for a connection from a JDWP-compliant debugger (such as jdb) before starting the test. Implies -test_output=streamed.Expands to:
--test_arg=--wrapper_script_flag=--debug--test_output=streamed--test_strategy=exclusive--test_timeout=9999--nocache_test_results
Generate dependency information (for now, compile-time classpath) per Java target.
Compile ijars directly from source.
The Java language version
The Java launcher to use when building Java binaries. If this flag is set to the empty string, the JDK launcher is used. The “launcher” attribute overrides this flag.
The Java runtime version
Additional options to pass to javac.May be used multiple times; values are accumulated.
Additional options to pass to the Java VM. These options will get added to the VM startup options of each java_binary target.May be used multiple times; values are accumulated.
Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.
Specifies a binary to use to do dexing without sharding.
Plugins to use in the build. Currently works with java_plugin.May be used multiple times; values are accumulated.
Specifies which version of ProGuard to use for code removal when building a Java binary.
The label of the proto-compiler.Tags:
affects_outputs, loading_and_analysisWhether to pass profile_path to the proto compiler.Tags:
affects_outputs, loading_and_analysisThe profile to pass to the proto compiler as profile_path. If unset, but —proto_profile is true (the default), infers the path from —fdo_optimize.Tags:
affects_outputs, loading_and_analysisLabel of proto_lang_toolchain() which describes how to compile C++ protosTags:
affects_outputs, loading_and_analysisLabel of proto_lang_toolchain() which describes how to compile Java protosTags:
affects_outputs, loading_and_analysis--proto_toolchain_for_javalite
a build target label
default:"@bazel_tools//tools/proto:javalite_toolchain"
Label of proto_lang_toolchain() which describes how to compile JavaLite protosTags:
affects_outputs, loading_and_analysisAdditional options to pass to the protobuf compiler.May be used multiple times; values are accumulated.Tags:
affects_outputsIf true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.
Absolute path to the shell executable for Bazel to use. If this is unset, but the
BAZEL_SH environment variable is set on the first Bazel invocation (that starts
up a Bazel server), Bazel uses that. If neither is set, Bazel uses a hard-coded
default path depending on the operating system it runs on;- Windows:
c:/msys64/usr/bin/bash.exe - FreeBSD:
/usr/local/bin/bash - All others:
/bin/bash.
bash may lead
to build failures or runtime failures of the generated binaries.Tags: loading_and_analysisSpecifies additional options and arguments that should be passed to the test
executable. Can be used multiple times to specify several arguments.
If multiple tests are executed, each of them will receive identical arguments.
Used only by the
bazel test command.May be used multiple times; values are accumulated.Specifies a filter to forward to the test framework. Used to limit the tests run. Note that this does not affect which targets are built.
This option is deprecated and has no effect.Tags:
deprecatedForwards fail fast option to the test runner. The test runner should stop execution upon first failure.
--test_sharding_strategy
explicit, disabled or forced=k where k is the number of shards to enforce
default:"explicit"
Specify strategy for test sharding:
explicitto only use sharding if theshard_countBUILDattribute is present.disabledto never use test sharding.forced=kto enforcekshards for testing regardless of theshard_countBUILDattribute.
The Java language version used to execute the tools that are needed during a build
The Java runtime version used to execute tools during the build
If enabled, this option causes Java compilation to use interface jars. This will result in faster incremental compilation, but error messages can be different.
Canonicalize-flags Options
Inherits all options from build. Options that control the output of the commandOutput the canonical policy, after expansion and filtering. To keep the output clean, the canonicalized command arguments will NOT be shown when this option is set to true. Note that the command specified by —for_command affects the filtered policy, and if none is specified, the default command is ‘build’.Tags:
affects_outputs, terminal_outputWhether Starlark options set to their default values are included in the output.Tags:
affects_outputs, terminal_outputIf incompatible_enforce_config_setting_visibility=false, this is a noop. Else, if this flag is false, any config_setting without an explicit visibility attribute is //visibility:public. If this flag is true, config_setting follows the same visibility logic as all other rules. See https://github.com/bazelbuild/bazel/issues/12933.Tags:
loading_and_analysis, incompatible_changeIf true, enforce config_setting visibility restrictions. If false, every config_setting is visible to every target. See https://github.com/bazelbuild/bazel/issues/12932.Tags:
loading_and_analysis, incompatible_changeThe command for which the options should be canonicalized.Tags:
affects_outputs, terminal_outputApplies an invocation policy to the options to be canonicalized.Tags:
affects_outputs, terminal_outputA comma-separated list of names of packages which the build system will consider non-existent, even if they are visible somewhere on the package path.
Use this option when deleting a subpackage ‘x/y’ of an existing package ‘x’. For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label ‘//x:y/z’ if that is still provided by another package_path entry. Specifying —deleted_packages x/y avoids this problem.May be used multiple times; values are accumulated.
Allows the command to fetch external dependencies. If set to false, the command will utilize any cached version of the dependency, and if none exists, the command will result in failure.
A colon-separated list of where to look for packages. Elements beginning with ‘%workspace%’ are relative to the enclosing workspace. If omitted or empty, the default is the output of ‘bazel info default-package-path’.
If enabled, causes Bazel to print “Loading package:” messages.
Clean Options
Inherits all options from build. Options that control the output of the commandIf true, output cleaning is asynchronous. When this command completes, it will be safe to execute new commands in the same client, even though the deletion may continue in the background.Tags:
host_machine_resource_optimizationsIf true, clean removes the entire working tree for this bazel instance, which includes all bazel-created temporary and build output files, and stops the bazel server if it is running.Tags:
host_machine_resource_optimizationsIf specified, clean asynchronously removes the entire working tree for this bazel instance, which includes all bazel-created temporary and build output files, and stops the bazel server if it is running. When this command completes, it will be safe to execute new commands in the same client, even though the deletion may continue in the background.Expands to:
--expunge--async
host_machine_resource_optimizationsConfig Options
Coverage Options
Inherits all options from test.Cquery Options
Inherits all options from test. Options relating to query output and semanticsHow to resolve aspect dependencies when the output format is one of {xml,proto,record}. ‘off’ means no aspect dependencies are resolved, ‘conservative’ (the default) means all declared aspect dependencies are added regardless of whether they are given the rule class of direct dependencies, ‘precise’ means that only those aspects are added that are possibly active given the rule class of the direct dependencies. Note that precise mode requires loading other packages to evaluate a single target thus making it slower than the other modes. Also note that even precise mode is not completely precise: the decision whether to compute an aspect is decided in the analysis phase, which is not run during ‘bazel query’.Tags:
build_file_semanticsIf enabled, every query command emits labels as if by the Starlark
str function applied to a Label instance. This is useful for tools that need to match the output of different query commands and/or labels emitted by rules. If not enabled, output formatters are free to emit apparent repository names (relative to the main repository) instead to make the output more readable.Tags: terminal_outputaquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).Tags:
terminal_outputIf true, then the graph will be emitted ‘factored’, i.e. topologically-equivalent nodes will be merged together and their labels concatenated. This option is only applicable to —output=graph.Tags:
terminal_outputThe maximum length of the label string for a graph node in the output. Longer labels will be truncated; -1 means no truncation. This option is only applicable to —output=graph.Tags:
terminal_outputIf enabled, implicit dependencies will be included in the dependency graph over which the query operates. An implicit dependency is one that is not explicitly specified in the BUILD file but added by bazel. For cquery, this option controls filtering resolved toolchains.Tags:
build_file_semanticsaquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).Tags:
terminal_outputIf enabled,
blaze query --output=build will output package_group targets.Tags: terminal_output, incompatible_changeIf enabled, when outputting package_group’s
packages attribute, the leading // will not be omitted.Tags: terminal_output, incompatible_changeIf set and —universe_scope is unset, then a value of —universe_scope will be inferred as the list of unique target patterns in the query expression. Note that the —universe_scope value inferred for a query expression that uses universe-scoped functions (e.g.
allrdeps) may not be what you want, so you should use this option only if you know what you are doing. See https://bazel.build/reference/query#sky-query for details and examples. If —universe_scope is set, then this option’s value is ignored. Note: this option applies only to query (i.e. not cquery).Tags: loading_and_analysisWhether each format is terminated with \0 instead of newline.Tags:
terminal_outputIf enabled, deps from “nodep” attributes will be included in the dependency graph over which the query operates. A common example of a “nodep” attribute is “visibility”. Run and parse the output of
info build-language to learn about all the “nodep” attributes in the build language.Tags: build_file_semanticsThe format in which the cquery results should be printed. Allowed values for cquery are: label, label_kind, textproto, transitions, proto, streamed_proto, jsonproto. If you select ‘transitions’, you also have to specify the —transitions=(lite|full) option.Tags:
terminal_outputWhen specified, query results will be written directly to this file, and nothing will be printed to Bazel’s standard output stream (stdout). In benchmarks, this is generally faster than
bazel query > file.Tags: terminal_outputIf true, attributes whose value is not explicitly specified in the BUILD file are included; otherwise they are omitted. This option is applicable to —output=protoTags:
terminal_outputPopulate the definition_stack proto field, which records for each rule instance the Starlark call stack at the moment the rule’s class was defined.Tags:
terminal_outputIf enabled, configurable attributes created by select() are flattened. For list types the flattened representation is a list containing each value of the select map exactly once. Scalar types are flattened to null.Tags:
build_file_semanticsPopulate the source_aspect_name proto field of each Attribute with the source aspect that the attribute came from (empty string if it did not).Tags:
terminal_outputif enabled, proto output will include information about configurations. When disabled,cquery proto output format resembles query output format.Tags:
affects_outputsUse the starlark environment in the value of the generated $internal_attr_hash attribute. This ensures that the starlark rule definition (and its transitive imports) are part of this identifier.Tags:
terminal_outputWhether or not to calculate and populate the $internal_attr_hash attribute.Tags:
terminal_outputPopulate the instantiation call stack of each rule. Note that this requires the stack to be presentTags:
terminal_outputWhether to output location information in proto output at all.Tags:
terminal_outputComma separated list of attributes to include in output. Defaults to all attributes. Set to empty string to not output any attribute. This option is applicable to —output=proto.Tags:
terminal_outputPopulate the rule_class_key field of each rule; and for the first rule with a given rule_class_key, also populate its rule_class_info proto field. The rule_class_key field uniquely identifies a rule class, and the rule_class_info field is a Stardoc-format rule class API definition.Tags:
terminal_outputWhether or not to populate the rule_input and rule_output fields.Tags:
terminal_outputIf set, query will read the query from the file named here, rather than on the command line. It is an error to specify a file here as well as a command-line query.Tags:
changes_inputsIf true, the location of BUILD files in xml and proto outputs will be relative. By default, the location output is an absolute path and will not be consistent across machines. You can set this option to true to have a consistent result across machines.Tags:
terminal_outputShows the configuration fragments required by a rule and its transitive dependencies. This can be useful for evaluating how much a configured target graph can be trimmed.Tags:
affects_outputsA Starlark expression to format each configured target in cquery’s —output=starlark mode. The configured target is bound to ‘target’. If neither —starlark:expr nor —starlark:file is specified, this option will default to ‘str(target.label)’. It is an error to specify both —starlark:expr and —starlark:file.Tags:
terminal_outputThe name of a file that defines a Starlark function called ‘format’, of one argument, that is applied to each configured target to format it as a string. It is an error to specify both —starlark:expr and —starlark:file. See help for —output=starlark for additional detail.Tags:
terminal_outputQuery: If disabled, dependencies on ‘exec configuration’ will not be included in the dependency graph over which the query operates. An ‘exec configuration’ dependency edge, such as the one from any ‘proto_library’ rule to the Protocol Compiler, usually points to a tool executed during the build rather than a part of the same ‘target’ program.
Cquery: If disabled, filters out all configured targets which cross an execution transition from the top-level target that discovered this configured target. That means if the top-level target is in the target configuration, only configured targets also in the target configuration will be returned. If the top-level target is in the exec configuration, only exec configured targets will be returned. This option will NOT exclude resolved toolchains.Tags:
build_file_semanticsThe format in which cquery will print transition information.Tags:
affects_outputsA comma-separated set of target patterns (additive and subtractive). The query may be performed in the universe defined by the transitive closure of the specified targets. This option is used for the query and cquery commands.
For cquery, the input to this option is the targets all answers are built under and so this option may affect configurations and transitions. If this option is not specified, the top-level targets are assumed to be the targets parsed from the query expression. Note: For cquery, not specifying this option may cause the build to break if targets parsed from the query expression are not buildable with top-level options.Tags:
loading_and_analysisEnable persistent aar extractor by using workers.Tags:
execution, experimentalWhether to make source manifest actions remotableTags:
loading_and_analysis, execution, experimentalIf true, then Bazel will run coverage postprocessing for test in a new spawn.Tags:
execution, experimentalWhen enabled, passing multiple
--modify_execution_info flags is additive.
When disabled, only the last flag is taken into account.Tags: execution, affects_outputs, loading_and_analysis, incompatible_changeAdd or remove keys from an action’s execution info based on action mnemonic.
Applies only to actions which support execution info. Many common actions
support execution info, e.g. Genrule, CppCompile, Javac, StarlarkAction,
TestRunner. When specifying multiple values, order matters because
many regexes may apply to the same mnemonic.
Syntax:
regex=[+-]key,regex=[+-]key,....
Examples:.*=+x,.*=-y,.*=+zaddsxandzto, and removesyfrom, the execution info for all actions.Genrule=+requires-xaddsrequires-xto the execution info for all Genrule actions.(?!Genrule).*=-requires-xremovesrequires-xfrom the execution info for all non-Genrule actions.
execution, affects_outputs, loading_and_analysisEnable persistent Android dex and desugar actions by using workers.Expands to:
--internal_persistent_android_dex_desugar--strategy=Desugar=worker--strategy=DexBuilder=worker
host_machine_resource_optimizations, executionEnable persistent Android resource processor by using workers.Expands to:
--internal_persistent_busybox_tools--strategy=AaptPackage=worker--strategy=AndroidResourceParser=worker--strategy=AndroidResourceValidator=worker--strategy=AndroidResourceCompiler=worker--strategy=RClassGenerator=worker--strategy=AndroidResourceLink=worker--strategy=AndroidAapt2=worker--strategy=AndroidAssetMerger=worker--strategy=AndroidResourceMerger=worker--strategy=AndroidCompiledResourceMerger=worker--strategy=ManifestMerger=worker--strategy=AndroidManifestMerger=worker--strategy=Aapt2Optimize=worker--strategy=AARGenerator=worker--strategy=ProcessDatabinding=worker--strategy=GenerateDataBindingBaseClasses=worker
host_machine_resource_optimizations, executionEnable persistent multiplexed Android dex and desugar actions by using workers.Expands to:
--persistent_android_dex_desugar--internal_persistent_multiplex_android_dex_desugar
host_machine_resource_optimizations, executionEnable persistent multiplexed Android resource processor by using workers.Expands to:
--persistent_android_resource_processor--modify_execution_info=AaptPackage=+supports-multiplex-workers--modify_execution_info=AndroidResourceParser=+supports-multiplex-workers--modify_execution_info=AndroidResourceValidator=+supports-multiplex-workers--modify_execution_info=AndroidResourceCompiler=+supports-multiplex-workers--modify_execution_info=RClassGenerator=+supports-multiplex-workers--modify_execution_info=AndroidResourceLink=+supports-multiplex-workers--modify_execution_info=AndroidAapt2=+supports-multiplex-workers--modify_execution_info=AndroidAssetMerger=+supports-multiplex-workers--modify_execution_info=AndroidResourceMerger=+supports-multiplex-workers--modify_execution_info=AndroidCompiledResourceMerger=+supports-multiplex-workers--modify_execution_info=ManifestMerger=+supports-multiplex-workers--modify_execution_info=AndroidManifestMerger=+supports-multiplex-workers--modify_execution_info=Aapt2Optimize=+supports-multiplex-workers--modify_execution_info=AARGenerator=+supports-multiplex-workers
host_machine_resource_optimizations, executionEnable persistent and multiplexed Android tools (dexing, desugaring, resource processing).Expands to:
--internal_persistent_multiplex_busybox_tools--persistent_multiplex_android_resource_processor--persistent_multiplex_android_dex_desugar
host_machine_resource_optimizations, executionIf true, use the target platform for running tests rather than the test exec group.Tags:
executionThe Android target compiler.Tags:
affects_outputs, loading_and_analysis, loses_incremental_stateSelects the manifest merger to use for android_binary rules. Flag to help the transition to the Android manifest merger from the legacy merger.Tags:
affects_outputs, loading_and_analysis, loses_incremental_stateSets the platforms that android_binary targets use. If multiple platforms are specified, then the binary is a fat APKs, which contains native binaries for each specified target platform.Tags:
changes_inputs, loading_and_analysis, loses_incremental_stateSpecifies a suffix to be added to the configuration directory.Tags:
affects_outputsThe C++ compiler to use for compiling the target.Tags:
loading_and_analysis, executionLocation of the binary that is used to postprocess raw coverage reports. This must
be a binary target. Defaults to
@bazel_tools//tools/test:lcov_merger.Tags: changes_inputs, affects_outputs, loading_and_analysisLocation of the binary that is used to generate coverage reports. This must
be a binary target. Defaults to
@bazel_tools//tools/test:coverage_report_generator.Tags: changes_inputs, affects_outputs, loading_and_analysisLocation of support files that are required on the inputs of every test action
that collects code coverage. Defaults to
//tools/test:coverage_support.Tags: changes_inputs, affects_outputs, loading_and_analysisSpecifies a custom malloc implementation. This setting overrides malloc attributes in build rules.Tags:
changes_inputs, affects_outputsIf set, add a “requires-xcode:{version}” execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a “requires-xcode-label:{version_label}” execution requirement.Tags:
loses_incremental_state, loading_and_analysis, execution, experimentalIf true, use the most recent Xcode that is available both locally and remotely. If false, or if there are no mutual available versions, use the local Xcode version selected via xcode-select.Tags:
loses_incremental_state, experimentalThe platforms that are available as execution platforms to run actions.
Platforms can be specified by exact target, or as a target pattern.
These platforms will be considered before those declared in the
WORKSPACE file by
register_execution_platforms(). This option may only be set once; later
instances will override earlier flag settings.Tags: executionThe toolchain rules to be considered during toolchain resolution.
Toolchains can be specified by exact target, or as a target pattern.
These toolchains will be considered before those declared in the
WORKSPACE file
by register_toolchains().May be used multiple times; values are accumulated.Tags: affects_outputs, changes_inputs, loading_and_analysisA label to a checked-in libc library. The default value is selected by the crosstool toolchain, and you almost never need to override it.Tags:
action_command_lines, affects_outputsNo-op flag. Will be removed in a future release.Tags:
loading_and_analysis, executionIf specified, this setting overrides the libc top-level directory (—grte_top) for the exec configuration.Tags:
action_command_lines, affects_outputsThe label of a platform rule that describes the host system.Tags:
affects_outputs, changes_inputs, loading_and_analysisIf enabled,
bazel test --run_under=//:runner builds //:runner in the exec
configuration. If disabled, it builds //:runner in the target configuration.
Bazel executes tests on exec machines, so the former is more correct. This
doesn’t affect bazel run, which always builds --run_under=//foo in the
target configuration.Tags: affects_outputs, incompatible_changeWhether to emit a strip action as part of objc linking.Tags:
action_command_lines, incompatible_changeIf true, Bazel will not enable ‘host’ and ‘nonhost’ features in the c++ toolchain (see https://github.com/bazelbuild/bazel/issues/7407 for more information).Tags:
loading_and_analysis, incompatible_changeIf true, Bazel will not link library dependencies as whole archive by default (see https://github.com/bazelbuild/bazel/issues/7362 for migration instructions).Tags:
loading_and_analysis, incompatible_changeIf true, strip action for executables will use flag -x, which does not break dynamic symbol resolution.Tags:
action_command_lines, incompatible_changeUse interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.Tags:
loading_and_analysis, affects_outputs, affects_outputsSpecifies the version of the iOS SDK to use to build iOS applications. If unspecified, uses the default iOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateSpecifies the version of the macOS SDK to use to build macOS applications. If unspecified, uses the default macOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateThe minimum OS version which your compilation targets.Tags:
loading_and_analysis, affects_outputsThe location of a mapping file that describes which platform to use if none is set or
which flags to set when a platform already exists. Must be relative to the main
workspace root. Defaults to
platform_mappings (a file directly under the
workspace root).Tags: affects_outputs, changes_inputs, loading_and_analysis, non_configurableThe labels of the platform rules describing the target platforms for the current command.Tags:
affects_outputs, changes_inputs, loading_and_analysisSpecifies the version of the tvOS SDK to use to build tvOS applications. If unspecified, uses the default tvOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateMakes apple_crosstool_transition fall back to using the value of
--platforms flag instead of legacy --cpu when needed.Tags: loading_and_analysis--watchos_sdk_version
a dotted version (for example '2.3' or '3.3alpha2.4')
default:"see description"
Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses the default watchOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateIf specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.Tags:
loses_incremental_stateThe label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.Tags:
loses_incremental_state, loading_and_analysisWhether to generate debug symbol(.dSYM) file(s).Tags:
affects_outputs, action_command_linesIf true, build runfiles symlink forests for all targets. If false, write them only when required by a local action, test or run command.Tags:
affects_outputsIf true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.Tags:
affects_outputsIf enabled, when building C++ tests statically and with fission the .dwp file for the test binary will be automatically built as well.Tags:
loading_and_analysis, affects_outputsSets the suffixes of header files that a cc_proto_library creates.Tags:
affects_outputs, loading_and_analysisSets the suffixes of source files that a cc_proto_library creates.Tags:
affects_outputs, loading_and_analysisRun extra actions for alternative Java api versions in a proto_library.Tags:
affects_outputs, loading_and_analysis, experimentalSave the state of enabled and requested feautres as an output of compilation.Tags:
affects_outputs, experimentalSpecifies which compilation modes use fission for C++ compilations and links. May be any combination of {‘fastbuild’, ‘dbg’, ‘opt’} or the special values ‘yes’ to enable all modes and ‘no’ to disable all modes.Tags:
loading_and_analysis, action_command_lines, affects_outputsIf true, native rules add
DefaultInfo.files of data dependencies to their runfiles,
which matches the recommended behavior for Starlark rules (runfiles features to avoid).Tags: affects_outputs, incompatible_changeIf enabled, the
{binary}.repo_mapping file emits a module extension’s repo mapping
only once instead of once for each repo generated by the extension that
contributes runfiles.Tags: affects_outputs, incompatible_changeList of flags for which the use in
select() is disabled.Tags: loading_and_analysis, incompatible_change, non_configurableIf true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.Tags:
incompatible_changeSpecifies whether to generate a linkmap file.Tags:
affects_outputsIf set, temporary outputs from gcc will be saved. These include .s files (assembler code), .i files (preprocessed C) and .ii files (preprocessed C++).Tags:
affects_outputs--action_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies the set of environment variables available to actions with target
configuration. Variables can be either specified by
name, in which case
the value will be taken from the invocation environment, by the name=value
pair which sets the value independent of the invocation environment, or by
=name, which unsets the variable of that name. This option can be used
multiple times; for options given for the same variable, the latest wins,
options for different variables accumulate.
Note that unless --incompatible_repo_env_ignores_action_env is true, all name=value
pairs will be available to repository rules.May be used multiple times; values are accumulated.Tags: action_command_linesAllowed values for the
--cpu flag.Tags: changes_inputs, affects_outputsDetermines whether C++ deps of Android rules will be linked dynamically when a cc_binary does not explicitly create a shared library. ‘default’ means bazel will choose whether to link dynamically. ‘fully’ means all libraries will be linked dynamically. ‘off’ means that all libraries will be linked in mostly static mode.Tags:
affects_outputs, loading_and_analysis--android_manifest_merger_order
alphabetical, alphabetical_by_configuration or dependency
default:"alphabetical"
Sets the order of manifests passed to the manifest merger for Android binaries. ALPHABETICAL means manifests are sorted by path relative to the execroot. ALPHABETICAL_BY_CONFIGURATION means manifests are sorted by paths relative to the configuration directory within the output directory. DEPENDENCY means manifests are ordered with each library’s manifest coming before the manifests of its dependencies.Tags:
action_command_lines, executionEnables resource shrinking for android_binary APKs that use ProGuard.Tags:
affects_outputs, loading_and_analysisIf specified, Bazel will instrument code (using offline instrumentation where
possible) and will collect coverage information during tests. Only targets that
match
--instrumentation_filter will be affected. Usually this option should
not be specified directly - bazel coverage command should be used instead.Tags: affects_outputsShort form:
-cSpecify the mode the binary will be built in. Values: fastbuild, dbg, opt.Tags: affects_outputs, action_command_linesAdditional option to pass to gcc when compiling C source files.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional options to pass to gcc.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsDeprecated: this flag is not used internally by Blaze although there are legacy platform
mappings to allow for backwards compatibility. Do not use this flag, instead use
--platforms with an appropriate platform definition.Tags: changes_inputs, affects_outputsUse CSFDO profile information to optimize compilation. Specify the absolute path name of the zip file containing the profile file, a raw or an indexed LLVM profile file.Tags:
affects_outputsGenerate binaries with context sensitive FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.Tags:
affects_outputsThe cs_fdo_profile representing the context sensitive profile to be used for optimization.Tags:
affects_outputsAdditional option to pass to gcc when compiling C++ source files.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsEach
--define option specifies an assignment for a build variable.
In case of multiple values for a variable, the last one wins.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsDetermines whether C++ binaries will be linked dynamically. ‘default’ means Bazel will choose whether to link dynamically. ‘fully’ means all libraries will be linked dynamically. ‘off’ means that all libraries will be linked in mostly static mode.Tags:
loading_and_analysis, affects_outputsIf set, any use of absolute paths for propeller optimize will raise an error.Tags:
affects_outputsIf set, any use of absolute paths for FDO will raise an error.Tags:
affects_outputsEnable runfiles symlink tree; By default, it’s off on Windows, on on other platforms.Tags:
affects_outputsComma-separated list of aspects to be applied to exec-configured targets, regardless of whether or not they are top-level targets. This is an experimental feature and is subject to change.May be used multiple times; values are accumulated.Tags:
loading_and_analysisDeprecated in favor of aspects. Use
action_listener to attach an extra_action to
existing build actions.May be used multiple times; values are accumulated.Tags: execution, experimentalCompress Java resources in APKsTags:
affects_outputs, loading_and_analysis, experimentalEnables resource shrinking for android_binary APKs that use ProGuard.Tags:
affects_outputs, loading_and_analysis, experimentalIf specified, Bazel will also generate collect coverage information for generated files.Tags:
affects_outputs, experimentalIf true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.Tags:
action_command_lines, affects_outputs, experimentalWhich model to use for where in the output tree rules write their outputs, particularly
for multi-platform / multi-configuration builds. This is highly experimental. See
GH-6526 for details. Starlark actions can opt into path mapping by adding the key
supports-path-mapping to the execution_requirements dict.Tags: loses_incremental_state, bazel_internal_configuration, affects_outputs, executionEach entry should be of the form
label=value where label refers to a platform and values
is the desired shortname to override the platform’s CPU name in $(TARGET_CPU)
make variable and output path. Only used when
--experimental_platform_in_output_dir, --incompatible_target_cpu_from_platform or
--incompatible_bep_cpu_from_platform is true. Has highest naming priority.May be used multiple times; values are accumulated.Tags: affects_outputs, experimentalIf true, a shortname for the target platform is used in the output directory name
instead of the CPU. The exact scheme is experimental and subject to change:
- First, in the rare case the
--platformsoption does not have exactly one value, a hash of the platforms option is used. - Next, if any shortname for the current platform was registered by
--experimental_override_name_platform_in_output_dir, then that shortname is used. - Then, if
--experimental_use_platforms_in_output_dir_legacy_heuristicis set, use a shortname based off the current platform Label. - Finally, a hash of the platform option is used as a last resort.
affects_outputs, experimentalIf specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.Tags:
changes_inputs, affects_outputs, loading_and_analysis, experimentalPlease only use this flag as part of a suggested migration or testing strategy. Note
that the heuristic has known deficiencies and it is suggested to migrate to
relying on just
--experimental_override_name_platform_in_output_dir.Tags: affects_outputs, experimentalGenerate binaries with FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.Tags:
affects_outputsUse FDO profile information to optimize compilation. Specify the name of a zip file containing a .gcda file tree, an afdo file containing an auto profile, or an LLVM profile file. This flag also accepts files specified as labels (e.g.
//foo/bar:file.afdo - you may need to add an exports_files directive to the corresponding package) and labels pointing to fdo_profile targets. This flag will be superseded by the fdo_profile rule.Tags: affects_outputsUse cache prefetch hints.Tags:
affects_outputsThe fdo_profile representing the profile to be used for optimization.Tags:
affects_outputsThe given features will be enabled or disabled by default for targets built in the target configuration.
Specifying
-{feature} will disable the feature. Negative features always override positive ones.
See also --host_features.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsIf enabled, all C++ compilations produce position-independent code (“-fPIC”), links prefer PIC pre-built libraries over non-PIC libraries, and links produce position-independent executables (“-pie”).Tags:
loading_and_analysis, affects_outputs--host_action_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies the set of environment variables available to actions with execution
configurations. Variables can be either specified by
name, in which case the
value will be taken from the invocation environment, by the name=value pair
which sets the value independent of the invocation environment, or by
=name, which unsets the variable of that name. This option can
be used multiple times; for options given for the same variable, the latest
wins, options for different variables accumulate.May be used multiple times; values are accumulated.Tags: action_command_linesSpecify the mode the tools used during the build will be built in. Values:
fastbuild, dbg, opt.Tags: affects_outputs, action_command_linesAdditional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional options to pass to the C compiler for tools built in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsThe host CPU.Tags:
changes_inputs, affects_outputsAdditional options to pass to C++ compiler for tools built in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsThe given features will be enabled or disabled by default for targets built in the exec configuration.
Specifying
-{feature} will disable the feature. Negative features always override positive ones.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsAdditional option to pass to linker when linking tools in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputs--host_macos_minimum_os
a dotted version (for example '2.3' or '3.3alpha2.4')
default:"see description"
Minimum compatible macOS version for host targets. If unspecified, uses ‘macos_sdk_version’.Tags:
loses_incremental_state--host_per_file_copt
a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options
Additional options to selectively pass to the C/C++ compiler when compiling certain files in the exec configurations. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,…,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see —instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: —host_per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsWhen enabled, an exec groups is automatically created for each toolchain used by a rule.
For this to work rule needs to specify
toolchain parameter on its actions. For
more information, see GH-17134.Tags: affects_outputs, incompatible_changeIf true, the genfiles directory is folded into the bin directory.Tags:
affects_outputs, incompatible_changeIf specified, the value of the cpu constraint (
@platforms//cpu:cpu) of
the target platform is used to set the $(TARGET_CPU) make variable.Tags: loading_and_analysis, incompatible_changeWhen coverage is enabled, specifies whether to consider instrumenting test rules.
When set, test rules included by
--instrumentation_filter are instrumented.
Otherwise, test rules are always excluded from coverage instrumentation.Tags: affects_outputs--instrumentation_filter
a comma-separated list of regex expressions with prefix '-' specifying excluded paths
default:"-/javatests[/:],-/test/java[/:]"
When coverage is enabled, only rules with names included by the
specified regex-based filter will be instrumented. Rules prefixed
with ’-’ are excluded instead. Note that only non-test rules are
instrumented unless
--instrument_test_targets is enabled.Tags: affects_outputsMinimum compatible iOS version for target simulators and devices. If unspecified, uses ‘ios_sdk_version’.Tags:
loses_incremental_stateComma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisAdditional option to pass to gcc when linking.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional option to pass to the LTO backend step (under —features=thin_lto).May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional option to pass to the LTO indexing step (under —features=thin_lto).May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsComma-separated list of architectures for which to build Apple macOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisMinimum compatible macOS version for targets. If unspecified, uses ‘macos_sdk_version’.Tags:
loses_incremental_stateUse memprof profile.Tags:
affects_outputsWhether to perform symbol and dead-code strippings on linked binaries. Binary strippings will be performed if both this flag and —compilation_mode=opt are specified.Tags:
action_command_linesAdditional options to pass to gcc when compiling Objective-C/C++ source files.May be used multiple times; values are accumulated.Tags:
action_command_lines--per_file_copt
a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options
Additional options to selectively pass to gcc when compiling certain files. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,…,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see —instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: —per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputs--per_file_ltobackendopt
a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options
Additional options to selectively pass to LTO backend (under —features=thin_lto) when compiling certain backend objects. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,…,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns. option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: —per_file_ltobackendopt=//foo/.*.o,-//foo/bar.o@-O0 adds the -O0 command line option to the LTO backend command line of all o files in //foo/ except bar.o.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsSpecifies a suffix to be added to the configuration directory.Tags:
loses_incremental_state, affects_outputs, loading_and_analysisUse Propeller profile information to optimize the build target.A propeller profile must consist of at least one of two files, a cc profile and a ld profile. This flag accepts a build label which must refer to the propeller profile input files. For example, the BUILD file that defines the label, in a/b/BUILD:propeller_optimize( name = “propeller_profile”, cc_profile = “propeller_cc_profile.txt”, ld_profile = “propeller_ld_profile.txt”,)An exports_files directive may have to be added to the corresponding package to make these files visible to Bazel. The option must be used as: —propeller_optimize=//a/b:propeller_profileTags:
action_command_lines, affects_outputsAbsolute path name of cc_profile file for Propeller Optimized builds.Tags:
affects_outputsAbsolute path name of ld_profile file for Propeller Optimized builds.Tags:
affects_outputsPrefix to insert before the executables for the
test and run commands.
If the value is foo -bar, and the execution command line is test_binary -baz,
then the final command line is foo -bar test_binary -baz.
This can also be a label to an executable target. Some examples are:valgrindstracestrace -cvalgrind --quiet --num-callers=20//package:target//package:target --options
action_command_linesIf true, native libraries that contain identical functionality will be shared among different targetsTags:
loading_and_analysis, affects_outputsStamp binaries with the date, username, hostname, workspace information, etc.Tags:
affects_outputsSpecifies whether to strip binaries and shared libraries (using “-Wl,—strip-debug”). The default value of ‘sometimes’ means strip iff —compilation_mode=fastbuild.Tags:
affects_outputsAdditional options to pass to strip when generating a ‘<name>.stripped’ binary.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsComma-separated list of architectures for which to build Apple tvOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisMinimum compatible tvOS version for target simulators and devices. If unspecified, uses ‘tvos_sdk_version’.Tags:
loses_incremental_stateComma-separated list of architectures for which to build Apple visionOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisComma-separated list of architectures for which to build Apple watchOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisMinimum compatible watchOS version for target simulators and devices. If unspecified, uses ‘watchos_sdk_version’.Tags:
loses_incremental_stateUse XbinaryFDO profile information to optimize compilation. Specify the name of default cross binary profile. When the option is used together with —fdo_instrument/—fdo_optimize/—fdo_profile, those options will always prevail as if xbinary_fdo is never specified.Tags:
affects_outputsIf disabled, visibility errors in target dependencies are demoted to warnings.Tags:
build_file_semantics, non_configurableWhether to desugar Java 8 bytecode before dexing.Tags:
affects_outputs, loading_and_analysis, loses_incremental_stateWhether to include supported Java 8 libraries in apps for legacy devices.Tags:
affects_outputs, loading_and_analysis, loses_incremental_state, experimentalChecks the environments each target is compatible with and reports errors if any target has dependencies that don’t support the same environmentsTags:
build_file_semanticsIf true, enable package()s to set the transitive_visibility attribute to restrict which packages may depend on them.Tags:
build_file_semantics, experimentalWhen enabled, enforce that a java_binary rule can’t contain more than one version of the same class file on the classpath. This enforcement can break the build, or can just result in warnings.Tags:
loading_and_analysisIf true, checks that a Java target explicitly declares all directly used targets as dependencies.Tags:
build_file_semantics, eagerness_to_exitIf enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.Tags:
build_file_semantics, incompatible_changeNo-op. Kept here for backwards compatibility.Tags:
eagerness_to_exit, incompatible_change, deprecatedWhen enabled, and with experimental_one_version_enforcement set to a non-NONE value, enforce one version on java_test targets. This flag can be disabled to improve incremental test performance at the expense of missing potential one version violations.Tags:
loading_and_analysisUnless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.Tags:
build_file_semantics, eagerness_to_exit, incompatible_changeUnless OFF, checks that a proto_library target explicitly declares all targets used in ‘import public’ as exported.Tags:
build_file_semantics, eagerness_to_exit, incompatible_changeIf true, headers found through system include paths (-isystem) are also required to be declared.Tags:
loading_and_analysis, eagerness_to_exitDeclares this build’s target environment. Must be a label reference to an
environment rule. If specified, all top-level targets must be compatible with this
environment.
See also --platforms.May be used multiple times; values are accumulated.Tags: changes_inputsImplementation to use to sign APKsTags:
action_command_lines, affects_outputs, loading_and_analysisIf set, and compilation mode is not ‘opt’, objc apps will include debug entitlements when signing.Tags:
changes_inputsIf true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library and objc_import.Tags:
build_file_semantics, incompatible_changeIf true, make the default value true for alwayslink attributes in objc_library and objc_import.Tags:
build_file_semantics, incompatible_changeIf true, an analysis failure of a rule target results in the target’s propagation
of an instance of
AnalysisFailureInfo containing the error description, instead
of resulting in a build failure.Tags: loading_and_analysis, experimentalSets the maximum number of transitive dependencies through a rule attribute with
a
for_analysis_testing configuration transition.
Exceeding this limit will result in a rule error.Tags: loading_and_analysis--default_test_resources
a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100
Override the default resources amount for tests. The expected format is
{resource}={value}. If a single positive number is specified as {value}
it will override the default resources for all test sizes. If 4
comma-separated numbers are specified, they will override the resource
amount for respectively the small, medium, large, enormous test sizes.
Values can also be HOST_RAM/HOST_CPU, optionally followed
by [-|*]{float} (eg. memory=HOST_RAM*.1,HOST_RAM*.2,HOST_RAM*.3,HOST_RAM*.4).
The default test resources specified by this flag are overridden by explicit
resources specified in tags.May be used multiple times; values are accumulated.Specifies number of times to run each test. If any of those attempts fail for any
reason, the whole test is considered failed. Normally the value specified is
just an integer.
Example:
--runs_per_test=3 will run all tests 3 times.
Alternate syntax: regex_filter@runs_per_test. Where runs_per_test stands for
an integer value and regex_filter stands for a list of include and exclude
regular expression patterns (Also see —instrumentation_filter).
Example: --runs_per_test=//foo/.*,-//foo/bar/.*@3 runs all tests in //foo/ except
those under //foo/bar three times. This option can be passed multiple times. The most
recently passed argument that matches takes precedence. If nothing matches,
the test is only run once.May be used multiple times; values are accumulated.--test_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies additional environment variables to be injected into the test runner
environment. Variables can be either specified by
name, in which
case its value will be read from the Bazel client environment, or by the
name=value pair.
Previously set variables can be unset via =name.
This option can be used multiple times to specify several variables.
Used only by the ‘bazel test’ command.May be used multiple times; values are accumulated.Tags: test_runnerOverride the default test timeout values for test timeouts (in secs). If a single
positive integer value is specified it will override all categories. If 4
comma-separated integers are specified, they will override the timeouts for
short, moderate, long and eternal (in that order). In either form, a value of
-1 tells blaze to use its default timeouts for that category.If true, undeclared test outputs will be archived in a zip file.Tags:
test_runnerWhether to generate and analyze .d files.Tags:
loading_and_analysis, execution, changes_inputsWhether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.Tags:
loading_and_analysis, execution, changes_inputs, experimentalIf enabled, C++ .d files will be passed through in memory directly from the remote build nodes instead of being written to disk.Tags:
loading_and_analysis, execution, affects_outputs, experimentalIf enabled, the dependency (.jdeps) files generated from Java compilations will be passed through in memory directly from the remote build nodes instead of being written to disk.Tags:
loading_and_analysis, execution, affects_outputs, experimentalWhen enabled,
--trim_test_configuration will not trim the test configuration for rules
marked testonly=1. This is meant to reduce action conflict issues when non-test
rules depend on cc_test rules. No effect if --trim_test_configuration is
false.Tags: loading_and_analysis, loses_incremental_state, experimentalWhether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.Tags:
loading_and_analysis, execution, changes_inputs, experimentalIf set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.Tags:
changes_inputs, loading_and_analysisWhen building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).Tags:
executionWhen enabled, test-related options will be cleared below the top level of the build. When this flag is active, tests cannot be built as dependencies of non-test rules, but changes to test-related options will not cause non-test rules to be re-analyzed.Tags:
loading_and_analysis, loses_incremental_state--toolchain_resolution_debug
a comma-separated list of regex expressions with prefix '-' specifying excluded paths
default:"-.*"
Print debug information during toolchain resolution. The flag takes a regex, which is checked against toolchain types and specific targets to see which to debug. Multiple regexes may be separated by commas, and then each regex is checked separately. Note: The output of this flag is very complex and will likely only be useful to experts in toolchain resolution.Tags:
terminal_outputIf enabled, visibility errors include additional diagnostic information.Tags:
build_file_semantics, non_configurableSets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
{key}={value} as an argument.May be used multiple times; values are accumulated.Tags: changes_inputs, non_configurableShort form:
-tIf set to auto, Bazel reruns a test if and only if:- Bazel detects changes in the test or its dependencies,
- The test is marked as
external, - Multiple test runs were requested with
--runs_per_test, or - The test previously failed.
If set to
yes, Bazel caches all test results except for tests marked asexternal. If set tono, Bazel does not cache any test results.
If
on_failed or on_passed, then Blaze will cancel concurrently running tests on the first
successful run with that result. This is only useful in combination with
--runs_per_test_detects_flakes.Tags: affects_outputs, loading_and_analysis, experimentalIf true, then Bazel fetches the entire coverage data directory for each test during a coverage run.Tags:
affects_outputs, loading_and_analysis, experimentalIf true, coverage for clang will generate an LCOV report.Tags:
affects_outputs, loading_and_analysis, experimentalEnables reduced classpaths for Java compilations.
Whether to validate java_* sources.Tags:
affects_outputs, experimentalThe number of CPUs to reserve for Turbine.
Explicitly specify a dependency to JUnit or Hamcrest in a java_test instead of accidentally obtaining from the TestRunner’s deps. Only works for bazel right now.
The Java launcher used by tools that are executed during a build.
Additional options to pass to javac when building tools that are executed during a build.May be used multiple times; values are accumulated.
Additional options to pass to the Java VM when building tools that are executed during the build. These options will get added to the VM startup options of each java_binary target.May be used multiple times; values are accumulated.
If true, exclusive tests will run with sandboxed strategy. Add
local tag to force
an exclusive test run locallyTags: incompatible_changeIf true, Bazel uses an environment with a static value for PATH and does not
inherit
LD_LIBRARY_PATH. Use --action_env=ENV_VARIABLE if you want to
inherit specific environment variables from the client, but note that doing so
can prevent cross-user caching if a shared cache is used.Tags: loading_and_analysis, incompatible_changeAdditional options to pass to the J2ObjC tool.May be used multiple times; values are accumulated.
Causes the Java virtual machine of a java test to wait for a connection from a JDWP-compliant debugger (such as jdb) before starting the test. Implies -test_output=streamed.Expands to:
--test_arg=--wrapper_script_flag=--debug--test_output=streamed--test_strategy=exclusive--test_timeout=9999--nocache_test_results
Generate dependency information (for now, compile-time classpath) per Java target.
Compile ijars directly from source.
The Java language version
The Java launcher to use when building Java binaries. If this flag is set to the empty string, the JDK launcher is used. The “launcher” attribute overrides this flag.
The Java runtime version
Additional options to pass to javac.May be used multiple times; values are accumulated.
Additional options to pass to the Java VM. These options will get added to the VM startup options of each java_binary target.May be used multiple times; values are accumulated.
Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.
Specifies a binary to use to do dexing without sharding.
Plugins to use in the build. Currently works with java_plugin.May be used multiple times; values are accumulated.
Specifies which version of ProGuard to use for code removal when building a Java binary.
The label of the proto-compiler.Tags:
affects_outputs, loading_and_analysisWhether to pass profile_path to the proto compiler.Tags:
affects_outputs, loading_and_analysisThe profile to pass to the proto compiler as profile_path. If unset, but —proto_profile is true (the default), infers the path from —fdo_optimize.Tags:
affects_outputs, loading_and_analysisLabel of proto_lang_toolchain() which describes how to compile C++ protosTags:
affects_outputs, loading_and_analysisLabel of proto_lang_toolchain() which describes how to compile Java protosTags:
affects_outputs, loading_and_analysis--proto_toolchain_for_javalite
a build target label
default:"@bazel_tools//tools/proto:javalite_toolchain"
Label of proto_lang_toolchain() which describes how to compile JavaLite protosTags:
affects_outputs, loading_and_analysisAdditional options to pass to the protobuf compiler.May be used multiple times; values are accumulated.Tags:
affects_outputsIf true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.
Absolute path to the shell executable for Bazel to use. If this is unset, but the
BAZEL_SH environment variable is set on the first Bazel invocation (that starts
up a Bazel server), Bazel uses that. If neither is set, Bazel uses a hard-coded
default path depending on the operating system it runs on;- Windows:
c:/msys64/usr/bin/bash.exe - FreeBSD:
/usr/local/bin/bash - All others:
/bin/bash.
bash may lead
to build failures or runtime failures of the generated binaries.Tags: loading_and_analysisSpecifies additional options and arguments that should be passed to the test
executable. Can be used multiple times to specify several arguments.
If multiple tests are executed, each of them will receive identical arguments.
Used only by the
bazel test command.May be used multiple times; values are accumulated.Specifies a filter to forward to the test framework. Used to limit the tests run. Note that this does not affect which targets are built.
This option is deprecated and has no effect.Tags:
deprecatedForwards fail fast option to the test runner. The test runner should stop execution upon first failure.
--test_sharding_strategy
explicit, disabled or forced=k where k is the number of shards to enforce
default:"explicit"
Specify strategy for test sharding:
explicitto only use sharding if theshard_countBUILDattribute is present.disabledto never use test sharding.forced=kto enforcekshards for testing regardless of theshard_countBUILDattribute.
The Java language version used to execute the tools that are needed during a build
The Java runtime version used to execute tools during the build
If enabled, this option causes Java compilation to use interface jars. This will result in faster incremental compilation, but error messages can be different.
Dump Options
Options that control the output of the commandDump action cache content.Tags:
bazel_monitoringDump the memory use of the given Skyframe node.Tags:
bazel_monitoringDump package cache content.Tags:
bazel_monitoringDump rule classes.Tags:
bazel_monitoringDump rules, including counts and memory usage (if memory is tracked).Tags:
bazel_monitoring--skyframe
off, summary, count, value, deps, rdeps, function_graph, active_directories or active_directories_frontier_deps
default:"off"
Dump the Skyframe graph.Tags:
bazel_monitoring--skykey_filter
a comma-separated list of regex expressions with prefix '-' specifying excluded paths
default:".*"
Regex filter of SkyKey names to output. Only used with —skyframe=deps, rdeps, function_graph.Tags:
bazel_monitoringDumps a pprof-compatible memory profile to the specified path. To learn more please see https://github.com/google/pprof.Tags:
bazel_monitoringFetch Options
Inherits all options from test. Options that control build executionFetches all external repositories necessary for building any target or repository.
This is the default if no other flags and arguments are provided. Only works
when
--enable_bzlmod is on.Tags: changes_inputsShort form:
-kContinue as much as possible after an error. While the target that failed and those that depend on it cannot be analyzed, other prerequisites of these targets can be.Tags: eagerness_to_exit--loading_phase_threads
an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]<float>) eg. "auto", "HOST_CPUS*.5"
default:"auto"
Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword (“auto”, “HOST_CPUS”, “HOST_RAM”), optionally followed by an operation ([-|]<float>) eg. “auto”, “HOST_CPUS.5”. “auto” sets a reasonable default based on host resources. Must be at least 1.Tags:
bazel_internal_configurationIf incompatible_enforce_config_setting_visibility=false, this is a noop. Else, if this flag is false, any config_setting without an explicit visibility attribute is //visibility:public. If this flag is true, config_setting follows the same visibility logic as all other rules. See https://github.com/bazelbuild/bazel/issues/12933.Tags:
loading_and_analysis, incompatible_changeIf true, enforce config_setting visibility restrictions. If false, every config_setting is visible to every target. See https://github.com/bazelbuild/bazel/issues/12932.Tags:
loading_and_analysis, incompatible_changeOnly fetches repositories marked as
configure for system-configuration purpose. Only
works when --enable_bzlmod is on.Tags: changes_inputsIgnore existing repository if any and force fetch the repository again. Only works when
--enable_bzlmod is on.Tags: changes_inputsOnly fetches the specified repository, which can be either
@apparent_repo_name or
@@canonical_repo_name. Only works when --enable_bzlmod is on.May be used multiple times; values are accumulated.Tags: changes_inputsA comma-separated list of names of packages which the build system will consider non-existent, even if they are visible somewhere on the package path.
Use this option when deleting a subpackage ‘x/y’ of an existing package ‘x’. For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label ‘//x:y/z’ if that is still provided by another package_path entry. Specifying —deleted_packages x/y avoids this problem.May be used multiple times; values are accumulated.
Allows the command to fetch external dependencies. If set to false, the command will utilize any cached version of the dependency, and if none exists, the command will result in failure.
A colon-separated list of where to look for packages. Elements beginning with ‘%workspace%’ are relative to the enclosing workspace. If omitted or empty, the default is the output of ‘bazel info default-package-path’.
If enabled, causes Bazel to print “Loading package:” messages.
Enable persistent aar extractor by using workers.Tags:
execution, experimentalWhether to make source manifest actions remotableTags:
loading_and_analysis, execution, experimentalIf true, then Bazel will run coverage postprocessing for test in a new spawn.Tags:
execution, experimentalWhen enabled, passing multiple
--modify_execution_info flags is additive.
When disabled, only the last flag is taken into account.Tags: execution, affects_outputs, loading_and_analysis, incompatible_changeAdd or remove keys from an action’s execution info based on action mnemonic.
Applies only to actions which support execution info. Many common actions
support execution info, e.g. Genrule, CppCompile, Javac, StarlarkAction,
TestRunner. When specifying multiple values, order matters because
many regexes may apply to the same mnemonic.
Syntax:
regex=[+-]key,regex=[+-]key,....
Examples:.*=+x,.*=-y,.*=+zaddsxandzto, and removesyfrom, the execution info for all actions.Genrule=+requires-xaddsrequires-xto the execution info for all Genrule actions.(?!Genrule).*=-requires-xremovesrequires-xfrom the execution info for all non-Genrule actions.
execution, affects_outputs, loading_and_analysisEnable persistent Android dex and desugar actions by using workers.Expands to:
--internal_persistent_android_dex_desugar--strategy=Desugar=worker--strategy=DexBuilder=worker
host_machine_resource_optimizations, executionEnable persistent Android resource processor by using workers.Expands to:
--internal_persistent_busybox_tools--strategy=AaptPackage=worker--strategy=AndroidResourceParser=worker--strategy=AndroidResourceValidator=worker--strategy=AndroidResourceCompiler=worker--strategy=RClassGenerator=worker--strategy=AndroidResourceLink=worker--strategy=AndroidAapt2=worker--strategy=AndroidAssetMerger=worker--strategy=AndroidResourceMerger=worker--strategy=AndroidCompiledResourceMerger=worker--strategy=ManifestMerger=worker--strategy=AndroidManifestMerger=worker--strategy=Aapt2Optimize=worker--strategy=AARGenerator=worker--strategy=ProcessDatabinding=worker--strategy=GenerateDataBindingBaseClasses=worker
host_machine_resource_optimizations, executionEnable persistent multiplexed Android dex and desugar actions by using workers.Expands to:
--persistent_android_dex_desugar--internal_persistent_multiplex_android_dex_desugar
host_machine_resource_optimizations, executionEnable persistent multiplexed Android resource processor by using workers.Expands to:
--persistent_android_resource_processor--modify_execution_info=AaptPackage=+supports-multiplex-workers--modify_execution_info=AndroidResourceParser=+supports-multiplex-workers--modify_execution_info=AndroidResourceValidator=+supports-multiplex-workers--modify_execution_info=AndroidResourceCompiler=+supports-multiplex-workers--modify_execution_info=RClassGenerator=+supports-multiplex-workers--modify_execution_info=AndroidResourceLink=+supports-multiplex-workers--modify_execution_info=AndroidAapt2=+supports-multiplex-workers--modify_execution_info=AndroidAssetMerger=+supports-multiplex-workers--modify_execution_info=AndroidResourceMerger=+supports-multiplex-workers--modify_execution_info=AndroidCompiledResourceMerger=+supports-multiplex-workers--modify_execution_info=ManifestMerger=+supports-multiplex-workers--modify_execution_info=AndroidManifestMerger=+supports-multiplex-workers--modify_execution_info=Aapt2Optimize=+supports-multiplex-workers--modify_execution_info=AARGenerator=+supports-multiplex-workers
host_machine_resource_optimizations, executionEnable persistent and multiplexed Android tools (dexing, desugaring, resource processing).Expands to:
--internal_persistent_multiplex_busybox_tools--persistent_multiplex_android_resource_processor--persistent_multiplex_android_dex_desugar
host_machine_resource_optimizations, executionIf true, use the target platform for running tests rather than the test exec group.Tags:
executionThe Android target compiler.Tags:
affects_outputs, loading_and_analysis, loses_incremental_stateSelects the manifest merger to use for android_binary rules. Flag to help the transition to the Android manifest merger from the legacy merger.Tags:
affects_outputs, loading_and_analysis, loses_incremental_stateSets the platforms that android_binary targets use. If multiple platforms are specified, then the binary is a fat APKs, which contains native binaries for each specified target platform.Tags:
changes_inputs, loading_and_analysis, loses_incremental_stateSpecifies a suffix to be added to the configuration directory.Tags:
affects_outputsThe C++ compiler to use for compiling the target.Tags:
loading_and_analysis, executionLocation of the binary that is used to postprocess raw coverage reports. This must
be a binary target. Defaults to
@bazel_tools//tools/test:lcov_merger.Tags: changes_inputs, affects_outputs, loading_and_analysisLocation of the binary that is used to generate coverage reports. This must
be a binary target. Defaults to
@bazel_tools//tools/test:coverage_report_generator.Tags: changes_inputs, affects_outputs, loading_and_analysisLocation of support files that are required on the inputs of every test action
that collects code coverage. Defaults to
//tools/test:coverage_support.Tags: changes_inputs, affects_outputs, loading_and_analysisSpecifies a custom malloc implementation. This setting overrides malloc attributes in build rules.Tags:
changes_inputs, affects_outputsIf set, add a “requires-xcode:{version}” execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a “requires-xcode-label:{version_label}” execution requirement.Tags:
loses_incremental_state, loading_and_analysis, execution, experimentalIf true, use the most recent Xcode that is available both locally and remotely. If false, or if there are no mutual available versions, use the local Xcode version selected via xcode-select.Tags:
loses_incremental_state, experimentalThe platforms that are available as execution platforms to run actions.
Platforms can be specified by exact target, or as a target pattern.
These platforms will be considered before those declared in the
WORKSPACE file by
register_execution_platforms(). This option may only be set once; later
instances will override earlier flag settings.Tags: executionThe toolchain rules to be considered during toolchain resolution.
Toolchains can be specified by exact target, or as a target pattern.
These toolchains will be considered before those declared in the
WORKSPACE file
by register_toolchains().May be used multiple times; values are accumulated.Tags: affects_outputs, changes_inputs, loading_and_analysisA label to a checked-in libc library. The default value is selected by the crosstool toolchain, and you almost never need to override it.Tags:
action_command_lines, affects_outputsNo-op flag. Will be removed in a future release.Tags:
loading_and_analysis, executionIf specified, this setting overrides the libc top-level directory (—grte_top) for the exec configuration.Tags:
action_command_lines, affects_outputsThe label of a platform rule that describes the host system.Tags:
affects_outputs, changes_inputs, loading_and_analysisIf enabled,
bazel test --run_under=//:runner builds //:runner in the exec
configuration. If disabled, it builds //:runner in the target configuration.
Bazel executes tests on exec machines, so the former is more correct. This
doesn’t affect bazel run, which always builds --run_under=//foo in the
target configuration.Tags: affects_outputs, incompatible_changeWhether to emit a strip action as part of objc linking.Tags:
action_command_lines, incompatible_changeIf true, Bazel will not enable ‘host’ and ‘nonhost’ features in the c++ toolchain (see https://github.com/bazelbuild/bazel/issues/7407 for more information).Tags:
loading_and_analysis, incompatible_changeIf true, Bazel will not link library dependencies as whole archive by default (see https://github.com/bazelbuild/bazel/issues/7362 for migration instructions).Tags:
loading_and_analysis, incompatible_changeIf true, strip action for executables will use flag -x, which does not break dynamic symbol resolution.Tags:
action_command_lines, incompatible_changeUse interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.Tags:
loading_and_analysis, affects_outputs, affects_outputsSpecifies the version of the iOS SDK to use to build iOS applications. If unspecified, uses the default iOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateSpecifies the version of the macOS SDK to use to build macOS applications. If unspecified, uses the default macOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateThe minimum OS version which your compilation targets.Tags:
loading_and_analysis, affects_outputsThe location of a mapping file that describes which platform to use if none is set or
which flags to set when a platform already exists. Must be relative to the main
workspace root. Defaults to
platform_mappings (a file directly under the
workspace root).Tags: affects_outputs, changes_inputs, loading_and_analysis, non_configurableThe labels of the platform rules describing the target platforms for the current command.Tags:
affects_outputs, changes_inputs, loading_and_analysisSpecifies the version of the tvOS SDK to use to build tvOS applications. If unspecified, uses the default tvOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateMakes apple_crosstool_transition fall back to using the value of
--platforms flag instead of legacy --cpu when needed.Tags: loading_and_analysis--watchos_sdk_version
a dotted version (for example '2.3' or '3.3alpha2.4')
default:"see description"
Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses the default watchOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateIf specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.Tags:
loses_incremental_stateThe label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.Tags:
loses_incremental_state, loading_and_analysisWhether to generate debug symbol(.dSYM) file(s).Tags:
affects_outputs, action_command_linesIf true, build runfiles symlink forests for all targets. If false, write them only when required by a local action, test or run command.Tags:
affects_outputsIf true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.Tags:
affects_outputsIf enabled, when building C++ tests statically and with fission the .dwp file for the test binary will be automatically built as well.Tags:
loading_and_analysis, affects_outputsSets the suffixes of header files that a cc_proto_library creates.Tags:
affects_outputs, loading_and_analysisSets the suffixes of source files that a cc_proto_library creates.Tags:
affects_outputs, loading_and_analysisRun extra actions for alternative Java api versions in a proto_library.Tags:
affects_outputs, loading_and_analysis, experimentalSave the state of enabled and requested feautres as an output of compilation.Tags:
affects_outputs, experimentalSpecifies which compilation modes use fission for C++ compilations and links. May be any combination of {‘fastbuild’, ‘dbg’, ‘opt’} or the special values ‘yes’ to enable all modes and ‘no’ to disable all modes.Tags:
loading_and_analysis, action_command_lines, affects_outputsIf true, native rules add
DefaultInfo.files of data dependencies to their runfiles,
which matches the recommended behavior for Starlark rules (runfiles features to avoid).Tags: affects_outputs, incompatible_changeIf enabled, the
{binary}.repo_mapping file emits a module extension’s repo mapping
only once instead of once for each repo generated by the extension that
contributes runfiles.Tags: affects_outputs, incompatible_changeList of flags for which the use in
select() is disabled.Tags: loading_and_analysis, incompatible_change, non_configurableIf true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.Tags:
incompatible_changeSpecifies whether to generate a linkmap file.Tags:
affects_outputsIf set, temporary outputs from gcc will be saved. These include .s files (assembler code), .i files (preprocessed C) and .ii files (preprocessed C++).Tags:
affects_outputs--action_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies the set of environment variables available to actions with target
configuration. Variables can be either specified by
name, in which case
the value will be taken from the invocation environment, by the name=value
pair which sets the value independent of the invocation environment, or by
=name, which unsets the variable of that name. This option can be used
multiple times; for options given for the same variable, the latest wins,
options for different variables accumulate.
Note that unless --incompatible_repo_env_ignores_action_env is true, all name=value
pairs will be available to repository rules.May be used multiple times; values are accumulated.Tags: action_command_linesAllowed values for the
--cpu flag.Tags: changes_inputs, affects_outputsDetermines whether C++ deps of Android rules will be linked dynamically when a cc_binary does not explicitly create a shared library. ‘default’ means bazel will choose whether to link dynamically. ‘fully’ means all libraries will be linked dynamically. ‘off’ means that all libraries will be linked in mostly static mode.Tags:
affects_outputs, loading_and_analysis--android_manifest_merger_order
alphabetical, alphabetical_by_configuration or dependency
default:"alphabetical"
Sets the order of manifests passed to the manifest merger for Android binaries. ALPHABETICAL means manifests are sorted by path relative to the execroot. ALPHABETICAL_BY_CONFIGURATION means manifests are sorted by paths relative to the configuration directory within the output directory. DEPENDENCY means manifests are ordered with each library’s manifest coming before the manifests of its dependencies.Tags:
action_command_lines, executionEnables resource shrinking for android_binary APKs that use ProGuard.Tags:
affects_outputs, loading_and_analysisIf specified, Bazel will instrument code (using offline instrumentation where
possible) and will collect coverage information during tests. Only targets that
match
--instrumentation_filter will be affected. Usually this option should
not be specified directly - bazel coverage command should be used instead.Tags: affects_outputsShort form:
-cSpecify the mode the binary will be built in. Values: fastbuild, dbg, opt.Tags: affects_outputs, action_command_linesAdditional option to pass to gcc when compiling C source files.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional options to pass to gcc.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsDeprecated: this flag is not used internally by Blaze although there are legacy platform
mappings to allow for backwards compatibility. Do not use this flag, instead use
--platforms with an appropriate platform definition.Tags: changes_inputs, affects_outputsUse CSFDO profile information to optimize compilation. Specify the absolute path name of the zip file containing the profile file, a raw or an indexed LLVM profile file.Tags:
affects_outputsGenerate binaries with context sensitive FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.Tags:
affects_outputsThe cs_fdo_profile representing the context sensitive profile to be used for optimization.Tags:
affects_outputsAdditional option to pass to gcc when compiling C++ source files.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsEach
--define option specifies an assignment for a build variable.
In case of multiple values for a variable, the last one wins.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsDetermines whether C++ binaries will be linked dynamically. ‘default’ means Bazel will choose whether to link dynamically. ‘fully’ means all libraries will be linked dynamically. ‘off’ means that all libraries will be linked in mostly static mode.Tags:
loading_and_analysis, affects_outputsIf set, any use of absolute paths for propeller optimize will raise an error.Tags:
affects_outputsIf set, any use of absolute paths for FDO will raise an error.Tags:
affects_outputsEnable runfiles symlink tree; By default, it’s off on Windows, on on other platforms.Tags:
affects_outputsComma-separated list of aspects to be applied to exec-configured targets, regardless of whether or not they are top-level targets. This is an experimental feature and is subject to change.May be used multiple times; values are accumulated.Tags:
loading_and_analysisDeprecated in favor of aspects. Use
action_listener to attach an extra_action to
existing build actions.May be used multiple times; values are accumulated.Tags: execution, experimentalCompress Java resources in APKsTags:
affects_outputs, loading_and_analysis, experimentalEnables resource shrinking for android_binary APKs that use ProGuard.Tags:
affects_outputs, loading_and_analysis, experimentalIf specified, Bazel will also generate collect coverage information for generated files.Tags:
affects_outputs, experimentalIf true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.Tags:
action_command_lines, affects_outputs, experimentalWhich model to use for where in the output tree rules write their outputs, particularly
for multi-platform / multi-configuration builds. This is highly experimental. See
GH-6526 for details. Starlark actions can opt into path mapping by adding the key
supports-path-mapping to the execution_requirements dict.Tags: loses_incremental_state, bazel_internal_configuration, affects_outputs, executionEach entry should be of the form
label=value where label refers to a platform and values
is the desired shortname to override the platform’s CPU name in $(TARGET_CPU)
make variable and output path. Only used when
--experimental_platform_in_output_dir, --incompatible_target_cpu_from_platform or
--incompatible_bep_cpu_from_platform is true. Has highest naming priority.May be used multiple times; values are accumulated.Tags: affects_outputs, experimentalIf true, a shortname for the target platform is used in the output directory name
instead of the CPU. The exact scheme is experimental and subject to change:
- First, in the rare case the
--platformsoption does not have exactly one value, a hash of the platforms option is used. - Next, if any shortname for the current platform was registered by
--experimental_override_name_platform_in_output_dir, then that shortname is used. - Then, if
--experimental_use_platforms_in_output_dir_legacy_heuristicis set, use a shortname based off the current platform Label. - Finally, a hash of the platform option is used as a last resort.
affects_outputs, experimentalIf specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.Tags:
changes_inputs, affects_outputs, loading_and_analysis, experimentalPlease only use this flag as part of a suggested migration or testing strategy. Note
that the heuristic has known deficiencies and it is suggested to migrate to
relying on just
--experimental_override_name_platform_in_output_dir.Tags: affects_outputs, experimentalGenerate binaries with FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.Tags:
affects_outputsUse FDO profile information to optimize compilation. Specify the name of a zip file containing a .gcda file tree, an afdo file containing an auto profile, or an LLVM profile file. This flag also accepts files specified as labels (e.g.
//foo/bar:file.afdo - you may need to add an exports_files directive to the corresponding package) and labels pointing to fdo_profile targets. This flag will be superseded by the fdo_profile rule.Tags: affects_outputsUse cache prefetch hints.Tags:
affects_outputsThe fdo_profile representing the profile to be used for optimization.Tags:
affects_outputsThe given features will be enabled or disabled by default for targets built in the target configuration.
Specifying
-{feature} will disable the feature. Negative features always override positive ones.
See also --host_features.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsIf enabled, all C++ compilations produce position-independent code (“-fPIC”), links prefer PIC pre-built libraries over non-PIC libraries, and links produce position-independent executables (“-pie”).Tags:
loading_and_analysis, affects_outputs--host_action_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies the set of environment variables available to actions with execution
configurations. Variables can be either specified by
name, in which case the
value will be taken from the invocation environment, by the name=value pair
which sets the value independent of the invocation environment, or by
=name, which unsets the variable of that name. This option can
be used multiple times; for options given for the same variable, the latest
wins, options for different variables accumulate.May be used multiple times; values are accumulated.Tags: action_command_linesSpecify the mode the tools used during the build will be built in. Values:
fastbuild, dbg, opt.Tags: affects_outputs, action_command_linesAdditional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional options to pass to the C compiler for tools built in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsThe host CPU.Tags:
changes_inputs, affects_outputsAdditional options to pass to C++ compiler for tools built in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsThe given features will be enabled or disabled by default for targets built in the exec configuration.
Specifying
-{feature} will disable the feature. Negative features always override positive ones.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsAdditional option to pass to linker when linking tools in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputs--host_macos_minimum_os
a dotted version (for example '2.3' or '3.3alpha2.4')
default:"see description"
Minimum compatible macOS version for host targets. If unspecified, uses ‘macos_sdk_version’.Tags:
loses_incremental_state--host_per_file_copt
a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options
Additional options to selectively pass to the C/C++ compiler when compiling certain files in the exec configurations. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,…,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see —instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: —host_per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsWhen enabled, an exec groups is automatically created for each toolchain used by a rule.
For this to work rule needs to specify
toolchain parameter on its actions. For
more information, see GH-17134.Tags: affects_outputs, incompatible_changeIf true, the genfiles directory is folded into the bin directory.Tags:
affects_outputs, incompatible_changeIf specified, the value of the cpu constraint (
@platforms//cpu:cpu) of
the target platform is used to set the $(TARGET_CPU) make variable.Tags: loading_and_analysis, incompatible_changeWhen coverage is enabled, specifies whether to consider instrumenting test rules.
When set, test rules included by
--instrumentation_filter are instrumented.
Otherwise, test rules are always excluded from coverage instrumentation.Tags: affects_outputs--instrumentation_filter
a comma-separated list of regex expressions with prefix '-' specifying excluded paths
default:"-/javatests[/:],-/test/java[/:]"
When coverage is enabled, only rules with names included by the
specified regex-based filter will be instrumented. Rules prefixed
with ’-’ are excluded instead. Note that only non-test rules are
instrumented unless
--instrument_test_targets is enabled.Tags: affects_outputsMinimum compatible iOS version for target simulators and devices. If unspecified, uses ‘ios_sdk_version’.Tags:
loses_incremental_stateComma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisAdditional option to pass to gcc when linking.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional option to pass to the LTO backend step (under —features=thin_lto).May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional option to pass to the LTO indexing step (under —features=thin_lto).May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsComma-separated list of architectures for which to build Apple macOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisMinimum compatible macOS version for targets. If unspecified, uses ‘macos_sdk_version’.Tags:
loses_incremental_stateUse memprof profile.Tags:
affects_outputsWhether to perform symbol and dead-code strippings on linked binaries. Binary strippings will be performed if both this flag and —compilation_mode=opt are specified.Tags:
action_command_linesAdditional options to pass to gcc when compiling Objective-C/C++ source files.May be used multiple times; values are accumulated.Tags:
action_command_lines--per_file_copt
a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options
Additional options to selectively pass to gcc when compiling certain files. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,…,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see —instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: —per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputs--per_file_ltobackendopt
a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options
Additional options to selectively pass to LTO backend (under —features=thin_lto) when compiling certain backend objects. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,…,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns. option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: —per_file_ltobackendopt=//foo/.*.o,-//foo/bar.o@-O0 adds the -O0 command line option to the LTO backend command line of all o files in //foo/ except bar.o.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsSpecifies a suffix to be added to the configuration directory.Tags:
loses_incremental_state, affects_outputs, loading_and_analysisUse Propeller profile information to optimize the build target.A propeller profile must consist of at least one of two files, a cc profile and a ld profile. This flag accepts a build label which must refer to the propeller profile input files. For example, the BUILD file that defines the label, in a/b/BUILD:propeller_optimize( name = “propeller_profile”, cc_profile = “propeller_cc_profile.txt”, ld_profile = “propeller_ld_profile.txt”,)An exports_files directive may have to be added to the corresponding package to make these files visible to Bazel. The option must be used as: —propeller_optimize=//a/b:propeller_profileTags:
action_command_lines, affects_outputsAbsolute path name of cc_profile file for Propeller Optimized builds.Tags:
affects_outputsAbsolute path name of ld_profile file for Propeller Optimized builds.Tags:
affects_outputsPrefix to insert before the executables for the
test and run commands.
If the value is foo -bar, and the execution command line is test_binary -baz,
then the final command line is foo -bar test_binary -baz.
This can also be a label to an executable target. Some examples are:valgrindstracestrace -cvalgrind --quiet --num-callers=20//package:target//package:target --options
action_command_linesIf true, native libraries that contain identical functionality will be shared among different targetsTags:
loading_and_analysis, affects_outputsStamp binaries with the date, username, hostname, workspace information, etc.Tags:
affects_outputsSpecifies whether to strip binaries and shared libraries (using “-Wl,—strip-debug”). The default value of ‘sometimes’ means strip iff —compilation_mode=fastbuild.Tags:
affects_outputsAdditional options to pass to strip when generating a ‘<name>.stripped’ binary.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsComma-separated list of architectures for which to build Apple tvOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisMinimum compatible tvOS version for target simulators and devices. If unspecified, uses ‘tvos_sdk_version’.Tags:
loses_incremental_stateComma-separated list of architectures for which to build Apple visionOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisComma-separated list of architectures for which to build Apple watchOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisMinimum compatible watchOS version for target simulators and devices. If unspecified, uses ‘watchos_sdk_version’.Tags:
loses_incremental_stateUse XbinaryFDO profile information to optimize compilation. Specify the name of default cross binary profile. When the option is used together with —fdo_instrument/—fdo_optimize/—fdo_profile, those options will always prevail as if xbinary_fdo is never specified.Tags:
affects_outputsIf disabled, visibility errors in target dependencies are demoted to warnings.Tags:
build_file_semantics, non_configurableWhether to desugar Java 8 bytecode before dexing.Tags:
affects_outputs, loading_and_analysis, loses_incremental_stateWhether to include supported Java 8 libraries in apps for legacy devices.Tags:
affects_outputs, loading_and_analysis, loses_incremental_state, experimentalChecks the environments each target is compatible with and reports errors if any target has dependencies that don’t support the same environmentsTags:
build_file_semanticsIf true, enable package()s to set the transitive_visibility attribute to restrict which packages may depend on them.Tags:
build_file_semantics, experimentalWhen enabled, enforce that a java_binary rule can’t contain more than one version of the same class file on the classpath. This enforcement can break the build, or can just result in warnings.Tags:
loading_and_analysisIf true, checks that a Java target explicitly declares all directly used targets as dependencies.Tags:
build_file_semantics, eagerness_to_exitIf enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.Tags:
build_file_semantics, incompatible_changeNo-op. Kept here for backwards compatibility.Tags:
eagerness_to_exit, incompatible_change, deprecatedWhen enabled, and with experimental_one_version_enforcement set to a non-NONE value, enforce one version on java_test targets. This flag can be disabled to improve incremental test performance at the expense of missing potential one version violations.Tags:
loading_and_analysisUnless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.Tags:
build_file_semantics, eagerness_to_exit, incompatible_changeUnless OFF, checks that a proto_library target explicitly declares all targets used in ‘import public’ as exported.Tags:
build_file_semantics, eagerness_to_exit, incompatible_changeIf true, headers found through system include paths (-isystem) are also required to be declared.Tags:
loading_and_analysis, eagerness_to_exitDeclares this build’s target environment. Must be a label reference to an
environment rule. If specified, all top-level targets must be compatible with this
environment.
See also --platforms.May be used multiple times; values are accumulated.Tags: changes_inputsImplementation to use to sign APKsTags:
action_command_lines, affects_outputs, loading_and_analysisIf set, and compilation mode is not ‘opt’, objc apps will include debug entitlements when signing.Tags:
changes_inputsIf true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library and objc_import.Tags:
build_file_semantics, incompatible_changeIf true, make the default value true for alwayslink attributes in objc_library and objc_import.Tags:
build_file_semantics, incompatible_changeIf true, an analysis failure of a rule target results in the target’s propagation
of an instance of
AnalysisFailureInfo containing the error description, instead
of resulting in a build failure.Tags: loading_and_analysis, experimentalSets the maximum number of transitive dependencies through a rule attribute with
a
for_analysis_testing configuration transition.
Exceeding this limit will result in a rule error.Tags: loading_and_analysis--default_test_resources
a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100
Override the default resources amount for tests. The expected format is
{resource}={value}. If a single positive number is specified as {value}
it will override the default resources for all test sizes. If 4
comma-separated numbers are specified, they will override the resource
amount for respectively the small, medium, large, enormous test sizes.
Values can also be HOST_RAM/HOST_CPU, optionally followed
by [-|*]{float} (eg. memory=HOST_RAM*.1,HOST_RAM*.2,HOST_RAM*.3,HOST_RAM*.4).
The default test resources specified by this flag are overridden by explicit
resources specified in tags.May be used multiple times; values are accumulated.Specifies number of times to run each test. If any of those attempts fail for any
reason, the whole test is considered failed. Normally the value specified is
just an integer.
Example:
--runs_per_test=3 will run all tests 3 times.
Alternate syntax: regex_filter@runs_per_test. Where runs_per_test stands for
an integer value and regex_filter stands for a list of include and exclude
regular expression patterns (Also see —instrumentation_filter).
Example: --runs_per_test=//foo/.*,-//foo/bar/.*@3 runs all tests in //foo/ except
those under //foo/bar three times. This option can be passed multiple times. The most
recently passed argument that matches takes precedence. If nothing matches,
the test is only run once.May be used multiple times; values are accumulated.--test_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies additional environment variables to be injected into the test runner
environment. Variables can be either specified by
name, in which
case its value will be read from the Bazel client environment, or by the
name=value pair.
Previously set variables can be unset via =name.
This option can be used multiple times to specify several variables.
Used only by the ‘bazel test’ command.May be used multiple times; values are accumulated.Tags: test_runnerOverride the default test timeout values for test timeouts (in secs). If a single
positive integer value is specified it will override all categories. If 4
comma-separated integers are specified, they will override the timeouts for
short, moderate, long and eternal (in that order). In either form, a value of
-1 tells blaze to use its default timeouts for that category.If true, undeclared test outputs will be archived in a zip file.Tags:
test_runnerWhether to generate and analyze .d files.Tags:
loading_and_analysis, execution, changes_inputsWhether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.Tags:
loading_and_analysis, execution, changes_inputs, experimentalIf enabled, C++ .d files will be passed through in memory directly from the remote build nodes instead of being written to disk.Tags:
loading_and_analysis, execution, affects_outputs, experimentalIf enabled, the dependency (.jdeps) files generated from Java compilations will be passed through in memory directly from the remote build nodes instead of being written to disk.Tags:
loading_and_analysis, execution, affects_outputs, experimentalWhen enabled,
--trim_test_configuration will not trim the test configuration for rules
marked testonly=1. This is meant to reduce action conflict issues when non-test
rules depend on cc_test rules. No effect if --trim_test_configuration is
false.Tags: loading_and_analysis, loses_incremental_state, experimentalWhether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.Tags:
loading_and_analysis, execution, changes_inputs, experimentalIf set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.Tags:
changes_inputs, loading_and_analysisWhen building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).Tags:
executionWhen enabled, test-related options will be cleared below the top level of the build. When this flag is active, tests cannot be built as dependencies of non-test rules, but changes to test-related options will not cause non-test rules to be re-analyzed.Tags:
loading_and_analysis, loses_incremental_state--toolchain_resolution_debug
a comma-separated list of regex expressions with prefix '-' specifying excluded paths
default:"-.*"
Print debug information during toolchain resolution. The flag takes a regex, which is checked against toolchain types and specific targets to see which to debug. Multiple regexes may be separated by commas, and then each regex is checked separately. Note: The output of this flag is very complex and will likely only be useful to experts in toolchain resolution.Tags:
terminal_outputIf enabled, visibility errors include additional diagnostic information.Tags:
build_file_semantics, non_configurableSets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
{key}={value} as an argument.May be used multiple times; values are accumulated.Tags: changes_inputs, non_configurableShort form:
-tIf set to auto, Bazel reruns a test if and only if:- Bazel detects changes in the test or its dependencies,
- The test is marked as
external, - Multiple test runs were requested with
--runs_per_test, or - The test previously failed.
If set to
yes, Bazel caches all test results except for tests marked asexternal. If set tono, Bazel does not cache any test results.
If
on_failed or on_passed, then Blaze will cancel concurrently running tests on the first
successful run with that result. This is only useful in combination with
--runs_per_test_detects_flakes.Tags: affects_outputs, loading_and_analysis, experimentalIf true, then Bazel fetches the entire coverage data directory for each test during a coverage run.Tags:
affects_outputs, loading_and_analysis, experimentalIf true, coverage for clang will generate an LCOV report.Tags:
affects_outputs, loading_and_analysis, experimentalEnables reduced classpaths for Java compilations.
Whether to validate java_* sources.Tags:
affects_outputs, experimentalThe number of CPUs to reserve for Turbine.
Explicitly specify a dependency to JUnit or Hamcrest in a java_test instead of accidentally obtaining from the TestRunner’s deps. Only works for bazel right now.
The Java launcher used by tools that are executed during a build.
Additional options to pass to javac when building tools that are executed during a build.May be used multiple times; values are accumulated.
Additional options to pass to the Java VM when building tools that are executed during the build. These options will get added to the VM startup options of each java_binary target.May be used multiple times; values are accumulated.
If true, exclusive tests will run with sandboxed strategy. Add
local tag to force
an exclusive test run locallyTags: incompatible_changeIf true, Bazel uses an environment with a static value for PATH and does not
inherit
LD_LIBRARY_PATH. Use --action_env=ENV_VARIABLE if you want to
inherit specific environment variables from the client, but note that doing so
can prevent cross-user caching if a shared cache is used.Tags: loading_and_analysis, incompatible_changeAdditional options to pass to the J2ObjC tool.May be used multiple times; values are accumulated.
Causes the Java virtual machine of a java test to wait for a connection from a JDWP-compliant debugger (such as jdb) before starting the test. Implies -test_output=streamed.Expands to:
--test_arg=--wrapper_script_flag=--debug--test_output=streamed--test_strategy=exclusive--test_timeout=9999--nocache_test_results
Generate dependency information (for now, compile-time classpath) per Java target.
Compile ijars directly from source.
The Java language version
The Java launcher to use when building Java binaries. If this flag is set to the empty string, the JDK launcher is used. The “launcher” attribute overrides this flag.
The Java runtime version
Additional options to pass to javac.May be used multiple times; values are accumulated.
Additional options to pass to the Java VM. These options will get added to the VM startup options of each java_binary target.May be used multiple times; values are accumulated.
Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.
Specifies a binary to use to do dexing without sharding.
Plugins to use in the build. Currently works with java_plugin.May be used multiple times; values are accumulated.
Specifies which version of ProGuard to use for code removal when building a Java binary.
The label of the proto-compiler.Tags:
affects_outputs, loading_and_analysisWhether to pass profile_path to the proto compiler.Tags:
affects_outputs, loading_and_analysisThe profile to pass to the proto compiler as profile_path. If unset, but —proto_profile is true (the default), infers the path from —fdo_optimize.Tags:
affects_outputs, loading_and_analysisLabel of proto_lang_toolchain() which describes how to compile C++ protosTags:
affects_outputs, loading_and_analysisLabel of proto_lang_toolchain() which describes how to compile Java protosTags:
affects_outputs, loading_and_analysis--proto_toolchain_for_javalite
a build target label
default:"@bazel_tools//tools/proto:javalite_toolchain"
Label of proto_lang_toolchain() which describes how to compile JavaLite protosTags:
affects_outputs, loading_and_analysisAdditional options to pass to the protobuf compiler.May be used multiple times; values are accumulated.Tags:
affects_outputsIf true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.
Absolute path to the shell executable for Bazel to use. If this is unset, but the
BAZEL_SH environment variable is set on the first Bazel invocation (that starts
up a Bazel server), Bazel uses that. If neither is set, Bazel uses a hard-coded
default path depending on the operating system it runs on;- Windows:
c:/msys64/usr/bin/bash.exe - FreeBSD:
/usr/local/bin/bash - All others:
/bin/bash.
bash may lead
to build failures or runtime failures of the generated binaries.Tags: loading_and_analysisSpecifies additional options and arguments that should be passed to the test
executable. Can be used multiple times to specify several arguments.
If multiple tests are executed, each of them will receive identical arguments.
Used only by the
bazel test command.May be used multiple times; values are accumulated.Specifies a filter to forward to the test framework. Used to limit the tests run. Note that this does not affect which targets are built.
This option is deprecated and has no effect.Tags:
deprecatedForwards fail fast option to the test runner. The test runner should stop execution upon first failure.
--test_sharding_strategy
explicit, disabled or forced=k where k is the number of shards to enforce
default:"explicit"
Specify strategy for test sharding:
explicitto only use sharding if theshard_countBUILDattribute is present.disabledto never use test sharding.forced=kto enforcekshards for testing regardless of theshard_countBUILDattribute.
The Java language version used to execute the tools that are needed during a build
The Java runtime version used to execute tools during the build
If enabled, this option causes Java compilation to use interface jars. This will result in faster incremental compilation, but error messages can be different.
Help Options
Options that affect the verbosity, format or location of loggingSelect the verbosity of the help command.Tags:
terminal_outputShort form:
-lShow full description of each option, instead of just its name.Expands to:--help_verbosity=long
terminal_outputShow only the names of the options, not their types or meanings.Expands to:
--help_verbosity=short
terminal_outputInfo Options
Inherits all options from build. Options that let the user configure the intended output, affecting its value, as opposed to its existenceIf stdout, results are directly printed to the console. If response_proto, the info command results are packed in response extensions.Tags:
affects_outputs, terminal_outputInclude the “Make” environment in the output.Tags:
affects_outputs, terminal_outputLicense Options
Mobile-install Options
Inherits all options from build. Options that control build executionDeprecated no-effect flag. Only skylark mode is still supported.Tags:
loading_and_analysis, execution, incompatible_change, deprecatedadb binary to use for the ‘mobile-install’ command. If unspecified, the one in the Android SDK specified by the —android_sdk_channel command line option (or the default SDK if —android_sdk_channel is not specified) is used.Tags:
changes_inputsWhether to do an incremental install. If true, try to avoid unnecessary additional work by reading the state of the device the code is to be installed on and using that information to avoid unnecessary work. If false (the default), always do a full install.Tags:
loading_and_analysisWhether to use split apks to install and update the application on the device. Works only with devices with Marshmallow or laterTags:
loading_and_analysis, affects_outputsExtra arguments to pass to adb. Usually used to designate a device to install to.May be used multiple times; values are accumulated.Tags:
action_command_linesThe adb device serial number. If not specified, the first device will be used.Tags:
action_command_linesHow the app should be started after installing it. Set to WARM to preserve and restore application state on incremental installs.Tags:
executionThe verbosity for incremental install. Set to 1 for debug logging.Tags:
bazel_monitoringMod Options
Options that control build executionWhether to make source manifest actions remotableTags:
loading_and_analysis, execution, experimentalWhen enabled, passing multiple
--modify_execution_info flags is additive.
When disabled, only the last flag is taken into account.Tags: execution, affects_outputs, loading_and_analysis, incompatible_change--loading_phase_threads
an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]<float>) eg. "auto", "HOST_CPUS*.5"
default:"auto"
Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword (“auto”, “HOST_CPUS”, “HOST_RAM”), optionally followed by an operation ([-|]<float>) eg. “auto”, “HOST_CPUS.5”. “auto” sets a reasonable default based on host resources. Must be at least 1.Tags:
bazel_internal_configurationAdd or remove keys from an action’s execution info based on action mnemonic.
Applies only to actions which support execution info. Many common actions
support execution info, e.g. Genrule, CppCompile, Javac, StarlarkAction,
TestRunner. When specifying multiple values, order matters because
many regexes may apply to the same mnemonic.
Syntax:
regex=[+-]key,regex=[+-]key,....
Examples:.*=+x,.*=-y,.*=+zaddsxandzto, and removesyfrom, the execution info for all actions.Genrule=+requires-xaddsrequires-xto the execution info for all Genrule actions.(?!Genrule).*=-requires-xremovesrequires-xfrom the execution info for all non-Genrule actions.
execution, affects_outputs, loading_and_analysisIf true, use the target platform for running tests rather than the test exec group.Tags:
executionIf enabled,
bazel test --run_under=//:runner builds //:runner in the exec
configuration. If disabled, it builds //:runner in the target configuration.
Bazel executes tests on exec machines, so the former is more correct. This
doesn’t affect bazel run, which always builds --run_under=//foo in the
target configuration.Tags: affects_outputs, incompatible_changeIf true, build runfiles symlink forests for all targets. If false, write them only when required by a local action, test or run command.Tags:
affects_outputsIf true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.Tags:
affects_outputsIf true, native rules add
DefaultInfo.files of data dependencies to their runfiles,
which matches the recommended behavior for Starlark rules (runfiles features to avoid).Tags: affects_outputs, incompatible_changeIf enabled, the
{binary}.repo_mapping file emits a module extension’s repo mapping
only once instead of once for each repo generated by the extension that
contributes runfiles.Tags: affects_outputs, incompatible_changeList of flags for which the use in
select() is disabled.Tags: loading_and_analysis, incompatible_change, non_configurableIf true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.Tags:
incompatible_change--action_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies the set of environment variables available to actions with target
configuration. Variables can be either specified by
name, in which case
the value will be taken from the invocation environment, by the name=value
pair which sets the value independent of the invocation environment, or by
=name, which unsets the variable of that name. This option can be used
multiple times; for options given for the same variable, the latest wins,
options for different variables accumulate.
Note that unless --incompatible_repo_env_ignores_action_env is true, all name=value
pairs will be available to repository rules.May be used multiple times; values are accumulated.Tags: action_command_linesAllowed values for the
--cpu flag.Tags: changes_inputs, affects_outputsIf specified, Bazel will instrument code (using offline instrumentation where
possible) and will collect coverage information during tests. Only targets that
match
--instrumentation_filter will be affected. Usually this option should
not be specified directly - bazel coverage command should be used instead.Tags: affects_outputsShort form:
-cSpecify the mode the binary will be built in. Values: fastbuild, dbg, opt.Tags: affects_outputs, action_command_linesDeprecated: this flag is not used internally by Blaze although there are legacy platform
mappings to allow for backwards compatibility. Do not use this flag, instead use
--platforms with an appropriate platform definition.Tags: changes_inputs, affects_outputsEach
--define option specifies an assignment for a build variable.
In case of multiple values for a variable, the last one wins.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsEnable runfiles symlink tree; By default, it’s off on Windows, on on other platforms.Tags:
affects_outputsComma-separated list of aspects to be applied to exec-configured targets, regardless of whether or not they are top-level targets. This is an experimental feature and is subject to change.May be used multiple times; values are accumulated.Tags:
loading_and_analysisDeprecated in favor of aspects. Use
action_listener to attach an extra_action to
existing build actions.May be used multiple times; values are accumulated.Tags: execution, experimentalIf specified, Bazel will also generate collect coverage information for generated files.Tags:
affects_outputs, experimentalWhich model to use for where in the output tree rules write their outputs, particularly
for multi-platform / multi-configuration builds. This is highly experimental. See
GH-6526 for details. Starlark actions can opt into path mapping by adding the key
supports-path-mapping to the execution_requirements dict.Tags: loses_incremental_state, bazel_internal_configuration, affects_outputs, executionEach entry should be of the form
label=value where label refers to a platform and values
is the desired shortname to override the platform’s CPU name in $(TARGET_CPU)
make variable and output path. Only used when
--experimental_platform_in_output_dir, --incompatible_target_cpu_from_platform or
--incompatible_bep_cpu_from_platform is true. Has highest naming priority.May be used multiple times; values are accumulated.Tags: affects_outputs, experimentalIf true, a shortname for the target platform is used in the output directory name
instead of the CPU. The exact scheme is experimental and subject to change:
- First, in the rare case the
--platformsoption does not have exactly one value, a hash of the platforms option is used. - Next, if any shortname for the current platform was registered by
--experimental_override_name_platform_in_output_dir, then that shortname is used. - Then, if
--experimental_use_platforms_in_output_dir_legacy_heuristicis set, use a shortname based off the current platform Label. - Finally, a hash of the platform option is used as a last resort.
affects_outputs, experimentalPlease only use this flag as part of a suggested migration or testing strategy. Note
that the heuristic has known deficiencies and it is suggested to migrate to
relying on just
--experimental_override_name_platform_in_output_dir.Tags: affects_outputs, experimentalThe given features will be enabled or disabled by default for targets built in the target configuration.
Specifying
-{feature} will disable the feature. Negative features always override positive ones.
See also --host_features.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputs--host_action_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies the set of environment variables available to actions with execution
configurations. Variables can be either specified by
name, in which case the
value will be taken from the invocation environment, by the name=value pair
which sets the value independent of the invocation environment, or by
=name, which unsets the variable of that name. This option can
be used multiple times; for options given for the same variable, the latest
wins, options for different variables accumulate.May be used multiple times; values are accumulated.Tags: action_command_linesSpecify the mode the tools used during the build will be built in. Values:
fastbuild, dbg, opt.Tags: affects_outputs, action_command_linesThe host CPU.Tags:
changes_inputs, affects_outputsThe given features will be enabled or disabled by default for targets built in the exec configuration.
Specifying
-{feature} will disable the feature. Negative features always override positive ones.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsWhen enabled, an exec groups is automatically created for each toolchain used by a rule.
For this to work rule needs to specify
toolchain parameter on its actions. For
more information, see GH-17134.Tags: affects_outputs, incompatible_changeIf true, the genfiles directory is folded into the bin directory.Tags:
affects_outputs, incompatible_changeIf specified, the value of the cpu constraint (
@platforms//cpu:cpu) of
the target platform is used to set the $(TARGET_CPU) make variable.Tags: loading_and_analysis, incompatible_changeWhen coverage is enabled, specifies whether to consider instrumenting test rules.
When set, test rules included by
--instrumentation_filter are instrumented.
Otherwise, test rules are always excluded from coverage instrumentation.Tags: affects_outputs--instrumentation_filter
a comma-separated list of regex expressions with prefix '-' specifying excluded paths
default:"-/javatests[/:],-/test/java[/:]"
When coverage is enabled, only rules with names included by the
specified regex-based filter will be instrumented. Rules prefixed
with ’-’ are excluded instead. Note that only non-test rules are
instrumented unless
--instrument_test_targets is enabled.Tags: affects_outputsSpecifies a suffix to be added to the configuration directory.Tags:
loses_incremental_state, affects_outputs, loading_and_analysisPrefix to insert before the executables for the
test and run commands.
If the value is foo -bar, and the execution command line is test_binary -baz,
then the final command line is foo -bar test_binary -baz.
This can also be a label to an executable target. Some examples are:valgrindstracestrace -cvalgrind --quiet --num-callers=20//package:target//package:target --options
action_command_linesStamp binaries with the date, username, hostname, workspace information, etc.Tags:
affects_outputsIf disabled, visibility errors in target dependencies are demoted to warnings.Tags:
build_file_semantics, non_configurableChecks the environments each target is compatible with and reports errors if any target has dependencies that don’t support the same environmentsTags:
build_file_semanticsIf true, enable package()s to set the transitive_visibility attribute to restrict which packages may depend on them.Tags:
build_file_semantics, experimentalIf enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.Tags:
build_file_semantics, incompatible_changeDeclares this build’s target environment. Must be a label reference to an
environment rule. If specified, all top-level targets must be compatible with this
environment.
See also --platforms.May be used multiple times; values are accumulated.Tags: changes_inputsIf incompatible_enforce_config_setting_visibility=false, this is a noop. Else, if this flag is false, any config_setting without an explicit visibility attribute is //visibility:public. If this flag is true, config_setting follows the same visibility logic as all other rules. See https://github.com/bazelbuild/bazel/issues/12933.Tags:
loading_and_analysis, incompatible_changeIf true, enforce config_setting visibility restrictions. If false, every config_setting is visible to every target. See https://github.com/bazelbuild/bazel/issues/12932.Tags:
loading_and_analysis, incompatible_changeIf true, an analysis failure of a rule target results in the target’s propagation
of an instance of
AnalysisFailureInfo containing the error description, instead
of resulting in a build failure.Tags: loading_and_analysis, experimentalSets the maximum number of transitive dependencies through a rule attribute with
a
for_analysis_testing configuration transition.
Exceeding this limit will result in a rule error.Tags: loading_and_analysismod subcommand
For
mod show_repo: display all repos in the entire workspace.Tags: terminal_outputFor
mod show_repo: display all repos visible to the chosen base module, under their apparent names.Tags: terminal_output--base_module
"<root>" for the root module; <module>@<version> for a specific version of a module; <module> for all versions of a module; @<name> for a repo with the given apparent name; or @@<name> for a repo with the given canonical name
default:"<root>"
Specify a module relative to which the specified target repos will be interpreted.Tags:
terminal_outputChooses the character set to use for the tree. Only affects text output. Valid values
are
utf8 or ascii. Default is utf8Tags: terminal_outputPoints out dependency cycles inside the displayed tree.Tags:
terminal_outputMaximum display depth of the dependency tree. A depth of 1 displays the direct
dependencies, for example. For
tree, path and all_paths it defaults to
Integer.MAX_VALUE, while for deps and explain it defaults to 1 (only displays
direct deps of the root besides the target leaves and their parents).Tags: terminal_outputOnly display the usages of these module extensions and the repos generated by them if their respective flags are set. If set, the result graph will only include paths that contain modules using the specified extensions. An empty list disables the filter, effectively specifying all possible extensions.Tags:
terminal_outputSpecify how much detail about extension usages to include in the query result.
hiddenwill not show any extension information.usageswill only show the extensions names.reposwill also include repos imported withuse_repo.allwill also show the other repositories generated by extensions.
terminal_outputSpecify modules whose extension usages will be displayed in the show_extension query.Tags:
terminal_outputThe module(s) starting from which the dependency graph query will be displayed. Check
each query’s description for the exact semantics. Defaults to
<root>.Tags: terminal_outputInclude built-in modules in the dependency graph. Disabled by default because it is quite noisy.Tags:
terminal_outputThe queries will also take into account and display the unused modules, which are not
present in the module resolution graph after selection (due to the
Minimal-Version Selection or override rules). This can have different effects for
each of the query types i.e. include new paths in the
all_paths command, or extra
dependants in the explain command.Tags: terminal_outputThe format in which the query results should be printed. Allowed values for query are:
text, json, graph.Tags: terminal_outputThe queries will also display the reason why modules were resolved to their current version (if changed). Defaults to true only for the explain query.Tags:
terminal_outputIf enabled, visibility errors include additional diagnostic information.Tags:
build_file_semantics, non_configurableSets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
{key}={value} as an argument.May be used multiple times; values are accumulated.Tags: changes_inputs, non_configurableA comma-separated list of names of packages which the build system will consider non-existent, even if they are visible somewhere on the package path.
Use this option when deleting a subpackage ‘x/y’ of an existing package ‘x’. For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label ‘//x:y/z’ if that is still provided by another package_path entry. Specifying —deleted_packages x/y avoids this problem.May be used multiple times; values are accumulated.
Allows the command to fetch external dependencies. If set to false, the command will utilize any cached version of the dependency, and if none exists, the command will result in failure.
A colon-separated list of where to look for packages. Elements beginning with ‘%workspace%’ are relative to the enclosing workspace. If omitted or empty, the default is the output of ‘bazel info default-package-path’.
If enabled, causes Bazel to print “Loading package:” messages.
Print_action Options
Inherits all options from build. Miscellaneous options, not otherwise categorized.Lists which mnemonics to filter print_action data by, no filtering takes place when left empty.May be used multiple times; values are accumulated.
Query Options
Options that control build executionWhether to make source manifest actions remotableTags:
loading_and_analysis, execution, experimentalWhen enabled, passing multiple
--modify_execution_info flags is additive.
When disabled, only the last flag is taken into account.Tags: execution, affects_outputs, loading_and_analysis, incompatible_changeShort form:
-kContinue as much as possible after an error. While the target that failed and those that depend on it cannot be analyzed, other prerequisites of these targets can be.Tags: eagerness_to_exit--loading_phase_threads
an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]<float>) eg. "auto", "HOST_CPUS*.5"
default:"auto"
Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword (“auto”, “HOST_CPUS”, “HOST_RAM”), optionally followed by an operation ([-|]<float>) eg. “auto”, “HOST_CPUS.5”. “auto” sets a reasonable default based on host resources. Must be at least 1.Tags:
bazel_internal_configurationAdd or remove keys from an action’s execution info based on action mnemonic.
Applies only to actions which support execution info. Many common actions
support execution info, e.g. Genrule, CppCompile, Javac, StarlarkAction,
TestRunner. When specifying multiple values, order matters because
many regexes may apply to the same mnemonic.
Syntax:
regex=[+-]key,regex=[+-]key,....
Examples:.*=+x,.*=-y,.*=+zaddsxandzto, and removesyfrom, the execution info for all actions.Genrule=+requires-xaddsrequires-xto the execution info for all Genrule actions.(?!Genrule).*=-requires-xremovesrequires-xfrom the execution info for all non-Genrule actions.
execution, affects_outputs, loading_and_analysisIf true, use the target platform for running tests rather than the test exec group.Tags:
executionIf enabled,
bazel test --run_under=//:runner builds //:runner in the exec
configuration. If disabled, it builds //:runner in the target configuration.
Bazel executes tests on exec machines, so the former is more correct. This
doesn’t affect bazel run, which always builds --run_under=//foo in the
target configuration.Tags: affects_outputs, incompatible_changeIf true, build runfiles symlink forests for all targets. If false, write them only when required by a local action, test or run command.Tags:
affects_outputsIf true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.Tags:
affects_outputsIf true, native rules add
DefaultInfo.files of data dependencies to their runfiles,
which matches the recommended behavior for Starlark rules (runfiles features to avoid).Tags: affects_outputs, incompatible_changeIf enabled, the
{binary}.repo_mapping file emits a module extension’s repo mapping
only once instead of once for each repo generated by the extension that
contributes runfiles.Tags: affects_outputs, incompatible_changeList of flags for which the use in
select() is disabled.Tags: loading_and_analysis, incompatible_change, non_configurableIf true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.Tags:
incompatible_change--action_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies the set of environment variables available to actions with target
configuration. Variables can be either specified by
name, in which case
the value will be taken from the invocation environment, by the name=value
pair which sets the value independent of the invocation environment, or by
=name, which unsets the variable of that name. This option can be used
multiple times; for options given for the same variable, the latest wins,
options for different variables accumulate.
Note that unless --incompatible_repo_env_ignores_action_env is true, all name=value
pairs will be available to repository rules.May be used multiple times; values are accumulated.Tags: action_command_linesAllowed values for the
--cpu flag.Tags: changes_inputs, affects_outputsIf specified, Bazel will instrument code (using offline instrumentation where
possible) and will collect coverage information during tests. Only targets that
match
--instrumentation_filter will be affected. Usually this option should
not be specified directly - bazel coverage command should be used instead.Tags: affects_outputsShort form:
-cSpecify the mode the binary will be built in. Values: fastbuild, dbg, opt.Tags: affects_outputs, action_command_linesDeprecated: this flag is not used internally by Blaze although there are legacy platform
mappings to allow for backwards compatibility. Do not use this flag, instead use
--platforms with an appropriate platform definition.Tags: changes_inputs, affects_outputsEach
--define option specifies an assignment for a build variable.
In case of multiple values for a variable, the last one wins.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsEnable runfiles symlink tree; By default, it’s off on Windows, on on other platforms.Tags:
affects_outputsComma-separated list of aspects to be applied to exec-configured targets, regardless of whether or not they are top-level targets. This is an experimental feature and is subject to change.May be used multiple times; values are accumulated.Tags:
loading_and_analysisDeprecated in favor of aspects. Use
action_listener to attach an extra_action to
existing build actions.May be used multiple times; values are accumulated.Tags: execution, experimentalIf specified, Bazel will also generate collect coverage information for generated files.Tags:
affects_outputs, experimentalWhich model to use for where in the output tree rules write their outputs, particularly
for multi-platform / multi-configuration builds. This is highly experimental. See
GH-6526 for details. Starlark actions can opt into path mapping by adding the key
supports-path-mapping to the execution_requirements dict.Tags: loses_incremental_state, bazel_internal_configuration, affects_outputs, executionEach entry should be of the form
label=value where label refers to a platform and values
is the desired shortname to override the platform’s CPU name in $(TARGET_CPU)
make variable and output path. Only used when
--experimental_platform_in_output_dir, --incompatible_target_cpu_from_platform or
--incompatible_bep_cpu_from_platform is true. Has highest naming priority.May be used multiple times; values are accumulated.Tags: affects_outputs, experimentalIf true, a shortname for the target platform is used in the output directory name
instead of the CPU. The exact scheme is experimental and subject to change:
- First, in the rare case the
--platformsoption does not have exactly one value, a hash of the platforms option is used. - Next, if any shortname for the current platform was registered by
--experimental_override_name_platform_in_output_dir, then that shortname is used. - Then, if
--experimental_use_platforms_in_output_dir_legacy_heuristicis set, use a shortname based off the current platform Label. - Finally, a hash of the platform option is used as a last resort.
affects_outputs, experimentalPlease only use this flag as part of a suggested migration or testing strategy. Note
that the heuristic has known deficiencies and it is suggested to migrate to
relying on just
--experimental_override_name_platform_in_output_dir.Tags: affects_outputs, experimentalThe given features will be enabled or disabled by default for targets built in the target configuration.
Specifying
-{feature} will disable the feature. Negative features always override positive ones.
See also --host_features.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputs--host_action_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies the set of environment variables available to actions with execution
configurations. Variables can be either specified by
name, in which case the
value will be taken from the invocation environment, by the name=value pair
which sets the value independent of the invocation environment, or by
=name, which unsets the variable of that name. This option can
be used multiple times; for options given for the same variable, the latest
wins, options for different variables accumulate.May be used multiple times; values are accumulated.Tags: action_command_linesSpecify the mode the tools used during the build will be built in. Values:
fastbuild, dbg, opt.Tags: affects_outputs, action_command_linesThe host CPU.Tags:
changes_inputs, affects_outputsThe given features will be enabled or disabled by default for targets built in the exec configuration.
Specifying
-{feature} will disable the feature. Negative features always override positive ones.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsWhen enabled, an exec groups is automatically created for each toolchain used by a rule.
For this to work rule needs to specify
toolchain parameter on its actions. For
more information, see GH-17134.Tags: affects_outputs, incompatible_changeIf true, the genfiles directory is folded into the bin directory.Tags:
affects_outputs, incompatible_changeIf specified, the value of the cpu constraint (
@platforms//cpu:cpu) of
the target platform is used to set the $(TARGET_CPU) make variable.Tags: loading_and_analysis, incompatible_changeWhen coverage is enabled, specifies whether to consider instrumenting test rules.
When set, test rules included by
--instrumentation_filter are instrumented.
Otherwise, test rules are always excluded from coverage instrumentation.Tags: affects_outputs--instrumentation_filter
a comma-separated list of regex expressions with prefix '-' specifying excluded paths
default:"-/javatests[/:],-/test/java[/:]"
When coverage is enabled, only rules with names included by the
specified regex-based filter will be instrumented. Rules prefixed
with ’-’ are excluded instead. Note that only non-test rules are
instrumented unless
--instrument_test_targets is enabled.Tags: affects_outputsSpecifies a suffix to be added to the configuration directory.Tags:
loses_incremental_state, affects_outputs, loading_and_analysisPrefix to insert before the executables for the
test and run commands.
If the value is foo -bar, and the execution command line is test_binary -baz,
then the final command line is foo -bar test_binary -baz.
This can also be a label to an executable target. Some examples are:valgrindstracestrace -cvalgrind --quiet --num-callers=20//package:target//package:target --options
action_command_linesStamp binaries with the date, username, hostname, workspace information, etc.Tags:
affects_outputsIf disabled, visibility errors in target dependencies are demoted to warnings.Tags:
build_file_semantics, non_configurableChecks the environments each target is compatible with and reports errors if any target has dependencies that don’t support the same environmentsTags:
build_file_semanticsIf true, enable package()s to set the transitive_visibility attribute to restrict which packages may depend on them.Tags:
build_file_semantics, experimentalIf enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.Tags:
build_file_semantics, incompatible_changeDeclares this build’s target environment. Must be a label reference to an
environment rule. If specified, all top-level targets must be compatible with this
environment.
See also --platforms.May be used multiple times; values are accumulated.Tags: changes_inputsIf incompatible_enforce_config_setting_visibility=false, this is a noop. Else, if this flag is false, any config_setting without an explicit visibility attribute is //visibility:public. If this flag is true, config_setting follows the same visibility logic as all other rules. See https://github.com/bazelbuild/bazel/issues/12933.Tags:
loading_and_analysis, incompatible_changeIf true, enforce config_setting visibility restrictions. If false, every config_setting is visible to every target. See https://github.com/bazelbuild/bazel/issues/12932.Tags:
loading_and_analysis, incompatible_changeIf true, an analysis failure of a rule target results in the target’s propagation
of an instance of
AnalysisFailureInfo containing the error description, instead
of resulting in a build failure.Tags: loading_and_analysis, experimentalSets the maximum number of transitive dependencies through a rule attribute with
a
for_analysis_testing configuration transition.
Exceeding this limit will result in a rule error.Tags: loading_and_analysisHow to resolve aspect dependencies when the output format is one of {xml,proto,record}. ‘off’ means no aspect dependencies are resolved, ‘conservative’ (the default) means all declared aspect dependencies are added regardless of whether they are given the rule class of direct dependencies, ‘precise’ means that only those aspects are added that are possibly active given the rule class of the direct dependencies. Note that precise mode requires loading other packages to evaluate a single target thus making it slower than the other modes. Also note that even precise mode is not completely precise: the decision whether to compute an aspect is decided in the analysis phase, which is not run during ‘bazel query’.Tags:
build_file_semanticsIf enabled, every query command emits labels as if by the Starlark
str function applied to a Label instance. This is useful for tools that need to match the output of different query commands and/or labels emitted by rules. If not enabled, output formatters are free to emit apparent repository names (relative to the main repository) instead to make the output more readable.Tags: terminal_outputaquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).Tags:
terminal_outputIf true, uses a Query implementation that does not make a copy of the graph. The new implementation only supports —order_output=no, as well as only a subset of output formatters.Tags:
build_file_semantics, eagerness_to_exitThe maximum number of condition labels to show. -1 means no truncation and 0 means no annotation. This option is only applicable to —output=graph.Tags:
terminal_outputIf true, then the graph will be emitted ‘factored’, i.e. topologically-equivalent nodes will be merged together and their labels concatenated. This option is only applicable to —output=graph.Tags:
terminal_outputThe maximum length of the label string for a graph node in the output. Longer labels will be truncated; -1 means no truncation. This option is only applicable to —output=graph.Tags:
terminal_outputIf enabled, implicit dependencies will be included in the dependency graph over which the query operates. An implicit dependency is one that is not explicitly specified in the BUILD file but added by bazel. For cquery, this option controls filtering resolved toolchains.Tags:
build_file_semanticsaquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).Tags:
terminal_outputIf enabled,
blaze query --output=build will output package_group targets.Tags: terminal_output, incompatible_changeIf enabled, when outputting package_group’s
packages attribute, the leading // will not be omitted.Tags: terminal_output, incompatible_changeIf set and —universe_scope is unset, then a value of —universe_scope will be inferred as the list of unique target patterns in the query expression. Note that the —universe_scope value inferred for a query expression that uses universe-scoped functions (e.g.
allrdeps) may not be what you want, so you should use this option only if you know what you are doing. See https://bazel.build/reference/query#sky-query for details and examples. If —universe_scope is set, then this option’s value is ignored. Note: this option applies only to query (i.e. not cquery).Tags: loading_and_analysisWhether each format is terminated with \0 instead of newline.Tags:
terminal_outputIf enabled, deps from “nodep” attributes will be included in the dependency graph over which the query operates. A common example of a “nodep” attribute is “visibility”. Run and parse the output of
info build-language to learn about all the “nodep” attributes in the build language.Tags: build_file_semanticsOutput the results in dependency-ordered (default) or unordered fashion. The unordered output is faster but only supported when —output is not minrank, maxrank, or graph.Expands to:
--order_output=no
terminal_outputWhether each format is terminated with \0 instead of newline.Expands to:
--line_terminator_null=true
terminal_outputOutput the results unordered (no), dependency-ordered (deps), or fully ordered (full). The default is ‘auto’, meaning that results are output either dependency-ordered or fully ordered, depending on the output formatter (dependency-ordered for proto, minrank, maxrank, and graph, fully ordered for all others). When output is fully ordered, nodes are printed in a fully deterministic (total) order. First, all nodes are sorted alphabetically. Then, each node in the list is used as the start of a post-order depth-first search in which outgoing edges to unvisited nodes are traversed in alphabetical order of the successor nodes. Finally, nodes are printed in the reverse of the order in which they were visited.Tags:
terminal_outputOutput the results in dependency-ordered (default) or unordered fashion. The unordered output is faster but only supported when —output is not minrank, maxrank, or graph.Expands to:
--order_output=auto
terminal_outputThe format in which the query results should be printed. Allowed values for query are: build, graph, streamed_jsonproto, label, label_kind, location, maxrank, minrank, package, proto, streamed_proto, xml.Tags:
terminal_outputWhen displaying rule kind, whether to display the short rule name, or the full name for Starlark rules.Tags:
terminal_outputWhen specified, query results will be written directly to this file, and nothing will be printed to Bazel’s standard output stream (stdout). In benchmarks, this is generally faster than
bazel query > file.Tags: terminal_outputIf true, attributes whose value is not explicitly specified in the BUILD file are included; otherwise they are omitted. This option is applicable to —output=protoTags:
terminal_outputPopulate the definition_stack proto field, which records for each rule instance the Starlark call stack at the moment the rule’s class was defined.Tags:
terminal_outputIf enabled, configurable attributes created by select() are flattened. For list types the flattened representation is a list containing each value of the select map exactly once. Scalar types are flattened to null.Tags:
build_file_semanticsPopulate the source_aspect_name proto field of each Attribute with the source aspect that the attribute came from (empty string if it did not).Tags:
terminal_outputUse the starlark environment in the value of the generated $internal_attr_hash attribute. This ensures that the starlark rule definition (and its transitive imports) are part of this identifier.Tags:
terminal_outputWhether or not to calculate and populate the $internal_attr_hash attribute.Tags:
terminal_outputPopulate the instantiation call stack of each rule. Note that this requires the stack to be presentTags:
terminal_outputWhether to output location information in proto output at all.Tags:
terminal_outputComma separated list of attributes to include in output. Defaults to all attributes. Set to empty string to not output any attribute. This option is applicable to —output=proto.Tags:
terminal_outputPopulate the rule_class_key field of each rule; and for the first rule with a given rule_class_key, also populate its rule_class_info proto field. The rule_class_key field uniquely identifies a rule class, and the rule_class_info field is a Stardoc-format rule class API definition.Tags:
terminal_outputWhether or not to populate the rule_input and rule_output fields.Tags:
terminal_outputIf set, query will read the query from the file named here, rather than on the command line. It is an error to specify a file here as well as a command-line query.Tags:
changes_inputsIf true, the location of BUILD files in xml and proto outputs will be relative. By default, the location output is an absolute path and will not be consistent across machines. You can set this option to true to have a consistent result across machines.Tags:
terminal_outputIf true, the tests() expression gives an error if it encounters a test_suite containing non-test targets.Tags:
build_file_semantics, eagerness_to_exitQuery: If disabled, dependencies on ‘exec configuration’ will not be included in the dependency graph over which the query operates. An ‘exec configuration’ dependency edge, such as the one from any ‘proto_library’ rule to the Protocol Compiler, usually points to a tool executed during the build rather than a part of the same ‘target’ program.
Cquery: If disabled, filters out all configured targets which cross an execution transition from the top-level target that discovered this configured target. That means if the top-level target is in the target configuration, only configured targets also in the target configuration will be returned. If the top-level target is in the exec configuration, only exec configured targets will be returned. This option will NOT exclude resolved toolchains.Tags:
build_file_semanticsA comma-separated set of target patterns (additive and subtractive). The query may be performed in the universe defined by the transitive closure of the specified targets. This option is used for the query and cquery commands.
For cquery, the input to this option is the targets all answers are built under and so this option may affect configurations and transitions. If this option is not specified, the top-level targets are assumed to be the targets parsed from the query expression. Note: For cquery, not specifying this option may cause the build to break if targets parsed from the query expression are not buildable with top-level options.Tags:
loading_and_analysisIf true, rule attributes whose value is not explicitly specified in the BUILD file are printed; otherwise they are omitted.Tags:
terminal_outputIf true, XML output contains line numbers. Disabling this option may make diffs easier to read. This option is only applicable to —output=xml.Tags:
terminal_outputIf enabled, visibility errors include additional diagnostic information.Tags:
build_file_semantics, non_configurableSets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
{key}={value} as an argument.May be used multiple times; values are accumulated.Tags: changes_inputs, non_configurableA comma-separated list of names of packages which the build system will consider non-existent, even if they are visible somewhere on the package path.
Use this option when deleting a subpackage ‘x/y’ of an existing package ‘x’. For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label ‘//x:y/z’ if that is still provided by another package_path entry. Specifying —deleted_packages x/y avoids this problem.May be used multiple times; values are accumulated.
Allows the command to fetch external dependencies. If set to false, the command will utilize any cached version of the dependency, and if none exists, the command will result in failure.
A colon-separated list of where to look for packages. Elements beginning with ‘%workspace%’ are relative to the enclosing workspace. If omitted or empty, the default is the output of ‘bazel info default-package-path’.
If enabled, causes Bazel to print “Loading package:” messages.
Run Options
Inherits all options from build. Options that appear before the command and are parsed by the clientIf true, includes paths to replace in ExecRequest to make the resulting paths portable.Tags:
affects_outputsIf false, skip running the command line constructed for the built target. Note that this flag is ignored for all —script_path builds.Tags:
affects_outputs--run_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies the set of environment variables available to the target to run. Variables can be either specified by name, in which case the value will be taken from the invocation environment, by the <code>name=value</code> pair which sets the value independent of the invocation environment, or by <code>=name</code>, which unsets the variable of that name. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate. Note that the executed target will generally see the full environment of the host except for those variables that have been explicitly unset.May be used multiple times; values are accumulated.Tags:
affects_outputsIf true, runs the target in the current working directory instead of the runfile tree.Tags:
affects_outputsIf set, write a shell script to the given file which invokes the target. If this option is set, the target is not run from bazel. Use ‘bazel run —script_path=foo //foo && ./foo’ to invoke target ‘//foo’ This differs from ‘bazel run //foo’ in that the bazel lock is released and the executable is connected to the terminal’s stdin.Tags:
affects_outputs, executionSpecifies whether the arguments passed to the runnable target will be omitted from the output for privacy reasons. If set to true, the output will not contain the arguments passed to the target. If set to false, the output will contain the arguments passed to the target.Tags:
terminal_outputShutdown Options
Options that control the output of the commandIff non-zero, then shutdown will only shut down the server if the total memory (in MB) consumed by the JVM exceeds this value.Tags:
loses_incremental_state, eagerness_to_exitTest Options
Inherits all options from build. Options that affect the verbosity, format or location of loggingIf true, when printing the path to a test log, use relative path that makes use of the ‘testlogs’ convenience symlink. N.B. - A subsequent ‘build’/‘test’/etc invocation with a different configuration can cause the target of this symlink to change, making the path printed previously no longer useful.Tags:
affects_outputsIf true, print additional warnings when the actual test execution time does not match the timeout defined by the test (whether implied or explicit).Tags:
affects_outputsIf true, print additional information (timing, number of failed runs, etc) in the test summary.Tags:
affects_outputsVendor Options
Inherits all options from test. Options that control build executionShort form:
-kContinue as much as possible after an error. While the target that failed and those that depend on it cannot be analyzed, other prerequisites of these targets can be.Tags: eagerness_to_exit--loading_phase_threads
an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|*]<float>) eg. "auto", "HOST_CPUS*.5"
default:"auto"
Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword (“auto”, “HOST_CPUS”, “HOST_RAM”), optionally followed by an operation ([-|]<float>) eg. “auto”, “HOST_CPUS.5”. “auto” sets a reasonable default based on host resources. Must be at least 1.Tags:
bazel_internal_configurationIf incompatible_enforce_config_setting_visibility=false, this is a noop. Else, if this flag is false, any config_setting without an explicit visibility attribute is //visibility:public. If this flag is true, config_setting follows the same visibility logic as all other rules. See https://github.com/bazelbuild/bazel/issues/12933.Tags:
loading_and_analysis, incompatible_changeIf true, enforce config_setting visibility restrictions. If false, every config_setting is visible to every target. See https://github.com/bazelbuild/bazel/issues/12932.Tags:
loading_and_analysis, incompatible_changeOnly vendors the specified repository, which can be either
@apparent_repo_name or
@@canonical_repo_name. This option can be set multiple times.May be used multiple times; values are accumulated.Tags: changes_inputsA comma-separated list of names of packages which the build system will consider non-existent, even if they are visible somewhere on the package path.
Use this option when deleting a subpackage ‘x/y’ of an existing package ‘x’. For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label ‘//x:y/z’ if that is still provided by another package_path entry. Specifying —deleted_packages x/y avoids this problem.May be used multiple times; values are accumulated.
Allows the command to fetch external dependencies. If set to false, the command will utilize any cached version of the dependency, and if none exists, the command will result in failure.
A colon-separated list of where to look for packages. Elements beginning with ‘%workspace%’ are relative to the enclosing workspace. If omitted or empty, the default is the output of ‘bazel info default-package-path’.
If enabled, causes Bazel to print “Loading package:” messages.
Enable persistent aar extractor by using workers.Tags:
execution, experimentalWhether to make source manifest actions remotableTags:
loading_and_analysis, execution, experimentalIf true, then Bazel will run coverage postprocessing for test in a new spawn.Tags:
execution, experimentalWhen enabled, passing multiple
--modify_execution_info flags is additive.
When disabled, only the last flag is taken into account.Tags: execution, affects_outputs, loading_and_analysis, incompatible_changeAdd or remove keys from an action’s execution info based on action mnemonic.
Applies only to actions which support execution info. Many common actions
support execution info, e.g. Genrule, CppCompile, Javac, StarlarkAction,
TestRunner. When specifying multiple values, order matters because
many regexes may apply to the same mnemonic.
Syntax:
regex=[+-]key,regex=[+-]key,....
Examples:.*=+x,.*=-y,.*=+zaddsxandzto, and removesyfrom, the execution info for all actions.Genrule=+requires-xaddsrequires-xto the execution info for all Genrule actions.(?!Genrule).*=-requires-xremovesrequires-xfrom the execution info for all non-Genrule actions.
execution, affects_outputs, loading_and_analysisEnable persistent Android dex and desugar actions by using workers.Expands to:
--internal_persistent_android_dex_desugar--strategy=Desugar=worker--strategy=DexBuilder=worker
host_machine_resource_optimizations, executionEnable persistent Android resource processor by using workers.Expands to:
--internal_persistent_busybox_tools--strategy=AaptPackage=worker--strategy=AndroidResourceParser=worker--strategy=AndroidResourceValidator=worker--strategy=AndroidResourceCompiler=worker--strategy=RClassGenerator=worker--strategy=AndroidResourceLink=worker--strategy=AndroidAapt2=worker--strategy=AndroidAssetMerger=worker--strategy=AndroidResourceMerger=worker--strategy=AndroidCompiledResourceMerger=worker--strategy=ManifestMerger=worker--strategy=AndroidManifestMerger=worker--strategy=Aapt2Optimize=worker--strategy=AARGenerator=worker--strategy=ProcessDatabinding=worker--strategy=GenerateDataBindingBaseClasses=worker
host_machine_resource_optimizations, executionEnable persistent multiplexed Android dex and desugar actions by using workers.Expands to:
--persistent_android_dex_desugar--internal_persistent_multiplex_android_dex_desugar
host_machine_resource_optimizations, executionEnable persistent multiplexed Android resource processor by using workers.Expands to:
--persistent_android_resource_processor--modify_execution_info=AaptPackage=+supports-multiplex-workers--modify_execution_info=AndroidResourceParser=+supports-multiplex-workers--modify_execution_info=AndroidResourceValidator=+supports-multiplex-workers--modify_execution_info=AndroidResourceCompiler=+supports-multiplex-workers--modify_execution_info=RClassGenerator=+supports-multiplex-workers--modify_execution_info=AndroidResourceLink=+supports-multiplex-workers--modify_execution_info=AndroidAapt2=+supports-multiplex-workers--modify_execution_info=AndroidAssetMerger=+supports-multiplex-workers--modify_execution_info=AndroidResourceMerger=+supports-multiplex-workers--modify_execution_info=AndroidCompiledResourceMerger=+supports-multiplex-workers--modify_execution_info=ManifestMerger=+supports-multiplex-workers--modify_execution_info=AndroidManifestMerger=+supports-multiplex-workers--modify_execution_info=Aapt2Optimize=+supports-multiplex-workers--modify_execution_info=AARGenerator=+supports-multiplex-workers
host_machine_resource_optimizations, executionEnable persistent and multiplexed Android tools (dexing, desugaring, resource processing).Expands to:
--internal_persistent_multiplex_busybox_tools--persistent_multiplex_android_resource_processor--persistent_multiplex_android_dex_desugar
host_machine_resource_optimizations, executionIf true, use the target platform for running tests rather than the test exec group.Tags:
executionThe Android target compiler.Tags:
affects_outputs, loading_and_analysis, loses_incremental_stateSelects the manifest merger to use for android_binary rules. Flag to help the transition to the Android manifest merger from the legacy merger.Tags:
affects_outputs, loading_and_analysis, loses_incremental_stateSets the platforms that android_binary targets use. If multiple platforms are specified, then the binary is a fat APKs, which contains native binaries for each specified target platform.Tags:
changes_inputs, loading_and_analysis, loses_incremental_stateSpecifies a suffix to be added to the configuration directory.Tags:
affects_outputsThe C++ compiler to use for compiling the target.Tags:
loading_and_analysis, executionLocation of the binary that is used to postprocess raw coverage reports. This must
be a binary target. Defaults to
@bazel_tools//tools/test:lcov_merger.Tags: changes_inputs, affects_outputs, loading_and_analysisLocation of the binary that is used to generate coverage reports. This must
be a binary target. Defaults to
@bazel_tools//tools/test:coverage_report_generator.Tags: changes_inputs, affects_outputs, loading_and_analysisLocation of support files that are required on the inputs of every test action
that collects code coverage. Defaults to
//tools/test:coverage_support.Tags: changes_inputs, affects_outputs, loading_and_analysisSpecifies a custom malloc implementation. This setting overrides malloc attributes in build rules.Tags:
changes_inputs, affects_outputsIf set, add a “requires-xcode:{version}” execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a “requires-xcode-label:{version_label}” execution requirement.Tags:
loses_incremental_state, loading_and_analysis, execution, experimentalIf true, use the most recent Xcode that is available both locally and remotely. If false, or if there are no mutual available versions, use the local Xcode version selected via xcode-select.Tags:
loses_incremental_state, experimentalThe platforms that are available as execution platforms to run actions.
Platforms can be specified by exact target, or as a target pattern.
These platforms will be considered before those declared in the
WORKSPACE file by
register_execution_platforms(). This option may only be set once; later
instances will override earlier flag settings.Tags: executionThe toolchain rules to be considered during toolchain resolution.
Toolchains can be specified by exact target, or as a target pattern.
These toolchains will be considered before those declared in the
WORKSPACE file
by register_toolchains().May be used multiple times; values are accumulated.Tags: affects_outputs, changes_inputs, loading_and_analysisA label to a checked-in libc library. The default value is selected by the crosstool toolchain, and you almost never need to override it.Tags:
action_command_lines, affects_outputsNo-op flag. Will be removed in a future release.Tags:
loading_and_analysis, executionIf specified, this setting overrides the libc top-level directory (—grte_top) for the exec configuration.Tags:
action_command_lines, affects_outputsThe label of a platform rule that describes the host system.Tags:
affects_outputs, changes_inputs, loading_and_analysisIf enabled,
bazel test --run_under=//:runner builds //:runner in the exec
configuration. If disabled, it builds //:runner in the target configuration.
Bazel executes tests on exec machines, so the former is more correct. This
doesn’t affect bazel run, which always builds --run_under=//foo in the
target configuration.Tags: affects_outputs, incompatible_changeWhether to emit a strip action as part of objc linking.Tags:
action_command_lines, incompatible_changeIf true, Bazel will not enable ‘host’ and ‘nonhost’ features in the c++ toolchain (see https://github.com/bazelbuild/bazel/issues/7407 for more information).Tags:
loading_and_analysis, incompatible_changeIf true, Bazel will not link library dependencies as whole archive by default (see https://github.com/bazelbuild/bazel/issues/7362 for migration instructions).Tags:
loading_and_analysis, incompatible_changeIf true, strip action for executables will use flag -x, which does not break dynamic symbol resolution.Tags:
action_command_lines, incompatible_changeUse interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.Tags:
loading_and_analysis, affects_outputs, affects_outputsSpecifies the version of the iOS SDK to use to build iOS applications. If unspecified, uses the default iOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateSpecifies the version of the macOS SDK to use to build macOS applications. If unspecified, uses the default macOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateThe minimum OS version which your compilation targets.Tags:
loading_and_analysis, affects_outputsThe location of a mapping file that describes which platform to use if none is set or
which flags to set when a platform already exists. Must be relative to the main
workspace root. Defaults to
platform_mappings (a file directly under the
workspace root).Tags: affects_outputs, changes_inputs, loading_and_analysis, non_configurableThe labels of the platform rules describing the target platforms for the current command.Tags:
affects_outputs, changes_inputs, loading_and_analysisSpecifies the version of the tvOS SDK to use to build tvOS applications. If unspecified, uses the default tvOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateMakes apple_crosstool_transition fall back to using the value of
--platforms flag instead of legacy --cpu when needed.Tags: loading_and_analysis--watchos_sdk_version
a dotted version (for example '2.3' or '3.3alpha2.4')
default:"see description"
Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses the default watchOS SDK version from ‘xcode_version’.Tags:
loses_incremental_stateIf specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.Tags:
loses_incremental_stateThe label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.Tags:
loses_incremental_state, loading_and_analysisWhether to generate debug symbol(.dSYM) file(s).Tags:
affects_outputs, action_command_linesIf true, build runfiles symlink forests for all targets. If false, write them only when required by a local action, test or run command.Tags:
affects_outputsIf true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.Tags:
affects_outputsIf enabled, when building C++ tests statically and with fission the .dwp file for the test binary will be automatically built as well.Tags:
loading_and_analysis, affects_outputsSets the suffixes of header files that a cc_proto_library creates.Tags:
affects_outputs, loading_and_analysisSets the suffixes of source files that a cc_proto_library creates.Tags:
affects_outputs, loading_and_analysisRun extra actions for alternative Java api versions in a proto_library.Tags:
affects_outputs, loading_and_analysis, experimentalSave the state of enabled and requested feautres as an output of compilation.Tags:
affects_outputs, experimentalSpecifies which compilation modes use fission for C++ compilations and links. May be any combination of {‘fastbuild’, ‘dbg’, ‘opt’} or the special values ‘yes’ to enable all modes and ‘no’ to disable all modes.Tags:
loading_and_analysis, action_command_lines, affects_outputsIf true, native rules add
DefaultInfo.files of data dependencies to their runfiles,
which matches the recommended behavior for Starlark rules (runfiles features to avoid).Tags: affects_outputs, incompatible_changeIf enabled, the
{binary}.repo_mapping file emits a module extension’s repo mapping
only once instead of once for each repo generated by the extension that
contributes runfiles.Tags: affects_outputs, incompatible_changeList of flags for which the use in
select() is disabled.Tags: loading_and_analysis, incompatible_change, non_configurableIf true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.Tags:
incompatible_changeSpecifies whether to generate a linkmap file.Tags:
affects_outputsIf set, temporary outputs from gcc will be saved. These include .s files (assembler code), .i files (preprocessed C) and .ii files (preprocessed C++).Tags:
affects_outputs--action_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies the set of environment variables available to actions with target
configuration. Variables can be either specified by
name, in which case
the value will be taken from the invocation environment, by the name=value
pair which sets the value independent of the invocation environment, or by
=name, which unsets the variable of that name. This option can be used
multiple times; for options given for the same variable, the latest wins,
options for different variables accumulate.
Note that unless --incompatible_repo_env_ignores_action_env is true, all name=value
pairs will be available to repository rules.May be used multiple times; values are accumulated.Tags: action_command_linesAllowed values for the
--cpu flag.Tags: changes_inputs, affects_outputsDetermines whether C++ deps of Android rules will be linked dynamically when a cc_binary does not explicitly create a shared library. ‘default’ means bazel will choose whether to link dynamically. ‘fully’ means all libraries will be linked dynamically. ‘off’ means that all libraries will be linked in mostly static mode.Tags:
affects_outputs, loading_and_analysis--android_manifest_merger_order
alphabetical, alphabetical_by_configuration or dependency
default:"alphabetical"
Sets the order of manifests passed to the manifest merger for Android binaries. ALPHABETICAL means manifests are sorted by path relative to the execroot. ALPHABETICAL_BY_CONFIGURATION means manifests are sorted by paths relative to the configuration directory within the output directory. DEPENDENCY means manifests are ordered with each library’s manifest coming before the manifests of its dependencies.Tags:
action_command_lines, executionEnables resource shrinking for android_binary APKs that use ProGuard.Tags:
affects_outputs, loading_and_analysisIf specified, Bazel will instrument code (using offline instrumentation where
possible) and will collect coverage information during tests. Only targets that
match
--instrumentation_filter will be affected. Usually this option should
not be specified directly - bazel coverage command should be used instead.Tags: affects_outputsShort form:
-cSpecify the mode the binary will be built in. Values: fastbuild, dbg, opt.Tags: affects_outputs, action_command_linesAdditional option to pass to gcc when compiling C source files.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional options to pass to gcc.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsDeprecated: this flag is not used internally by Blaze although there are legacy platform
mappings to allow for backwards compatibility. Do not use this flag, instead use
--platforms with an appropriate platform definition.Tags: changes_inputs, affects_outputsUse CSFDO profile information to optimize compilation. Specify the absolute path name of the zip file containing the profile file, a raw or an indexed LLVM profile file.Tags:
affects_outputsGenerate binaries with context sensitive FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.Tags:
affects_outputsThe cs_fdo_profile representing the context sensitive profile to be used for optimization.Tags:
affects_outputsAdditional option to pass to gcc when compiling C++ source files.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsEach
--define option specifies an assignment for a build variable.
In case of multiple values for a variable, the last one wins.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsDetermines whether C++ binaries will be linked dynamically. ‘default’ means Bazel will choose whether to link dynamically. ‘fully’ means all libraries will be linked dynamically. ‘off’ means that all libraries will be linked in mostly static mode.Tags:
loading_and_analysis, affects_outputsIf set, any use of absolute paths for propeller optimize will raise an error.Tags:
affects_outputsIf set, any use of absolute paths for FDO will raise an error.Tags:
affects_outputsEnable runfiles symlink tree; By default, it’s off on Windows, on on other platforms.Tags:
affects_outputsComma-separated list of aspects to be applied to exec-configured targets, regardless of whether or not they are top-level targets. This is an experimental feature and is subject to change.May be used multiple times; values are accumulated.Tags:
loading_and_analysisDeprecated in favor of aspects. Use
action_listener to attach an extra_action to
existing build actions.May be used multiple times; values are accumulated.Tags: execution, experimentalCompress Java resources in APKsTags:
affects_outputs, loading_and_analysis, experimentalEnables resource shrinking for android_binary APKs that use ProGuard.Tags:
affects_outputs, loading_and_analysis, experimentalIf specified, Bazel will also generate collect coverage information for generated files.Tags:
affects_outputs, experimentalIf true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.Tags:
action_command_lines, affects_outputs, experimentalWhich model to use for where in the output tree rules write their outputs, particularly
for multi-platform / multi-configuration builds. This is highly experimental. See
GH-6526 for details. Starlark actions can opt into path mapping by adding the key
supports-path-mapping to the execution_requirements dict.Tags: loses_incremental_state, bazel_internal_configuration, affects_outputs, executionEach entry should be of the form
label=value where label refers to a platform and values
is the desired shortname to override the platform’s CPU name in $(TARGET_CPU)
make variable and output path. Only used when
--experimental_platform_in_output_dir, --incompatible_target_cpu_from_platform or
--incompatible_bep_cpu_from_platform is true. Has highest naming priority.May be used multiple times; values are accumulated.Tags: affects_outputs, experimentalIf true, a shortname for the target platform is used in the output directory name
instead of the CPU. The exact scheme is experimental and subject to change:
- First, in the rare case the
--platformsoption does not have exactly one value, a hash of the platforms option is used. - Next, if any shortname for the current platform was registered by
--experimental_override_name_platform_in_output_dir, then that shortname is used. - Then, if
--experimental_use_platforms_in_output_dir_legacy_heuristicis set, use a shortname based off the current platform Label. - Finally, a hash of the platform option is used as a last resort.
affects_outputs, experimentalIf specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.Tags:
changes_inputs, affects_outputs, loading_and_analysis, experimentalPlease only use this flag as part of a suggested migration or testing strategy. Note
that the heuristic has known deficiencies and it is suggested to migrate to
relying on just
--experimental_override_name_platform_in_output_dir.Tags: affects_outputs, experimentalGenerate binaries with FDO instrumentation. With Clang/LLVM compiler, it also accepts the directory name under which the raw profile file(s) will be dumped at runtime.Tags:
affects_outputsUse FDO profile information to optimize compilation. Specify the name of a zip file containing a .gcda file tree, an afdo file containing an auto profile, or an LLVM profile file. This flag also accepts files specified as labels (e.g.
//foo/bar:file.afdo - you may need to add an exports_files directive to the corresponding package) and labels pointing to fdo_profile targets. This flag will be superseded by the fdo_profile rule.Tags: affects_outputsUse cache prefetch hints.Tags:
affects_outputsThe fdo_profile representing the profile to be used for optimization.Tags:
affects_outputsThe given features will be enabled or disabled by default for targets built in the target configuration.
Specifying
-{feature} will disable the feature. Negative features always override positive ones.
See also --host_features.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsIf enabled, all C++ compilations produce position-independent code (“-fPIC”), links prefer PIC pre-built libraries over non-PIC libraries, and links produce position-independent executables (“-pie”).Tags:
loading_and_analysis, affects_outputs--host_action_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies the set of environment variables available to actions with execution
configurations. Variables can be either specified by
name, in which case the
value will be taken from the invocation environment, by the name=value pair
which sets the value independent of the invocation environment, or by
=name, which unsets the variable of that name. This option can
be used multiple times; for options given for the same variable, the latest
wins, options for different variables accumulate.May be used multiple times; values are accumulated.Tags: action_command_linesSpecify the mode the tools used during the build will be built in. Values:
fastbuild, dbg, opt.Tags: affects_outputs, action_command_linesAdditional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional options to pass to the C compiler for tools built in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsThe host CPU.Tags:
changes_inputs, affects_outputsAdditional options to pass to C++ compiler for tools built in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsThe given features will be enabled or disabled by default for targets built in the exec configuration.
Specifying
-{feature} will disable the feature. Negative features always override positive ones.May be used multiple times; values are accumulated.Tags: changes_inputs, affects_outputsAdditional option to pass to linker when linking tools in the exec configurations.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputs--host_macos_minimum_os
a dotted version (for example '2.3' or '3.3alpha2.4')
default:"see description"
Minimum compatible macOS version for host targets. If unspecified, uses ‘macos_sdk_version’.Tags:
loses_incremental_state--host_per_file_copt
a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options
Additional options to selectively pass to the C/C++ compiler when compiling certain files in the exec configurations. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,…,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see —instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: —host_per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsWhen enabled, an exec groups is automatically created for each toolchain used by a rule.
For this to work rule needs to specify
toolchain parameter on its actions. For
more information, see GH-17134.Tags: affects_outputs, incompatible_changeIf true, the genfiles directory is folded into the bin directory.Tags:
affects_outputs, incompatible_changeIf specified, the value of the cpu constraint (
@platforms//cpu:cpu) of
the target platform is used to set the $(TARGET_CPU) make variable.Tags: loading_and_analysis, incompatible_changeWhen coverage is enabled, specifies whether to consider instrumenting test rules.
When set, test rules included by
--instrumentation_filter are instrumented.
Otherwise, test rules are always excluded from coverage instrumentation.Tags: affects_outputs--instrumentation_filter
a comma-separated list of regex expressions with prefix '-' specifying excluded paths
default:"-/javatests[/:],-/test/java[/:]"
When coverage is enabled, only rules with names included by the
specified regex-based filter will be instrumented. Rules prefixed
with ’-’ are excluded instead. Note that only non-test rules are
instrumented unless
--instrument_test_targets is enabled.Tags: affects_outputsMinimum compatible iOS version for target simulators and devices. If unspecified, uses ‘ios_sdk_version’.Tags:
loses_incremental_stateComma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisAdditional option to pass to gcc when linking.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional option to pass to the LTO backend step (under —features=thin_lto).May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsAdditional option to pass to the LTO indexing step (under —features=thin_lto).May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsComma-separated list of architectures for which to build Apple macOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisMinimum compatible macOS version for targets. If unspecified, uses ‘macos_sdk_version’.Tags:
loses_incremental_stateUse memprof profile.Tags:
affects_outputsWhether to perform symbol and dead-code strippings on linked binaries. Binary strippings will be performed if both this flag and —compilation_mode=opt are specified.Tags:
action_command_linesAdditional options to pass to gcc when compiling Objective-C/C++ source files.May be used multiple times; values are accumulated.Tags:
action_command_lines--per_file_copt
a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options
Additional options to selectively pass to gcc when compiling certain files. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,…,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns (Also see —instrumentation_filter). option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: —per_file_copt=//foo/.*.cc,-//foo/bar.cc@-O0 adds the -O0 command line option to the gcc command line of all cc files in //foo/ except bar.cc.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputs--per_file_ltobackendopt
a comma-separated list of regex expressions with prefix '-' specifying excluded paths followed by an @ and a comma separated list of options
Additional options to selectively pass to LTO backend (under —features=thin_lto) when compiling certain backend objects. This option can be passed multiple times. Syntax: regex_filter@option_1,option_2,…,option_n. Where regex_filter stands for a list of include and exclude regular expression patterns. option_1 to option_n stand for arbitrary command line options. If an option contains a comma it has to be quoted with a backslash. Options can contain @. Only the first @ is used to split the string. Example: —per_file_ltobackendopt=//foo/.*.o,-//foo/bar.o@-O0 adds the -O0 command line option to the LTO backend command line of all o files in //foo/ except bar.o.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsSpecifies a suffix to be added to the configuration directory.Tags:
loses_incremental_state, affects_outputs, loading_and_analysisUse Propeller profile information to optimize the build target.A propeller profile must consist of at least one of two files, a cc profile and a ld profile. This flag accepts a build label which must refer to the propeller profile input files. For example, the BUILD file that defines the label, in a/b/BUILD:propeller_optimize( name = “propeller_profile”, cc_profile = “propeller_cc_profile.txt”, ld_profile = “propeller_ld_profile.txt”,)An exports_files directive may have to be added to the corresponding package to make these files visible to Bazel. The option must be used as: —propeller_optimize=//a/b:propeller_profileTags:
action_command_lines, affects_outputsAbsolute path name of cc_profile file for Propeller Optimized builds.Tags:
affects_outputsAbsolute path name of ld_profile file for Propeller Optimized builds.Tags:
affects_outputsPrefix to insert before the executables for the
test and run commands.
If the value is foo -bar, and the execution command line is test_binary -baz,
then the final command line is foo -bar test_binary -baz.
This can also be a label to an executable target. Some examples are:valgrindstracestrace -cvalgrind --quiet --num-callers=20//package:target//package:target --options
action_command_linesIf true, native libraries that contain identical functionality will be shared among different targetsTags:
loading_and_analysis, affects_outputsStamp binaries with the date, username, hostname, workspace information, etc.Tags:
affects_outputsSpecifies whether to strip binaries and shared libraries (using “-Wl,—strip-debug”). The default value of ‘sometimes’ means strip iff —compilation_mode=fastbuild.Tags:
affects_outputsAdditional options to pass to strip when generating a ‘<name>.stripped’ binary.May be used multiple times; values are accumulated.Tags:
action_command_lines, affects_outputsComma-separated list of architectures for which to build Apple tvOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisMinimum compatible tvOS version for target simulators and devices. If unspecified, uses ‘tvos_sdk_version’.Tags:
loses_incremental_stateComma-separated list of architectures for which to build Apple visionOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisComma-separated list of architectures for which to build Apple watchOS binaries.May be used multiple times; values are accumulated.Tags:
loses_incremental_state, loading_and_analysisMinimum compatible watchOS version for target simulators and devices. If unspecified, uses ‘watchos_sdk_version’.Tags:
loses_incremental_stateUse XbinaryFDO profile information to optimize compilation. Specify the name of default cross binary profile. When the option is used together with —fdo_instrument/—fdo_optimize/—fdo_profile, those options will always prevail as if xbinary_fdo is never specified.Tags:
affects_outputsIf disabled, visibility errors in target dependencies are demoted to warnings.Tags:
build_file_semantics, non_configurableWhether to desugar Java 8 bytecode before dexing.Tags:
affects_outputs, loading_and_analysis, loses_incremental_stateWhether to include supported Java 8 libraries in apps for legacy devices.Tags:
affects_outputs, loading_and_analysis, loses_incremental_state, experimentalChecks the environments each target is compatible with and reports errors if any target has dependencies that don’t support the same environmentsTags:
build_file_semanticsIf true, enable package()s to set the transitive_visibility attribute to restrict which packages may depend on them.Tags:
build_file_semantics, experimentalWhen enabled, enforce that a java_binary rule can’t contain more than one version of the same class file on the classpath. This enforcement can break the build, or can just result in warnings.Tags:
loading_and_analysisIf true, checks that a Java target explicitly declares all directly used targets as dependencies.Tags:
build_file_semantics, eagerness_to_exitIf enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.Tags:
build_file_semantics, incompatible_changeNo-op. Kept here for backwards compatibility.Tags:
eagerness_to_exit, incompatible_change, deprecatedWhen enabled, and with experimental_one_version_enforcement set to a non-NONE value, enforce one version on java_test targets. This flag can be disabled to improve incremental test performance at the expense of missing potential one version violations.Tags:
loading_and_analysisUnless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.Tags:
build_file_semantics, eagerness_to_exit, incompatible_changeUnless OFF, checks that a proto_library target explicitly declares all targets used in ‘import public’ as exported.Tags:
build_file_semantics, eagerness_to_exit, incompatible_changeIf true, headers found through system include paths (-isystem) are also required to be declared.Tags:
loading_and_analysis, eagerness_to_exitDeclares this build’s target environment. Must be a label reference to an
environment rule. If specified, all top-level targets must be compatible with this
environment.
See also --platforms.May be used multiple times; values are accumulated.Tags: changes_inputsImplementation to use to sign APKsTags:
action_command_lines, affects_outputs, loading_and_analysisIf set, and compilation mode is not ‘opt’, objc apps will include debug entitlements when signing.Tags:
changes_inputsIf true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library and objc_import.Tags:
build_file_semantics, incompatible_changeIf true, make the default value true for alwayslink attributes in objc_library and objc_import.Tags:
build_file_semantics, incompatible_changeIf true, an analysis failure of a rule target results in the target’s propagation
of an instance of
AnalysisFailureInfo containing the error description, instead
of resulting in a build failure.Tags: loading_and_analysis, experimentalSets the maximum number of transitive dependencies through a rule attribute with
a
for_analysis_testing configuration transition.
Exceeding this limit will result in a rule error.Tags: loading_and_analysis--default_test_resources
a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100
Override the default resources amount for tests. The expected format is
{resource}={value}. If a single positive number is specified as {value}
it will override the default resources for all test sizes. If 4
comma-separated numbers are specified, they will override the resource
amount for respectively the small, medium, large, enormous test sizes.
Values can also be HOST_RAM/HOST_CPU, optionally followed
by [-|*]{float} (eg. memory=HOST_RAM*.1,HOST_RAM*.2,HOST_RAM*.3,HOST_RAM*.4).
The default test resources specified by this flag are overridden by explicit
resources specified in tags.May be used multiple times; values are accumulated.Specifies number of times to run each test. If any of those attempts fail for any
reason, the whole test is considered failed. Normally the value specified is
just an integer.
Example:
--runs_per_test=3 will run all tests 3 times.
Alternate syntax: regex_filter@runs_per_test. Where runs_per_test stands for
an integer value and regex_filter stands for a list of include and exclude
regular expression patterns (Also see —instrumentation_filter).
Example: --runs_per_test=//foo/.*,-//foo/bar/.*@3 runs all tests in //foo/ except
those under //foo/bar three times. This option can be passed multiple times. The most
recently passed argument that matches takes precedence. If nothing matches,
the test is only run once.May be used multiple times; values are accumulated.--test_env
a 'name[=value]' assignment with an optional value part or the special syntax '=name' to unset a variable
Specifies additional environment variables to be injected into the test runner
environment. Variables can be either specified by
name, in which
case its value will be read from the Bazel client environment, or by the
name=value pair.
Previously set variables can be unset via =name.
This option can be used multiple times to specify several variables.
Used only by the ‘bazel test’ command.May be used multiple times; values are accumulated.Tags: test_runnerOverride the default test timeout values for test timeouts (in secs). If a single
positive integer value is specified it will override all categories. If 4
comma-separated integers are specified, they will override the timeouts for
short, moderate, long and eternal (in that order). In either form, a value of
-1 tells blaze to use its default timeouts for that category.If true, undeclared test outputs will be archived in a zip file.Tags:
test_runnerWhether to generate and analyze .d files.Tags:
loading_and_analysis, execution, changes_inputsWhether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.Tags:
loading_and_analysis, execution, changes_inputs, experimentalIf enabled, C++ .d files will be passed through in memory directly from the remote build nodes instead of being written to disk.Tags:
loading_and_analysis, execution, affects_outputs, experimentalIf enabled, the dependency (.jdeps) files generated from Java compilations will be passed through in memory directly from the remote build nodes instead of being written to disk.Tags:
loading_and_analysis, execution, affects_outputs, experimentalWhen enabled,
--trim_test_configuration will not trim the test configuration for rules
marked testonly=1. This is meant to reduce action conflict issues when non-test
rules depend on cc_test rules. No effect if --trim_test_configuration is
false.Tags: loading_and_analysis, loses_incremental_state, experimentalWhether to narrow inputs to C/C++ compilation by parsing #include lines from input files. This can improve performance and incrementality by decreasing the size of compilation input trees. However, it can also break builds because the include scanner does not fully implement C preprocessor semantics. In particular, it does not understand dynamic #include directives and ignores preprocessor conditional logic. Use at your own risk. Any issues relating to this flag that are filed will be closed. At Google without this flag your build will most likely fail.Tags:
loading_and_analysis, execution, changes_inputs, experimentalIf set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.Tags:
changes_inputs, loading_and_analysisWhen building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).Tags:
executionWhen enabled, test-related options will be cleared below the top level of the build. When this flag is active, tests cannot be built as dependencies of non-test rules, but changes to test-related options will not cause non-test rules to be re-analyzed.Tags:
loading_and_analysis, loses_incremental_state--toolchain_resolution_debug
a comma-separated list of regex expressions with prefix '-' specifying excluded paths
default:"-.*"
Print debug information during toolchain resolution. The flag takes a regex, which is checked against toolchain types and specific targets to see which to debug. Multiple regexes may be separated by commas, and then each regex is checked separately. Note: The output of this flag is very complex and will likely only be useful to experts in toolchain resolution.Tags:
terminal_outputIf enabled, visibility errors include additional diagnostic information.Tags:
build_file_semantics, non_configurableSets a shorthand name for a Starlark flag. It takes a single key-value pair in the form
{key}={value} as an argument.May be used multiple times; values are accumulated.Tags: changes_inputs, non_configurableShort form:
-tIf set to auto, Bazel reruns a test if and only if:- Bazel detects changes in the test or its dependencies,
- The test is marked as
external, - Multiple test runs were requested with
--runs_per_test, or - The test previously failed.
If set to
yes, Bazel caches all test results except for tests marked asexternal. If set tono, Bazel does not cache any test results.
If
on_failed or on_passed, then Blaze will cancel concurrently running tests on the first
successful run with that result. This is only useful in combination with
--runs_per_test_detects_flakes.Tags: affects_outputs, loading_and_analysis, experimentalIf true, then Bazel fetches the entire coverage data directory for each test during a coverage run.Tags:
affects_outputs, loading_and_analysis, experimentalIf true, coverage for clang will generate an LCOV report.Tags:
affects_outputs, loading_and_analysis, experimentalEnables reduced classpaths for Java compilations.
Whether to validate java_* sources.Tags:
affects_outputs, experimentalThe number of CPUs to reserve for Turbine.
Explicitly specify a dependency to JUnit or Hamcrest in a java_test instead of accidentally obtaining from the TestRunner’s deps. Only works for bazel right now.
The Java launcher used by tools that are executed during a build.
Additional options to pass to javac when building tools that are executed during a build.May be used multiple times; values are accumulated.
Additional options to pass to the Java VM when building tools that are executed during the build. These options will get added to the VM startup options of each java_binary target.May be used multiple times; values are accumulated.
If true, exclusive tests will run with sandboxed strategy. Add
local tag to force
an exclusive test run locallyTags: incompatible_changeIf true, Bazel uses an environment with a static value for PATH and does not
inherit
LD_LIBRARY_PATH. Use --action_env=ENV_VARIABLE if you want to
inherit specific environment variables from the client, but note that doing so
can prevent cross-user caching if a shared cache is used.Tags: loading_and_analysis, incompatible_changeAdditional options to pass to the J2ObjC tool.May be used multiple times; values are accumulated.
Causes the Java virtual machine of a java test to wait for a connection from a JDWP-compliant debugger (such as jdb) before starting the test. Implies -test_output=streamed.Expands to:
--test_arg=--wrapper_script_flag=--debug--test_output=streamed--test_strategy=exclusive--test_timeout=9999--nocache_test_results
Generate dependency information (for now, compile-time classpath) per Java target.
Compile ijars directly from source.
The Java language version
The Java launcher to use when building Java binaries. If this flag is set to the empty string, the JDK launcher is used. The “launcher” attribute overrides this flag.
The Java runtime version
Additional options to pass to javac.May be used multiple times; values are accumulated.
Additional options to pass to the Java VM. These options will get added to the VM startup options of each java_binary target.May be used multiple times; values are accumulated.
Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.
Specifies a binary to use to do dexing without sharding.
Plugins to use in the build. Currently works with java_plugin.May be used multiple times; values are accumulated.
Specifies which version of ProGuard to use for code removal when building a Java binary.
The label of the proto-compiler.Tags:
affects_outputs, loading_and_analysisWhether to pass profile_path to the proto compiler.Tags:
affects_outputs, loading_and_analysisThe profile to pass to the proto compiler as profile_path. If unset, but —proto_profile is true (the default), infers the path from —fdo_optimize.Tags:
affects_outputs, loading_and_analysisLabel of proto_lang_toolchain() which describes how to compile C++ protosTags:
affects_outputs, loading_and_analysisLabel of proto_lang_toolchain() which describes how to compile Java protosTags:
affects_outputs, loading_and_analysis--proto_toolchain_for_javalite
a build target label
default:"@bazel_tools//tools/proto:javalite_toolchain"
Label of proto_lang_toolchain() which describes how to compile JavaLite protosTags:
affects_outputs, loading_and_analysisAdditional options to pass to the protobuf compiler.May be used multiple times; values are accumulated.Tags:
affects_outputsIf true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.
Absolute path to the shell executable for Bazel to use. If this is unset, but the
BAZEL_SH environment variable is set on the first Bazel invocation (that starts
up a Bazel server), Bazel uses that. If neither is set, Bazel uses a hard-coded
default path depending on the operating system it runs on;- Windows:
c:/msys64/usr/bin/bash.exe - FreeBSD:
/usr/local/bin/bash - All others:
/bin/bash.
bash may lead
to build failures or runtime failures of the generated binaries.Tags: loading_and_analysisSpecifies additional options and arguments that should be passed to the test
executable. Can be used multiple times to specify several arguments.
If multiple tests are executed, each of them will receive identical arguments.
Used only by the
bazel test command.May be used multiple times; values are accumulated.Specifies a filter to forward to the test framework. Used to limit the tests run. Note that this does not affect which targets are built.
This option is deprecated and has no effect.Tags:
deprecatedForwards fail fast option to the test runner. The test runner should stop execution upon first failure.
--test_sharding_strategy
explicit, disabled or forced=k where k is the number of shards to enforce
default:"explicit"
Specify strategy for test sharding:
explicitto only use sharding if theshard_countBUILDattribute is present.disabledto never use test sharding.forced=kto enforcekshards for testing regardless of theshard_countBUILDattribute.
The Java language version used to execute the tools that are needed during a build
The Java runtime version used to execute tools during the build
If enabled, this option causes Java compilation to use interface jars. This will result in faster incremental compilation, but error messages can be different.
Version Options
Options that let the user configure the intended output, affecting its value, as opposed to its existenceIf set, write the version to stdout using the conventions described in the GNU standards.Tags:
affects_outputs, executionOption Effect Tags
unknown | This option has unknown, or undocumented, effect. |
no_op | This option has literally no effect. |
loses_incremental_state | Changing the value of this option can cause significant loss of incremental state, which slows builds. State could be lost due to a server restart or to invalidation of a large part of the dependency graph. |
changes_inputs | This option actively changes the inputs that bazel considers for the build, such as filesystem restrictions, repository versions, or other options. |
affects_outputs | This option affects bazel’s outputs. This tag is intentionally broad, can include transitive affects, and does not specify the type of output it affects. |
build_file_semantics | This option affects the semantics of BUILD or .bzl files. |
bazel_internal_configuration | This option affects settings of bazel-internal machinery. This tag does not, on its own, mean that build artifacts are affected. |
loading_and_analysis | This option affects the loading and analysis of dependencies, and the building of the dependency graph. |
execution | This option affects the execution phase, such as sandboxing or remote execution related options. |
host_machine_resource_optimizations | This option triggers an optimization that may be machine specific and is not guaranteed to work on all machines. The optimization could include a tradeoff with other aspects of performance, such as memory or cpu cost. |
eagerness_to_exit | This option changes how eagerly bazel will exit from a failure, where a choice between continuing despite the failure and ending the invocation exists. |
bazel_monitoring | This option is used to monitor bazel’s behavior and performance. |
terminal_output | This option affects bazel’s terminal output. |
action_command_lines | This option changes the command line arguments of one or more build actions. |
test_runner | This option changes the testrunner environment of the build. |
Option Metadata Tags
experimental | This option triggers an experimental feature with no guarantees of functionality. |
incompatible_change | This option triggers a breaking change. Use this option to test your migration readiness or get early access to the new feature |
deprecated | This option is deprecated. It might be that the feature it affects is deprecated, or that another method of supplying the information is preferred. |
non_configurable | This option cannot be changed in a transition or be used in a select() statement. |