---
title: 'Command-Line Reference'
---

```
bazel [<startup options>] <command> [<args>]
```

or

```
bazel [<startup options>] <command> [<args>] -- [<target patterns>]
```

See the [User's Guide](/versions/8.7.0/docs/build#specifying-build-targets) for the
target patterns syntax.

## Option Syntax

Options can be passed to Bazel in different ways. Options that require a value
can be passed with either an equals sign or a space:

```
--<option>=<value>
--<option> <value>
```

Some options have a single character short form; in that case, the short form
has to be passed with a single dash and a space.

```
-<short_form> <value>
```

Boolean options can be enabled as follows:

```
--<option>
--<option>=[true|yes|1]
```

and disabled as follows:

```
--no<option>
--<option>=[false|no|0]
```

Tristate options are usually set to automatic by default, and can be
force-enabled as follows:

```
--<option>=[true|yes|1]
```

or force-disabled as follows:

```
--no<option>
--<option>=[false|no|0]
```

## Commands

|  |  |
| --- | --- |
| [`analyze-profile`](#analyze-profile) | Analyzes build profile data. |
| [`aquery`](#aquery) | Analyzes the given targets and queries the action graph. |
| [`build`](#build) | Builds the specified targets. |
| [`canonicalize-flags`](#canonicalize-flags) | Canonicalizes a list of bazel options. |
| [`clean`](#clean) | Removes output files and optionally stops the server. |
| [`coverage`](#coverage) | Generates code coverage report for specified test targets. |
| [`cquery`](#cquery) | Loads, analyzes, and queries the specified targets w/ configurations. |
| [`dump`](#dump) | Dumps the internal state of the bazel server process. |
| [`fetch`](#fetch) | Fetches external repositories that are prerequisites to the targets. |
| [`help`](#help) | Prints help for commands, or the index. |
| [`info`](#info) | Displays runtime info about the bazel server. |
| [`license`](#license) | Prints the license of this software. |
| [`mobile-install`](#mobile-install) | Installs targets to mobile devices. |
| [`mod`](#mod) | Queries the Bzlmod external dependency graph |
| [`print_action`](#print_action) | Prints the command line args for compiling a file. |
| [`query`](#query) | Executes a dependency graph query. |
| [`run`](#run) | Runs the specified target. |
| [`shutdown`](#shutdown) | Stops the bazel server. |
| [`sync`](#sync) | Syncs all repositories specified in the workspace file |
| [`test`](#test) | Builds and runs the specified test targets. |
| [`vendor`](#vendor) | Fetches external repositories into a folder specified by the flag --vendor_dir. |
| [`version`](#version) | Prints version information for bazel. |

## Startup Options

Options that appear before the command and are parsed by the client:

`--[no]autodetect_server_javabase` default: "true"
:   When --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`](#effect_tag_AFFECTS_OUTPUTS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--[no]batch` default: "false"
:   If 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`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`deprecated`](#metadata_tag_DEPRECATED)

`--[no]batch_cpu_scheduling` default: "false"
:   Only 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_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--bazelrc=<path>` multiple uses are accumulated
:   The location of the user .bazelrc file containing default values of Bazel options. /dev/null indicates that all further `--bazelrc`s 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`,
    1) x.rc and y.rc are read.
    2) z.rc is ignored due to the prior /dev/null.
    If unspecified, Bazel uses the first .bazelrc file it finds in the following two locations: the workspace directory, then the user's home directory.
    Note: command line options will always supersede any option in bazelrc.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]block_for_lock` default: "true"
:   When --noblock_for_lock is passed, Bazel does not wait for a running command to complete, but instead exits immediately.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--[no]client_debug` default: "false"
:   If true, log debug information from the client to stderr. Changing this option will not cause the server to restart.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--connect_timeout_secs=<an integer>` default: "30"
:   The amount of time the client waits for each attempt to connect to the server

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--digest_function=<hash function>` default: see description
:   The hash function to use when computing file digests.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--experimental_cgroup_parent=<path>` default: see description
:   The 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`](#effect_tag_BAZEL_MONITORING), [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_run_in_user_cgroup` default: "false"
:   If 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`](#effect_tag_BAZEL_MONITORING), [`execution`](#effect_tag_EXECUTION)

`--failure_detail_out=<path>` default: see description
:   If 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 $&lcub;OUTPUT_BASE&rcub;/failure_detail.rawproto.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--[no]home_rc` default: "true"
:   Whether or not to look for the home bazelrc file at $HOME/.bazelrc

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]idle_server_tasks` default: "true"
:   Run System.gc() when the server is idle

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--[no]ignore_all_rc_files` default: "false"
:   Disables 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_inputs`](#effect_tag_CHANGES_INPUTS)

`--io_nice_level={-1,0,1,2,3,4,5,6,7}` default: "-1"
:   Only 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_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--local_startup_timeout_secs=<an integer>` default: "120"
:   The maximum amount of time the client waits to connect to the server

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--macos_qos_class=<a string>` default: "default"
:   Sets 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_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--max_idle_secs=<integer>` default: "10800"
:   The 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`](#effect_tag_EAGERNESS_TO_EXIT), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--output_base=<path>` default: see description
:   If set, specifies the output location to which all build output will be written. Otherwise, the location will be $&lcub;OUTPUT_ROOT&rcub;/\_blaze\_$&lcub;USER&rcub;/$&lcub;MD5_OF_WORKSPACE_ROOT&rcub;. 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`](#effect_tag_AFFECTS_OUTPUTS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--output_user_root=<path>` default: see description
:   The 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`](#effect_tag_AFFECTS_OUTPUTS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--[no]preemptible` default: "false"
:   If true, the command can be preempted if another command is started.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--[no]quiet` default: "false"
:   If true, no informational messages are emitted on the console, only errors. Changing this option will not cause the server to restart.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--server_jvm_out=<path>` default: see description
:   The location to write the server's JVM's output. If unset then defaults to a location in output_base.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--[no]shutdown_on_low_sys_mem` default: "false"
:   If 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 only.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--[no]system_rc` default: "true"
:   Whether or not to look for the system-wide bazelrc.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]unlimit_coredumps` default: "false"
:   Raises 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_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--[no]watchfs` default: "false"
:   If true, bazel tries to use the operating system's file watch service for local changes instead of scanning every file for a change.

    Tags:
    [`deprecated`](#metadata_tag_DEPRECATED)

`--[no]windows_enable_symlinks` default: "false"
:   If 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_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--[no]workspace_rc` default: "true"
:   Whether or not to look for the workspace bazelrc file at $workspace/.bazelrc

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Miscellaneous options, not otherwise categorized.:

`--host_jvm_args=<jvm_arg>` multiple uses are accumulated
:   Flags to pass to the JVM executing Blaze.

`--host_jvm_debug`
:   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.

`--server_javabase=<jvm path>` default: ""
:   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 client:

`--distdir=<a path>` multiple uses are accumulated
:   Additional places to search for archives before accessing the network to download them.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--[no]experimental_repository_cache_hardlinks` default: "false"
:   If 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_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--experimental_repository_downloader_retries=<an integer>` default: "5"
:   The maximum number of attempts to retry a download error. If set to 0, retries are disabled.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_scale_timeouts=<a double>` default: "1.0"
:   Scale 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 code

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--http_connector_attempts=<an integer>` default: "8"
:   The maximum number of attempts for http downloads.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--http_connector_retry_max_timeout=<An immutable length of time.>` default: "0s"
:   The maximum timeout for http download retries. With a value of 0, no timeout maximum is defined.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--http_max_parallel_downloads=<an integer>` default: "8"
:   The maximum number parallel http downloads.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--http_timeout_scaling=<a double>` default: "1.0"
:   Scale all timeouts related to http downloads by the given factor

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--[no]incompatible_disable_native_repo_rules` default: "false"
:   If false, native repo rules can be used in WORKSPACE; otherwise, Starlark repo rules must be used instead. Native repo rules include local_repository, new_local_repository, and local_config_platform. When this flag is set, the local_config_platform built-in module is also unavailable in Bzlmod; use `@platforms//host` instead.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--repo_contents_cache=<a path>` default: ""
:   Specifies 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.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--repo_contents_cache_gc_idle_delay=<An immutable length of time.>` default: "5m"
:   Specifies the amount of time the server must remain idle before garbage collection happens
    to the repo contents cache.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--repo_contents_cache_gc_max_age=<An immutable length of time.>` default: "14d"
:   Specifies 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_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--repository_cache=<a path>` default: see description
:   Specifies 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 '&lt;--output_user_root&gt;/cache/repos/v1' is used

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--[no]repository_disable_download` default: "false"
:   If set, downloading using ctx.download&lcub;,\_and_extract&rcub; 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_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

Options that control build execution:

`--experimental_ui_max_stdouterr_bytes=<an integer in (-1)-1073741819 range>` default: "1048576"
:   The maximum size of the stdout / stderr files that will be printed to the console. -1 implies no limit.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--gc_thrashing_threshold=<an integer in 0-100 range>` default: "100"
:   The 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_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

Options that configure the toolchain used for action execution:

`--[no]incompatible_enable_proto_toolchain_resolution` default: "false"
:   If true, proto lang rules define toolchains from protobuf repository.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

Options that let the user configure the intended output, affecting its value, as opposed to its existence:

`--bep_maximum_open_remote_upload_files=<an integer>` default: "-1"
:   Maximum number of open files allowed during BEP artifact upload.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]experimental_strict_repo_env` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]incompatible_repo_env_ignores_action_env` default: "false"
:   If true, &lt;code&gt;--action_env=NAME=VALUE&lt;/code&gt; will no longer affect repository rule and module extension environments.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--remote_download_all`
:   Downloads all remote outputs to the local machine. This flag is an alias for --remote_download_outputs=all.

`--remote_download_minimal`
:   Does not download any remote build outputs to the local machine. This flag is an alias for --remote_download_outputs=minimal.

`--remote_download_outputs=<all, minimal or toplevel>` default: "toplevel"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--remote_download_symlink_template=<a string>` default: ""
:   Instead 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 &lcub;hash&rcub; and &lcub;size_bytes&rcub; 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--remote_download_toplevel`
:   Only downloads remote outputs of top level targets to the local machine. This flag is an alias for --remote_download_outputs=toplevel.

`--repo_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   Specifies additional environment variables to be available only for repository rules. Note that repository rules see the full environment anyway, but in this way configuration information can be passed to repositories through options without invalidating the action graph.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

Options that affect how strictly Bazel enforces valid build inputs (rule definitions, flag combinations, etc.):

`--[no]check_bzl_visibility` default: "true"
:   If disabled, .bzl load visibility errors are demoted to warnings.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]incompatible_enforce_starlark_utf8` default: "warning"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]enable_bzlmod` default: "true"
:   If true, enables the Bzlmod dependency management system, taking precedence over WORKSPACE. See https://bazel.build/docs/bzlmod for more information.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]enable_workspace` default: "false"
:   If true, enables the legacy WORKSPACE system for external dependencies. See https://bazel.build/external/overview for more information.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_bzl_visibility` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_cc_shared_library` default: "false"
:   If set to true, rule attributes and Starlark API methods needed for the rule cc_shared_library will be available

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_disable_external_package` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_dormant_deps` default: "false"
:   If 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`](#effect_tag_BUILD_FILE_SEMANTICS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_enable_android_migration_apis` default: "false"
:   If set to true, enables the APIs required to support the Android Starlark migration.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]experimental_enable_first_class_macros` default: "true"
:   If set to true, enables the `macro()` construct for defining symbolic macros.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]experimental_enable_scl_dialect` default: "true"
:   If set to true, .scl files may be used in load() statements.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]experimental_enable_starlark_set` default: "true"
:   If true, enable the set data type and set() constructor in Starlark.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_google_legacy_api` default: "false"
:   If set to true, exposes a number of experimental pieces of Starlark build API pertaining to Google legacy code.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_isolated_extension_usages` default: "false"
:   If true, enables the &lt;code&gt;isolate&lt;/code&gt; parameter in the &lt;a href="https://bazel.build/rules/lib/globals/module#use_extension"&gt;&lt;code&gt;use_extension&lt;/code&gt;&lt;/a&gt; function.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_java_library_export` default: "false"
:   If enabled, experimental_java_library_export_do_not_use module is available.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]experimental_platforms_api` default: "false"
:   If set to true, enables a number of platform-related Starlark APIs useful for debugging.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_repo_remote_exec` default: "false"
:   If set to true, repository_rule gains some remote execution capabilities.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_repository_ctx_execute_wasm` default: "false"
:   If true enables the repository_ctx `load_wasm` and `execute_wasm` methods.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_sibling_repository_layout` default: "false"
:   If 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`](#effect_tag_ACTION_COMMAND_LINES), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_single_package_toolchain_binding` default: "false"
:   If enabled, the register_toolchain function may not include target patterns which may refer to more than one package.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_allow_tags_propagation` default: "true"
:   If 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`](#effect_tag_BUILD_FILE_SEMANTICS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]incompatible_always_check_depset_elements` default: "true"
:   Check 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`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--incompatible_autoload_externally=<comma-separated set of options>` default: "+@rules_python,+java_common,+JavaInfo,+JavaPluginInfo,ProguardSpecProvider,java_binary,java_import,java_library,java_plugin,java_test,java_runtime,java_toolchain,java_package_configuration,@com_google_protobuf,@rules_shell,+@rules_android"
:   A comma-separated list of rules (or other symbols) that were previously part of Bazel and which are now to be retrieved from their respective external repositories. This flag is intended to be used to facilitate migration of rules out of Bazel. See also https://github.com/bazelbuild/bazel/issues/23043.
    A symbol that is autoloaded within a file behaves as if its built-into-Bazel definition were replaced by its canonical new definition in an external repository. For a BUILD file, this essentially means implicitly adding a load() statement. For a .bzl file, it's either a load() statement or a change to a field of the `native` object, depending on whether the autoloaded symbol is a rule.
    Bazel maintains a hardcoded list of all symbols that may be autoloaded; only those symbols may appear in this flag. For each symbol, Bazel knows the new definition location in an external repository, as well as a set of special-cased repositories that must not autoload it to avoid creating cycles.
    A list item of "+foo" in this flag causes symbol foo to be autoloaded, except in foo's exempt repositories, within which the Bazel-defined version of foo is still available.
    A list item of "foo" triggers autoloading as above, but the Bazel-defined version of foo is not made available to the excluded repositories. This ensures that foo's external repository does not depend on the old Bazel implementation of foo
    A list item of "-foo" does not trigger any autoloading, but makes the Bazel-defined version of foo inaccessible throughout the workspace. This is used to validate that the workspace is ready for foo's definition to be deleted from Bazel.
    If a symbol is not named in this flag then it continues to work as normal -- no autoloading is done, nor is the Bazel-defined version suppressed. For configuration see https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/packages/AutoloadSymbols.java As a shortcut also whole repository may be used, for example +@rules_python will autoload all Python rules.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_depset_for_libraries_to_link_getter` default: "true"
:   When true, Bazel no longer returns a list from linking_context.libraries_to_link but returns a depset instead.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disable_autoloads_in_main_repo` default: "false"
:   Controls if the autoloads (set by --incompatible_autoload_externally) are enabled in themain repository. When enabled the rules (or other symbols) that were previously part of Bazel need to have load statements. Use buildifier to add them.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disable_objc_library_transition` default: "true"
:   Disable objc_library's custom transition and inherit from the top level target instead (No-op in Bazel)

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disable_starlark_host_transitions` default: "false"
:   If set to true, rule attributes cannot set 'cfg = "host"'. Rules should set 'cfg = "exec"' instead.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disable_target_default_provider_fields` default: "false"
:   If set to true, disable the ability to access providers on 'target' objects via field syntax. Use provider-key syntax instead. For example, instead of using `ctx.attr.dep.my_info` to access `my_info` from inside a rule implementation function, use `ctx.attr.dep[MyInfo]`. See https://github.com/bazelbuild/bazel/issues/9014 for details.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disable_target_provider_fields` default: "false"
:   If 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`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disallow_ctx_resolve_tools` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disallow_empty_glob` default: "true"
:   If set to true, the default value of the `allow_empty` argument of glob() is False.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disallow_struct_provider_syntax` default: "true"
:   If set to true, rule implementation functions may not return a struct. They must instead return a list of provider instances.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_enable_deprecated_label_apis` default: "true"
:   If enabled, certain deprecated APIs (native.repository_name, Label.workspace_name, Label.relative) can be used.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]incompatible_fail_on_unknown_attributes` default: "true"
:   If enabled, targets that have unknown attributes set to None fail.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_fix_package_group_reporoot_syntax` default: "true"
:   In 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`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_java_common_parameters` default: "true"
:   If set to true, the output_jar, and host_javabase parameters in pack_sources and host_javabase in compile will all be removed.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_locations_prefers_executable` default: "true"
:   Whether a target that provides an executable expands to the executable rather than the files in &lt;code&gt;DefaultInfo.files&lt;/code&gt; under $(locations ...) expansion if the number of files is not 1.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_merge_fixed_and_default_shell_env` default: "true"
:   If enabled, actions registered with ctx.actions.run and ctx.actions.run_shell with both 'env' and 'use_default_shell_env = True' specified will use an environment obtained from the default shell environment by overriding with the values passed in to 'env'. If disabled, the value of 'env' is completely ignored in this case.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_no_attr_license` default: "true"
:   If set to true, disables the function `attr.license`.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_no_implicit_file_export` default: "false"
:   If set, (used) source files are are package private unless exported explicitly. See https://github.com/bazelbuild/proposals/blob/master/designs/2019-10-24-file-visibility.md

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_no_implicit_watch_label` default: "true"
:   If true, then methods on &lt;code&gt;repository_ctx&lt;/code&gt; that are passed a Label will no longer automatically watch the file under that label for changes even if &lt;code&gt;watch = "no"&lt;/code&gt;, and &lt;code&gt;repository_ctx.path&lt;/code&gt; no longer causes the returned path to be watched. Use &lt;code&gt;repository_ctx.watch&lt;/code&gt; instead.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_no_rule_outputs_param` default: "false"
:   If set to true, disables the `outputs` parameter of the `rule()` Starlark function.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_package_group_has_public_syntax` default: "true"
:   In package_group's `packages` attribute, allows writing "public" or "private" to refer to all packages or no packages respectively.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_require_linker_input_cc_api` default: "true"
:   If set to true, rule create_linking_context will require linker_inputs instead of libraries_to_link. The old getters of linking_context will also be disabled and just linker_inputs will be available.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_resolve_select_keys_eagerly` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_run_shell_command_string` default: "true"
:   If set to true, the command parameter of actions.run_shell will only accept string

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_simplify_unconditional_selects_in_rule_attrs` default: "true"
:   If 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`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_stop_exporting_build_file_path` default: "false"
:   If set to true, deprecated ctx.build_file_path will not be available. ctx.label.package + '/BUILD' can be used instead.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_stop_exporting_language_modules` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_top_level_aspects_require_providers` default: "true"
:   If set to true, the top level aspect will honor its required providers and only run on top level targets whose rules' advertised providers satisfy the required providers of the aspect.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_unambiguous_label_stringification` default: "true"
:   When 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_use_cc_configure_from_rules_cc` default: "false"
:   When true, Bazel will no longer allow using cc_configure from @bazel_tools. Please see https://github.com/bazelbuild/bazel/issues/10134 for details and migration instructions.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--max_computation_steps=<a long integer>` default: "0"
:   The maximum number of Starlark computation steps that may be executed by a BUILD file (zero means no limit).

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--nested_set_depth_limit=<an integer>` default: "3500"
:   The maximum depth of the graph internal to a depset (also known as NestedSet), above which the depset() constructor will fail.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--repositories_without_autoloads=<comma-separated set of options>` default: ""
:   A list of additional repositories (beyond the hardcoded ones Bazel knows about) where autoloads are not to be added. This should typically contain repositories that are transitively depended on by a repository that may be loaded automatically (and which can therefore potentially create a cycle).

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

Options relating to Bzlmod output and semantics:

`--allow_yanked_versions=<a string>` multiple uses are accumulated
:   Specified the module versions in the form of `&lt;module1&gt;@&lt;version1&gt;,&lt;module2&gt;@&lt;version2&gt;` 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 version with the `BZLMOD_ALLOW_YANKED_VERSIONS` environment variable. You can disable this check by using the keyword 'all' (not recommended).

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--check_bazel_compatibility=<error, warning or off>` default: "error"
:   Check 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--check_direct_dependencies=<off, warning or error>` default: "warning"
:   Check 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]ignore_dev_dependency` default: "false"
:   If 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--lockfile_mode=<off, update, refresh or error>` default: "update"
:   Specifies 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--module_mirrors=<a '[name=]value1[,..,valueN]' assignment>` multiple uses are accumulated
:   Specifies 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=&lt;registry&gt;=&lt;mirror1&gt;[,&lt;mirror2&gt;,...]` (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).

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--override_module=<an equals-separated mapping of module name to path>` multiple uses are accumulated
:   Override a module with a local path in the form of &lt;module name&gt;=&lt;path&gt;. 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.

`--registry=<a string>` multiple uses 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.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--vendor_dir=<a path>` default: see description
:   Specifies 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that trigger optimizations of the build time:

`--gc_thrashing_limits=<comma separated pairs of <period>:<count>>` default: "1s:2,20s:3,1m:5"
:   Limits which, if reached, cause GcThrashingDetector to crash Bazel with an OOM. Each limit is specified as &lt;period&gt;:&lt;count&gt; 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 &lt;count&gt; consecutive full GCs within &lt;period&gt;, an OOM is triggered. Multiple limits can be specified separated by commas.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--[no]heuristically_drop_nodes` default: "false"
:   If 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--[no]incompatible_do_not_split_linking_cmdline` default: "true"
:   When 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]keep_state_after_build` default: "true"
:   If 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--skyframe_high_water_mark_full_gc_drops_per_invocation=<an integer, >= 0>` default: "10"
:   Flag 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_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--skyframe_high_water_mark_minor_gc_drops_per_invocation=<an integer, >= 0>` default: "10"
:   Flag 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_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--skyframe_high_water_mark_threshold=<an integer>` default: "85"
:   Flag 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_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--[no]track_incremental_state` default: "true"
:   If 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

Options that affect the verbosity, format or location of logging:

`--[no]announce_rc` default: "false"
:   Whether to announce rc options.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]attempt_to_print_relative_paths` default: "false"
:   When 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--bes_backend=<a string>` default: ""
:   Specifies 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]bes_check_preceding_lifecycle_events` default: "false"
:   Sets 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--bes_header=<a 'name=value' assignment>` multiple uses are accumulated
:   Specify 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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--bes_instance_name=<a string>` default: see description
:   Specifies the instance name under which the BES will persist uploaded BEP. Defaults to null.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--bes_keywords=<comma-separated list of options>` multiple uses are accumulated
:   Specifies a list of notification keywords to be added the default set of keywords published to BES ("command_name=&lt;command_name&gt; ", "protocol_name=BEP"). Defaults to none.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]bes_lifecycle_events` default: "true"
:   Specifies whether to publish BES lifecycle events. (defaults to 'true').

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--bes_oom_finish_upload_timeout=<An immutable length of time.>` default: "10m"
:   Specifies 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_monitoring`](#effect_tag_BAZEL_MONITORING)

`--bes_outerr_buffer_size=<an integer>` default: "10240"
:   Specifies 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--bes_outerr_chunk_size=<an integer>` default: "1048576"
:   Specifies the maximal size of stdout or stderr to be sent to BEP in a single message.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--bes_proxy=<a string>` default: see description
:   Connect 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).

`--bes_results_url=<a string>` default: ""
:   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_output`](#effect_tag_TERMINAL_OUTPUT)

`--bes_system_keywords=<comma-separated list of options>` multiple uses are accumulated
:   Specifies 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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--bes_timeout=<An immutable length of time.>` default: "0s"
:   Specifies 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`](#effect_tag_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. Either 'wait_for_upload_complete' (default), 'nowait_for_upload_complete', or 'fully_async'.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--build_event_binary_file=<a string>` default: ""
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_event_binary_file_path_conversion` default: "true"
:   Convert 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 used

    Tags:
    [`affects_outputs`](#effect_tag_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_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--build_event_json_file=<a string>` default: ""
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_event_json_file_path_conversion` default: "true"
:   Convert 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 used

    Tags:
    [`affects_outputs`](#effect_tag_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_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--build_event_max_named_set_of_file_entries=<an integer>` default: "5000"
:   The 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_event_publish_all_actions` default: "false"
:   Whether all actions should be published.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--build_event_text_file=<a string>` default: ""
:   If non-empty, write a textual representation of the build event protocol to that file

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_event_text_file_path_conversion` default: "true"
:   Convert 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 used

    Tags:
    [`affects_outputs`](#effect_tag_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_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--build_event_upload_max_retries=<an integer>` default: "4"
:   The maximum number of times Bazel should retry uploading a build event.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--[no]experimental_bep_target_summary` default: "false"
:   Whether to publish TargetSummary events.

`--[no]experimental_build_event_expand_filesets` default: "false"
:   If true, expand Filesets in the BEP when presenting output files.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]experimental_build_event_fully_resolve_fileset_symlinks` default: "false"
:   If true, fully resolve relative Fileset symlinks in the BEP when presenting output files. Requires --experimental_build_event_expand_filesets.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_build_event_output_group_mode=<an output group name followed by an OutputGroupFileMode, e.g. default=both>` multiple uses are accumulated
:   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=both

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_build_event_upload_retry_minimum_delay=<An immutable length of time.>` default: "1s"
:   Initial, minimum delay for exponential backoff retries when BEP upload fails. (exponent: 1.6)

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--experimental_build_event_upload_strategy=<a string>` default: see description
:   Selects how to upload artifacts referenced in the build event protocol.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]experimental_collect_load_average_in_profiler` default: "true"
:   If enabled, the profiler collects the system's overall load average.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]experimental_collect_pressure_stall_indicators` default: "false"
:   If enabled, the profiler collects the Linux PSI data.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]experimental_collect_resource_estimation` default: "false"
:   If enabled, the profiler collects CPU and memory usage estimation for local actions.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]experimental_collect_skyframe_counts_in_profiler` default: "false"
:   If 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_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]experimental_collect_system_network_usage` default: "true"
:   If enabled, the profiler collects the system's network usage.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]experimental_collect_worker_data_in_profiler` default: "false"
:   If enabled, the profiler collects worker's aggregated resource data.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--experimental_command_profile=<cpu, wall, alloc or lock>` default: see description
:   Records 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, wasm_load, wasm_exec or unknown>` multiple uses are accumulated
:   Specifies additional profile tasks to be included in the profile.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]experimental_profile_include_primary_output` default: "false"
:   Includes the extra "out" attribute in action events that contains the exec path to the action's primary output.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]experimental_profile_include_target_configuration` default: "false"
:   Includes target configuration hash in action events' JSON profile data.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]experimental_profile_include_target_label` default: "false"
:   Includes target label in action events' JSON profile data.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]experimental_record_metrics_for_all_mnemonics` default: "false"
:   Controls 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.

`--[no]experimental_record_skyframe_metrics` default: "false"
:   Controls the output of BEP BuildGraphMetrics, including expensiveto compute skyframe metrics about Skykeys, RuleClasses and Aspects.With this flag set to false BuildGraphMetrics.rule_count and aspectfields will not be populated in the BEP.

`--[no]experimental_run_bep_event_include_residue` default: "false"
:   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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]experimental_stream_log_file_uploads` default: "false"
:   Stream log file uploads directly to the remote storage rather than writing them to disk.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_workspace_rules_log_file=<a path>` default: see description
:   Log certain Workspace Rules events into this file as delimited WorkspaceEvent protos.

`--[no]generate_json_trace_profile` default: "auto"
:   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_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]heap_dump_on_oom` default: "false"
:   Whether 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 &lt;output_base&gt;/&lt;invocation_id&gt;.heapdump.hprof. This option effectively replaces -XX:+HeapDumpOnOutOfMemoryError, which has no effect for manual OOMs.

    Tags:
    [`bazel_monitoring`](#effect_tag_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()

`--[no]legacy_important_outputs` default: "false"
:   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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--logging=<0 <= an integer <= 6>` default: "3"
:   The logging level.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--memory_profile=<a path>` default: see description
:   If 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`](#effect_tag_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 pause

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--profile=<a path>` default: see description
:   If set, profile Bazel and write data to the specified file. Use bazel analyze-profile to analyze the profile.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--profiles_to_retain=<an integer>` default: "5"
:   Number 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_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]record_full_profiler_data` default: "false"
:   By 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_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]redirect_local_instrumentation_output_writes` default: "false"
:   If true and supported, instrumentation output is redirected to be written locally on a different machine than where bazel is running on.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--remote_print_execution_messages=<failure, success or all>` default: "failure"
:   Choose 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]slim_profile` default: "true"
:   Slims down the size of the JSON profile by merging events if the profile gets too large.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--starlark_cpu_profile=<a string>` default: ""
:   Writes into the specified file a pprof profile of CPU usage by all Starlark threads.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--tool_tag=<a string>` default: ""
:   A tool name to attribute this Bazel invocation to.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--ui_event_filters=<Convert list of comma separated event kind to list of filters>` multiple uses are accumulated
:   Specifies 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.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--experimental_resolved_file_instead_of_workspace=<a string>` default: ""
:   If non-empty read the specified resolved file instead of the WORKSPACE file

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Remote caching and execution options:

`--downloader_config=<a path>` default: see description
:   Specify a file to configure the remote downloader with. This file consists of lines, each of which starts with a directive (`allow`, `block` or `rewrite`) followed by either a host name (for `allow` and `block`) or two patterns, one to match against, and one to use as a substitute URL, with back-references starting from `$1`. It is possible for multiple `rewrite` directives for the same URL to be give, and in this case multiple URLs will be returned.

`--experimental_circuit_breaker_strategy=<failure>` default: see description
:   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:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_remote_cache_chunking` default: "false"
:   If 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:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_remote_cache_compression_threshold=<an integer>` default: "100"
:   The minimum blob size required to compress/decompress with zstd. Ineffectual unless --remote_cache_compression is set.

`--[no]experimental_remote_cache_lease_extension` default: "false"
:   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`.

`--experimental_remote_cache_ttl=<An immutable length of time.>` default: "3h"
:   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:
    [`execution`](#effect_tag_EXECUTION)

`--experimental_remote_capture_corrupted_outputs=<a path>` default: see description
:   A path to a directory where the corrupted outputs will be captured to.

`--[no]experimental_remote_discard_merkle_trees` default: "true"
:   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.

`--experimental_remote_downloader=<a string>` default: see description
:   A Remote Asset API endpoint URI, to be used as a remote download proxy. The supported schemas are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no schema is provided Bazel will default to grpcs. See: https://github.com/bazelbuild/remote-apis/blob/master/build/bazel/remote/asset/v1/remote_asset.proto

`--[no]experimental_remote_downloader_local_fallback` default: "false"
:   Whether to fall back to the local downloader if remote downloader fails.

`--[no]experimental_remote_downloader_propagate_credentials` default: "false"
:   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:&lt;url-index&gt;:&lt;header-key&gt;` qualifier where the `&lt;url-index&gt;` 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.

`--[no]experimental_remote_execution_keepalive` default: "false"
:   Whether to use keepalive for remote execution calls.

`--experimental_remote_failure_rate_threshold=<an integer in 0-100 range>` default: "10"
:   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:
    [`execution`](#effect_tag_EXECUTION)

`--experimental_remote_failure_window_interval=<An immutable length of time.>` default: "60s"
:   The 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:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_remote_mark_tool_inputs` default: "false"
:   If set to true, Bazel will mark inputs as tool inputs for the remote executor. This can be used to implement remote persistent workers.

`--[no]experimental_remote_merkle_tree_cache` default: "false"
:   If set to true, Merkle tree calculations will be memoized to improve the remote cache hit checking speed. The memory foot print of the cache is controlled by --experimental_remote_merkle_tree_cache_size.

`--experimental_remote_merkle_tree_cache_size=<a long integer>` default: "1000"
:   The number of Merkle trees to memoize to improve the remote cache hit checking speed. Even though the cache is automatically pruned according to Java's handling of soft references, out-of-memory errors can occur if set too high. If set to 0 the cache size is unlimited. Optimal value varies depending on project's size. Default to 1000.

`--experimental_remote_output_service=<a string>` default: see description
:   HOST or HOST:PORT of a remote output service endpoint. The supported schemas are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no schema is provided Bazel will default to grpcs. Specify grpc:// or unix: schema to disable TLS.

`--experimental_remote_output_service_output_path_prefix=<a string>` default: ""
:   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.

`--[no]experimental_remote_require_cached` default: "false"
:   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.

`--experimental_remote_scrubbing_config=<Converts to a Scrubber>` default: see description
:   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) and --incompatible_strict_action_env (to normalize environment variables).

`--experimental_worker_for_repo_fetching=<off, platform, virtual or auto>` default: "auto"
:   The threading mode to use for repo fetching. If set to 'off', no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.

`--[no]guard_against_concurrent_changes` default: "lite"
:   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:
    [`execution`](#effect_tag_EXECUTION)

`--[no]incompatible_remote_local_fallback_for_remote_cache` default: "false"
:   Whether --remote_local_fallback applies to --remote_cache.

`--[no]remote_accept_cached` default: "true"
:   Whether to accept remotely cached action results.

`--remote_build_event_upload=<all or minimal>` default: "minimal"
:   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'.

`--remote_bytestream_uri_prefix=<a string>` default: see description
:   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 "$&lcub;hostname&rcub;/$&lcub;instance_name&rcub;".

`--remote_cache=<a string>` default: see description
:   A URI of a caching endpoint. The supported schemas are http, https, grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no schema is provided Bazel will default to grpcs. Specify grpc://, http:// or unix: schema to disable TLS. See https://bazel.build/remote/caching

`--[no]remote_cache_async` default: "true"
:   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.

`--[no]remote_cache_compression` default: "false"
:   If enabled, compress/decompress cache blobs with zstd when their size is at least --experimental_remote_cache_compression_threshold.

`--remote_cache_header=<a 'name=value' assignment>` multiple uses are accumulated
:   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.

`--remote_default_exec_properties=<a 'name=value' assignment>` multiple uses 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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--remote_default_platform_properties=<a string>` default: ""
:   Set the default platform properties to be set for the remote execution API, if the execution platform does not already set remote_execution_properties. This value will also be used if the host platform is selected as the execution platform for remote execution.

`--remote_download_regex=<a valid Java regular expression>` multiple uses are accumulated
:   Force 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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--remote_downloader_header=<a 'name=value' assignment>` multiple uses are accumulated
:   Specify 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.

`--remote_exec_header=<a 'name=value' assignment>` multiple uses 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.

`--remote_execution_priority=<an integer>` default: "0"
:   The relative priority of actions to be executed remotely. The semantics of the particular priority values are server-dependent.

`--remote_executor=<a string>` default: see description
:   HOST or HOST:PORT of a remote execution endpoint. The supported schemas are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no schema is provided Bazel will default to grpcs. Specify grpc:// or unix: schema to disable TLS.

`--remote_grpc_log=<a path>` default: see description
:   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).

`--remote_header=<a 'name=value' assignment>` multiple uses are accumulated
:   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.

`--remote_instance_name=<a string>` default: ""
:   Value to pass as instance_name in the remote execution API.

`--[no]remote_local_fallback` default: "false"
:   Whether to fall back to standalone local execution strategy if remote execution fails.

`--remote_local_fallback_strategy=<a string>` default: "local"
:   Deprecated. See https://github.com/bazelbuild/bazel/issues/7480 for details.

`--remote_max_concurrency_per_connection=<an integer>` default: "100"
:   Limit the max number of concurrent requests per gRPC connection. By default the value is 100.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--remote_max_connections=<an integer>` default: "100"
:   Limit 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_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--remote_proxy=<a string>` default: see description
:   Connect to the remote cache through a proxy. Currently this flag can only be used to configure a Unix domain socket (unix:/path/to/socket).

`--remote_result_cache_priority=<an integer>` default: "0"
:   The relative priority of remote actions to be stored in remote cache. The semantics of the particular priority values are server-dependent.

`--remote_retries=<an integer>` default: "5"
:   The maximum number of attempts to retry a transient error. If set to 0, retries are disabled.

`--remote_retry_max_delay=<An immutable length of time.>` default: "5s"
:   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.

`--remote_timeout=<An immutable length of time.>` default: "60s"
:   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.

`--[no]remote_upload_local_results` default: "true"
:   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.

`--[no]remote_verify_downloads` default: "true"
:   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.

Miscellaneous options, not otherwise categorized.:

`--build_metadata=<a 'name=value' assignment>` multiple uses are accumulated
:   Custom key-value string pairs to supply in a build event.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--color=<yes, no or auto>` default: "auto"
:   Use terminal controls to colorize output.

`--config=<a string>` multiple uses are accumulated
:   Selects additional config sections from the rc files; for every &lt;command&gt;, it also pulls in the options from &lt;command&gt;:&lt;config&gt; 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.

`--credential_helper=<Path to a credential helper. It may be absolute, relative to the PATH environment variable, or %workspace%-relative. The path 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.>` multiple uses are accumulated
:   Configures a credential helper conforming to the &lt;a href="https://github.com/EngFlow/credential-helper-spec"&gt;Credential Helper Specification&lt;/a&gt; to use for retrieving authorization credentials for repository fetching, remote caching and execution, and the build event service.
    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 https://blog.engflow.com/2023/10/09/configuring-bazels-credential-helper/ for instructions.

`--credential_helper_cache_duration=<An immutable length of time.>` default: "30m"
:   The default duration for which credentials supplied by a credential helper are cached if the helper does not provide when the credentials expire.

`--credential_helper_timeout=<An immutable length of time.>` default: "10s"
:   Configures the timeout for a credential helper.
    Credential helpers failing to respond within this timeout will fail the invocation.

`--curses=<yes, no or auto>` default: "auto"
:   Use terminal cursor controls to minimize scrolling output.

`--disk_cache=<a path>` default: see description
:   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.

`--[no]enable_platform_specific_config` default: "false"
:   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.

`--experimental_disk_cache_gc_idle_delay=<An immutable length of time.>` default: "5m"
:   How 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.

`--experimental_disk_cache_gc_max_age=<An immutable length of time.>` default: "0"
:   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_install_base_gc_max_age=<An immutable length of time.>` default: "30d"
:   How 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_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--[no]experimental_rule_extension_api` default: "true"
:   Enable experimental rule extension API and subrule APIs

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_windows_watchfs` default: "false"
:   If 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.

`--google_credentials=<a string>` default: see description
:   Specifies the file to get authentication credentials from. See https://cloud.google.com/docs/authentication for details.

`--[no]google_default_credentials` default: "false"
:   Whether to use 'Google Application Default Credentials' for authentication. See https://cloud.google.com/docs/authentication for details. Disabled by default.

`--grpc_keepalive_time=<An immutable length of time.>` default: see description
:   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. Times are treated as second granularity; it is an error to set a value less than one second. By default, keep-alive pings are disabled. You should coordinate with the service owner before enabling this setting. For example to set a value of 30 seconds to this flag, it should be done as this --grpc_keepalive_time=30s

`--grpc_keepalive_timeout=<An immutable length of time.>` default: "20s"
:   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.

`--[no]incompatible_disable_non_executable_java_binary` default: "false"
:   If true, java_binary is always executable. create_executable attribute is removed.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--inject_repository=<an equals-separated mapping of repository name to path>` multiple uses are accumulated
:   Adds a new repository with a local path in the form of &lt;repository name&gt;=&lt;path&gt;. 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.

`--invocation_id=<a UUID>` default: ""
:   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`](#effect_tag_BAZEL_MONITORING), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--override_repository=<an equals-separated mapping of repository name to path>` multiple uses are accumulated
:   Override a repository with a local path in the form of &lt;repository name&gt;=&lt;path&gt;. 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.

`--[no]progress_in_terminal_title` default: "false"
:   Show the command progress in the terminal title. Useful to see what bazel is doing when having multiple terminal tabs.

`--[no]show_progress` default: "true"
:   Display progress messages during a build.

`--show_progress_rate_limit=<a double>` default: "0.2"
:   Minimum number of seconds between progress messages in the output.

`--[no]show_timestamps` default: "false"
:   Include timestamps in messages

`--tls_certificate=<a string>` default: see description
:   Specify a path to a TLS certificate that is trusted to sign server certificates.

`--tls_client_certificate=<a string>` default: see description
:   Specify the TLS client certificate to use; you also need to provide a client key to enable client authentication.

`--tls_client_key=<a string>` default: see description
:   Specify the TLS client key to use; you also need to provide a client certificate to enable client authentication.

`--ui_actions_shown=<an integer>` default: "8"
:   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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]watchfs` default: "false"
:   On 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.

## Analyze-profile Options

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that affect the verbosity, format or location of logging:

`--dump=<text or raw>` [`-d`] default: see description
:   output full profile data dump either in human-readable 'text' format or script-friendly 'raw' format.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

## Aquery Options

Inherits all options from [build](#build).

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options relating to query output and semantics:

`--aspect_deps=<off, conservative or precise>` default: "conservative"
:   How to resolve aspect dependencies when the output format is one of &lcub;xml,proto,record&rcub;. '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_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]consistent_labels` default: "false"
:   If enabled, every query command emits labels as if by the Starlark &lt;code&gt;str&lt;/code&gt; function applied to a &lt;code&gt;Label&lt;/code&gt; 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]experimental_explicit_aspects` default: "false"
:   aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]graph:factored` default: "true"
:   If 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--graph:node_limit=<an integer>` default: "512"
:   The 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]implicit_deps` default: "true"
:   If 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_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]include_artifacts` default: "true"
:   Includes names of the action inputs and outputs in the output (potentially large).

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]include_aspects` default: "true"
:   aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]include_commandline` default: "true"
:   Includes the content of the action command lines in the output (potentially large).

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]include_file_write_contents` default: "false"
:   Include the file contents for the FileWrite, SourceSymlinkManifest, and RepoMappingManifest actions (potentially large).

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]include_param_files` default: "false"
:   Include 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]include_pruned_inputs` default: "true"
:   Includes 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]incompatible_package_group_includes_double_slash` default: "true"
:   If enabled, when outputting package_group's `packages` attribute, the leading `//` will not be omitted.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]infer_universe_scope` default: "false"
:   If 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]line_terminator_null` default: "false"
:   Whether each format is terminated with \0 instead of newline.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]nodep_deps` default: "true"
:   If 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_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--output=<a string>` default: "text"
:   The format in which the aquery results should be printed. Allowed values for aquery are: text, textproto, proto, streamed_proto, jsonproto.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--output_file=<a string>` default: ""
:   When 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 &lt;code&gt;bazel query &gt; file&lt;/code&gt;.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:default_values` default: "true"
:   If true, attributes whose value is not explicitly specified in the BUILD file are included; otherwise they are omitted. This option is applicable to --output=proto

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:definition_stack` default: "false"
:   Populate 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:flatten_selects` default: "true"
:   If 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_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]proto:include_attribute_source_aspects` default: "false"
:   Populate 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:include_synthetic_attribute_hash` default: "false"
:   Whether or not to calculate and populate the $internal_attr_hash attribute.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:instantiation_stack` default: "false"
:   Populate the instantiation call stack of each rule. Note that this requires the stack to be present

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:locations` default: "true"
:   Whether to output location information in proto output at all.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--proto:output_rule_attrs=<comma-separated list of options>` default: "all"
:   Comma 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:rule_classes` default: "false"
:   Populate 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:rule_inputs_and_outputs` default: "true"
:   Whether or not to populate the rule_input and rule_output fields.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--query_file=<a string>` default: ""
:   If 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_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]relative_locations` default: "false"
:   If 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]skyframe_state` default: "false"
:   Without 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]tool_deps` default: "true"
:   Query: 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_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--universe_scope=<comma-separated list of options>` default: ""
:   A 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that control build execution:

`--[no]experimental_inprocess_symlink_creation` default: "true"
:   Whether to make direct filesystem calls to create symlink trees instead of delegating to a helper process.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_persistent_aar_extractor` default: "false"
:   Enable persistent aar extractor by using workers.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_remotable_source_manifests` default: "false"
:   Whether to make source manifest actions remotable

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_split_coverage_postprocessing` default: "false"
:   If true, then Bazel will run coverage postprocessing for test in a new spawn.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_strict_fileset_output` default: "false"
:   If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]incompatible_modify_execution_info_additive` default: "false"
:   When enabled, passing multiple --modify_execution_info flags is additive. When disabled, only the last flag is taken into account.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--modify_execution_info=<regex=[+-]key,regex=[+-]key,...>` multiple uses are accumulated
:   Add 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,.\*=+z' adds 'x' and 'z' to, and removes 'y' from, the execution info for all actions.
    'Genrule=+requires-x' adds 'requires-x' to the execution info for all Genrule actions.
    '(?!Genrule).\*=-requires-x' removes 'requires-x' from the execution info for all non-Genrule actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--persistent_android_dex_desugar`
:   Enable persistent Android dex and desugar actions by using workers.

`--persistent_android_resource_processor`
:   Enable persistent Android resource processor by using workers.

`--persistent_multiplex_android_dex_desugar`
:   Enable persistent multiplexed Android dex and desugar actions by using workers.

`--persistent_multiplex_android_resource_processor`
:   Enable persistent multiplexed Android resource processor by using workers.

`--persistent_multiplex_android_tools`
:   Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).

`--[no]use_target_platform_for_tests` default: "false"
:   If true, then Bazel will use the target platform for running tests rather than the test exec group.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

Options that configure the toolchain used for action execution:

`--android_compiler=<a string>` default: see description
:   The Android target compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--android_manifest_merger=<legacy, android or force_android>` default: "android"
:   Selects the manifest merger to use for android_binary rules. Flag to help thetransition to the Android manifest merger from the legacy merger.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--android_platforms=<a build target label>` default: ""
:   Sets 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`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--apple_crosstool_top=<a build target label>` default: "@bazel_tools//tools/cpp:toolchain"
:   The label of the crosstool package to be used in Apple and Objc rules and their dependencies.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--cc_output_directory_tag=<a string>` default: ""
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compiler=<a string>` default: see description
:   The C++ compiler to use for compiling the target.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)

`--coverage_output_generator=<a build target label>` default: "@bazel_tools//tools/test:lcov_merger"
:   Location of the binary that is used to postprocess raw coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//tools/test:lcov_merger'.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--coverage_report_generator=<a build target label>` default: "@bazel_tools//tools/test:coverage_report_generator"
:   Location of the binary that is used to generate coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//tools/test:coverage_report_generator'.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--coverage_support=<a build target label>` default: "@bazel_tools//tools/test:coverage_support"
:   Location 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`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--custom_malloc=<a build target label>` default: see description
:   Specifies a custom malloc implementation. This setting overrides malloc attributes in build rules.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_add_exec_constraints_to_targets=<a '<RegexFilter>=<label1>[,<label2>,...]' assignment>` multiple uses are accumulated
:   List of comma-separated regular expressions, each optionally prefixed by - (negative expression), assigned (=) to a list of comma-separated constraint value targets. If a target matches no negative expression and at least one positive expression its toolchain resolution will be performed as if it had declared the constraint values as execution constraints. Example: //demo,-test=@platforms//cpus:x86_64 will add 'x86_64' to any target under //demo except for those whose name contains 'test'.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_include_xcode_execution_requirements` default: "false"
:   If set, add a "requires-xcode:&lcub;version&rcub;" execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a "requires-xcode-label:&lcub;version_label&rcub;" execution requirement.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_prefer_mutual_xcode` default: "true"
:   If 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`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--extra_execution_platforms=<comma-separated list of options>` default: ""
:   The 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:
    [`execution`](#effect_tag_EXECUTION)

`--extra_toolchains=<comma-separated list of options>` multiple uses are accumulated
:   The 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().

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--grte_top=<a label>` default: see description
:   A 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`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_compiler=<a string>` default: see description
:   No-op flag. Will be removed in a future release.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)

`--host_grte_top=<a label>` default: see description
:   If specified, this setting overrides the libc top-level directory (--grte_top) for the exec configuration.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_platform=<a build target label>` default: "@bazel_tools//tools:host_platform"
:   The label of a platform rule that describes the host system.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]incompatible_bazel_test_exec_run_under` default: "false"
:   If 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`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_dont_enable_host_nonhost_crosstool_features` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_enable_apple_toolchain_resolution` default: "false"
:   Use toolchain resolution to select the Apple SDK for apple rules (Starlark and native)

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_remove_legacy_whole_archive` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_strip_executable_safely` default: "false"
:   If true, strip action for executables will use flag -x, which does not break dynamic symbol resolution.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]interface_shared_objects` default: "true"
:   Use interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ios_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--macos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--minimum_os_version=<a string>` default: see description
:   The minimum OS version which your compilation targets.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_mappings=<a main workspace-relative path>` default: ""
:   The 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`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`immutable`](#metadata_tag_IMMUTABLE)

`--platforms=<a build target label>` default: ""
:   The labels of the platform rules describing the target platforms for the current command.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--python_path=<a string>` default: see description
:   The absolute path of the Python interpreter invoked to run Python targets on the target platform. Deprecated; disabled by --incompatible_use_python_toolchains.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--python_top=<a build target label>` default: see description
:   The label of a py_runtime representing the Python interpreter invoked to run Python targets on the target platform. Deprecated; disabled by --incompatible_use_python_toolchains.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--tvos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xcode_version=<a string>` default: see description
:   If specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xcode_version_config=<a build target label>` default: "@bazel_tools//tools/cpp:host_xcodes"
:   The label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that control the output of the command:

`--[no]apple_generate_dsym` default: "false"
:   Whether to generate debug symbol(.dSYM) file(s).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]build_runfile_links` default: "true"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_runfile_manifests` default: "true"
:   If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_test_dwp` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cc_proto_library_header_suffixes=<comma-separated set of options>` default: ".pb.h"
:   Sets the suffixes of header files that a cc_proto_library creates.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--cc_proto_library_source_suffixes=<comma-separated set of options>` default: ".pb.cc"
:   Sets the suffixes of source files that a cc_proto_library creates.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_proto_descriptor_sets_include_source_info` default: "false"
:   Run extra actions for alternative Java api versions in a proto_library.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_save_feature_state` default: "false"
:   Save the state of enabled and requested feautres as an output of compilation.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--fission=<a set of compilation modes>` default: "no"
:   Specifies which compilation modes use fission for C++ compilations and links. May be any combination of &lcub;'fastbuild', 'dbg', 'opt'&rcub; or the special values 'yes' to enable all modes and 'no' to disable all modes.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_always_include_files_in_data` default: "true"
:   If true, native rules add &lt;code&gt;DefaultInfo.files&lt;/code&gt; of data dependencies to their runfiles, which matches the recommended behavior for Starlark rules (https://bazel.build/extending/rules#runfiles_features_to_avoid).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_compact_repo_mapping_manifest` default: "false"
:   If enabled, the &lt;binary&gt;.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`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_filegroup_runfiles_for_data` default: "false"
:   If true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]legacy_external_runfiles` default: "false"
:   If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]objc_generate_linkmap` default: "false"
:   Specifies whether to generate a linkmap file.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]save_temps` default: "false"
:   If 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`](#effect_tag_AFFECTS_OUTPUTS)

Options that let the user configure the intended output, affecting its value, as opposed to its existence:

`--action_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   Specifies the set of environment variables available to actions with target configuration. Variables can be either specified by &lt;code&gt;name&lt;/code&gt;, in which case
    the value will be taken from the invocation environment, or by the &lt;code&gt;name=value&lt;/code&gt; pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.
    &lt;br&gt;
    Note that unless &lt;code&gt;--incompatible_repo_env_ignores_action_env&lt;/code&gt; is true, all &lt;code&gt;name=value&lt;/code&gt; pairs will be available to repository rules.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=<comma-separated set of options>` default: ""
:   Allowed values for the --cpu flag.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]android_databinding_use_androidx` default: "true"
:   Generate AndroidX-compatible data-binding files. This is only used with databinding v2. This flag is a no-op.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]android_databinding_use_v3_4_args` default: "true"
:   Use android databinding v2 with 3.4.0 argument. This flag is a no-op.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--android_dynamic_mode=<off, default or fully>` default: "off"
:   Determines 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`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_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`](#effect_tag_ACTION_COMMAND_LINES), [`execution`](#effect_tag_EXECUTION)

`--[no]android_resource_shrinking` default: "false"
:   Enables resource shrinking for android_binary APKs that use ProGuard.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]build_python_zip` default: "auto"
:   Build python executable zip; on on Windows, off on other platforms

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--catalyst_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple Catalyst binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]collect_code_coverage` default: "false"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compilation_mode=<fastbuild, dbg or opt>` [`-c`] default: "fastbuild"
:   Specify the mode the binary will be built in. Values: 'fastbuild', 'dbg', 'opt'.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--conlyopt=<a string>` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--copt=<a string>` multiple uses are accumulated
:   Additional options to pass to gcc.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cpu=<a string>` default: ""
:   The target CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cs_fdo_absolute_path=<a string>` default: see description
:   Use 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cs_fdo_instrument=<a string>` default: see description
:   Generate 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cs_fdo_profile=<a build target label>` default: see description
:   The cs_fdo_profile representing the context sensitive profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cxxopt=<a string>` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--define=<a 'name=value' assignment>` multiple uses are accumulated
:   Each --define option specifies an assignment for a build variable. In case of multiple values for a variable, the last one wins.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--dynamic_mode=<off, default or fully>` default: "default"
:   Determines 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`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_propeller_optimize_absolute_paths` default: "true"
:   If set, any use of absolute paths for propeller optimize will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_remaining_fdo_absolute_paths` default: "true"
:   If set, any use of absolute paths for FDO will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_runfiles` default: "auto"
:   Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_action_listener=<a build target label>` multiple uses are accumulated
:   Deprecated in favor of aspects. Use action_listener to attach an extra_action to existing build actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_compress_java_resources` default: "false"
:   Compress Java resources in APKs

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_databinding_v2` default: "true"
:   Use android databinding v2. This flag is a no-op.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_resource_shrinking` default: "false"
:   Enables resource shrinking for android_binary APKs that use ProGuard.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_rewrite_dexes_with_rex` default: "false"
:   use rex tool to rewrite dex files

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_collect_code_coverage_for_generated_files` default: "false"
:   If specified, Bazel will also generate collect coverage information for generated files.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_objc_fastbuild_options=<comma-separated list of options>` default: "-O0,-DDEBUG=1"
:   Uses these strings as objc fastbuild compiler options.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]experimental_omitfp` default: "false"
:   If true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_output_paths=<off, content or strip>` default: "off"
:   Which 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 https://github.com/bazelbuild/bazel/issues/6526 for details. Starlark actions canopt into path mapping by adding the key 'supports-path-mapping' to the 'execution_requirements' dict.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)

`--experimental_override_name_platform_in_output_dir=<a 'label=value' assignment>` multiple uses are accumulated
:   Each entry should be of the form label=value where label refers to a platform and values is the desired shortname to use in the output path. Only used when --experimental_platform_in_output_dir is true. Has highest naming priority.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_platform_in_output_dir` default: "false"
:   If 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 --platforms option 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_heuristic is set, use a shortname based off the current platform Label. Finally, a hash of the platform option is used as a last resort.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_py_binaries_include_label` default: "false"
:   py_binary targets include their label even when stamping is disabled.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_llvm_covmap` default: "false"
:   If specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_platforms_in_output_dir_legacy_heuristic` default: "true"
:   Please 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`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--fdo_instrument=<a string>` default: see description
:   Generate 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_optimize=<a string>` default: see description
:   Use 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_prefetch_hints=<a build target label>` default: see description
:   Use cache prefetch hints.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_profile=<a build target label>` default: see description
:   The fdo_profile representing the profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones. See also --host_features

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]force_pic` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_action_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   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, or by the name=value pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_compilation_mode=<fastbuild, dbg or opt>` default: "opt"
:   Specify the mode the tools used during the build will be built in. Values: 'fastbuild', 'dbg', 'opt'.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_conlyopt=<a string>` multiple uses are accumulated
:   Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_copt=<a string>` multiple uses are accumulated
:   Additional options to pass to the C compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cpu=<a string>` default: ""
:   The host CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cxxopt=<a string>` multiple uses are accumulated
:   Additional options to pass to C++ compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_force_python=<PY2 or PY3>` default: see description
:   Overrides the Python version for the exec configuration. Can be "PY2" or "PY3".

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_linkopt=<a string>` multiple uses are accumulated
:   Additional option to pass to linker when linking tools in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_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`](#effect_tag_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>` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_auto_exec_groups` default: "false"
:   When 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 https://github.com/bazelbuild/bazel/issues/17134.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_merge_genfiles_directory` default: "true"
:   If true, the genfiles directory is folded into the bin directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]instrument_test_targets` default: "false"
:   When 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`](#effect_tag_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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ios_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible iOS version for target simulators and devices. If unspecified, uses 'ios_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--ios_multi_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]legacy_whole_archive` default: "true"
:   Deprecated, superseded by --incompatible_remove_legacy_whole_archive (see https://github.com/bazelbuild/bazel/issues/7362 for details). When on, use --whole-archive for cc_binary rules that have linkshared=True and either linkstatic=True or '-static' in linkopts. This is for backwards compatibility only. A better alternative is to use alwayslink=1 where required.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`deprecated`](#metadata_tag_DEPRECATED)

`--linkopt=<a string>` multiple uses are accumulated
:   Additional option to pass to gcc when linking.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltobackendopt=<a string>` multiple uses are accumulated
:   Additional option to pass to the LTO backend step (under --features=thin_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltoindexopt=<a string>` multiple uses are accumulated
:   Additional option to pass to the LTO indexing step (under --features=thin_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--macos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple macOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--macos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible macOS version for targets. If unspecified, uses 'macos_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--memprof_profile=<a build target label>` default: see description
:   Use memprof profile.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]objc_debug_with_GLIBCXX` default: "false"
:   If set, and compilation mode is set to 'dbg', define GLIBCXX_DEBUG, GLIBCXX_DEBUG_PEDANTIC and GLIBCPP_CONCEPT_CHECKS.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]objc_enable_binary_stripping` default: "false"
:   Whether 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_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--objccopt=<a string>` multiple uses are accumulated
:   Additional options to pass to gcc when compiling Objective-C/C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_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>` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_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>` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_suffix=<a string>` default: see description
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--propeller_optimize=<a build target label>` default: see description
:   Use 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_profile

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--propeller_optimize_absolute_cc_profile=<a string>` default: see description
:   Absolute path name of cc_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--propeller_optimize_absolute_ld_profile=<a string>` default: see description
:   Absolute path name of ld_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--run_under=<a prefix in front of command>` default: see description
:   Prefix 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: 'valgrind', 'strace', 'strace -c', 'valgrind --quiet --num-callers=20', '//package:target', '//package:target --options'.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]share_native_deps` default: "true"
:   If true, native libraries that contain identical functionality will be shared among different targets

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]stamp` default: "false"
:   Stamp binaries with the date, username, hostname, workspace information, etc.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--strip=<always, sometimes or never>` default: "sometimes"
:   Specifies whether to strip binaries and shared libraries (using "-Wl,--strip-debug"). The default value of 'sometimes' means strip iff --compilation_mode=fastbuild.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--stripopt=<a string>` multiple uses are accumulated
:   Additional options to pass to strip when generating a '&lt;name&gt;.stripped' binary.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--tvos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple tvOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--tvos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible tvOS version for target simulators and devices. If unspecified, uses 'tvos_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--visionos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple visionOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple watchOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible watchOS version for target simulators and devices. If unspecified, uses 'watchos_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xbinary_fdo=<a build target label>` default: see description
:   Use 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Options that affect how strictly Bazel enforces valid build inputs (rule definitions, flag combinations, etc.):

`--[no]check_licenses` default: "false"
:   Check that licensing constraints imposed by dependent packages do not conflict with distribution modes of the targets being built. By default, licenses are not checked.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]check_visibility` default: "true"
:   If disabled, visibility errors in target dependencies are demoted to warnings.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]desugar_for_android` default: "true"
:   Whether to desugar Java 8 bytecode before dexing.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--[no]desugar_java8_libs` default: "false"
:   Whether to include supported Java 8 libraries in apps for legacy devices.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]enforce_constraints` default: "true"
:   Checks the environments each target is compatible with and reports errors if any target has dependencies that don't support the same environments

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]experimental_check_desugar_deps` default: "true"
:   Whether to double-check correct desugaring at Android binary level.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_import_deps_checking=<a string>` default: see description
:   No-op, kept only for backwards compatibility

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_one_version_enforcement=<off, warning or error>` default: "OFF"
:   When 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_strict_java_deps=<off, warn, error, strict or default>` default: "default"
:   If true, checks that a Java target explicitly declares all directly used targets as dependencies.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--[no]incompatible_check_testonly_for_output_files` default: "false"
:   If 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`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_check_visibility_for_toolchains` default: "false"
:   If enabled, visibility checking also applies to toolchain implementations.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disable_native_android_rules` default: "false"
:   If enabled, direct usage of the native Android rules is disabled. Please use the Starlark Android rules from https://github.com/bazelbuild/rules_android

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disable_native_apple_binary_rule` default: "false"
:   No-op. Kept here for backwards compatibility.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_python_disable_py2` default: "true"
:   If true, using Python 2 settings will cause an error. This includes python_version=PY2, srcs_version=PY2, and srcs_version=PY2ONLY. See https://github.com/bazelbuild/bazel/issues/15684 for more information.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]one_version_enforcement_on_java_tests` default: "true"
:   When 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--python_native_rules_allowlist=<a build target label>` default: see description
:   An allowlist (package_group target) to use when enforcing --incompatible_python_disallow_native_rules.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]strict_filesets` default: "false"
:   If this option is enabled, filesets crossing package boundaries are reported as errors.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--strict_proto_deps=<off, warn, error, strict or default>` default: "error"
:   Unless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--strict_public_imports=<off, warn, error, strict or default>` default: "off"
:   Unless OFF, checks that a proto_library target explicitly declares all targets used in 'import public' as exported.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]strict_system_includes` default: "false"
:   If true, headers found through system include paths (-isystem) are also required to be declared.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--target_environment=<a build target label>` multiple uses are accumulated
:   Declares 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.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that affect the signing outputs of a build:

`--apk_signing_method=<v1, v2, v1_v2 or v4>` default: "v1_v2"
:   Implementation to use to sign APKs

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]device_debug_entitlements` default: "true"
:   If set, and compilation mode is not 'opt', objc apps will include debug entitlements when signing.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--ios_signing_cert_name=<a string>` default: see description
:   Certificate name to use for iOS signing. If not set will fall back to provisioning profile. May be the certificate's keychain identity preference or (substring) of the certificate's common name, as per codesign's man page (SIGNING IDENTITIES).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_disallow_legacy_py_provider` default: "true"
:   No-op, will be removed soon.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disallow_sdk_frameworks_attributes` default: "false"
:   If true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library andobjc_import.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_objc_alwayslink_by_default` default: "false"
:   If true, make the default value true for alwayslink attributes in objc_library and objc_import.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_python_disallow_native_rules` default: "false"
:   When true, an error occurs when using the builtin py\_\* rules; instead the rule_python rules should be used. See https://github.com/bazelbuild/bazel/issues/17773 for more information and migration instructions.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

Options that govern the behavior of the test environment or test runner:

`--[no]allow_analysis_failures` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--analysis_testing_deps_limit=<an integer>` default: "2000"
:   Sets 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`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]break_build_on_parallel_dex2oat_failure` default: "false"
:   If true dex2oat action failures will cause the build to break instead of executing dex2oat during test runtime.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--default_test_resources=<a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100>` multiple uses are accumulated
:   Override the default resources amount for tests. The expected format is &lt;resource&gt;=&lt;value&gt;. If a single positive number is specified as &lt;value&gt; 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 [-|\*]&lt;float&gt; (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.

`--[no]experimental_android_use_parallel_dex2oat` default: "false"
:   Use dex2oat in parallel to possibly speed up android_test.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]ios_memleaks` default: "false"
:   Enable checking for memory leaks in ios_test targets.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--ios_simulator_device=<a string>` default: see description
:   The device to simulate when running an iOS application in the simulator, e.g. 'iPhone 6'. You can get a list of devices by running 'xcrun simctl list devicetypes' on the machine the simulator will be run on.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--ios_simulator_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   The version of iOS to run on the simulator when running or testing. This is ignored for ios_test rules if a target device is specified in the rule.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--runs_per_test=<a positive integer or test_regex@runs. This flag may be passed more than once>` multiple uses 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.

`--test_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   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. This option can be used multiple times to specify several variables. Used only by the 'bazel test' command.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--test_timeout=<a single integer or comma-separated list of 4 integers>` default: "-1"
:   Override 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.

`--[no]zip_undeclared_test_outputs` default: "false"
:   If true, undeclared test outputs will be archived in a zip file.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

Options that trigger optimizations of the build time:

`--[no]experimental_filter_library_jar_with_program_jar` default: "false"
:   Filter the ProGuard ProgramJar to remove any classes also present in the LibraryJar.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_inmemory_dotd_files` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_inmemory_jdeps_files` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_retain_test_configuration_across_testonly` default: "true"
:   When 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`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_starlark_cc_import` default: "false"
:   If enabled, the Starlark version of cc_import can be used.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_unsupported_and_brittle_include_scanning` default: "false"
:   Whether 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.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]incremental_dexing` default: "true"
:   Does most of the work for dexing separately for each Jar file.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--[no]objc_use_dotd_pruning` default: "true"
:   If set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]process_headers_in_dependencies` default: "false"
:   When building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]trim_test_configuration` default: "true"
:   When 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`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

Options that affect the verbosity, format or location of logging:

`--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_output`](#effect_tag_TERMINAL_OUTPUT)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--flag_alias=<a 'name=value' flag alias>` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form "&lt;key&gt;=&lt;value&gt;" as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]incompatible_default_to_explicit_init_py` default: "false"
:   This flag changes the default behavior so that \__init\_\_.py files are no longer automatically created in the runfiles of Python targets. Precisely, when a py_binary or py_test target has legacy_create_init set to "auto" (the default), it is treated as false if and only if this flag is set. See https://github.com/bazelbuild/bazel/issues/10076.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_py2_outputs_are_suffixed` default: "true"
:   If true, targets built in the Python 2 configuration will appear under an output root that includes the suffix '-py2', while targets built for Python 3 will appear in a root with no Python-related suffix. This means that the `bazel-bin` convenience symlink will point to Python 3 targets rather than Python 2. If you enable this option it is also recommended to enable `--incompatible_py3_is_default`.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_py3_is_default` default: "true"
:   If true, `py_binary` and `py_test` targets that do not set their `python_version` (or `default_python_version`) attribute will default to PY3 rather than to PY2. If you set this flag it is also recommended to set `--incompatible_py2_outputs_are_suffixed`.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_use_python_toolchains` default: "true"
:   If set to true, executable native Python rules will use the Python runtime specified by the Python toolchain, rather than the runtime given by legacy flags like --python_top.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--python_version=<PY2 or PY3>` default: see description
:   The Python major version mode, either `PY2` or `PY3`. Note that this is overridden by `py_binary` and `py_test` targets (even if they don't explicitly specify a version) so there is usually not much reason to supply this flag.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Miscellaneous options, not otherwise categorized.:

`--[no]cache_test_results` [`-t`] default: "auto"
:   If set to 'auto', Bazel reruns a test if and only if: (1) Bazel detects changes in the test or its dependencies, (2) the test is marked as external, (3) multiple test runs were requested with --runs_per_test, or(4) the test previously failed. If set to 'yes', Bazel caches all test results except for tests marked as external. If set to 'no', Bazel does not cache any test results.

`--[no]experimental_cancel_concurrent_tests` default: "never"
:   If 'on_failed' or 'on_passed, then Blaze will cancel concurrently running tests on the first run with that result. This is only useful in combination with --runs_per_test_detects_flakes.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_fetch_all_coverage_outputs` default: "false"
:   If true, then Bazel fetches the entire coverage data directory for each test during a coverage run.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_generate_llvm_lcov` default: "false"
:   If true, coverage for clang will generate an LCOV report.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_j2objc_header_map` default: "true"
:   Whether to generate J2ObjC header map in parallel of J2ObjC transpilation.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_j2objc_shorter_header_path` default: "false"
:   Whether to generate with shorter header path (uses "\_ios" instead of "\_j2objc").

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_java_classpath=<off, javabuilder, bazel or bazel_no_fallback>` default: "javabuilder"
:   Enables reduced classpaths for Java compilations.

`--[no]experimental_java_header_compilation_direct_deps` default: "false"
:   Use separate outputs for header and regular compilation.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_limit_android_lint_to_android_constrained_java` default: "false"
:   No-op, kept only for backwards compatibility

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_run_android_lint_on_java_rules` default: "false"
:   Whether to validate java\_\* sources.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]explicit_java_test_deps` default: "false"
:   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.

`--host_java_launcher=<a build target label>` default: see description
:   The Java launcher used by tools that are executed during a build.

`--host_javacopt=<a string>` multiple uses are accumulated
:   Additional options to pass to javac when building tools that are executed during a build.

`--host_jvmopt=<a string>` multiple uses 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.

`--[no]incompatible_check_sharding_support` default: "true"
:   If true, Bazel will fail a sharded test if the test runner does not indicate that it supports sharding by touching the file at the path in TEST_SHARD_STATUS_FILE. If false, a test runner that does not support sharding will lead to all tests running in each shard.

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_exclusive_test_sandboxed` default: "true"
:   If true, exclusive tests will run with sandboxed strategy. Add 'local' tag to force an exclusive test run locally

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_strict_action_env` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--j2objc_translation_flags=<comma-separated list of options>` multiple uses are accumulated
:   Additional options to pass to the J2ObjC tool.

`--java_debug`
:   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.

`--[no]java_deps` default: "true"
:   Generate dependency information (for now, compile-time classpath) per Java target.

`--[no]java_header_compilation` default: "true"
:   Compile ijars directly from source.

`--java_language_version=<a string>` default: ""
:   The Java language version

`--java_launcher=<a build target label>` default: see description
:   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.

`--java_runtime_version=<a string>` default: "local_jdk"
:   The Java runtime version

`--javacopt=<a string>` multiple uses are accumulated
:   Additional options to pass to javac.

`--jvmopt=<a string>` multiple uses 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.

`--legacy_main_dex_list_generator=<a build target label>` default: see description
:   Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.

`--optimizing_dexer=<a build target label>` default: see description
:   Specifies a binary to use to do dexing without sharding.

`--plugin=<a build target label>` multiple uses are accumulated
:   Plugins to use in the build. Currently works with java_plugin.

`--proguard_top=<a build target label>` default: see description
:   Specifies which version of ProGuard to use for code removal when building a Java binary.

`--proto_compiler=<a build target label>` default: "@bazel_tools//tools/proto:protoc"
:   The label of the proto-compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]proto_profile` default: "true"
:   Whether to pass profile_path to the proto compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_profile_path=<a build target label>` default: see description
:   The 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`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_toolchain_for_cc=<a build target label>` default: "@bazel_tools//tools/proto:cc_toolchain"
:   Label of proto_lang_toolchain() which describes how to compile C++ protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_toolchain_for_j2objc=<a build target label>` default: "@bazel_tools//tools/j2objc:j2objc_proto_toolchain"
:   Label of proto_lang_toolchain() which describes how to compile j2objc protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_toolchain_for_java=<a build target label>` default: "@bazel_tools//tools/proto:java_toolchain"
:   Label of proto_lang_toolchain() which describes how to compile Java protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_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 protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--protocopt=<a string>` multiple uses are accumulated
:   Additional options to pass to the protobuf compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]runs_per_test_detects_flakes` default: "false"
:   If true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.

`--shell_executable=<a path>` default: see description
:   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). Note that using a shell that is not compatible with bash may lead to build failures or runtime failures of the generated binaries.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--test_arg=<a string>` multiple uses are accumulated
:   Specifies 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.

`--test_filter=<a string>` default: see description
:   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.

`--test_result_expiration=<an integer>` default: "-1"
:   This option is deprecated and has no effect.

`--[no]test_runner_fail_fast` default: "false"
:   Forwards 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: 'explicit' to only use sharding if the 'shard_count' BUILD attribute is present. 'disabled' to never use test sharding. 'forced=k' to enforce 'k' shards for testing regardless of the 'shard_count' BUILD attribute.

`--tool_java_language_version=<a string>` default: ""
:   The Java language version used to execute the tools that are needed during a build

`--tool_java_runtime_version=<a string>` default: "remotejdk_11"
:   The Java runtime version used to execute tools during the build

`--[no]use_ijars` default: "true"
:   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 execution:

`--[no]check_up_to_date` default: "false"
:   Don'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:
    [`execution`](#effect_tag_EXECUTION)

`--dynamic_local_execution_delay=<an integer>` default: "1000"
:   How many milliseconds should local execution be delayed, if remote execution was faster during a build at least once?

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--dynamic_local_strategy=<a '[name=]value1[,..,valueN]' assignment>` multiple uses are accumulated
:   The 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`, or`worker,sandboxed,standalone` if `experimental_local_lockfree_output` is set. Takes [mnemonic=]local_strategy[,local_strategy,...]

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--dynamic_remote_strategy=<a '[name=]value1[,..,valueN]' assignment>` multiple uses are accumulated
:   The 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,...]

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--experimental_docker_image=<a string>` default: ""
:   Specify 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 remote_execution_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:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_docker_use_customized_images` default: "true"
:   If 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:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_dynamic_exclude_tools` default: "true"
:   When 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`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--experimental_dynamic_local_load_factor=<a double>` default: "0"
:   Controls 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_cpu_resources flag.
    If this flag is 0, all actions are scheduled locally immediately. If &gt; 0, the amount of actions scheduled locally is limited by the number of CPUs available. If &lt; 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`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--experimental_dynamic_slow_remote_time=<An immutable length of time.>` default: "0"
:   If &gt;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`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--[no]experimental_enable_docker_sandbox` default: "false"
:   Enable Docker-based sandboxing. This option has no effect if Docker is not installed.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_inmemory_sandbox_stashes` default: "false"
:   If 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`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_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, delete sandbox trees as soon as an action completes (causing completion of the action to be delayed). If greater than zero, execute the deletion of such threes on an asynchronous thread pool that has size 1 when the build is running and grows to the size specified by this flag when the server is idle.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)

`--experimental_sandbox_enforce_resources_regexp=<a valid Java regular expression>` default: ""
:   If 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`](#effect_tag_EXECUTION)

`--experimental_sandbox_limits=<a named double, '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">` multiple uses are accumulated
:   If &gt; 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.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--experimental_sandbox_memory_limit_mb=<an integer number of MBs, or "HOST_RAM", optionally followed by [-|*]<float>.>` default: "0"
:   If &gt; 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:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_shrink_worker_pool` default: "false"
:   If 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`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--[no]experimental_split_xml_generation` default: "true"
:   If this flag is set, and a test action does not generate a test.xml file, then Bazel uses a separate action to generate a dummy test.xml file containing the test log. Otherwise, Bazel generates a test.xml as part of the test action.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--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`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--[no]experimental_use_hermetic_linux_sandbox` default: "false"
:   If 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:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_use_semaphore_for_jobs` default: "true"
:   If set to true, additionally use semaphore to limit number of concurrent jobs.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_use_windows_sandbox` default: "false"
:   Use 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:
    [`execution`](#effect_tag_EXECUTION)

`--experimental_windows_sandbox_path=<a string>` default: "BazelSandbox.exe"
:   Path 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:
    [`execution`](#effect_tag_EXECUTION)

`--experimental_worker_allowlist=<comma-separated set of options>` default: see description
:   If non-empty, only allow using persistent workers with the given worker key mnemonic.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--[no]experimental_worker_cancellation` default: "false"
:   If enabled, Bazel may send cancellation requests to workers that support them.

    Tags:
    [`execution`](#effect_tag_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`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--experimental_worker_metrics_poll_interval=<An immutable length of time.>` default: "5s"
:   The interval between collecting worker metrics and possibly attempting evictions. Cannot effectively be less than 1s for performance reasons.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--[no]experimental_worker_multiplex_sandboxing` default: "false"
:   If 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:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_worker_sandbox_hardening` default: "false"
:   If 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:
    [`execution`](#effect_tag_EXECUTION)

`--experimental_worker_sandbox_inmemory_tracking=<a string>` multiple uses are accumulated
:   A 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.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_worker_strict_flagfiles` default: "false"
:   If 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:
    [`execution`](#effect_tag_EXECUTION)

`--genrule_strategy=<comma-separated list of options>` default: ""
:   Specify how to execute genrules. This flag will be phased out. Instead, use --spawn_strategy=&lt;value&gt; to control all actions or --strategy=Genrule=&lt;value&gt; to control genrules only.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]incompatible_sandbox_hermetic_tmp` default: "true"
:   If set to true, each Linux sandbox will have its own dedicated empty directory mounted as /tmp rather than sharing /tmp with the host filesystem. Use --sandbox_add_mount_pair=/tmp to keep seeing the host's /tmp in all sandboxes.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]incompatible_use_new_cgroup_implementation` default: "false"
:   If true, use the new implementation for cgroups. The old implementation only supports the memory controller and ignores the value of --experimental_sandbox_limits.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]internal_spawn_scheduler` default: "true"
:   Placeholder option so that we can tell in Blaze whether the spawn scheduler was enabled.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_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">` [`-j`] default: "auto"
:   The number of concurrent jobs to run. Takes an integer, or a keyword ("auto", "HOST_CPUS", "HOST_RAM"), optionally followed by an operation ([-|\*]&lt;float&gt;) 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`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)

`--[no]keep_going` [`-k`] default: "false"
:   Continue 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`](#effect_tag_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 ([-|\*]&lt;float&gt;) eg. "auto", "HOST_CPUS\*.5". "auto" sets a reasonable default based on host resources. Must be at least 1.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--[no]reuse_sandbox_directories` default: "true"
:   If set to true, directories used by sandboxed non-worker execution may be reused to avoid unnecessary setup costs.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)

`--sandbox_base=<a string>` default: ""
:   Lets 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`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)

`--[no]sandbox_explicit_pseudoterminal` default: "false"
:   Explicitly 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:
    [`execution`](#effect_tag_EXECUTION)

`--sandbox_tmpfs_path=<an absolute path>` multiple uses are accumulated
:   For sandboxed actions, mount an empty, writable directory at this absolute path (if supported by the sandboxing implementation, ignored otherwise).

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)

`--[no]skip_incompatible_explicit_targets` default: "false"
:   Skip 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: https://bazel.build/extending/platforms#skipping-incompatible-targets

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--spawn_strategy=<comma-separated list of options>` default: ""
:   Specify 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:
    [`execution`](#effect_tag_EXECUTION)

`--strategy=<a '[name=]value1[,..,valueN]' assignment>` multiple uses are accumulated
:   Specify 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.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--strategy_regexp=<a '<RegexFilter>=value[,value]' assignment>` multiple uses are accumulated
:   Override which spawn strategy should be used to execute spawn actions that have descriptions matching a certain regex_filter. See --per_file_copt for details onregex_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'.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--worker_extra_flag=<a 'name=value' assignment>` multiple uses are accumulated
:   Extra command-flags that will be passed to worker processes in addition to --persistent_worker, keyed by mnemonic (e.g. --worker_extra_flag=Javac=--debug.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_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">` multiple uses are accumulated
:   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 ([-|\*]&lt;float&gt;) eg. "auto", "HOST_CPUS\*.5". 'auto' calculates a reasonable default based on machine capacity. "=value" sets a default for unspecified mnemonics.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_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">` multiple uses are accumulated
:   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 ([-|\*]&lt;float&gt;) eg. "auto", "HOST_CPUS\*.5". 'auto' calculates a reasonable default based on machine capacity. "=value" sets a default for unspecified mnemonics.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--[no]worker_multiplex` default: "true"
:   If enabled, workers will use multiplexing if they support it.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--[no]worker_quit_after_build` default: "false"
:   If enabled, all workers quit after a build is done.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--[no]worker_sandboxing` default: "false"
:   If 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:
    [`execution`](#effect_tag_EXECUTION)

`--[no]worker_verbose` default: "false"
:   If enabled, prints verbose messages when workers are started, shutdown, ...

Options that control the output of the command:

`--[no]build` default: "true"
:   Execute the build; this is the usual behaviour. Specifying --nobuild causes the build to stop before executing the build actions, returning zero iff the package loading and analysis phases completed successfully; this mode is useful for testing those phases.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]experimental_use_validation_aspect` default: "false"
:   Whether to run validation actions using aspect (for parallelism with tests).

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--output_groups=<comma-separated list of options>` multiple uses are accumulated
:   A 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.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]run_validations` default: "true"
:   Whether to run validation actions as part of the build. See https://bazel.build/extending/rules#validation_actions

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--serialized_frontier_profile=<a string>` default: ""
:   Dump a profile of serialized frontier bytes. Specifies the output path.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

Options that let the user configure the intended output, affecting its value, as opposed to its existence:

`--aspects=<comma-separated list of options>` multiple uses are accumulated
:   Comma-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. &lt;bzl-file-label&gt;%&lt;aspect_name&gt;, for example '//tools:my_def.bzl%my_aspect', where 'my_aspect' is a top-level value from a file tools/my_def.bzl

`--bep_maximum_open_remote_upload_files=<an integer>` default: "-1"
:   Maximum number of open files allowed during BEP artifact upload.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]experimental_convenience_symlinks` default: "normal"
:   This 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 if 'normal' were passed, but don't actually perform any filesystem operations (useful for tools).
    Note that only symlinks whose names are generated by the current value of --symlink_prefix can be affected; if the prefix changes, any pre-existing symlinks will be left alone.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]experimental_convenience_symlinks_bep_event` default: "true"
:   This flag controls whether or not we will post the build eventConvenienceSymlinksIdentified to the BuildEventProtocol. If the value is true, the BuildEventProtocol will have an entry for convenienceSymlinksIdentified, listing all of the convenience symlinks created in your workspace. If false, then the convenienceSymlinksIdentified entry in the BuildEventProtocol will be empty.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--remote_download_all`
:   Downloads all remote outputs to the local machine. This flag is an alias for --remote_download_outputs=all.

`--remote_download_minimal`
:   Does not download any remote build outputs to the local machine. This flag is an alias for --remote_download_outputs=minimal.

`--remote_download_outputs=<all, minimal or toplevel>` default: "toplevel"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--remote_download_symlink_template=<a string>` default: ""
:   Instead 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 &lcub;hash&rcub; and &lcub;size_bytes&rcub; 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--remote_download_toplevel`
:   Only downloads remote outputs of top level targets to the local machine. This flag is an alias for --remote_download_outputs=toplevel.

`--symlink_prefix=<a string>` default: see description
:   The 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Options that affect how strictly Bazel enforces valid build inputs (rule definitions, flag combinations, etc.):

`--[no]experimental_docker_privileged` default: "false"
:   If 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:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_sandboxfs_map_symlink_targets` default: "false"
:   No-op

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`execution`](#effect_tag_EXECUTION)

`--[no]incompatible_legacy_local_fallback` default: "false"
:   If set to true, enables the legacy implicit fallback from sandboxed to local strategy. This flag will eventually default to false and then become a no-op. Use --strategy, --spawn_strategy, or --dynamic_local_strategy to configure fallbacks instead.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--sandbox_add_mount_pair=<a single path or a 'source:target' pair>` multiple uses are accumulated
:   Add additional path pair to mount in sandbox.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--sandbox_block_path=<a string>` multiple uses are accumulated
:   For sandboxed actions, disallow access to this path.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]sandbox_default_allow_network` default: "true"
:   Allow network access by default for actions; this may not work with all sandboxing implementations.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]sandbox_fake_hostname` default: "false"
:   Change the current hostname to 'localhost' for sandboxed actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]sandbox_fake_username` default: "false"
:   Change the current username to 'nobody' for sandboxed actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--sandbox_writable_path=<a string>` multiple uses are accumulated
:   For sandboxed actions, make an existing directory writable in the sandbox (if supported by the sandboxing implementation, ignored otherwise).

    Tags:
    [`execution`](#effect_tag_EXECUTION)

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_config_setting_private_default_visibility` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_enforce_config_setting_visibility` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that govern the behavior of the test environment or test runner:

`--[no]check_tests_up_to_date` default: "false"
:   Don'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`](#effect_tag_EXECUTION)

`--flaky_test_attempts=<a positive integer, the string "default", or test_regex@attempts. This flag may be passed more than once>` multiple uses are accumulated
:   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.

    Tags:
    [`execution`](#effect_tag_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 ([-|\*]&lt;float&gt;) 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:
    [`execution`](#effect_tag_EXECUTION)

`--[no]test_keep_going` default: "true"
:   When 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:
    [`execution`](#effect_tag_EXECUTION)

`--test_strategy=<a string>` default: ""
:   Specifies which strategy to use when running tests.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--test_tmpdir=<a path>` default: see description
:   Specifies the base temporary directory for 'bazel test' to use.

Options that trigger optimizations of the build time:

`--cache_computed_file_digests=<a long integer>` default: "50000"
:   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.

`--[no]experimental_cpu_load_scheduling` default: "false"
:   Enables 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. Reccommended to use with --local_resources=cpu=HOST_CPUS

    Tags:
    [`execution`](#effect_tag_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:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_enable_skyfocus` default: "false"
:   If true, enable the use of --experimental_working_set to reduce Bazel's memory footprint for incremental builds. This feature is known as Skyfocus.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--experimental_working_set=<comma-separated list of options>` default: ""
:   The working set for Skyfocus. Specify as comma-separated workspace root-relative paths. This is a stateful flag. Defining a working set persists it for subsequent invocations, until it is redefined with a new set.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--local_cpu_resources=<an integer, or "HOST_CPUS", optionally followed by [-|*]<float>.>` default: "HOST_CPUS"
:   Explicitly set the total number of local CPU cores available to Bazel to spend on build actions executed locally. Takes an integer, or "HOST_CPUS", optionally followed by [-|\*]&lt;float&gt; (eg. HOST_CPUS\*.5 to use half the available CPU cores). By default, ("HOST_CPUS"), Bazel will query system configuration to estimate the number of CPU cores available.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--local_extra_resources=<a named float, 'name=value'>` multiple uses are accumulated
:   Set the number of extra resources available to Bazel. Takes in a string-float pair. Can be used multiple times to specify multiple types of extra resources. Bazel will limit concurrently running actions based on the available extra resources and the extra resources required. Tests can declare the amount of extra resources they need by using a tag of the "resources:&lt;resoucename&gt;:&lt;amount&gt;" format. Available CPU, RAM and resources cannot be set with this flag.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--local_ram_resources=<an integer number of MBs, or "HOST_RAM", optionally followed by [-|*]<float>.>` default: "HOST_RAM\*.67"
:   Explicitly set the total amount of local host RAM (in MB) available to Bazel to spend on build actions executed locally. Takes an integer, or "HOST_RAM", optionally followed by [-|\*]&lt;float&gt; (eg. HOST_RAM\*.5 to use half the available RAM). By default, ("HOST_RAM\*.67"), Bazel will query system configuration to estimate the amount of RAM available and will use 67% of it.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--local_resources=<a named double, '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">` multiple uses are accumulated
:   Set the number of resources available to Bazel. Takes in an assignment to a float or HOST_RAM/HOST_CPUS, optionally followed by [-|\*]&lt;float&gt; (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:&lt;resource name&gt;:&lt;amount&gt;" format. Overrides resources specified by --local\_&lcub;cpu|ram|extra&rcub;\_resources.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

Options that affect the verbosity, format or location of logging:

`--build_event_upload_max_retries=<an integer>` default: "4"
:   The maximum number of times Bazel should retry uploading a build event.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--[no]debug_spawn_scheduler` default: "false"

`--[no]experimental_bep_target_summary` default: "false"
:   Whether to publish TargetSummary events.

`--[no]experimental_build_event_expand_filesets` default: "false"
:   If true, expand Filesets in the BEP when presenting output files.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]experimental_build_event_fully_resolve_fileset_symlinks` default: "false"
:   If true, fully resolve relative Fileset symlinks in the BEP when presenting output files. Requires --experimental_build_event_expand_filesets.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_build_event_output_group_mode=<an output group name followed by an OutputGroupFileMode, e.g. default=both>` multiple uses are accumulated
:   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=both

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_build_event_upload_retry_minimum_delay=<An immutable length of time.>` default: "1s"
:   Initial, minimum delay for exponential backoff retries when BEP upload fails. (exponent: 1.6)

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--experimental_build_event_upload_strategy=<a string>` default: see description
:   Selects how to upload artifacts referenced in the build event protocol.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]experimental_docker_verbose` default: "false"
:   If enabled, Bazel will print more verbose messages about the Docker sandbox strategy.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_materialize_param_files_directly` default: "false"
:   If materializing param files, do so with direct writes to disk.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--experimental_repository_resolved_file=<a string>` default: ""
:   If non-empty, write a Starlark value with the resolved information of all Starlark repository rules that were executed.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]experimental_run_bep_event_include_residue` default: "false"
:   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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_skyfocus_dump_keys=<none, count or verbose>` default: "none"
:   For debugging Skyfocus. Dump the focused SkyKeys (roots, leafs, focused deps, focused rdeps).

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]experimental_skyfocus_dump_post_gc_stats` default: "false"
:   For debugging Skyfocus. If enabled, trigger manual GC before/after focusing to report heap sizes reductions. This will increase the Skyfocus latency.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--experimental_skyfocus_handling_strategy=<strict or warn>` default: "strict"
:   Strategies for Skyfocus to handle changes outside of the working set.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--[no]experimental_stream_log_file_uploads` default: "false"
:   Stream log file uploads directly to the remote storage rather than writing them to disk.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--explain=<a path>` default: see description
:   Causes the build system to explain each executed step of the build. The explanation is written to the specified log file.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]ignore_unsupported_sandboxing` default: "false"
:   Do not print a warning when sandboxed execution is not supported on this system.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]legacy_important_outputs` default: "false"
:   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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]materialize_param_files` default: "false"
:   Writes 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:
    [`execution`](#effect_tag_EXECUTION)

`--max_config_changes_to_show=<an integer>` default: "3"
:   When 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--max_test_output_bytes=<an integer>` default: "-1"
:   Specifies 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`](#effect_tag_TEST_RUNNER), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT), [`execution`](#effect_tag_EXECUTION)

`--output_filter=<a valid Java regular expression>` default: see description
:   Only shows warnings and action outputs for rules with a name matching the provided regular expression.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--progress_report_interval=<an integer in 0-3600 range>` default: "0"
:   The 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--remote_print_execution_messages=<failure, success or all>` default: "failure"
:   Choose 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]sandbox_debug` default: "false"
:   Enables 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--show_result=<an integer>` default: "1"
:   Show 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]subcommands` [`-s`] default: "false"
:   Display 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--test_output=<summary, errors, all or streamed>` default: "summary"
:   Specifies 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,
    - `errors` to also print test logs for failed tests,
    - `all` to print summaries and logs for all tests and
    - `streamed` to output logs for all tests in real time (this will force tests to be
    executed locally one at a time regardless of `--test_strategy` value).

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT), [`execution`](#effect_tag_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;
    - `short` to list all tests that ran to completion.
    - `short_uncached` to list tests that ran to completion, omitting cached tests.
    - `terse` to list only failed and flaky tests.
    - `detailed` to list tests that ran to completion and their test cases.
    - `detailed_uncached` to list tests that ran to completion and their test cases,
    omitting cached tests.
    - `testcase` to print summary in test case resolution without detailed information about
    failed test cases.
    - `none` to omit the summary.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]verbose_explanations` default: "false"
:   Increases the verbosity of the explanations issued if --explain is enabled. Has no effect if --explain is not enabled.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]verbose_failures` default: "false"
:   If a command fails, print out the full command line.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--aspects_parameters=<a 'name=value' assignment>` multiple uses are accumulated
:   Specifies the values of the command-line aspects parameters. Each parameter value is specified via &lt;param_name&gt;=&lt;param_value&gt;, 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.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--target_pattern_file=<a string>` default: ""
:   If 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_inputs`](#effect_tag_CHANGES_INPUTS)

Remote caching and execution options:

`--experimental_circuit_breaker_strategy=<failure>` default: see description
:   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:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_remote_cache_chunking` default: "false"
:   If 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:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_remote_cache_compression_threshold=<an integer>` default: "100"
:   The minimum blob size required to compress/decompress with zstd. Ineffectual unless --remote_cache_compression is set.

`--experimental_remote_cache_eviction_retries=<an integer>` default: "5"
:   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 non-zero value will implicitly set --incompatible_remote_use_new_exit_code_for_lost_inputs to true. A new invocation id will be generated for each attempt. If you generate invocation id and provide it to Bazel with --invocation_id, you should not use this flag. Instead, set flag --incompatible_remote_use_new_exit_code_for_lost_inputs and check for the exit code 39.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_remote_cache_lease_extension` default: "false"
:   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`.

`--experimental_remote_cache_ttl=<An immutable length of time.>` default: "3h"
:   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:
    [`execution`](#effect_tag_EXECUTION)

`--experimental_remote_capture_corrupted_outputs=<a path>` default: see description
:   A path to a directory where the corrupted outputs will be captured to.

`--[no]experimental_remote_discard_merkle_trees` default: "true"
:   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.

`--experimental_remote_downloader=<a string>` default: see description
:   A Remote Asset API endpoint URI, to be used as a remote download proxy. The supported schemas are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no schema is provided Bazel will default to grpcs. See: https://github.com/bazelbuild/remote-apis/blob/master/build/bazel/remote/asset/v1/remote_asset.proto

`--[no]experimental_remote_downloader_local_fallback` default: "false"
:   Whether to fall back to the local downloader if remote downloader fails.

`--[no]experimental_remote_downloader_propagate_credentials` default: "false"
:   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:&lt;url-index&gt;:&lt;header-key&gt;` qualifier where the `&lt;url-index&gt;` 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.

`--[no]experimental_remote_execution_keepalive` default: "false"
:   Whether to use keepalive for remote execution calls.

`--experimental_remote_failure_rate_threshold=<an integer in 0-100 range>` default: "10"
:   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:
    [`execution`](#effect_tag_EXECUTION)

`--experimental_remote_failure_window_interval=<An immutable length of time.>` default: "60s"
:   The 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:
    [`execution`](#effect_tag_EXECUTION)

`--[no]experimental_remote_mark_tool_inputs` default: "false"
:   If set to true, Bazel will mark inputs as tool inputs for the remote executor. This can be used to implement remote persistent workers.

`--[no]experimental_remote_merkle_tree_cache` default: "false"
:   If set to true, Merkle tree calculations will be memoized to improve the remote cache hit checking speed. The memory foot print of the cache is controlled by --experimental_remote_merkle_tree_cache_size.

`--experimental_remote_merkle_tree_cache_size=<a long integer>` default: "1000"
:   The number of Merkle trees to memoize to improve the remote cache hit checking speed. Even though the cache is automatically pruned according to Java's handling of soft references, out-of-memory errors can occur if set too high. If set to 0 the cache size is unlimited. Optimal value varies depending on project's size. Default to 1000.

`--experimental_remote_output_service=<a string>` default: see description
:   HOST or HOST:PORT of a remote output service endpoint. The supported schemas are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no schema is provided Bazel will default to grpcs. Specify grpc:// or unix: schema to disable TLS.

`--experimental_remote_output_service_output_path_prefix=<a string>` default: ""
:   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.

`--[no]experimental_remote_require_cached` default: "false"
:   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.

`--experimental_remote_scrubbing_config=<Converts to a Scrubber>` default: see description
:   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) and --incompatible_strict_action_env (to normalize environment variables).

`--[no]guard_against_concurrent_changes` default: "lite"
:   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:
    [`execution`](#effect_tag_EXECUTION)

`--[no]incompatible_remote_local_fallback_for_remote_cache` default: "false"
:   Whether --remote_local_fallback applies to --remote_cache.

`--[no]incompatible_remote_use_new_exit_code_for_lost_inputs` default: "true"
:   If set to true, Bazel will use new exit code 39 instead of 34 if remote cacheerrors, including cache evictions, cause the build to fail.

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]remote_accept_cached` default: "true"
:   Whether to accept remotely cached action results.

`--remote_build_event_upload=<all or minimal>` default: "minimal"
:   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'.

`--remote_bytestream_uri_prefix=<a string>` default: see description
:   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 "$&lcub;hostname&rcub;/$&lcub;instance_name&rcub;".

`--remote_cache=<a string>` default: see description
:   A URI of a caching endpoint. The supported schemas are http, https, grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no schema is provided Bazel will default to grpcs. Specify grpc://, http:// or unix: schema to disable TLS. See https://bazel.build/remote/caching

`--[no]remote_cache_async` default: "true"
:   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.

`--[no]remote_cache_compression` default: "false"
:   If enabled, compress/decompress cache blobs with zstd when their size is at least --experimental_remote_cache_compression_threshold.

`--remote_cache_header=<a 'name=value' assignment>` multiple uses are accumulated
:   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.

`--remote_default_exec_properties=<a 'name=value' assignment>` multiple uses 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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--remote_default_platform_properties=<a string>` default: ""
:   Set the default platform properties to be set for the remote execution API, if the execution platform does not already set remote_execution_properties. This value will also be used if the host platform is selected as the execution platform for remote execution.

`--remote_download_regex=<a valid Java regular expression>` multiple uses are accumulated
:   Force 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.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--remote_downloader_header=<a 'name=value' assignment>` multiple uses are accumulated
:   Specify 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.

`--remote_exec_header=<a 'name=value' assignment>` multiple uses 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.

`--remote_execution_priority=<an integer>` default: "0"
:   The relative priority of actions to be executed remotely. The semantics of the particular priority values are server-dependent.

`--remote_executor=<a string>` default: see description
:   HOST or HOST:PORT of a remote execution endpoint. The supported schemas are grpc, grpcs (grpc with TLS enabled) and unix (local UNIX sockets). If no schema is provided Bazel will default to grpcs. Specify grpc:// or unix: schema to disable TLS.

`--remote_grpc_log=<a path>` default: see description
:   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).

`--remote_header=<a 'name=value' assignment>` multiple uses are accumulated
:   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.

`--remote_instance_name=<a string>` default: ""
:   Value to pass as instance_name in the remote execution API.

`--[no]remote_local_fallback` default: "false"
:   Whether to fall back to standalone local execution strategy if remote execution fails.

`--remote_local_fallback_strategy=<a string>` default: "local"
:   Deprecated. See https://github.com/bazelbuild/bazel/issues/7480 for details.

`--remote_max_concurrency_per_connection=<an integer>` default: "100"
:   Limit the max number of concurrent requests per gRPC connection. By default the value is 100.

    Tags:
    [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--remote_max_connections=<an integer>` default: "100"
:   Limit 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_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--remote_proxy=<a string>` default: see description
:   Connect to the remote cache through a proxy. Currently this flag can only be used to configure a Unix domain socket (unix:/path/to/socket).

`--remote_result_cache_priority=<an integer>` default: "0"
:   The relative priority of remote actions to be stored in remote cache. The semantics of the particular priority values are server-dependent.

`--remote_retries=<an integer>` default: "5"
:   The maximum number of attempts to retry a transient error. If set to 0, retries are disabled.

`--remote_retry_max_delay=<An immutable length of time.>` default: "5s"
:   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.

`--remote_timeout=<An immutable length of time.>` default: "60s"
:   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.

`--[no]remote_upload_local_results` default: "true"
:   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.

`--[no]remote_verify_downloads` default: "true"
:   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.

Miscellaneous options, not otherwise categorized.:

`--[no]allow_analysis_cache_discard` default: "true"
:   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_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--auto_output_filter=<none, all, packages or subpackages>` default: "none"
:   If --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)'.

`--[no]build_manual_tests` default: "false"
:   Forces test targets tagged 'manual' to be built. 'manual' tests are excluded from processing. This option forces them to be built (but not executed).

`--build_tag_filters=<comma-separated list of options>` default: ""
:   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'

`--[no]build_tests_only` default: "false"
:   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.

`--combined_report=<none or lcov>` default: "none"
:   Specifies desired cumulative coverage report type. At this point only LCOV is supported.

`--[no]compile_one_dependency` default: "false"
:   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.

`--deleted_packages=<comma-separated list of package names>` multiple uses are accumulated
:   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.

`--[no]discard_analysis_cache` default: "false"
:   Discard the analysis cache immediately after the analysis phase completes. Reduces memory usage by ~10%, but makes further incremental builds slower.

`--disk_cache=<a path>` default: see description
:   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.

`--embed_label=<a one-line string>` default: ""
:   Embed source control revision or release label in binary

`--execution_log_binary_file=<a path>` default: see description
:   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. 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).

`--execution_log_compact_file=<a path>` default: see description
:   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. 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).

`--execution_log_json_file=<a path>` default: see description
:   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. 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).

`--[no]execution_log_sort` default: "true"
:   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.

`--[no]expand_test_suites` default: "true"
:   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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_disk_cache_gc_idle_delay=<An immutable length of time.>` default: "5m"
:   How 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.

`--experimental_disk_cache_gc_max_age=<An immutable length of time.>` default: "0"
:   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>` default: ""
:   Deprecated in favor of aspects. Filters set of targets to schedule extra_actions for.

`--[no]experimental_extra_action_top_level_only` default: "false"
:   Deprecated in favor of aspects. Only schedules extra_actions for top level targets.

`--experimental_spawn_scheduler`
:   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=&lt;mnemonic&gt;=dynamic` flags instead.

`--[no]fetch` default: "true"
:   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.

`--local_termination_grace_seconds=<an integer>` default: "15"
:   Time to wait between terminating a local process due to timeout and forcefully shutting it down.

`--package_path=<colon-separated list of options>` default: "%workspace%"
:   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'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

`--test_lang_filters=<comma-separated list of options>` default: ""
:   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.

`--test_size_filters=<comma-separated list of values: small, medium, large, or enormous>` default: ""
:   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.

`--test_tag_filters=<comma-separated list of options>` default: ""
:   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.

`--test_timeout_filters=<comma-separated list of values: short, moderate, long, or eternal>` default: ""
:   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.

`--workspace_status_command=<path>` default: ""
:   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.

Options that control build execution:

`--[no]experimental_inprocess_symlink_creation` default: "true"
:   Whether to make direct filesystem calls to create symlink trees instead of delegating to a helper process.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_persistent_aar_extractor` default: "false"
:   Enable persistent aar extractor by using workers.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_remotable_source_manifests` default: "false"
:   Whether to make source manifest actions remotable

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_split_coverage_postprocessing` default: "false"
:   If true, then Bazel will run coverage postprocessing for test in a new spawn.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_strict_fileset_output` default: "false"
:   If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]incompatible_modify_execution_info_additive` default: "false"
:   When enabled, passing multiple --modify_execution_info flags is additive. When disabled, only the last flag is taken into account.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--modify_execution_info=<regex=[+-]key,regex=[+-]key,...>` multiple uses are accumulated
:   Add 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,.\*=+z' adds 'x' and 'z' to, and removes 'y' from, the execution info for all actions.
    'Genrule=+requires-x' adds 'requires-x' to the execution info for all Genrule actions.
    '(?!Genrule).\*=-requires-x' removes 'requires-x' from the execution info for all non-Genrule actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--persistent_android_dex_desugar`
:   Enable persistent Android dex and desugar actions by using workers.

`--persistent_android_resource_processor`
:   Enable persistent Android resource processor by using workers.

`--persistent_multiplex_android_dex_desugar`
:   Enable persistent multiplexed Android dex and desugar actions by using workers.

`--persistent_multiplex_android_resource_processor`
:   Enable persistent multiplexed Android resource processor by using workers.

`--persistent_multiplex_android_tools`
:   Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).

`--[no]use_target_platform_for_tests` default: "false"
:   If true, then Bazel will use the target platform for running tests rather than the test exec group.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

Options that configure the toolchain used for action execution:

`--android_compiler=<a string>` default: see description
:   The Android target compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--android_manifest_merger=<legacy, android or force_android>` default: "android"
:   Selects the manifest merger to use for android_binary rules. Flag to help thetransition to the Android manifest merger from the legacy merger.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--android_platforms=<a build target label>` default: ""
:   Sets 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`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--apple_crosstool_top=<a build target label>` default: "@bazel_tools//tools/cpp:toolchain"
:   The label of the crosstool package to be used in Apple and Objc rules and their dependencies.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--cc_output_directory_tag=<a string>` default: ""
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compiler=<a string>` default: see description
:   The C++ compiler to use for compiling the target.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)

`--coverage_output_generator=<a build target label>` default: "@bazel_tools//tools/test:lcov_merger"
:   Location of the binary that is used to postprocess raw coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//tools/test:lcov_merger'.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--coverage_report_generator=<a build target label>` default: "@bazel_tools//tools/test:coverage_report_generator"
:   Location of the binary that is used to generate coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//tools/test:coverage_report_generator'.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--coverage_support=<a build target label>` default: "@bazel_tools//tools/test:coverage_support"
:   Location 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`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--custom_malloc=<a build target label>` default: see description
:   Specifies a custom malloc implementation. This setting overrides malloc attributes in build rules.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_add_exec_constraints_to_targets=<a '<RegexFilter>=<label1>[,<label2>,...]' assignment>` multiple uses are accumulated
:   List of comma-separated regular expressions, each optionally prefixed by - (negative expression), assigned (=) to a list of comma-separated constraint value targets. If a target matches no negative expression and at least one positive expression its toolchain resolution will be performed as if it had declared the constraint values as execution constraints. Example: //demo,-test=@platforms//cpus:x86_64 will add 'x86_64' to any target under //demo except for those whose name contains 'test'.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_include_xcode_execution_requirements` default: "false"
:   If set, add a "requires-xcode:&lcub;version&rcub;" execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a "requires-xcode-label:&lcub;version_label&rcub;" execution requirement.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_prefer_mutual_xcode` default: "true"
:   If 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`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--extra_execution_platforms=<comma-separated list of options>` default: ""
:   The 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:
    [`execution`](#effect_tag_EXECUTION)

`--extra_toolchains=<comma-separated list of options>` multiple uses are accumulated
:   The 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().

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--grte_top=<a label>` default: see description
:   A 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`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_compiler=<a string>` default: see description
:   No-op flag. Will be removed in a future release.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)

`--host_grte_top=<a label>` default: see description
:   If specified, this setting overrides the libc top-level directory (--grte_top) for the exec configuration.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_platform=<a build target label>` default: "@bazel_tools//tools:host_platform"
:   The label of a platform rule that describes the host system.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]incompatible_bazel_test_exec_run_under` default: "false"
:   If 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`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_dont_enable_host_nonhost_crosstool_features` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_enable_apple_toolchain_resolution` default: "false"
:   Use toolchain resolution to select the Apple SDK for apple rules (Starlark and native)

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_remove_legacy_whole_archive` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_strip_executable_safely` default: "false"
:   If true, strip action for executables will use flag -x, which does not break dynamic symbol resolution.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]interface_shared_objects` default: "true"
:   Use interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ios_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--macos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--minimum_os_version=<a string>` default: see description
:   The minimum OS version which your compilation targets.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_mappings=<a main workspace-relative path>` default: ""
:   The 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`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`immutable`](#metadata_tag_IMMUTABLE)

`--platforms=<a build target label>` default: ""
:   The labels of the platform rules describing the target platforms for the current command.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--python_path=<a string>` default: see description
:   The absolute path of the Python interpreter invoked to run Python targets on the target platform. Deprecated; disabled by --incompatible_use_python_toolchains.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--python_top=<a build target label>` default: see description
:   The label of a py_runtime representing the Python interpreter invoked to run Python targets on the target platform. Deprecated; disabled by --incompatible_use_python_toolchains.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--tvos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xcode_version=<a string>` default: see description
:   If specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xcode_version_config=<a build target label>` default: "@bazel_tools//tools/cpp:host_xcodes"
:   The label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that control the output of the command:

`--[no]apple_generate_dsym` default: "false"
:   Whether to generate debug symbol(.dSYM) file(s).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]build_runfile_links` default: "true"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_runfile_manifests` default: "true"
:   If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_test_dwp` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cc_proto_library_header_suffixes=<comma-separated set of options>` default: ".pb.h"
:   Sets the suffixes of header files that a cc_proto_library creates.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--cc_proto_library_source_suffixes=<comma-separated set of options>` default: ".pb.cc"
:   Sets the suffixes of source files that a cc_proto_library creates.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_proto_descriptor_sets_include_source_info` default: "false"
:   Run extra actions for alternative Java api versions in a proto_library.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_save_feature_state` default: "false"
:   Save the state of enabled and requested feautres as an output of compilation.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--fission=<a set of compilation modes>` default: "no"
:   Specifies which compilation modes use fission for C++ compilations and links. May be any combination of &lcub;'fastbuild', 'dbg', 'opt'&rcub; or the special values 'yes' to enable all modes and 'no' to disable all modes.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_always_include_files_in_data` default: "true"
:   If true, native rules add &lt;code&gt;DefaultInfo.files&lt;/code&gt; of data dependencies to their runfiles, which matches the recommended behavior for Starlark rules (https://bazel.build/extending/rules#runfiles_features_to_avoid).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_compact_repo_mapping_manifest` default: "false"
:   If enabled, the &lt;binary&gt;.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`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_filegroup_runfiles_for_data` default: "false"
:   If true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]legacy_external_runfiles` default: "false"
:   If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]objc_generate_linkmap` default: "false"
:   Specifies whether to generate a linkmap file.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]save_temps` default: "false"
:   If 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`](#effect_tag_AFFECTS_OUTPUTS)

Options that let the user configure the intended output, affecting its value, as opposed to its existence:

`--action_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   Specifies the set of environment variables available to actions with target configuration. Variables can be either specified by &lt;code&gt;name&lt;/code&gt;, in which case
    the value will be taken from the invocation environment, or by the &lt;code&gt;name=value&lt;/code&gt; pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.
    &lt;br&gt;
    Note that unless &lt;code&gt;--incompatible_repo_env_ignores_action_env&lt;/code&gt; is true, all &lt;code&gt;name=value&lt;/code&gt; pairs will be available to repository rules.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=<comma-separated set of options>` default: ""
:   Allowed values for the --cpu flag.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]android_databinding_use_androidx` default: "true"
:   Generate AndroidX-compatible data-binding files. This is only used with databinding v2. This flag is a no-op.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]android_databinding_use_v3_4_args` default: "true"
:   Use android databinding v2 with 3.4.0 argument. This flag is a no-op.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--android_dynamic_mode=<off, default or fully>` default: "off"
:   Determines 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`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_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`](#effect_tag_ACTION_COMMAND_LINES), [`execution`](#effect_tag_EXECUTION)

`--[no]android_resource_shrinking` default: "false"
:   Enables resource shrinking for android_binary APKs that use ProGuard.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]build_python_zip` default: "auto"
:   Build python executable zip; on on Windows, off on other platforms

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--catalyst_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple Catalyst binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]collect_code_coverage` default: "false"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compilation_mode=<fastbuild, dbg or opt>` [`-c`] default: "fastbuild"
:   Specify the mode the binary will be built in. Values: 'fastbuild', 'dbg', 'opt'.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--conlyopt=<a string>` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--copt=<a string>` multiple uses are accumulated
:   Additional options to pass to gcc.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cpu=<a string>` default: ""
:   The target CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cs_fdo_absolute_path=<a string>` default: see description
:   Use 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cs_fdo_instrument=<a string>` default: see description
:   Generate 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cs_fdo_profile=<a build target label>` default: see description
:   The cs_fdo_profile representing the context sensitive profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cxxopt=<a string>` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--define=<a 'name=value' assignment>` multiple uses are accumulated
:   Each --define option specifies an assignment for a build variable. In case of multiple values for a variable, the last one wins.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--dynamic_mode=<off, default or fully>` default: "default"
:   Determines 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`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_propeller_optimize_absolute_paths` default: "true"
:   If set, any use of absolute paths for propeller optimize will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_remaining_fdo_absolute_paths` default: "true"
:   If set, any use of absolute paths for FDO will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_runfiles` default: "auto"
:   Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_action_listener=<a build target label>` multiple uses are accumulated
:   Deprecated in favor of aspects. Use action_listener to attach an extra_action to existing build actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_compress_java_resources` default: "false"
:   Compress Java resources in APKs

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_databinding_v2` default: "true"
:   Use android databinding v2. This flag is a no-op.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_resource_shrinking` default: "false"
:   Enables resource shrinking for android_binary APKs that use ProGuard.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_rewrite_dexes_with_rex` default: "false"
:   use rex tool to rewrite dex files

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_collect_code_coverage_for_generated_files` default: "false"
:   If specified, Bazel will also generate collect coverage information for generated files.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_objc_fastbuild_options=<comma-separated list of options>` default: "-O0,-DDEBUG=1"
:   Uses these strings as objc fastbuild compiler options.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]experimental_omitfp` default: "false"
:   If true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_output_paths=<off, content or strip>` default: "off"
:   Which 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 https://github.com/bazelbuild/bazel/issues/6526 for details. Starlark actions canopt into path mapping by adding the key 'supports-path-mapping' to the 'execution_requirements' dict.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)

`--experimental_override_name_platform_in_output_dir=<a 'label=value' assignment>` multiple uses are accumulated
:   Each entry should be of the form label=value where label refers to a platform and values is the desired shortname to use in the output path. Only used when --experimental_platform_in_output_dir is true. Has highest naming priority.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_platform_in_output_dir` default: "false"
:   If 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 --platforms option 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_heuristic is set, use a shortname based off the current platform Label. Finally, a hash of the platform option is used as a last resort.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_py_binaries_include_label` default: "false"
:   py_binary targets include their label even when stamping is disabled.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_llvm_covmap` default: "false"
:   If specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_platforms_in_output_dir_legacy_heuristic` default: "true"
:   Please 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`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--fdo_instrument=<a string>` default: see description
:   Generate 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_optimize=<a string>` default: see description
:   Use 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_prefetch_hints=<a build target label>` default: see description
:   Use cache prefetch hints.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_profile=<a build target label>` default: see description
:   The fdo_profile representing the profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones. See also --host_features

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]force_pic` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_action_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   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, or by the name=value pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_compilation_mode=<fastbuild, dbg or opt>` default: "opt"
:   Specify the mode the tools used during the build will be built in. Values: 'fastbuild', 'dbg', 'opt'.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_conlyopt=<a string>` multiple uses are accumulated
:   Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_copt=<a string>` multiple uses are accumulated
:   Additional options to pass to the C compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cpu=<a string>` default: ""
:   The host CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cxxopt=<a string>` multiple uses are accumulated
:   Additional options to pass to C++ compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_force_python=<PY2 or PY3>` default: see description
:   Overrides the Python version for the exec configuration. Can be "PY2" or "PY3".

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_linkopt=<a string>` multiple uses are accumulated
:   Additional option to pass to linker when linking tools in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_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`](#effect_tag_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>` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_auto_exec_groups` default: "false"
:   When 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 https://github.com/bazelbuild/bazel/issues/17134.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_merge_genfiles_directory` default: "true"
:   If true, the genfiles directory is folded into the bin directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]instrument_test_targets` default: "false"
:   When 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`](#effect_tag_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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ios_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible iOS version for target simulators and devices. If unspecified, uses 'ios_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--ios_multi_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]legacy_whole_archive` default: "true"
:   Deprecated, superseded by --incompatible_remove_legacy_whole_archive (see https://github.com/bazelbuild/bazel/issues/7362 for details). When on, use --whole-archive for cc_binary rules that have linkshared=True and either linkstatic=True or '-static' in linkopts. This is for backwards compatibility only. A better alternative is to use alwayslink=1 where required.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`deprecated`](#metadata_tag_DEPRECATED)

`--linkopt=<a string>` multiple uses are accumulated
:   Additional option to pass to gcc when linking.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltobackendopt=<a string>` multiple uses are accumulated
:   Additional option to pass to the LTO backend step (under --features=thin_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltoindexopt=<a string>` multiple uses are accumulated
:   Additional option to pass to the LTO indexing step (under --features=thin_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--macos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple macOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--macos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible macOS version for targets. If unspecified, uses 'macos_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--memprof_profile=<a build target label>` default: see description
:   Use memprof profile.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]objc_debug_with_GLIBCXX` default: "false"
:   If set, and compilation mode is set to 'dbg', define GLIBCXX_DEBUG, GLIBCXX_DEBUG_PEDANTIC and GLIBCPP_CONCEPT_CHECKS.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]objc_enable_binary_stripping` default: "false"
:   Whether 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_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--objccopt=<a string>` multiple uses are accumulated
:   Additional options to pass to gcc when compiling Objective-C/C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_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>` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_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>` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_suffix=<a string>` default: see description
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--propeller_optimize=<a build target label>` default: see description
:   Use 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_profile

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--propeller_optimize_absolute_cc_profile=<a string>` default: see description
:   Absolute path name of cc_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--propeller_optimize_absolute_ld_profile=<a string>` default: see description
:   Absolute path name of ld_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--run_under=<a prefix in front of command>` default: see description
:   Prefix 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: 'valgrind', 'strace', 'strace -c', 'valgrind --quiet --num-callers=20', '//package:target', '//package:target --options'.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]share_native_deps` default: "true"
:   If true, native libraries that contain identical functionality will be shared among different targets

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]stamp` default: "false"
:   Stamp binaries with the date, username, hostname, workspace information, etc.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--strip=<always, sometimes or never>` default: "sometimes"
:   Specifies whether to strip binaries and shared libraries (using "-Wl,--strip-debug"). The default value of 'sometimes' means strip iff --compilation_mode=fastbuild.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--stripopt=<a string>` multiple uses are accumulated
:   Additional options to pass to strip when generating a '&lt;name&gt;.stripped' binary.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--tvos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple tvOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--tvos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible tvOS version for target simulators and devices. If unspecified, uses 'tvos_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--visionos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple visionOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple watchOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible watchOS version for target simulators and devices. If unspecified, uses 'watchos_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xbinary_fdo=<a build target label>` default: see description
:   Use 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Options that affect how strictly Bazel enforces valid build inputs (rule definitions, flag combinations, etc.):

`--[no]check_licenses` default: "false"
:   Check that licensing constraints imposed by dependent packages do not conflict with distribution modes of the targets being built. By default, licenses are not checked.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]check_visibility` default: "true"
:   If disabled, visibility errors in target dependencies are demoted to warnings.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]desugar_for_android` default: "true"
:   Whether to desugar Java 8 bytecode before dexing.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--[no]desugar_java8_libs` default: "false"
:   Whether to include supported Java 8 libraries in apps for legacy devices.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]enforce_constraints` default: "true"
:   Checks the environments each target is compatible with and reports errors if any target has dependencies that don't support the same environments

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]experimental_check_desugar_deps` default: "true"
:   Whether to double-check correct desugaring at Android binary level.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_import_deps_checking=<a string>` default: see description
:   No-op, kept only for backwards compatibility

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_one_version_enforcement=<off, warning or error>` default: "OFF"
:   When 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_strict_java_deps=<off, warn, error, strict or default>` default: "default"
:   If true, checks that a Java target explicitly declares all directly used targets as dependencies.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--[no]incompatible_check_testonly_for_output_files` default: "false"
:   If 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`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_check_visibility_for_toolchains` default: "false"
:   If enabled, visibility checking also applies to toolchain implementations.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disable_native_android_rules` default: "false"
:   If enabled, direct usage of the native Android rules is disabled. Please use the Starlark Android rules from https://github.com/bazelbuild/rules_android

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disable_native_apple_binary_rule` default: "false"
:   No-op. Kept here for backwards compatibility.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_python_disable_py2` default: "true"
:   If true, using Python 2 settings will cause an error. This includes python_version=PY2, srcs_version=PY2, and srcs_version=PY2ONLY. See https://github.com/bazelbuild/bazel/issues/15684 for more information.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]one_version_enforcement_on_java_tests` default: "true"
:   When 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--python_native_rules_allowlist=<a build target label>` default: see description
:   An allowlist (package_group target) to use when enforcing --incompatible_python_disallow_native_rules.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]strict_filesets` default: "false"
:   If this option is enabled, filesets crossing package boundaries are reported as errors.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--strict_proto_deps=<off, warn, error, strict or default>` default: "error"
:   Unless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--strict_public_imports=<off, warn, error, strict or default>` default: "off"
:   Unless OFF, checks that a proto_library target explicitly declares all targets used in 'import public' as exported.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]strict_system_includes` default: "false"
:   If true, headers found through system include paths (-isystem) are also required to be declared.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--target_environment=<a build target label>` multiple uses are accumulated
:   Declares 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.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that affect the signing outputs of a build:

`--apk_signing_method=<v1, v2, v1_v2 or v4>` default: "v1_v2"
:   Implementation to use to sign APKs

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]device_debug_entitlements` default: "true"
:   If set, and compilation mode is not 'opt', objc apps will include debug entitlements when signing.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--ios_signing_cert_name=<a string>` default: see description
:   Certificate name to use for iOS signing. If not set will fall back to provisioning profile. May be the certificate's keychain identity preference or (substring) of the certificate's common name, as per codesign's man page (SIGNING IDENTITIES).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_disallow_legacy_py_provider` default: "true"
:   No-op, will be removed soon.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disallow_sdk_frameworks_attributes` default: "false"
:   If true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library andobjc_import.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_objc_alwayslink_by_default` default: "false"
:   If true, make the default value true for alwayslink attributes in objc_library and objc_import.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_python_disallow_native_rules` default: "false"
:   When true, an error occurs when using the builtin py\_\* rules; instead the rule_python rules should be used. See https://github.com/bazelbuild/bazel/issues/17773 for more information and migration instructions.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

Options that govern the behavior of the test environment or test runner:

`--[no]allow_analysis_failures` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--analysis_testing_deps_limit=<an integer>` default: "2000"
:   Sets 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`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]break_build_on_parallel_dex2oat_failure` default: "false"
:   If true dex2oat action failures will cause the build to break instead of executing dex2oat during test runtime.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--default_test_resources=<a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100>` multiple uses are accumulated
:   Override the default resources amount for tests. The expected format is &lt;resource&gt;=&lt;value&gt;. If a single positive number is specified as &lt;value&gt; 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 [-|\*]&lt;float&gt; (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.

`--[no]experimental_android_use_parallel_dex2oat` default: "false"
:   Use dex2oat in parallel to possibly speed up android_test.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]ios_memleaks` default: "false"
:   Enable checking for memory leaks in ios_test targets.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--ios_simulator_device=<a string>` default: see description
:   The device to simulate when running an iOS application in the simulator, e.g. 'iPhone 6'. You can get a list of devices by running 'xcrun simctl list devicetypes' on the machine the simulator will be run on.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--ios_simulator_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   The version of iOS to run on the simulator when running or testing. This is ignored for ios_test rules if a target device is specified in the rule.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--runs_per_test=<a positive integer or test_regex@runs. This flag may be passed more than once>` multiple uses 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.

`--test_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   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. This option can be used multiple times to specify several variables. Used only by the 'bazel test' command.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--test_timeout=<a single integer or comma-separated list of 4 integers>` default: "-1"
:   Override 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.

`--[no]zip_undeclared_test_outputs` default: "false"
:   If true, undeclared test outputs will be archived in a zip file.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

Options that trigger optimizations of the build time:

`--[no]experimental_filter_library_jar_with_program_jar` default: "false"
:   Filter the ProGuard ProgramJar to remove any classes also present in the LibraryJar.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_inmemory_dotd_files` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_inmemory_jdeps_files` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_retain_test_configuration_across_testonly` default: "true"
:   When 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`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_starlark_cc_import` default: "false"
:   If enabled, the Starlark version of cc_import can be used.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_unsupported_and_brittle_include_scanning` default: "false"
:   Whether 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.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]incremental_dexing` default: "true"
:   Does most of the work for dexing separately for each Jar file.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--[no]objc_use_dotd_pruning` default: "true"
:   If set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]process_headers_in_dependencies` default: "false"
:   When building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]trim_test_configuration` default: "true"
:   When 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`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

Options that affect the verbosity, format or location of logging:

`--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_output`](#effect_tag_TERMINAL_OUTPUT)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--flag_alias=<a 'name=value' flag alias>` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form "&lt;key&gt;=&lt;value&gt;" as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]incompatible_default_to_explicit_init_py` default: "false"
:   This flag changes the default behavior so that \__init\_\_.py files are no longer automatically created in the runfiles of Python targets. Precisely, when a py_binary or py_test target has legacy_create_init set to "auto" (the default), it is treated as false if and only if this flag is set. See https://github.com/bazelbuild/bazel/issues/10076.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_py2_outputs_are_suffixed` default: "true"
:   If true, targets built in the Python 2 configuration will appear under an output root that includes the suffix '-py2', while targets built for Python 3 will appear in a root with no Python-related suffix. This means that the `bazel-bin` convenience symlink will point to Python 3 targets rather than Python 2. If you enable this option it is also recommended to enable `--incompatible_py3_is_default`.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_py3_is_default` default: "true"
:   If true, `py_binary` and `py_test` targets that do not set their `python_version` (or `default_python_version`) attribute will default to PY3 rather than to PY2. If you set this flag it is also recommended to set `--incompatible_py2_outputs_are_suffixed`.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_use_python_toolchains` default: "true"
:   If set to true, executable native Python rules will use the Python runtime specified by the Python toolchain, rather than the runtime given by legacy flags like --python_top.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--python_version=<PY2 or PY3>` default: see description
:   The Python major version mode, either `PY2` or `PY3`. Note that this is overridden by `py_binary` and `py_test` targets (even if they don't explicitly specify a version) so there is usually not much reason to supply this flag.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Miscellaneous options, not otherwise categorized.:

`--[no]cache_test_results` [`-t`] default: "auto"
:   If set to 'auto', Bazel reruns a test if and only if: (1) Bazel detects changes in the test or its dependencies, (2) the test is marked as external, (3) multiple test runs were requested with --runs_per_test, or(4) the test previously failed. If set to 'yes', Bazel caches all test results except for tests marked as external. If set to 'no', Bazel does not cache any test results.

`--[no]experimental_cancel_concurrent_tests` default: "never"
:   If 'on_failed' or 'on_passed, then Blaze will cancel concurrently running tests on the first run with that result. This is only useful in combination with --runs_per_test_detects_flakes.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_fetch_all_coverage_outputs` default: "false"
:   If true, then Bazel fetches the entire coverage data directory for each test during a coverage run.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_generate_llvm_lcov` default: "false"
:   If true, coverage for clang will generate an LCOV report.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_j2objc_header_map` default: "true"
:   Whether to generate J2ObjC header map in parallel of J2ObjC transpilation.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_j2objc_shorter_header_path` default: "false"
:   Whether to generate with shorter header path (uses "\_ios" instead of "\_j2objc").

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_java_classpath=<off, javabuilder, bazel or bazel_no_fallback>` default: "javabuilder"
:   Enables reduced classpaths for Java compilations.

`--[no]experimental_java_header_compilation_direct_deps` default: "false"
:   Use separate outputs for header and regular compilation.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_limit_android_lint_to_android_constrained_java` default: "false"
:   No-op, kept only for backwards compatibility

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_run_android_lint_on_java_rules` default: "false"
:   Whether to validate java\_\* sources.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]explicit_java_test_deps` default: "false"
:   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.

`--host_java_launcher=<a build target label>` default: see description
:   The Java launcher used by tools that are executed during a build.

`--host_javacopt=<a string>` multiple uses are accumulated
:   Additional options to pass to javac when building tools that are executed during a build.

`--host_jvmopt=<a string>` multiple uses 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.

`--[no]incompatible_check_sharding_support` default: "true"
:   If true, Bazel will fail a sharded test if the test runner does not indicate that it supports sharding by touching the file at the path in TEST_SHARD_STATUS_FILE. If false, a test runner that does not support sharding will lead to all tests running in each shard.

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_exclusive_test_sandboxed` default: "true"
:   If true, exclusive tests will run with sandboxed strategy. Add 'local' tag to force an exclusive test run locally

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_strict_action_env` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--j2objc_translation_flags=<comma-separated list of options>` multiple uses are accumulated
:   Additional options to pass to the J2ObjC tool.

`--java_debug`
:   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.

`--[no]java_deps` default: "true"
:   Generate dependency information (for now, compile-time classpath) per Java target.

`--[no]java_header_compilation` default: "true"
:   Compile ijars directly from source.

`--java_language_version=<a string>` default: ""
:   The Java language version

`--java_launcher=<a build target label>` default: see description
:   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.

`--java_runtime_version=<a string>` default: "local_jdk"
:   The Java runtime version

`--javacopt=<a string>` multiple uses are accumulated
:   Additional options to pass to javac.

`--jvmopt=<a string>` multiple uses 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.

`--legacy_main_dex_list_generator=<a build target label>` default: see description
:   Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.

`--optimizing_dexer=<a build target label>` default: see description
:   Specifies a binary to use to do dexing without sharding.

`--plugin=<a build target label>` multiple uses are accumulated
:   Plugins to use in the build. Currently works with java_plugin.

`--proguard_top=<a build target label>` default: see description
:   Specifies which version of ProGuard to use for code removal when building a Java binary.

`--proto_compiler=<a build target label>` default: "@bazel_tools//tools/proto:protoc"
:   The label of the proto-compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]proto_profile` default: "true"
:   Whether to pass profile_path to the proto compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_profile_path=<a build target label>` default: see description
:   The 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`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_toolchain_for_cc=<a build target label>` default: "@bazel_tools//tools/proto:cc_toolchain"
:   Label of proto_lang_toolchain() which describes how to compile C++ protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_toolchain_for_j2objc=<a build target label>` default: "@bazel_tools//tools/j2objc:j2objc_proto_toolchain"
:   Label of proto_lang_toolchain() which describes how to compile j2objc protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_toolchain_for_java=<a build target label>` default: "@bazel_tools//tools/proto:java_toolchain"
:   Label of proto_lang_toolchain() which describes how to compile Java protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_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 protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--protocopt=<a string>` multiple uses are accumulated
:   Additional options to pass to the protobuf compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]runs_per_test_detects_flakes` default: "false"
:   If true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.

`--shell_executable=<a path>` default: see description
:   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). Note that using a shell that is not compatible with bash may lead to build failures or runtime failures of the generated binaries.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--test_arg=<a string>` multiple uses are accumulated
:   Specifies 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.

`--test_filter=<a string>` default: see description
:   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.

`--test_result_expiration=<an integer>` default: "-1"
:   This option is deprecated and has no effect.

`--[no]test_runner_fail_fast` default: "false"
:   Forwards 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: 'explicit' to only use sharding if the 'shard_count' BUILD attribute is present. 'disabled' to never use test sharding. 'forced=k' to enforce 'k' shards for testing regardless of the 'shard_count' BUILD attribute.

`--tool_java_language_version=<a string>` default: ""
:   The Java language version used to execute the tools that are needed during a build

`--tool_java_runtime_version=<a string>` default: "remotejdk_11"
:   The Java runtime version used to execute tools during the build

`--[no]use_ijars` default: "true"
:   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](#build).

Options that control the output of the command:

`--[no]canonicalize_policy` default: "false"
:   Output 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`](#effect_tag_AFFECTS_OUTPUTS), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]experimental_include_default_values` default: "true"
:   Whether Starlark options set to their default values are included in the output.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_config_setting_private_default_visibility` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_enforce_config_setting_visibility` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--for_command=<a string>` default: "build"
:   The command for which the options should be canonicalized.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--invocation_policy=<a string>` default: ""
:   Applies an invocation policy to the options to be canonicalized.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

Miscellaneous options, not otherwise categorized.:

`--deleted_packages=<comma-separated list of package names>` multiple uses are accumulated
:   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.

`--[no]fetch` default: "true"
:   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.

`--package_path=<colon-separated list of options>` default: "%workspace%"
:   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'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

## Clean Options

Inherits all options from [build](#build).

Options that control the output of the command:

`--[no]async` default: "false"
:   If 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_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--[no]expunge` default: "false"
:   If 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_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS)

`--expunge_async`
:   If 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.

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

## Config Options

## Coverage Options

Inherits all options from [test](#test).

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

## Cquery Options

Inherits all options from [test](#test).

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options relating to query output and semantics:

`--aspect_deps=<off, conservative or precise>` default: "conservative"
:   How to resolve aspect dependencies when the output format is one of &lcub;xml,proto,record&rcub;. '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_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]consistent_labels` default: "false"
:   If enabled, every query command emits labels as if by the Starlark &lt;code&gt;str&lt;/code&gt; function applied to a &lt;code&gt;Label&lt;/code&gt; 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]experimental_explicit_aspects` default: "false"
:   aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]graph:factored` default: "true"
:   If 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--graph:node_limit=<an integer>` default: "512"
:   The 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]implicit_deps` default: "true"
:   If 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_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]include_aspects` default: "true"
:   aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]incompatible_package_group_includes_double_slash` default: "true"
:   If enabled, when outputting package_group's `packages` attribute, the leading `//` will not be omitted.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]infer_universe_scope` default: "false"
:   If 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]line_terminator_null` default: "false"
:   Whether each format is terminated with \0 instead of newline.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]nodep_deps` default: "true"
:   If 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_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--output=<a string>` default: "label"
:   The 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--output_file=<a string>` default: ""
:   When 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 &lt;code&gt;bazel query &gt; file&lt;/code&gt;.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:default_values` default: "true"
:   If true, attributes whose value is not explicitly specified in the BUILD file are included; otherwise they are omitted. This option is applicable to --output=proto

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:definition_stack` default: "false"
:   Populate 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:flatten_selects` default: "true"
:   If 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_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]proto:include_attribute_source_aspects` default: "false"
:   Populate 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:include_configurations` default: "true"
:   if enabled, proto output will include information about configurations. When disabled,cquery proto output format resembles query output format.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]proto:include_synthetic_attribute_hash` default: "false"
:   Whether or not to calculate and populate the $internal_attr_hash attribute.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:instantiation_stack` default: "false"
:   Populate the instantiation call stack of each rule. Note that this requires the stack to be present

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:locations` default: "true"
:   Whether to output location information in proto output at all.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--proto:output_rule_attrs=<comma-separated list of options>` default: "all"
:   Comma 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:rule_classes` default: "false"
:   Populate 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:rule_inputs_and_outputs` default: "true"
:   Whether or not to populate the rule_input and rule_output fields.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--query_file=<a string>` default: ""
:   If 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_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]relative_locations` default: "false"
:   If 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--show_config_fragments=<off, direct or transitive>` default: "off"
:   Shows 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--starlark:expr=<a string>` default: ""
:   A 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--starlark:file=<a string>` default: ""
:   The 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]tool_deps` default: "true"
:   Query: 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_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--transitions=<full, lite or none>` default: "none"
:   The format in which cquery will print transition information.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--universe_scope=<comma-separated list of options>` default: ""
:   A 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that control build execution:

`--[no]experimental_inprocess_symlink_creation` default: "true"
:   Whether to make direct filesystem calls to create symlink trees instead of delegating to a helper process.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_persistent_aar_extractor` default: "false"
:   Enable persistent aar extractor by using workers.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_remotable_source_manifests` default: "false"
:   Whether to make source manifest actions remotable

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_split_coverage_postprocessing` default: "false"
:   If true, then Bazel will run coverage postprocessing for test in a new spawn.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_strict_fileset_output` default: "false"
:   If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]incompatible_modify_execution_info_additive` default: "false"
:   When enabled, passing multiple --modify_execution_info flags is additive. When disabled, only the last flag is taken into account.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--modify_execution_info=<regex=[+-]key,regex=[+-]key,...>` multiple uses are accumulated
:   Add 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,.\*=+z' adds 'x' and 'z' to, and removes 'y' from, the execution info for all actions.
    'Genrule=+requires-x' adds 'requires-x' to the execution info for all Genrule actions.
    '(?!Genrule).\*=-requires-x' removes 'requires-x' from the execution info for all non-Genrule actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--persistent_android_dex_desugar`
:   Enable persistent Android dex and desugar actions by using workers.

`--persistent_android_resource_processor`
:   Enable persistent Android resource processor by using workers.

`--persistent_multiplex_android_dex_desugar`
:   Enable persistent multiplexed Android dex and desugar actions by using workers.

`--persistent_multiplex_android_resource_processor`
:   Enable persistent multiplexed Android resource processor by using workers.

`--persistent_multiplex_android_tools`
:   Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).

`--[no]use_target_platform_for_tests` default: "false"
:   If true, then Bazel will use the target platform for running tests rather than the test exec group.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

Options that configure the toolchain used for action execution:

`--android_compiler=<a string>` default: see description
:   The Android target compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--android_manifest_merger=<legacy, android or force_android>` default: "android"
:   Selects the manifest merger to use for android_binary rules. Flag to help thetransition to the Android manifest merger from the legacy merger.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--android_platforms=<a build target label>` default: ""
:   Sets 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`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--apple_crosstool_top=<a build target label>` default: "@bazel_tools//tools/cpp:toolchain"
:   The label of the crosstool package to be used in Apple and Objc rules and their dependencies.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--cc_output_directory_tag=<a string>` default: ""
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compiler=<a string>` default: see description
:   The C++ compiler to use for compiling the target.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)

`--coverage_output_generator=<a build target label>` default: "@bazel_tools//tools/test:lcov_merger"
:   Location of the binary that is used to postprocess raw coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//tools/test:lcov_merger'.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--coverage_report_generator=<a build target label>` default: "@bazel_tools//tools/test:coverage_report_generator"
:   Location of the binary that is used to generate coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//tools/test:coverage_report_generator'.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--coverage_support=<a build target label>` default: "@bazel_tools//tools/test:coverage_support"
:   Location 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`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--custom_malloc=<a build target label>` default: see description
:   Specifies a custom malloc implementation. This setting overrides malloc attributes in build rules.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_add_exec_constraints_to_targets=<a '<RegexFilter>=<label1>[,<label2>,...]' assignment>` multiple uses are accumulated
:   List of comma-separated regular expressions, each optionally prefixed by - (negative expression), assigned (=) to a list of comma-separated constraint value targets. If a target matches no negative expression and at least one positive expression its toolchain resolution will be performed as if it had declared the constraint values as execution constraints. Example: //demo,-test=@platforms//cpus:x86_64 will add 'x86_64' to any target under //demo except for those whose name contains 'test'.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_include_xcode_execution_requirements` default: "false"
:   If set, add a "requires-xcode:&lcub;version&rcub;" execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a "requires-xcode-label:&lcub;version_label&rcub;" execution requirement.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_prefer_mutual_xcode` default: "true"
:   If 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`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--extra_execution_platforms=<comma-separated list of options>` default: ""
:   The 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:
    [`execution`](#effect_tag_EXECUTION)

`--extra_toolchains=<comma-separated list of options>` multiple uses are accumulated
:   The 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().

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--grte_top=<a label>` default: see description
:   A 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`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_compiler=<a string>` default: see description
:   No-op flag. Will be removed in a future release.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)

`--host_grte_top=<a label>` default: see description
:   If specified, this setting overrides the libc top-level directory (--grte_top) for the exec configuration.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_platform=<a build target label>` default: "@bazel_tools//tools:host_platform"
:   The label of a platform rule that describes the host system.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]incompatible_bazel_test_exec_run_under` default: "false"
:   If 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`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_dont_enable_host_nonhost_crosstool_features` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_enable_apple_toolchain_resolution` default: "false"
:   Use toolchain resolution to select the Apple SDK for apple rules (Starlark and native)

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_remove_legacy_whole_archive` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_strip_executable_safely` default: "false"
:   If true, strip action for executables will use flag -x, which does not break dynamic symbol resolution.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]interface_shared_objects` default: "true"
:   Use interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ios_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--macos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--minimum_os_version=<a string>` default: see description
:   The minimum OS version which your compilation targets.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_mappings=<a main workspace-relative path>` default: ""
:   The 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`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`immutable`](#metadata_tag_IMMUTABLE)

`--platforms=<a build target label>` default: ""
:   The labels of the platform rules describing the target platforms for the current command.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--python_path=<a string>` default: see description
:   The absolute path of the Python interpreter invoked to run Python targets on the target platform. Deprecated; disabled by --incompatible_use_python_toolchains.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--python_top=<a build target label>` default: see description
:   The label of a py_runtime representing the Python interpreter invoked to run Python targets on the target platform. Deprecated; disabled by --incompatible_use_python_toolchains.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--tvos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xcode_version=<a string>` default: see description
:   If specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xcode_version_config=<a build target label>` default: "@bazel_tools//tools/cpp:host_xcodes"
:   The label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that control the output of the command:

`--[no]apple_generate_dsym` default: "false"
:   Whether to generate debug symbol(.dSYM) file(s).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]build_runfile_links` default: "true"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_runfile_manifests` default: "true"
:   If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_test_dwp` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cc_proto_library_header_suffixes=<comma-separated set of options>` default: ".pb.h"
:   Sets the suffixes of header files that a cc_proto_library creates.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--cc_proto_library_source_suffixes=<comma-separated set of options>` default: ".pb.cc"
:   Sets the suffixes of source files that a cc_proto_library creates.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_proto_descriptor_sets_include_source_info` default: "false"
:   Run extra actions for alternative Java api versions in a proto_library.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_save_feature_state` default: "false"
:   Save the state of enabled and requested feautres as an output of compilation.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--fission=<a set of compilation modes>` default: "no"
:   Specifies which compilation modes use fission for C++ compilations and links. May be any combination of &lcub;'fastbuild', 'dbg', 'opt'&rcub; or the special values 'yes' to enable all modes and 'no' to disable all modes.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_always_include_files_in_data` default: "true"
:   If true, native rules add &lt;code&gt;DefaultInfo.files&lt;/code&gt; of data dependencies to their runfiles, which matches the recommended behavior for Starlark rules (https://bazel.build/extending/rules#runfiles_features_to_avoid).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_compact_repo_mapping_manifest` default: "false"
:   If enabled, the &lt;binary&gt;.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`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_filegroup_runfiles_for_data` default: "false"
:   If true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]legacy_external_runfiles` default: "false"
:   If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]objc_generate_linkmap` default: "false"
:   Specifies whether to generate a linkmap file.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]save_temps` default: "false"
:   If 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`](#effect_tag_AFFECTS_OUTPUTS)

Options that let the user configure the intended output, affecting its value, as opposed to its existence:

`--action_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   Specifies the set of environment variables available to actions with target configuration. Variables can be either specified by &lt;code&gt;name&lt;/code&gt;, in which case
    the value will be taken from the invocation environment, or by the &lt;code&gt;name=value&lt;/code&gt; pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.
    &lt;br&gt;
    Note that unless &lt;code&gt;--incompatible_repo_env_ignores_action_env&lt;/code&gt; is true, all &lt;code&gt;name=value&lt;/code&gt; pairs will be available to repository rules.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=<comma-separated set of options>` default: ""
:   Allowed values for the --cpu flag.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]android_databinding_use_androidx` default: "true"
:   Generate AndroidX-compatible data-binding files. This is only used with databinding v2. This flag is a no-op.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]android_databinding_use_v3_4_args` default: "true"
:   Use android databinding v2 with 3.4.0 argument. This flag is a no-op.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--android_dynamic_mode=<off, default or fully>` default: "off"
:   Determines 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`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_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`](#effect_tag_ACTION_COMMAND_LINES), [`execution`](#effect_tag_EXECUTION)

`--[no]android_resource_shrinking` default: "false"
:   Enables resource shrinking for android_binary APKs that use ProGuard.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]build_python_zip` default: "auto"
:   Build python executable zip; on on Windows, off on other platforms

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--catalyst_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple Catalyst binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]collect_code_coverage` default: "false"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compilation_mode=<fastbuild, dbg or opt>` [`-c`] default: "fastbuild"
:   Specify the mode the binary will be built in. Values: 'fastbuild', 'dbg', 'opt'.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--conlyopt=<a string>` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--copt=<a string>` multiple uses are accumulated
:   Additional options to pass to gcc.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cpu=<a string>` default: ""
:   The target CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cs_fdo_absolute_path=<a string>` default: see description
:   Use 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cs_fdo_instrument=<a string>` default: see description
:   Generate 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cs_fdo_profile=<a build target label>` default: see description
:   The cs_fdo_profile representing the context sensitive profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cxxopt=<a string>` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--define=<a 'name=value' assignment>` multiple uses are accumulated
:   Each --define option specifies an assignment for a build variable. In case of multiple values for a variable, the last one wins.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--dynamic_mode=<off, default or fully>` default: "default"
:   Determines 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`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_propeller_optimize_absolute_paths` default: "true"
:   If set, any use of absolute paths for propeller optimize will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_remaining_fdo_absolute_paths` default: "true"
:   If set, any use of absolute paths for FDO will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_runfiles` default: "auto"
:   Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_action_listener=<a build target label>` multiple uses are accumulated
:   Deprecated in favor of aspects. Use action_listener to attach an extra_action to existing build actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_compress_java_resources` default: "false"
:   Compress Java resources in APKs

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_databinding_v2` default: "true"
:   Use android databinding v2. This flag is a no-op.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_resource_shrinking` default: "false"
:   Enables resource shrinking for android_binary APKs that use ProGuard.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_rewrite_dexes_with_rex` default: "false"
:   use rex tool to rewrite dex files

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_collect_code_coverage_for_generated_files` default: "false"
:   If specified, Bazel will also generate collect coverage information for generated files.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_objc_fastbuild_options=<comma-separated list of options>` default: "-O0,-DDEBUG=1"
:   Uses these strings as objc fastbuild compiler options.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]experimental_omitfp` default: "false"
:   If true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_output_paths=<off, content or strip>` default: "off"
:   Which 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 https://github.com/bazelbuild/bazel/issues/6526 for details. Starlark actions canopt into path mapping by adding the key 'supports-path-mapping' to the 'execution_requirements' dict.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)

`--experimental_override_name_platform_in_output_dir=<a 'label=value' assignment>` multiple uses are accumulated
:   Each entry should be of the form label=value where label refers to a platform and values is the desired shortname to use in the output path. Only used when --experimental_platform_in_output_dir is true. Has highest naming priority.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_platform_in_output_dir` default: "false"
:   If 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 --platforms option 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_heuristic is set, use a shortname based off the current platform Label. Finally, a hash of the platform option is used as a last resort.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_py_binaries_include_label` default: "false"
:   py_binary targets include their label even when stamping is disabled.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_llvm_covmap` default: "false"
:   If specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_platforms_in_output_dir_legacy_heuristic` default: "true"
:   Please 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`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--fdo_instrument=<a string>` default: see description
:   Generate 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_optimize=<a string>` default: see description
:   Use 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_prefetch_hints=<a build target label>` default: see description
:   Use cache prefetch hints.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_profile=<a build target label>` default: see description
:   The fdo_profile representing the profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones. See also --host_features

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]force_pic` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_action_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   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, or by the name=value pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_compilation_mode=<fastbuild, dbg or opt>` default: "opt"
:   Specify the mode the tools used during the build will be built in. Values: 'fastbuild', 'dbg', 'opt'.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_conlyopt=<a string>` multiple uses are accumulated
:   Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_copt=<a string>` multiple uses are accumulated
:   Additional options to pass to the C compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cpu=<a string>` default: ""
:   The host CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cxxopt=<a string>` multiple uses are accumulated
:   Additional options to pass to C++ compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_force_python=<PY2 or PY3>` default: see description
:   Overrides the Python version for the exec configuration. Can be "PY2" or "PY3".

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_linkopt=<a string>` multiple uses are accumulated
:   Additional option to pass to linker when linking tools in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_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`](#effect_tag_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>` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_auto_exec_groups` default: "false"
:   When 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 https://github.com/bazelbuild/bazel/issues/17134.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_merge_genfiles_directory` default: "true"
:   If true, the genfiles directory is folded into the bin directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]instrument_test_targets` default: "false"
:   When 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`](#effect_tag_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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ios_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible iOS version for target simulators and devices. If unspecified, uses 'ios_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--ios_multi_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]legacy_whole_archive` default: "true"
:   Deprecated, superseded by --incompatible_remove_legacy_whole_archive (see https://github.com/bazelbuild/bazel/issues/7362 for details). When on, use --whole-archive for cc_binary rules that have linkshared=True and either linkstatic=True or '-static' in linkopts. This is for backwards compatibility only. A better alternative is to use alwayslink=1 where required.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`deprecated`](#metadata_tag_DEPRECATED)

`--linkopt=<a string>` multiple uses are accumulated
:   Additional option to pass to gcc when linking.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltobackendopt=<a string>` multiple uses are accumulated
:   Additional option to pass to the LTO backend step (under --features=thin_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltoindexopt=<a string>` multiple uses are accumulated
:   Additional option to pass to the LTO indexing step (under --features=thin_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--macos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple macOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--macos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible macOS version for targets. If unspecified, uses 'macos_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--memprof_profile=<a build target label>` default: see description
:   Use memprof profile.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]objc_debug_with_GLIBCXX` default: "false"
:   If set, and compilation mode is set to 'dbg', define GLIBCXX_DEBUG, GLIBCXX_DEBUG_PEDANTIC and GLIBCPP_CONCEPT_CHECKS.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]objc_enable_binary_stripping` default: "false"
:   Whether 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_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--objccopt=<a string>` multiple uses are accumulated
:   Additional options to pass to gcc when compiling Objective-C/C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_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>` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_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>` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_suffix=<a string>` default: see description
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--propeller_optimize=<a build target label>` default: see description
:   Use 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_profile

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--propeller_optimize_absolute_cc_profile=<a string>` default: see description
:   Absolute path name of cc_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--propeller_optimize_absolute_ld_profile=<a string>` default: see description
:   Absolute path name of ld_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--run_under=<a prefix in front of command>` default: see description
:   Prefix 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: 'valgrind', 'strace', 'strace -c', 'valgrind --quiet --num-callers=20', '//package:target', '//package:target --options'.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]share_native_deps` default: "true"
:   If true, native libraries that contain identical functionality will be shared among different targets

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]stamp` default: "false"
:   Stamp binaries with the date, username, hostname, workspace information, etc.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--strip=<always, sometimes or never>` default: "sometimes"
:   Specifies whether to strip binaries and shared libraries (using "-Wl,--strip-debug"). The default value of 'sometimes' means strip iff --compilation_mode=fastbuild.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--stripopt=<a string>` multiple uses are accumulated
:   Additional options to pass to strip when generating a '&lt;name&gt;.stripped' binary.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--tvos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple tvOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--tvos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible tvOS version for target simulators and devices. If unspecified, uses 'tvos_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--visionos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple visionOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple watchOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible watchOS version for target simulators and devices. If unspecified, uses 'watchos_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xbinary_fdo=<a build target label>` default: see description
:   Use 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Options that affect how strictly Bazel enforces valid build inputs (rule definitions, flag combinations, etc.):

`--[no]check_licenses` default: "false"
:   Check that licensing constraints imposed by dependent packages do not conflict with distribution modes of the targets being built. By default, licenses are not checked.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]check_visibility` default: "true"
:   If disabled, visibility errors in target dependencies are demoted to warnings.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]desugar_for_android` default: "true"
:   Whether to desugar Java 8 bytecode before dexing.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--[no]desugar_java8_libs` default: "false"
:   Whether to include supported Java 8 libraries in apps for legacy devices.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]enforce_constraints` default: "true"
:   Checks the environments each target is compatible with and reports errors if any target has dependencies that don't support the same environments

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]experimental_check_desugar_deps` default: "true"
:   Whether to double-check correct desugaring at Android binary level.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_import_deps_checking=<a string>` default: see description
:   No-op, kept only for backwards compatibility

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_one_version_enforcement=<off, warning or error>` default: "OFF"
:   When 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_strict_java_deps=<off, warn, error, strict or default>` default: "default"
:   If true, checks that a Java target explicitly declares all directly used targets as dependencies.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--[no]incompatible_check_testonly_for_output_files` default: "false"
:   If 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`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_check_visibility_for_toolchains` default: "false"
:   If enabled, visibility checking also applies to toolchain implementations.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disable_native_android_rules` default: "false"
:   If enabled, direct usage of the native Android rules is disabled. Please use the Starlark Android rules from https://github.com/bazelbuild/rules_android

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disable_native_apple_binary_rule` default: "false"
:   No-op. Kept here for backwards compatibility.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_python_disable_py2` default: "true"
:   If true, using Python 2 settings will cause an error. This includes python_version=PY2, srcs_version=PY2, and srcs_version=PY2ONLY. See https://github.com/bazelbuild/bazel/issues/15684 for more information.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]one_version_enforcement_on_java_tests` default: "true"
:   When 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--python_native_rules_allowlist=<a build target label>` default: see description
:   An allowlist (package_group target) to use when enforcing --incompatible_python_disallow_native_rules.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]strict_filesets` default: "false"
:   If this option is enabled, filesets crossing package boundaries are reported as errors.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--strict_proto_deps=<off, warn, error, strict or default>` default: "error"
:   Unless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--strict_public_imports=<off, warn, error, strict or default>` default: "off"
:   Unless OFF, checks that a proto_library target explicitly declares all targets used in 'import public' as exported.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]strict_system_includes` default: "false"
:   If true, headers found through system include paths (-isystem) are also required to be declared.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--target_environment=<a build target label>` multiple uses are accumulated
:   Declares 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.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that affect the signing outputs of a build:

`--apk_signing_method=<v1, v2, v1_v2 or v4>` default: "v1_v2"
:   Implementation to use to sign APKs

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]device_debug_entitlements` default: "true"
:   If set, and compilation mode is not 'opt', objc apps will include debug entitlements when signing.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--ios_signing_cert_name=<a string>` default: see description
:   Certificate name to use for iOS signing. If not set will fall back to provisioning profile. May be the certificate's keychain identity preference or (substring) of the certificate's common name, as per codesign's man page (SIGNING IDENTITIES).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_disallow_legacy_py_provider` default: "true"
:   No-op, will be removed soon.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disallow_sdk_frameworks_attributes` default: "false"
:   If true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library andobjc_import.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_objc_alwayslink_by_default` default: "false"
:   If true, make the default value true for alwayslink attributes in objc_library and objc_import.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_python_disallow_native_rules` default: "false"
:   When true, an error occurs when using the builtin py\_\* rules; instead the rule_python rules should be used. See https://github.com/bazelbuild/bazel/issues/17773 for more information and migration instructions.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

Options that govern the behavior of the test environment or test runner:

`--[no]allow_analysis_failures` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--analysis_testing_deps_limit=<an integer>` default: "2000"
:   Sets 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`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]break_build_on_parallel_dex2oat_failure` default: "false"
:   If true dex2oat action failures will cause the build to break instead of executing dex2oat during test runtime.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--default_test_resources=<a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100>` multiple uses are accumulated
:   Override the default resources amount for tests. The expected format is &lt;resource&gt;=&lt;value&gt;. If a single positive number is specified as &lt;value&gt; 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 [-|\*]&lt;float&gt; (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.

`--[no]experimental_android_use_parallel_dex2oat` default: "false"
:   Use dex2oat in parallel to possibly speed up android_test.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]ios_memleaks` default: "false"
:   Enable checking for memory leaks in ios_test targets.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--ios_simulator_device=<a string>` default: see description
:   The device to simulate when running an iOS application in the simulator, e.g. 'iPhone 6'. You can get a list of devices by running 'xcrun simctl list devicetypes' on the machine the simulator will be run on.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--ios_simulator_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   The version of iOS to run on the simulator when running or testing. This is ignored for ios_test rules if a target device is specified in the rule.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--runs_per_test=<a positive integer or test_regex@runs. This flag may be passed more than once>` multiple uses 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.

`--test_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   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. This option can be used multiple times to specify several variables. Used only by the 'bazel test' command.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--test_timeout=<a single integer or comma-separated list of 4 integers>` default: "-1"
:   Override 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.

`--[no]zip_undeclared_test_outputs` default: "false"
:   If true, undeclared test outputs will be archived in a zip file.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

Options that trigger optimizations of the build time:

`--[no]experimental_filter_library_jar_with_program_jar` default: "false"
:   Filter the ProGuard ProgramJar to remove any classes also present in the LibraryJar.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_inmemory_dotd_files` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_inmemory_jdeps_files` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_retain_test_configuration_across_testonly` default: "true"
:   When 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`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_starlark_cc_import` default: "false"
:   If enabled, the Starlark version of cc_import can be used.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_unsupported_and_brittle_include_scanning` default: "false"
:   Whether 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.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]incremental_dexing` default: "true"
:   Does most of the work for dexing separately for each Jar file.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--[no]objc_use_dotd_pruning` default: "true"
:   If set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]process_headers_in_dependencies` default: "false"
:   When building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]trim_test_configuration` default: "true"
:   When 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`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

Options that affect the verbosity, format or location of logging:

`--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_output`](#effect_tag_TERMINAL_OUTPUT)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--flag_alias=<a 'name=value' flag alias>` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form "&lt;key&gt;=&lt;value&gt;" as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]incompatible_default_to_explicit_init_py` default: "false"
:   This flag changes the default behavior so that \__init\_\_.py files are no longer automatically created in the runfiles of Python targets. Precisely, when a py_binary or py_test target has legacy_create_init set to "auto" (the default), it is treated as false if and only if this flag is set. See https://github.com/bazelbuild/bazel/issues/10076.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_py2_outputs_are_suffixed` default: "true"
:   If true, targets built in the Python 2 configuration will appear under an output root that includes the suffix '-py2', while targets built for Python 3 will appear in a root with no Python-related suffix. This means that the `bazel-bin` convenience symlink will point to Python 3 targets rather than Python 2. If you enable this option it is also recommended to enable `--incompatible_py3_is_default`.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_py3_is_default` default: "true"
:   If true, `py_binary` and `py_test` targets that do not set their `python_version` (or `default_python_version`) attribute will default to PY3 rather than to PY2. If you set this flag it is also recommended to set `--incompatible_py2_outputs_are_suffixed`.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_use_python_toolchains` default: "true"
:   If set to true, executable native Python rules will use the Python runtime specified by the Python toolchain, rather than the runtime given by legacy flags like --python_top.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--python_version=<PY2 or PY3>` default: see description
:   The Python major version mode, either `PY2` or `PY3`. Note that this is overridden by `py_binary` and `py_test` targets (even if they don't explicitly specify a version) so there is usually not much reason to supply this flag.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Miscellaneous options, not otherwise categorized.:

`--[no]cache_test_results` [`-t`] default: "auto"
:   If set to 'auto', Bazel reruns a test if and only if: (1) Bazel detects changes in the test or its dependencies, (2) the test is marked as external, (3) multiple test runs were requested with --runs_per_test, or(4) the test previously failed. If set to 'yes', Bazel caches all test results except for tests marked as external. If set to 'no', Bazel does not cache any test results.

`--[no]experimental_cancel_concurrent_tests` default: "never"
:   If 'on_failed' or 'on_passed, then Blaze will cancel concurrently running tests on the first run with that result. This is only useful in combination with --runs_per_test_detects_flakes.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_fetch_all_coverage_outputs` default: "false"
:   If true, then Bazel fetches the entire coverage data directory for each test during a coverage run.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_generate_llvm_lcov` default: "false"
:   If true, coverage for clang will generate an LCOV report.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_j2objc_header_map` default: "true"
:   Whether to generate J2ObjC header map in parallel of J2ObjC transpilation.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_j2objc_shorter_header_path` default: "false"
:   Whether to generate with shorter header path (uses "\_ios" instead of "\_j2objc").

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_java_classpath=<off, javabuilder, bazel or bazel_no_fallback>` default: "javabuilder"
:   Enables reduced classpaths for Java compilations.

`--[no]experimental_java_header_compilation_direct_deps` default: "false"
:   Use separate outputs for header and regular compilation.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_limit_android_lint_to_android_constrained_java` default: "false"
:   No-op, kept only for backwards compatibility

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_run_android_lint_on_java_rules` default: "false"
:   Whether to validate java\_\* sources.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]explicit_java_test_deps` default: "false"
:   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.

`--host_java_launcher=<a build target label>` default: see description
:   The Java launcher used by tools that are executed during a build.

`--host_javacopt=<a string>` multiple uses are accumulated
:   Additional options to pass to javac when building tools that are executed during a build.

`--host_jvmopt=<a string>` multiple uses 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.

`--[no]incompatible_check_sharding_support` default: "true"
:   If true, Bazel will fail a sharded test if the test runner does not indicate that it supports sharding by touching the file at the path in TEST_SHARD_STATUS_FILE. If false, a test runner that does not support sharding will lead to all tests running in each shard.

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_exclusive_test_sandboxed` default: "true"
:   If true, exclusive tests will run with sandboxed strategy. Add 'local' tag to force an exclusive test run locally

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_strict_action_env` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--j2objc_translation_flags=<comma-separated list of options>` multiple uses are accumulated
:   Additional options to pass to the J2ObjC tool.

`--java_debug`
:   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.

`--[no]java_deps` default: "true"
:   Generate dependency information (for now, compile-time classpath) per Java target.

`--[no]java_header_compilation` default: "true"
:   Compile ijars directly from source.

`--java_language_version=<a string>` default: ""
:   The Java language version

`--java_launcher=<a build target label>` default: see description
:   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.

`--java_runtime_version=<a string>` default: "local_jdk"
:   The Java runtime version

`--javacopt=<a string>` multiple uses are accumulated
:   Additional options to pass to javac.

`--jvmopt=<a string>` multiple uses 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.

`--legacy_main_dex_list_generator=<a build target label>` default: see description
:   Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.

`--optimizing_dexer=<a build target label>` default: see description
:   Specifies a binary to use to do dexing without sharding.

`--plugin=<a build target label>` multiple uses are accumulated
:   Plugins to use in the build. Currently works with java_plugin.

`--proguard_top=<a build target label>` default: see description
:   Specifies which version of ProGuard to use for code removal when building a Java binary.

`--proto_compiler=<a build target label>` default: "@bazel_tools//tools/proto:protoc"
:   The label of the proto-compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]proto_profile` default: "true"
:   Whether to pass profile_path to the proto compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_profile_path=<a build target label>` default: see description
:   The 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`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_toolchain_for_cc=<a build target label>` default: "@bazel_tools//tools/proto:cc_toolchain"
:   Label of proto_lang_toolchain() which describes how to compile C++ protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_toolchain_for_j2objc=<a build target label>` default: "@bazel_tools//tools/j2objc:j2objc_proto_toolchain"
:   Label of proto_lang_toolchain() which describes how to compile j2objc protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_toolchain_for_java=<a build target label>` default: "@bazel_tools//tools/proto:java_toolchain"
:   Label of proto_lang_toolchain() which describes how to compile Java protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_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 protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--protocopt=<a string>` multiple uses are accumulated
:   Additional options to pass to the protobuf compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]runs_per_test_detects_flakes` default: "false"
:   If true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.

`--shell_executable=<a path>` default: see description
:   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). Note that using a shell that is not compatible with bash may lead to build failures or runtime failures of the generated binaries.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--test_arg=<a string>` multiple uses are accumulated
:   Specifies 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.

`--test_filter=<a string>` default: see description
:   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.

`--test_result_expiration=<an integer>` default: "-1"
:   This option is deprecated and has no effect.

`--[no]test_runner_fail_fast` default: "false"
:   Forwards 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: 'explicit' to only use sharding if the 'shard_count' BUILD attribute is present. 'disabled' to never use test sharding. 'forced=k' to enforce 'k' shards for testing regardless of the 'shard_count' BUILD attribute.

`--tool_java_language_version=<a string>` default: ""
:   The Java language version used to execute the tools that are needed during a build

`--tool_java_runtime_version=<a string>` default: "remotejdk_11"
:   The Java runtime version used to execute tools during the build

`--[no]use_ijars` default: "true"
:   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 command:

`--[no]action_cache` default: "false"
:   Dump action cache content.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--memory=<memory mode>` default: see description
:   Dump the memory use of the given Skyframe node.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]packages` default: "false"
:   Dump package cache content.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]rule_classes` default: "false"
:   Dump rule classes.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--[no]rules` default: "false"
:   Dump rules, including counts and memory usage (if memory is tracked).

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

`--skyframe=<off, summary, count, value, deps, rdeps, function_graph, working_set or working_set_frontier_deps>` default: "off"
:   Dump the Skyframe graph.

    Tags:
    [`bazel_monitoring`](#effect_tag_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_monitoring`](#effect_tag_BAZEL_MONITORING)

`--skylark_memory=<a string>` default: see description
:   Dumps a pprof-compatible memory profile to the specified path. To learn more please see https://github.com/google/pprof.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

## Fetch Options

Inherits all options from [test](#test).

Options that control build execution:

`--[no]all` default: "false"
:   Fetches 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_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]keep_going` [`-k`] default: "false"
:   Continue 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`](#effect_tag_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 ([-|\*]&lt;float&gt;) eg. "auto", "HOST_CPUS\*.5". "auto" sets a reasonable default based on host resources. Must be at least 1.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_config_setting_private_default_visibility` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_enforce_config_setting_visibility` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options relating to Bzlmod output and semantics:

`--[no]configure` default: "false"
:   Only fetches repositories marked as 'configure' for system-configuration purpose. Only works when --enable_bzlmod is on.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]force` default: "false"
:   Ignore existing repository if any and force fetch the repository again. Only works when --enable_bzlmod is on.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--repo=<a string>` multiple uses are accumulated
:   Only fetches the specified repository, which can be either &lcub;@apparent_repo_name&rcub; or &lcub;@@canonical_repo_name&rcub;. Only works when --enable_bzlmod is on.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that affect the verbosity, format or location of logging:

`--experimental_repository_resolved_file=<a string>` default: ""
:   If non-empty, write a Starlark value with the resolved information of all Starlark repository rules that were executed.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Miscellaneous options, not otherwise categorized.:

`--deleted_packages=<comma-separated list of package names>` multiple uses are accumulated
:   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.

`--[no]fetch` default: "true"
:   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.

`--package_path=<colon-separated list of options>` default: "%workspace%"
:   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'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

Options that control build execution:

`--[no]experimental_inprocess_symlink_creation` default: "true"
:   Whether to make direct filesystem calls to create symlink trees instead of delegating to a helper process.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_persistent_aar_extractor` default: "false"
:   Enable persistent aar extractor by using workers.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_remotable_source_manifests` default: "false"
:   Whether to make source manifest actions remotable

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_split_coverage_postprocessing` default: "false"
:   If true, then Bazel will run coverage postprocessing for test in a new spawn.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_strict_fileset_output` default: "false"
:   If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]incompatible_modify_execution_info_additive` default: "false"
:   When enabled, passing multiple --modify_execution_info flags is additive. When disabled, only the last flag is taken into account.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--modify_execution_info=<regex=[+-]key,regex=[+-]key,...>` multiple uses are accumulated
:   Add 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,.\*=+z' adds 'x' and 'z' to, and removes 'y' from, the execution info for all actions.
    'Genrule=+requires-x' adds 'requires-x' to the execution info for all Genrule actions.
    '(?!Genrule).\*=-requires-x' removes 'requires-x' from the execution info for all non-Genrule actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--persistent_android_dex_desugar`
:   Enable persistent Android dex and desugar actions by using workers.

`--persistent_android_resource_processor`
:   Enable persistent Android resource processor by using workers.

`--persistent_multiplex_android_dex_desugar`
:   Enable persistent multiplexed Android dex and desugar actions by using workers.

`--persistent_multiplex_android_resource_processor`
:   Enable persistent multiplexed Android resource processor by using workers.

`--persistent_multiplex_android_tools`
:   Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).

`--[no]use_target_platform_for_tests` default: "false"
:   If true, then Bazel will use the target platform for running tests rather than the test exec group.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

Options that configure the toolchain used for action execution:

`--android_compiler=<a string>` default: see description
:   The Android target compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--android_manifest_merger=<legacy, android or force_android>` default: "android"
:   Selects the manifest merger to use for android_binary rules. Flag to help thetransition to the Android manifest merger from the legacy merger.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--android_platforms=<a build target label>` default: ""
:   Sets 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`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--apple_crosstool_top=<a build target label>` default: "@bazel_tools//tools/cpp:toolchain"
:   The label of the crosstool package to be used in Apple and Objc rules and their dependencies.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--cc_output_directory_tag=<a string>` default: ""
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compiler=<a string>` default: see description
:   The C++ compiler to use for compiling the target.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)

`--coverage_output_generator=<a build target label>` default: "@bazel_tools//tools/test:lcov_merger"
:   Location of the binary that is used to postprocess raw coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//tools/test:lcov_merger'.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--coverage_report_generator=<a build target label>` default: "@bazel_tools//tools/test:coverage_report_generator"
:   Location of the binary that is used to generate coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//tools/test:coverage_report_generator'.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--coverage_support=<a build target label>` default: "@bazel_tools//tools/test:coverage_support"
:   Location 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`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--custom_malloc=<a build target label>` default: see description
:   Specifies a custom malloc implementation. This setting overrides malloc attributes in build rules.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_add_exec_constraints_to_targets=<a '<RegexFilter>=<label1>[,<label2>,...]' assignment>` multiple uses are accumulated
:   List of comma-separated regular expressions, each optionally prefixed by - (negative expression), assigned (=) to a list of comma-separated constraint value targets. If a target matches no negative expression and at least one positive expression its toolchain resolution will be performed as if it had declared the constraint values as execution constraints. Example: //demo,-test=@platforms//cpus:x86_64 will add 'x86_64' to any target under //demo except for those whose name contains 'test'.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_include_xcode_execution_requirements` default: "false"
:   If set, add a "requires-xcode:&lcub;version&rcub;" execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a "requires-xcode-label:&lcub;version_label&rcub;" execution requirement.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_prefer_mutual_xcode` default: "true"
:   If 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`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--extra_execution_platforms=<comma-separated list of options>` default: ""
:   The 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:
    [`execution`](#effect_tag_EXECUTION)

`--extra_toolchains=<comma-separated list of options>` multiple uses are accumulated
:   The 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().

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--grte_top=<a label>` default: see description
:   A 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`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_compiler=<a string>` default: see description
:   No-op flag. Will be removed in a future release.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)

`--host_grte_top=<a label>` default: see description
:   If specified, this setting overrides the libc top-level directory (--grte_top) for the exec configuration.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_platform=<a build target label>` default: "@bazel_tools//tools:host_platform"
:   The label of a platform rule that describes the host system.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]incompatible_bazel_test_exec_run_under` default: "false"
:   If 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`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_dont_enable_host_nonhost_crosstool_features` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_enable_apple_toolchain_resolution` default: "false"
:   Use toolchain resolution to select the Apple SDK for apple rules (Starlark and native)

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_remove_legacy_whole_archive` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_strip_executable_safely` default: "false"
:   If true, strip action for executables will use flag -x, which does not break dynamic symbol resolution.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]interface_shared_objects` default: "true"
:   Use interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ios_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--macos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--minimum_os_version=<a string>` default: see description
:   The minimum OS version which your compilation targets.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_mappings=<a main workspace-relative path>` default: ""
:   The 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`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`immutable`](#metadata_tag_IMMUTABLE)

`--platforms=<a build target label>` default: ""
:   The labels of the platform rules describing the target platforms for the current command.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--python_path=<a string>` default: see description
:   The absolute path of the Python interpreter invoked to run Python targets on the target platform. Deprecated; disabled by --incompatible_use_python_toolchains.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--python_top=<a build target label>` default: see description
:   The label of a py_runtime representing the Python interpreter invoked to run Python targets on the target platform. Deprecated; disabled by --incompatible_use_python_toolchains.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--tvos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xcode_version=<a string>` default: see description
:   If specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xcode_version_config=<a build target label>` default: "@bazel_tools//tools/cpp:host_xcodes"
:   The label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that control the output of the command:

`--[no]apple_generate_dsym` default: "false"
:   Whether to generate debug symbol(.dSYM) file(s).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]build_runfile_links` default: "true"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_runfile_manifests` default: "true"
:   If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_test_dwp` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cc_proto_library_header_suffixes=<comma-separated set of options>` default: ".pb.h"
:   Sets the suffixes of header files that a cc_proto_library creates.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--cc_proto_library_source_suffixes=<comma-separated set of options>` default: ".pb.cc"
:   Sets the suffixes of source files that a cc_proto_library creates.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_proto_descriptor_sets_include_source_info` default: "false"
:   Run extra actions for alternative Java api versions in a proto_library.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_save_feature_state` default: "false"
:   Save the state of enabled and requested feautres as an output of compilation.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--fission=<a set of compilation modes>` default: "no"
:   Specifies which compilation modes use fission for C++ compilations and links. May be any combination of &lcub;'fastbuild', 'dbg', 'opt'&rcub; or the special values 'yes' to enable all modes and 'no' to disable all modes.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_always_include_files_in_data` default: "true"
:   If true, native rules add &lt;code&gt;DefaultInfo.files&lt;/code&gt; of data dependencies to their runfiles, which matches the recommended behavior for Starlark rules (https://bazel.build/extending/rules#runfiles_features_to_avoid).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_compact_repo_mapping_manifest` default: "false"
:   If enabled, the &lt;binary&gt;.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`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_filegroup_runfiles_for_data` default: "false"
:   If true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]legacy_external_runfiles` default: "false"
:   If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]objc_generate_linkmap` default: "false"
:   Specifies whether to generate a linkmap file.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]save_temps` default: "false"
:   If 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`](#effect_tag_AFFECTS_OUTPUTS)

Options that let the user configure the intended output, affecting its value, as opposed to its existence:

`--action_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   Specifies the set of environment variables available to actions with target configuration. Variables can be either specified by &lt;code&gt;name&lt;/code&gt;, in which case
    the value will be taken from the invocation environment, or by the &lt;code&gt;name=value&lt;/code&gt; pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.
    &lt;br&gt;
    Note that unless &lt;code&gt;--incompatible_repo_env_ignores_action_env&lt;/code&gt; is true, all &lt;code&gt;name=value&lt;/code&gt; pairs will be available to repository rules.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=<comma-separated set of options>` default: ""
:   Allowed values for the --cpu flag.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]android_databinding_use_androidx` default: "true"
:   Generate AndroidX-compatible data-binding files. This is only used with databinding v2. This flag is a no-op.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]android_databinding_use_v3_4_args` default: "true"
:   Use android databinding v2 with 3.4.0 argument. This flag is a no-op.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--android_dynamic_mode=<off, default or fully>` default: "off"
:   Determines 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`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_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`](#effect_tag_ACTION_COMMAND_LINES), [`execution`](#effect_tag_EXECUTION)

`--[no]android_resource_shrinking` default: "false"
:   Enables resource shrinking for android_binary APKs that use ProGuard.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]build_python_zip` default: "auto"
:   Build python executable zip; on on Windows, off on other platforms

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--catalyst_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple Catalyst binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]collect_code_coverage` default: "false"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compilation_mode=<fastbuild, dbg or opt>` [`-c`] default: "fastbuild"
:   Specify the mode the binary will be built in. Values: 'fastbuild', 'dbg', 'opt'.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--conlyopt=<a string>` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--copt=<a string>` multiple uses are accumulated
:   Additional options to pass to gcc.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cpu=<a string>` default: ""
:   The target CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cs_fdo_absolute_path=<a string>` default: see description
:   Use 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cs_fdo_instrument=<a string>` default: see description
:   Generate 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cs_fdo_profile=<a build target label>` default: see description
:   The cs_fdo_profile representing the context sensitive profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cxxopt=<a string>` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--define=<a 'name=value' assignment>` multiple uses are accumulated
:   Each --define option specifies an assignment for a build variable. In case of multiple values for a variable, the last one wins.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--dynamic_mode=<off, default or fully>` default: "default"
:   Determines 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`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_propeller_optimize_absolute_paths` default: "true"
:   If set, any use of absolute paths for propeller optimize will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_remaining_fdo_absolute_paths` default: "true"
:   If set, any use of absolute paths for FDO will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_runfiles` default: "auto"
:   Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_action_listener=<a build target label>` multiple uses are accumulated
:   Deprecated in favor of aspects. Use action_listener to attach an extra_action to existing build actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_compress_java_resources` default: "false"
:   Compress Java resources in APKs

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_databinding_v2` default: "true"
:   Use android databinding v2. This flag is a no-op.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_resource_shrinking` default: "false"
:   Enables resource shrinking for android_binary APKs that use ProGuard.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_rewrite_dexes_with_rex` default: "false"
:   use rex tool to rewrite dex files

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_collect_code_coverage_for_generated_files` default: "false"
:   If specified, Bazel will also generate collect coverage information for generated files.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_objc_fastbuild_options=<comma-separated list of options>` default: "-O0,-DDEBUG=1"
:   Uses these strings as objc fastbuild compiler options.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]experimental_omitfp` default: "false"
:   If true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_output_paths=<off, content or strip>` default: "off"
:   Which 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 https://github.com/bazelbuild/bazel/issues/6526 for details. Starlark actions canopt into path mapping by adding the key 'supports-path-mapping' to the 'execution_requirements' dict.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)

`--experimental_override_name_platform_in_output_dir=<a 'label=value' assignment>` multiple uses are accumulated
:   Each entry should be of the form label=value where label refers to a platform and values is the desired shortname to use in the output path. Only used when --experimental_platform_in_output_dir is true. Has highest naming priority.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_platform_in_output_dir` default: "false"
:   If 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 --platforms option 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_heuristic is set, use a shortname based off the current platform Label. Finally, a hash of the platform option is used as a last resort.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_py_binaries_include_label` default: "false"
:   py_binary targets include their label even when stamping is disabled.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_llvm_covmap` default: "false"
:   If specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_platforms_in_output_dir_legacy_heuristic` default: "true"
:   Please 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`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--fdo_instrument=<a string>` default: see description
:   Generate 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_optimize=<a string>` default: see description
:   Use 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_prefetch_hints=<a build target label>` default: see description
:   Use cache prefetch hints.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_profile=<a build target label>` default: see description
:   The fdo_profile representing the profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones. See also --host_features

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]force_pic` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_action_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   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, or by the name=value pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_compilation_mode=<fastbuild, dbg or opt>` default: "opt"
:   Specify the mode the tools used during the build will be built in. Values: 'fastbuild', 'dbg', 'opt'.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_conlyopt=<a string>` multiple uses are accumulated
:   Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_copt=<a string>` multiple uses are accumulated
:   Additional options to pass to the C compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cpu=<a string>` default: ""
:   The host CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cxxopt=<a string>` multiple uses are accumulated
:   Additional options to pass to C++ compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_force_python=<PY2 or PY3>` default: see description
:   Overrides the Python version for the exec configuration. Can be "PY2" or "PY3".

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_linkopt=<a string>` multiple uses are accumulated
:   Additional option to pass to linker when linking tools in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_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`](#effect_tag_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>` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_auto_exec_groups` default: "false"
:   When 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 https://github.com/bazelbuild/bazel/issues/17134.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_merge_genfiles_directory` default: "true"
:   If true, the genfiles directory is folded into the bin directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]instrument_test_targets` default: "false"
:   When 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`](#effect_tag_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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ios_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible iOS version for target simulators and devices. If unspecified, uses 'ios_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--ios_multi_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]legacy_whole_archive` default: "true"
:   Deprecated, superseded by --incompatible_remove_legacy_whole_archive (see https://github.com/bazelbuild/bazel/issues/7362 for details). When on, use --whole-archive for cc_binary rules that have linkshared=True and either linkstatic=True or '-static' in linkopts. This is for backwards compatibility only. A better alternative is to use alwayslink=1 where required.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`deprecated`](#metadata_tag_DEPRECATED)

`--linkopt=<a string>` multiple uses are accumulated
:   Additional option to pass to gcc when linking.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltobackendopt=<a string>` multiple uses are accumulated
:   Additional option to pass to the LTO backend step (under --features=thin_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltoindexopt=<a string>` multiple uses are accumulated
:   Additional option to pass to the LTO indexing step (under --features=thin_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--macos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple macOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--macos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible macOS version for targets. If unspecified, uses 'macos_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--memprof_profile=<a build target label>` default: see description
:   Use memprof profile.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]objc_debug_with_GLIBCXX` default: "false"
:   If set, and compilation mode is set to 'dbg', define GLIBCXX_DEBUG, GLIBCXX_DEBUG_PEDANTIC and GLIBCPP_CONCEPT_CHECKS.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]objc_enable_binary_stripping` default: "false"
:   Whether 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_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--objccopt=<a string>` multiple uses are accumulated
:   Additional options to pass to gcc when compiling Objective-C/C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_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>` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_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>` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_suffix=<a string>` default: see description
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--propeller_optimize=<a build target label>` default: see description
:   Use 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_profile

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--propeller_optimize_absolute_cc_profile=<a string>` default: see description
:   Absolute path name of cc_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--propeller_optimize_absolute_ld_profile=<a string>` default: see description
:   Absolute path name of ld_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--run_under=<a prefix in front of command>` default: see description
:   Prefix 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: 'valgrind', 'strace', 'strace -c', 'valgrind --quiet --num-callers=20', '//package:target', '//package:target --options'.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]share_native_deps` default: "true"
:   If true, native libraries that contain identical functionality will be shared among different targets

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]stamp` default: "false"
:   Stamp binaries with the date, username, hostname, workspace information, etc.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--strip=<always, sometimes or never>` default: "sometimes"
:   Specifies whether to strip binaries and shared libraries (using "-Wl,--strip-debug"). The default value of 'sometimes' means strip iff --compilation_mode=fastbuild.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--stripopt=<a string>` multiple uses are accumulated
:   Additional options to pass to strip when generating a '&lt;name&gt;.stripped' binary.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--tvos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple tvOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--tvos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible tvOS version for target simulators and devices. If unspecified, uses 'tvos_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--visionos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple visionOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple watchOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible watchOS version for target simulators and devices. If unspecified, uses 'watchos_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xbinary_fdo=<a build target label>` default: see description
:   Use 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Options that affect how strictly Bazel enforces valid build inputs (rule definitions, flag combinations, etc.):

`--[no]check_licenses` default: "false"
:   Check that licensing constraints imposed by dependent packages do not conflict with distribution modes of the targets being built. By default, licenses are not checked.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]check_visibility` default: "true"
:   If disabled, visibility errors in target dependencies are demoted to warnings.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]desugar_for_android` default: "true"
:   Whether to desugar Java 8 bytecode before dexing.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--[no]desugar_java8_libs` default: "false"
:   Whether to include supported Java 8 libraries in apps for legacy devices.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]enforce_constraints` default: "true"
:   Checks the environments each target is compatible with and reports errors if any target has dependencies that don't support the same environments

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]experimental_check_desugar_deps` default: "true"
:   Whether to double-check correct desugaring at Android binary level.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_import_deps_checking=<a string>` default: see description
:   No-op, kept only for backwards compatibility

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_one_version_enforcement=<off, warning or error>` default: "OFF"
:   When 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_strict_java_deps=<off, warn, error, strict or default>` default: "default"
:   If true, checks that a Java target explicitly declares all directly used targets as dependencies.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--[no]incompatible_check_testonly_for_output_files` default: "false"
:   If 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`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_check_visibility_for_toolchains` default: "false"
:   If enabled, visibility checking also applies to toolchain implementations.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disable_native_android_rules` default: "false"
:   If enabled, direct usage of the native Android rules is disabled. Please use the Starlark Android rules from https://github.com/bazelbuild/rules_android

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disable_native_apple_binary_rule` default: "false"
:   No-op. Kept here for backwards compatibility.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_python_disable_py2` default: "true"
:   If true, using Python 2 settings will cause an error. This includes python_version=PY2, srcs_version=PY2, and srcs_version=PY2ONLY. See https://github.com/bazelbuild/bazel/issues/15684 for more information.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]one_version_enforcement_on_java_tests` default: "true"
:   When 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--python_native_rules_allowlist=<a build target label>` default: see description
:   An allowlist (package_group target) to use when enforcing --incompatible_python_disallow_native_rules.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]strict_filesets` default: "false"
:   If this option is enabled, filesets crossing package boundaries are reported as errors.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--strict_proto_deps=<off, warn, error, strict or default>` default: "error"
:   Unless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--strict_public_imports=<off, warn, error, strict or default>` default: "off"
:   Unless OFF, checks that a proto_library target explicitly declares all targets used in 'import public' as exported.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]strict_system_includes` default: "false"
:   If true, headers found through system include paths (-isystem) are also required to be declared.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--target_environment=<a build target label>` multiple uses are accumulated
:   Declares 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.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that affect the signing outputs of a build:

`--apk_signing_method=<v1, v2, v1_v2 or v4>` default: "v1_v2"
:   Implementation to use to sign APKs

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]device_debug_entitlements` default: "true"
:   If set, and compilation mode is not 'opt', objc apps will include debug entitlements when signing.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--ios_signing_cert_name=<a string>` default: see description
:   Certificate name to use for iOS signing. If not set will fall back to provisioning profile. May be the certificate's keychain identity preference or (substring) of the certificate's common name, as per codesign's man page (SIGNING IDENTITIES).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_disallow_legacy_py_provider` default: "true"
:   No-op, will be removed soon.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disallow_sdk_frameworks_attributes` default: "false"
:   If true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library andobjc_import.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_objc_alwayslink_by_default` default: "false"
:   If true, make the default value true for alwayslink attributes in objc_library and objc_import.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_python_disallow_native_rules` default: "false"
:   When true, an error occurs when using the builtin py\_\* rules; instead the rule_python rules should be used. See https://github.com/bazelbuild/bazel/issues/17773 for more information and migration instructions.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

Options that govern the behavior of the test environment or test runner:

`--[no]allow_analysis_failures` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--analysis_testing_deps_limit=<an integer>` default: "2000"
:   Sets 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`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]break_build_on_parallel_dex2oat_failure` default: "false"
:   If true dex2oat action failures will cause the build to break instead of executing dex2oat during test runtime.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--default_test_resources=<a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100>` multiple uses are accumulated
:   Override the default resources amount for tests. The expected format is &lt;resource&gt;=&lt;value&gt;. If a single positive number is specified as &lt;value&gt; 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 [-|\*]&lt;float&gt; (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.

`--[no]experimental_android_use_parallel_dex2oat` default: "false"
:   Use dex2oat in parallel to possibly speed up android_test.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]ios_memleaks` default: "false"
:   Enable checking for memory leaks in ios_test targets.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--ios_simulator_device=<a string>` default: see description
:   The device to simulate when running an iOS application in the simulator, e.g. 'iPhone 6'. You can get a list of devices by running 'xcrun simctl list devicetypes' on the machine the simulator will be run on.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--ios_simulator_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   The version of iOS to run on the simulator when running or testing. This is ignored for ios_test rules if a target device is specified in the rule.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--runs_per_test=<a positive integer or test_regex@runs. This flag may be passed more than once>` multiple uses 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.

`--test_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   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. This option can be used multiple times to specify several variables. Used only by the 'bazel test' command.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--test_timeout=<a single integer or comma-separated list of 4 integers>` default: "-1"
:   Override 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.

`--[no]zip_undeclared_test_outputs` default: "false"
:   If true, undeclared test outputs will be archived in a zip file.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

Options that trigger optimizations of the build time:

`--[no]experimental_filter_library_jar_with_program_jar` default: "false"
:   Filter the ProGuard ProgramJar to remove any classes also present in the LibraryJar.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_inmemory_dotd_files` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_inmemory_jdeps_files` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_retain_test_configuration_across_testonly` default: "true"
:   When 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`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_starlark_cc_import` default: "false"
:   If enabled, the Starlark version of cc_import can be used.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_unsupported_and_brittle_include_scanning` default: "false"
:   Whether 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.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]incremental_dexing` default: "true"
:   Does most of the work for dexing separately for each Jar file.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--[no]objc_use_dotd_pruning` default: "true"
:   If set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]process_headers_in_dependencies` default: "false"
:   When building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]trim_test_configuration` default: "true"
:   When 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`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

Options that affect the verbosity, format or location of logging:

`--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_output`](#effect_tag_TERMINAL_OUTPUT)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--flag_alias=<a 'name=value' flag alias>` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form "&lt;key&gt;=&lt;value&gt;" as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]incompatible_default_to_explicit_init_py` default: "false"
:   This flag changes the default behavior so that \__init\_\_.py files are no longer automatically created in the runfiles of Python targets. Precisely, when a py_binary or py_test target has legacy_create_init set to "auto" (the default), it is treated as false if and only if this flag is set. See https://github.com/bazelbuild/bazel/issues/10076.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_py2_outputs_are_suffixed` default: "true"
:   If true, targets built in the Python 2 configuration will appear under an output root that includes the suffix '-py2', while targets built for Python 3 will appear in a root with no Python-related suffix. This means that the `bazel-bin` convenience symlink will point to Python 3 targets rather than Python 2. If you enable this option it is also recommended to enable `--incompatible_py3_is_default`.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_py3_is_default` default: "true"
:   If true, `py_binary` and `py_test` targets that do not set their `python_version` (or `default_python_version`) attribute will default to PY3 rather than to PY2. If you set this flag it is also recommended to set `--incompatible_py2_outputs_are_suffixed`.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_use_python_toolchains` default: "true"
:   If set to true, executable native Python rules will use the Python runtime specified by the Python toolchain, rather than the runtime given by legacy flags like --python_top.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--python_version=<PY2 or PY3>` default: see description
:   The Python major version mode, either `PY2` or `PY3`. Note that this is overridden by `py_binary` and `py_test` targets (even if they don't explicitly specify a version) so there is usually not much reason to supply this flag.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Miscellaneous options, not otherwise categorized.:

`--[no]cache_test_results` [`-t`] default: "auto"
:   If set to 'auto', Bazel reruns a test if and only if: (1) Bazel detects changes in the test or its dependencies, (2) the test is marked as external, (3) multiple test runs were requested with --runs_per_test, or(4) the test previously failed. If set to 'yes', Bazel caches all test results except for tests marked as external. If set to 'no', Bazel does not cache any test results.

`--[no]experimental_cancel_concurrent_tests` default: "never"
:   If 'on_failed' or 'on_passed, then Blaze will cancel concurrently running tests on the first run with that result. This is only useful in combination with --runs_per_test_detects_flakes.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_fetch_all_coverage_outputs` default: "false"
:   If true, then Bazel fetches the entire coverage data directory for each test during a coverage run.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_generate_llvm_lcov` default: "false"
:   If true, coverage for clang will generate an LCOV report.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_j2objc_header_map` default: "true"
:   Whether to generate J2ObjC header map in parallel of J2ObjC transpilation.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_j2objc_shorter_header_path` default: "false"
:   Whether to generate with shorter header path (uses "\_ios" instead of "\_j2objc").

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_java_classpath=<off, javabuilder, bazel or bazel_no_fallback>` default: "javabuilder"
:   Enables reduced classpaths for Java compilations.

`--[no]experimental_java_header_compilation_direct_deps` default: "false"
:   Use separate outputs for header and regular compilation.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_limit_android_lint_to_android_constrained_java` default: "false"
:   No-op, kept only for backwards compatibility

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_run_android_lint_on_java_rules` default: "false"
:   Whether to validate java\_\* sources.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]explicit_java_test_deps` default: "false"
:   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.

`--host_java_launcher=<a build target label>` default: see description
:   The Java launcher used by tools that are executed during a build.

`--host_javacopt=<a string>` multiple uses are accumulated
:   Additional options to pass to javac when building tools that are executed during a build.

`--host_jvmopt=<a string>` multiple uses 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.

`--[no]incompatible_check_sharding_support` default: "true"
:   If true, Bazel will fail a sharded test if the test runner does not indicate that it supports sharding by touching the file at the path in TEST_SHARD_STATUS_FILE. If false, a test runner that does not support sharding will lead to all tests running in each shard.

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_exclusive_test_sandboxed` default: "true"
:   If true, exclusive tests will run with sandboxed strategy. Add 'local' tag to force an exclusive test run locally

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_strict_action_env` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--j2objc_translation_flags=<comma-separated list of options>` multiple uses are accumulated
:   Additional options to pass to the J2ObjC tool.

`--java_debug`
:   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.

`--[no]java_deps` default: "true"
:   Generate dependency information (for now, compile-time classpath) per Java target.

`--[no]java_header_compilation` default: "true"
:   Compile ijars directly from source.

`--java_language_version=<a string>` default: ""
:   The Java language version

`--java_launcher=<a build target label>` default: see description
:   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.

`--java_runtime_version=<a string>` default: "local_jdk"
:   The Java runtime version

`--javacopt=<a string>` multiple uses are accumulated
:   Additional options to pass to javac.

`--jvmopt=<a string>` multiple uses 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.

`--legacy_main_dex_list_generator=<a build target label>` default: see description
:   Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.

`--optimizing_dexer=<a build target label>` default: see description
:   Specifies a binary to use to do dexing without sharding.

`--plugin=<a build target label>` multiple uses are accumulated
:   Plugins to use in the build. Currently works with java_plugin.

`--proguard_top=<a build target label>` default: see description
:   Specifies which version of ProGuard to use for code removal when building a Java binary.

`--proto_compiler=<a build target label>` default: "@bazel_tools//tools/proto:protoc"
:   The label of the proto-compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]proto_profile` default: "true"
:   Whether to pass profile_path to the proto compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_profile_path=<a build target label>` default: see description
:   The 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`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_toolchain_for_cc=<a build target label>` default: "@bazel_tools//tools/proto:cc_toolchain"
:   Label of proto_lang_toolchain() which describes how to compile C++ protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_toolchain_for_j2objc=<a build target label>` default: "@bazel_tools//tools/j2objc:j2objc_proto_toolchain"
:   Label of proto_lang_toolchain() which describes how to compile j2objc protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_toolchain_for_java=<a build target label>` default: "@bazel_tools//tools/proto:java_toolchain"
:   Label of proto_lang_toolchain() which describes how to compile Java protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_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 protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--protocopt=<a string>` multiple uses are accumulated
:   Additional options to pass to the protobuf compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]runs_per_test_detects_flakes` default: "false"
:   If true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.

`--shell_executable=<a path>` default: see description
:   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). Note that using a shell that is not compatible with bash may lead to build failures or runtime failures of the generated binaries.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--test_arg=<a string>` multiple uses are accumulated
:   Specifies 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.

`--test_filter=<a string>` default: see description
:   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.

`--test_result_expiration=<an integer>` default: "-1"
:   This option is deprecated and has no effect.

`--[no]test_runner_fail_fast` default: "false"
:   Forwards 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: 'explicit' to only use sharding if the 'shard_count' BUILD attribute is present. 'disabled' to never use test sharding. 'forced=k' to enforce 'k' shards for testing regardless of the 'shard_count' BUILD attribute.

`--tool_java_language_version=<a string>` default: ""
:   The Java language version used to execute the tools that are needed during a build

`--tool_java_runtime_version=<a string>` default: "remotejdk_11"
:   The Java runtime version used to execute tools during the build

`--[no]use_ijars` default: "true"
:   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

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that affect the verbosity, format or location of logging:

`--help_verbosity=<long, medium or short>` default: "medium"
:   Select the verbosity of the help command.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--long` [`-l`]
:   Show full description of each option, instead of just its name.

`--short`
:   Show only the names of the options, not their types or meanings.

## Info Options

Inherits all options from [build](#build).

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that affect the verbosity, format or location of logging:

`--[no]show_make_env` default: "false"
:   Include the "Make" environment in the output.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

## License Options

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

## Mobile-install Options

Inherits all options from [build](#build).

Options that control build execution:

`--mode=<classic, classic_internal_test_do_not_use or skylark>` default: "skylark"
:   Deprecated no-effect flag. Only skylark mode is still supported.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

Options that configure the toolchain used for action execution:

`--adb=<a string>` default: ""
:   adb 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_inputs`](#effect_tag_CHANGES_INPUTS)

Options that control the output of the command:

`--[no]incremental` default: "false"
:   Whether 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]split_apks` default: "false"
:   Whether to use split apks to install and update the application on the device. Works only with devices with Marshmallow or later

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Options that let the user configure the intended output, affecting its value, as opposed to its existence:

`--adb_arg=<a string>` multiple uses are accumulated
:   Extra arguments to pass to adb. Usually used to designate a device to install to.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--debug_app`
:   Whether to wait for the debugger before starting the app.

`--device=<a string>` default: ""
:   The adb device serial number. If not specified, the first device will be used.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--start=<no, cold, warm or debug>` default: "NO"
:   How the app should be started after installing it. Set to WARM to preserve and restore application state on incremental installs.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--start_app`
:   Whether to start the app after installing it.

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that affect the verbosity, format or location of logging:

`--incremental_install_verbosity=<a string>` default: ""
:   The verbosity for incremental install. Set to 1 for debug logging.

    Tags:
    [`bazel_monitoring`](#effect_tag_BAZEL_MONITORING)

## Mod Options

Options that control build execution:

`--[no]experimental_inprocess_symlink_creation` default: "true"
:   Whether to make direct filesystem calls to create symlink trees instead of delegating to a helper process.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_remotable_source_manifests` default: "false"
:   Whether to make source manifest actions remotable

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_strict_fileset_output` default: "false"
:   If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]incompatible_modify_execution_info_additive` default: "false"
:   When enabled, passing multiple --modify_execution_info flags is additive. When disabled, only the last flag is taken into account.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_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 ([-|\*]&lt;float&gt;) eg. "auto", "HOST_CPUS\*.5". "auto" sets a reasonable default based on host resources. Must be at least 1.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--modify_execution_info=<regex=[+-]key,regex=[+-]key,...>` multiple uses are accumulated
:   Add 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,.\*=+z' adds 'x' and 'z' to, and removes 'y' from, the execution info for all actions.
    'Genrule=+requires-x' adds 'requires-x' to the execution info for all Genrule actions.
    '(?!Genrule).\*=-requires-x' removes 'requires-x' from the execution info for all non-Genrule actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that configure the toolchain used for action execution:

`--[no]incompatible_bazel_test_exec_run_under` default: "false"
:   If 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`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

Options that control the output of the command:

`--[no]build_runfile_links` default: "true"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_runfile_manifests` default: "true"
:   If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_always_include_files_in_data` default: "true"
:   If true, native rules add &lt;code&gt;DefaultInfo.files&lt;/code&gt; of data dependencies to their runfiles, which matches the recommended behavior for Starlark rules (https://bazel.build/extending/rules#runfiles_features_to_avoid).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_compact_repo_mapping_manifest` default: "false"
:   If enabled, the &lt;binary&gt;.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`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_filegroup_runfiles_for_data` default: "false"
:   If true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]legacy_external_runfiles` default: "false"
:   If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Options that let the user configure the intended output, affecting its value, as opposed to its existence:

`--action_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   Specifies the set of environment variables available to actions with target configuration. Variables can be either specified by &lt;code&gt;name&lt;/code&gt;, in which case
    the value will be taken from the invocation environment, or by the &lt;code&gt;name=value&lt;/code&gt; pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.
    &lt;br&gt;
    Note that unless &lt;code&gt;--incompatible_repo_env_ignores_action_env&lt;/code&gt; is true, all &lt;code&gt;name=value&lt;/code&gt; pairs will be available to repository rules.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=<comma-separated set of options>` default: ""
:   Allowed values for the --cpu flag.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]collect_code_coverage` default: "false"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compilation_mode=<fastbuild, dbg or opt>` [`-c`] default: "fastbuild"
:   Specify the mode the binary will be built in. Values: 'fastbuild', 'dbg', 'opt'.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--cpu=<a string>` default: ""
:   The target CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--define=<a 'name=value' assignment>` multiple uses are accumulated
:   Each --define option specifies an assignment for a build variable. In case of multiple values for a variable, the last one wins.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_runfiles` default: "auto"
:   Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_action_listener=<a build target label>` multiple uses are accumulated
:   Deprecated in favor of aspects. Use action_listener to attach an extra_action to existing build actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_collect_code_coverage_for_generated_files` default: "false"
:   If specified, Bazel will also generate collect coverage information for generated files.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_output_paths=<off, content or strip>` default: "off"
:   Which 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 https://github.com/bazelbuild/bazel/issues/6526 for details. Starlark actions canopt into path mapping by adding the key 'supports-path-mapping' to the 'execution_requirements' dict.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)

`--experimental_override_name_platform_in_output_dir=<a 'label=value' assignment>` multiple uses are accumulated
:   Each entry should be of the form label=value where label refers to a platform and values is the desired shortname to use in the output path. Only used when --experimental_platform_in_output_dir is true. Has highest naming priority.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_platform_in_output_dir` default: "false"
:   If 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 --platforms option 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_heuristic is set, use a shortname based off the current platform Label. Finally, a hash of the platform option is used as a last resort.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_platforms_in_output_dir_legacy_heuristic` default: "true"
:   Please 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`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones. See also --host_features

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_action_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   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, or by the name=value pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_compilation_mode=<fastbuild, dbg or opt>` default: "opt"
:   Specify the mode the tools used during the build will be built in. Values: 'fastbuild', 'dbg', 'opt'.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_cpu=<a string>` default: ""
:   The host CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_auto_exec_groups` default: "false"
:   When 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 https://github.com/bazelbuild/bazel/issues/17134.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_merge_genfiles_directory` default: "true"
:   If true, the genfiles directory is folded into the bin directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]instrument_test_targets` default: "false"
:   When 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`](#effect_tag_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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_suffix=<a string>` default: see description
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--run_under=<a prefix in front of command>` default: see description
:   Prefix 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: 'valgrind', 'strace', 'strace -c', 'valgrind --quiet --num-callers=20', '//package:target', '//package:target --options'.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]stamp` default: "false"
:   Stamp binaries with the date, username, hostname, workspace information, etc.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Options that affect how strictly Bazel enforces valid build inputs (rule definitions, flag combinations, etc.):

`--[no]check_licenses` default: "false"
:   Check that licensing constraints imposed by dependent packages do not conflict with distribution modes of the targets being built. By default, licenses are not checked.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]check_visibility` default: "true"
:   If disabled, visibility errors in target dependencies are demoted to warnings.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]enforce_constraints` default: "true"
:   Checks the environments each target is compatible with and reports errors if any target has dependencies that don't support the same environments

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]incompatible_check_testonly_for_output_files` default: "false"
:   If 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`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]strict_filesets` default: "false"
:   If this option is enabled, filesets crossing package boundaries are reported as errors.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--target_environment=<a build target label>` multiple uses are accumulated
:   Declares 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.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_config_setting_private_default_visibility` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_enforce_config_setting_visibility` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that govern the behavior of the test environment or test runner:

`--[no]allow_analysis_failures` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--analysis_testing_deps_limit=<an integer>` default: "2000"
:   Sets 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`](#effect_tag_LOADING_AND_ANALYSIS)

`--test_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   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. This option can be used multiple times to specify several variables. Used only by the 'bazel test' command.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

Options relating to the output and semantics of the `mod` subcommand:

`--[no]all_repos` default: "false"
:   For `mod show_repo`: display all repos in the entire workspace.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]all_visible_repos` default: "false"
:   For `mod show_repo`: display all repos visible to the chosen base module, under their apparent names.

    Tags:
    [`terminal_output`](#effect_tag_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: "&lt;root&gt;"
:   Specify a module relative to which the specified target repos will be interpreted.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--charset=<utf8 or ascii>` default: "utf8"
:   Chooses the character set to use for the tree. Only affects text output. Valid values are "utf8" or "ascii". Default is "utf8"

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]cycles` default: "true"
:   Points out dependency cycles inside the displayed tree.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--depth=<an integer>` default: "-1"
:   Maximum 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--extension_filter=<a comma-separated list of <extension>s>` default: see description
:   Only 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--extension_info=<hidden, usages, repos or all>` default: "hidden"
:   Specify how much detail about extension usages to include in the query result. "Usages" will only show the extensions names, "repos" will also include repos imported with use_repo, and "all" will also show the other repositories generated by extensions.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--extension_usages=<a comma-separated list of <module>s>` default: ""
:   Specify modules whose extension usages will be displayed in the show_extension query.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--from=<a comma-separated list of <module>s>` default: "&lt;root&gt;"
:   The module(s) starting from which the dependency graph query will be displayed. Check each query’s description for the exact semantics. Defaults to &lt;root&gt;.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]include_builtin` default: "false"
:   Include built-in modules in the dependency graph. Disabled by default because it is quite noisy.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]include_unused` default: "false"
:   The 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--output=<text, json, graph, streamed_proto or streamed_jsonproto>` default: "text"
:   The format in which the query results should be printed. Allowed values for query are: text, json, graph

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]verbose` default: "false"
:   The 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_output`](#effect_tag_TERMINAL_OUTPUT)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--flag_alias=<a 'name=value' flag alias>` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form "&lt;key&gt;=&lt;value&gt;" as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Miscellaneous options, not otherwise categorized.:

`--deleted_packages=<comma-separated list of package names>` multiple uses are accumulated
:   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.

`--[no]fetch` default: "true"
:   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.

`--package_path=<colon-separated list of options>` default: "%workspace%"
:   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'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

## Print_action Options

Inherits all options from [build](#build).

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Miscellaneous options, not otherwise categorized.:

`--print_action_mnemonics=<a string>` multiple uses are accumulated
:   Lists which mnemonics to filter print_action data by, no filtering takes place when left empty.

## Query Options

Options that control build execution:

`--[no]experimental_inprocess_symlink_creation` default: "true"
:   Whether to make direct filesystem calls to create symlink trees instead of delegating to a helper process.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_remotable_source_manifests` default: "false"
:   Whether to make source manifest actions remotable

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_strict_fileset_output` default: "false"
:   If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]incompatible_modify_execution_info_additive` default: "false"
:   When enabled, passing multiple --modify_execution_info flags is additive. When disabled, only the last flag is taken into account.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]keep_going` [`-k`] default: "false"
:   Continue 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`](#effect_tag_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 ([-|\*]&lt;float&gt;) eg. "auto", "HOST_CPUS\*.5". "auto" sets a reasonable default based on host resources. Must be at least 1.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--modify_execution_info=<regex=[+-]key,regex=[+-]key,...>` multiple uses are accumulated
:   Add 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,.\*=+z' adds 'x' and 'z' to, and removes 'y' from, the execution info for all actions.
    'Genrule=+requires-x' adds 'requires-x' to the execution info for all Genrule actions.
    '(?!Genrule).\*=-requires-x' removes 'requires-x' from the execution info for all non-Genrule actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that configure the toolchain used for action execution:

`--[no]incompatible_bazel_test_exec_run_under` default: "false"
:   If 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`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

Options that control the output of the command:

`--[no]build_runfile_links` default: "true"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_runfile_manifests` default: "true"
:   If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_always_include_files_in_data` default: "true"
:   If true, native rules add &lt;code&gt;DefaultInfo.files&lt;/code&gt; of data dependencies to their runfiles, which matches the recommended behavior for Starlark rules (https://bazel.build/extending/rules#runfiles_features_to_avoid).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_compact_repo_mapping_manifest` default: "false"
:   If enabled, the &lt;binary&gt;.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`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_filegroup_runfiles_for_data` default: "false"
:   If true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]legacy_external_runfiles` default: "false"
:   If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Options that let the user configure the intended output, affecting its value, as opposed to its existence:

`--action_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   Specifies the set of environment variables available to actions with target configuration. Variables can be either specified by &lt;code&gt;name&lt;/code&gt;, in which case
    the value will be taken from the invocation environment, or by the &lt;code&gt;name=value&lt;/code&gt; pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.
    &lt;br&gt;
    Note that unless &lt;code&gt;--incompatible_repo_env_ignores_action_env&lt;/code&gt; is true, all &lt;code&gt;name=value&lt;/code&gt; pairs will be available to repository rules.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=<comma-separated set of options>` default: ""
:   Allowed values for the --cpu flag.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]collect_code_coverage` default: "false"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compilation_mode=<fastbuild, dbg or opt>` [`-c`] default: "fastbuild"
:   Specify the mode the binary will be built in. Values: 'fastbuild', 'dbg', 'opt'.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--cpu=<a string>` default: ""
:   The target CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--define=<a 'name=value' assignment>` multiple uses are accumulated
:   Each --define option specifies an assignment for a build variable. In case of multiple values for a variable, the last one wins.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_runfiles` default: "auto"
:   Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_action_listener=<a build target label>` multiple uses are accumulated
:   Deprecated in favor of aspects. Use action_listener to attach an extra_action to existing build actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_collect_code_coverage_for_generated_files` default: "false"
:   If specified, Bazel will also generate collect coverage information for generated files.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_output_paths=<off, content or strip>` default: "off"
:   Which 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 https://github.com/bazelbuild/bazel/issues/6526 for details. Starlark actions canopt into path mapping by adding the key 'supports-path-mapping' to the 'execution_requirements' dict.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)

`--experimental_override_name_platform_in_output_dir=<a 'label=value' assignment>` multiple uses are accumulated
:   Each entry should be of the form label=value where label refers to a platform and values is the desired shortname to use in the output path. Only used when --experimental_platform_in_output_dir is true. Has highest naming priority.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_platform_in_output_dir` default: "false"
:   If 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 --platforms option 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_heuristic is set, use a shortname based off the current platform Label. Finally, a hash of the platform option is used as a last resort.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_platforms_in_output_dir_legacy_heuristic` default: "true"
:   Please 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`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones. See also --host_features

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_action_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   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, or by the name=value pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_compilation_mode=<fastbuild, dbg or opt>` default: "opt"
:   Specify the mode the tools used during the build will be built in. Values: 'fastbuild', 'dbg', 'opt'.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_cpu=<a string>` default: ""
:   The host CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_auto_exec_groups` default: "false"
:   When 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 https://github.com/bazelbuild/bazel/issues/17134.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_merge_genfiles_directory` default: "true"
:   If true, the genfiles directory is folded into the bin directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]instrument_test_targets` default: "false"
:   When 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`](#effect_tag_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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_suffix=<a string>` default: see description
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--run_under=<a prefix in front of command>` default: see description
:   Prefix 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: 'valgrind', 'strace', 'strace -c', 'valgrind --quiet --num-callers=20', '//package:target', '//package:target --options'.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]stamp` default: "false"
:   Stamp binaries with the date, username, hostname, workspace information, etc.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Options that affect how strictly Bazel enforces valid build inputs (rule definitions, flag combinations, etc.):

`--[no]check_licenses` default: "false"
:   Check that licensing constraints imposed by dependent packages do not conflict with distribution modes of the targets being built. By default, licenses are not checked.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]check_visibility` default: "true"
:   If disabled, visibility errors in target dependencies are demoted to warnings.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]enforce_constraints` default: "true"
:   Checks the environments each target is compatible with and reports errors if any target has dependencies that don't support the same environments

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]incompatible_check_testonly_for_output_files` default: "false"
:   If 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`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]strict_filesets` default: "false"
:   If this option is enabled, filesets crossing package boundaries are reported as errors.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--target_environment=<a build target label>` multiple uses are accumulated
:   Declares 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.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_config_setting_private_default_visibility` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_enforce_config_setting_visibility` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that govern the behavior of the test environment or test runner:

`--[no]allow_analysis_failures` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--analysis_testing_deps_limit=<an integer>` default: "2000"
:   Sets 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`](#effect_tag_LOADING_AND_ANALYSIS)

`--test_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   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. This option can be used multiple times to specify several variables. Used only by the 'bazel test' command.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

Options relating to query output and semantics:

`--aspect_deps=<off, conservative or precise>` default: "conservative"
:   How to resolve aspect dependencies when the output format is one of &lcub;xml,proto,record&rcub;. '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_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]consistent_labels` default: "false"
:   If enabled, every query command emits labels as if by the Starlark &lt;code&gt;str&lt;/code&gt; function applied to a &lt;code&gt;Label&lt;/code&gt; 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]experimental_explicit_aspects` default: "false"
:   aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]experimental_graphless_query` default: "auto"
:   If 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`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--graph:conditional_edges_limit=<an integer>` default: "4"
:   The 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]graph:factored` default: "true"
:   If 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--graph:node_limit=<an integer>` default: "512"
:   The 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]implicit_deps` default: "true"
:   If 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_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]include_aspects` default: "true"
:   aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]incompatible_lexicographical_output` default: "true"
:   If this option is set, sorts --order_output=auto output in lexicographical order.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_package_group_includes_double_slash` default: "true"
:   If enabled, when outputting package_group's `packages` attribute, the leading `//` will not be omitted.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]infer_universe_scope` default: "false"
:   If 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]line_terminator_null` default: "false"
:   Whether each format is terminated with \0 instead of newline.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]nodep_deps` default: "true"
:   If 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_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--noorder_results`
:   Output 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.

`--null`
:   Whether each format is terminated with \0 instead of newline.

`--order_output=<no, deps, auto or full>` default: "auto"
:   Output 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--order_results`
:   Output 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.

`--output=<a string>` default: "label"
:   The 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--output_file=<a string>` default: ""
:   When 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 &lt;code&gt;bazel query &gt; file&lt;/code&gt;.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:default_values` default: "true"
:   If true, attributes whose value is not explicitly specified in the BUILD file are included; otherwise they are omitted. This option is applicable to --output=proto

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:definition_stack` default: "false"
:   Populate 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:flatten_selects` default: "true"
:   If 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_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]proto:include_attribute_source_aspects` default: "false"
:   Populate 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:include_synthetic_attribute_hash` default: "false"
:   Whether or not to calculate and populate the $internal_attr_hash attribute.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:instantiation_stack` default: "false"
:   Populate the instantiation call stack of each rule. Note that this requires the stack to be present

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:locations` default: "true"
:   Whether to output location information in proto output at all.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--proto:output_rule_attrs=<comma-separated list of options>` default: "all"
:   Comma 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:rule_classes` default: "false"
:   Populate 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]proto:rule_inputs_and_outputs` default: "true"
:   Whether or not to populate the rule_input and rule_output fields.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--query_file=<a string>` default: ""
:   If 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_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]relative_locations` default: "false"
:   If 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_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]strict_test_suite` default: "false"
:   If true, the tests() expression gives an error if it encounters a test_suite containing non-test targets.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--[no]tool_deps` default: "true"
:   Query: 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_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--universe_scope=<comma-separated list of options>` default: ""
:   A 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]xml:default_values` default: "false"
:   If true, rule attributes whose value is not explicitly specified in the BUILD file are printed; otherwise they are omitted.

    Tags:
    [`terminal_output`](#effect_tag_TERMINAL_OUTPUT)

`--[no]xml:line_numbers` default: "true"
:   If 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_output`](#effect_tag_TERMINAL_OUTPUT)

Options that affect the verbosity, format or location of logging:

`--experimental_repository_resolved_file=<a string>` default: ""
:   If non-empty, write a Starlark value with the resolved information of all Starlark repository rules that were executed.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--flag_alias=<a 'name=value' flag alias>` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form "&lt;key&gt;=&lt;value&gt;" as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Miscellaneous options, not otherwise categorized.:

`--deleted_packages=<comma-separated list of package names>` multiple uses are accumulated
:   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.

`--[no]fetch` default: "true"
:   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.

`--package_path=<colon-separated list of options>` default: "%workspace%"
:   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'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

## Run Options

Inherits all options from [build](#build).

Options that appear before the command and are parsed by the client:

`--[no]portable_paths` default: "false"
:   If true, includes paths to replace in ExecRequest to make the resulting paths portable.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]run` default: "true"
:   If 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`](#effect_tag_AFFECTS_OUTPUTS)

`--run_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   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, or by the name=value pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]run_in_cwd` default: "false"
:   If true, runs the target in the current working directory instead of the runfile tree.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Options that let the user configure the intended output, affecting its value, as opposed to its existence:

`--script_path=<a path>` default: see description
:   If 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`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

## Shutdown Options

Options that control the output of the command:

`--iff_heap_size_greater_than=<an integer>` default: "0"
:   Iff 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`](#effect_tag_LOSES_INCREMENTAL_STATE), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

## Sync Options

Options that control build execution:

`--[no]configure` default: "False"
:   Only sync repositories marked as 'configure' for system-configuration purpose.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]experimental_inprocess_symlink_creation` default: "true"
:   Whether to make direct filesystem calls to create symlink trees instead of delegating to a helper process.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_remotable_source_manifests` default: "false"
:   Whether to make source manifest actions remotable

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_strict_fileset_output` default: "false"
:   If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]incompatible_modify_execution_info_additive` default: "false"
:   When enabled, passing multiple --modify_execution_info flags is additive. When disabled, only the last flag is taken into account.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]keep_going` [`-k`] default: "false"
:   Continue 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`](#effect_tag_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 ([-|\*]&lt;float&gt;) eg. "auto", "HOST_CPUS\*.5". "auto" sets a reasonable default based on host resources. Must be at least 1.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

`--modify_execution_info=<regex=[+-]key,regex=[+-]key,...>` multiple uses are accumulated
:   Add 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,.\*=+z' adds 'x' and 'z' to, and removes 'y' from, the execution info for all actions.
    'Genrule=+requires-x' adds 'requires-x' to the execution info for all Genrule actions.
    '(?!Genrule).\*=-requires-x' removes 'requires-x' from the execution info for all non-Genrule actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--only=<a string>` multiple uses are accumulated
:   If this option is given, only sync the repositories specified with this option. Still consider all (or all configure-like, of --configure is given) outdated.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that configure the toolchain used for action execution:

`--[no]incompatible_bazel_test_exec_run_under` default: "false"
:   If 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`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

Options that control the output of the command:

`--[no]build_runfile_links` default: "true"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_runfile_manifests` default: "true"
:   If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_always_include_files_in_data` default: "true"
:   If true, native rules add &lt;code&gt;DefaultInfo.files&lt;/code&gt; of data dependencies to their runfiles, which matches the recommended behavior for Starlark rules (https://bazel.build/extending/rules#runfiles_features_to_avoid).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_compact_repo_mapping_manifest` default: "false"
:   If enabled, the &lt;binary&gt;.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`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_filegroup_runfiles_for_data` default: "false"
:   If true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]legacy_external_runfiles` default: "false"
:   If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Options that let the user configure the intended output, affecting its value, as opposed to its existence:

`--action_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   Specifies the set of environment variables available to actions with target configuration. Variables can be either specified by &lt;code&gt;name&lt;/code&gt;, in which case
    the value will be taken from the invocation environment, or by the &lt;code&gt;name=value&lt;/code&gt; pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.
    &lt;br&gt;
    Note that unless &lt;code&gt;--incompatible_repo_env_ignores_action_env&lt;/code&gt; is true, all &lt;code&gt;name=value&lt;/code&gt; pairs will be available to repository rules.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=<comma-separated set of options>` default: ""
:   Allowed values for the --cpu flag.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]collect_code_coverage` default: "false"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compilation_mode=<fastbuild, dbg or opt>` [`-c`] default: "fastbuild"
:   Specify the mode the binary will be built in. Values: 'fastbuild', 'dbg', 'opt'.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--cpu=<a string>` default: ""
:   The target CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--define=<a 'name=value' assignment>` multiple uses are accumulated
:   Each --define option specifies an assignment for a build variable. In case of multiple values for a variable, the last one wins.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_runfiles` default: "auto"
:   Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_action_listener=<a build target label>` multiple uses are accumulated
:   Deprecated in favor of aspects. Use action_listener to attach an extra_action to existing build actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_collect_code_coverage_for_generated_files` default: "false"
:   If specified, Bazel will also generate collect coverage information for generated files.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_output_paths=<off, content or strip>` default: "off"
:   Which 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 https://github.com/bazelbuild/bazel/issues/6526 for details. Starlark actions canopt into path mapping by adding the key 'supports-path-mapping' to the 'execution_requirements' dict.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)

`--experimental_override_name_platform_in_output_dir=<a 'label=value' assignment>` multiple uses are accumulated
:   Each entry should be of the form label=value where label refers to a platform and values is the desired shortname to use in the output path. Only used when --experimental_platform_in_output_dir is true. Has highest naming priority.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_platform_in_output_dir` default: "false"
:   If 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 --platforms option 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_heuristic is set, use a shortname based off the current platform Label. Finally, a hash of the platform option is used as a last resort.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_platforms_in_output_dir_legacy_heuristic` default: "true"
:   Please 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`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones. See also --host_features

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_action_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   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, or by the name=value pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_compilation_mode=<fastbuild, dbg or opt>` default: "opt"
:   Specify the mode the tools used during the build will be built in. Values: 'fastbuild', 'dbg', 'opt'.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_cpu=<a string>` default: ""
:   The host CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_auto_exec_groups` default: "false"
:   When 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 https://github.com/bazelbuild/bazel/issues/17134.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_merge_genfiles_directory` default: "true"
:   If true, the genfiles directory is folded into the bin directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]instrument_test_targets` default: "false"
:   When 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`](#effect_tag_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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_suffix=<a string>` default: see description
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--run_under=<a prefix in front of command>` default: see description
:   Prefix 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: 'valgrind', 'strace', 'strace -c', 'valgrind --quiet --num-callers=20', '//package:target', '//package:target --options'.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]stamp` default: "false"
:   Stamp binaries with the date, username, hostname, workspace information, etc.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Options that affect how strictly Bazel enforces valid build inputs (rule definitions, flag combinations, etc.):

`--[no]check_licenses` default: "false"
:   Check that licensing constraints imposed by dependent packages do not conflict with distribution modes of the targets being built. By default, licenses are not checked.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]check_visibility` default: "true"
:   If disabled, visibility errors in target dependencies are demoted to warnings.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]enforce_constraints` default: "true"
:   Checks the environments each target is compatible with and reports errors if any target has dependencies that don't support the same environments

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]incompatible_check_testonly_for_output_files` default: "false"
:   If 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`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]strict_filesets` default: "false"
:   If this option is enabled, filesets crossing package boundaries are reported as errors.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--target_environment=<a build target label>` multiple uses are accumulated
:   Declares 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.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_config_setting_private_default_visibility` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_enforce_config_setting_visibility` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that govern the behavior of the test environment or test runner:

`--[no]allow_analysis_failures` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--analysis_testing_deps_limit=<an integer>` default: "2000"
:   Sets 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`](#effect_tag_LOADING_AND_ANALYSIS)

`--test_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   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. This option can be used multiple times to specify several variables. Used only by the 'bazel test' command.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

Options that affect the verbosity, format or location of logging:

`--experimental_repository_resolved_file=<a string>` default: ""
:   If non-empty, write a Starlark value with the resolved information of all Starlark repository rules that were executed.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--flag_alias=<a 'name=value' flag alias>` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form "&lt;key&gt;=&lt;value&gt;" as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Miscellaneous options, not otherwise categorized.:

`--deleted_packages=<comma-separated list of package names>` multiple uses are accumulated
:   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.

`--[no]fetch` default: "true"
:   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.

`--package_path=<colon-separated list of options>` default: "%workspace%"
:   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'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

## Test Options

Inherits all options from [build](#build).

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that affect the verbosity, format or location of logging:

`--[no]print_relative_test_log_paths` default: "false"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]test_verbose_timeout_warnings` default: "false"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]verbose_test_summary` default: "true"
:   If true, print additional information (timing, number of failed runs, etc) in the test summary.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

## Vendor Options

Inherits all options from [test](#test).

Options that control build execution:

`--[no]keep_going` [`-k`] default: "false"
:   Continue 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`](#effect_tag_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 ([-|\*]&lt;float&gt;) eg. "auto", "HOST_CPUS\*.5". "auto" sets a reasonable default based on host resources. Must be at least 1.

    Tags:
    [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION)

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_config_setting_private_default_visibility` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_enforce_config_setting_visibility` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options relating to Bzlmod output and semantics:

`--repo=<a string>` multiple uses are accumulated
:   Only vendors the specified repository, which can be either `@apparent_repo_name` or `@@canonical_repo_name`. This option can be set multiple times

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Miscellaneous options, not otherwise categorized.:

`--deleted_packages=<comma-separated list of package names>` multiple uses are accumulated
:   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.

`--[no]fetch` default: "true"
:   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.

`--package_path=<colon-separated list of options>` default: "%workspace%"
:   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'.

`--[no]show_loading_progress` default: "true"
:   If enabled, causes Bazel to print "Loading package:" messages.

Options that control build execution:

`--[no]experimental_inprocess_symlink_creation` default: "true"
:   Whether to make direct filesystem calls to create symlink trees instead of delegating to a helper process.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_persistent_aar_extractor` default: "false"
:   Enable persistent aar extractor by using workers.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_remotable_source_manifests` default: "false"
:   Whether to make source manifest actions remotable

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_split_coverage_postprocessing` default: "false"
:   If true, then Bazel will run coverage postprocessing for test in a new spawn.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_strict_fileset_output` default: "false"
:   If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]incompatible_modify_execution_info_additive` default: "false"
:   When enabled, passing multiple --modify_execution_info flags is additive. When disabled, only the last flag is taken into account.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--modify_execution_info=<regex=[+-]key,regex=[+-]key,...>` multiple uses are accumulated
:   Add 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,.\*=+z' adds 'x' and 'z' to, and removes 'y' from, the execution info for all actions.
    'Genrule=+requires-x' adds 'requires-x' to the execution info for all Genrule actions.
    '(?!Genrule).\*=-requires-x' removes 'requires-x' from the execution info for all non-Genrule actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--persistent_android_dex_desugar`
:   Enable persistent Android dex and desugar actions by using workers.

`--persistent_android_resource_processor`
:   Enable persistent Android resource processor by using workers.

`--persistent_multiplex_android_dex_desugar`
:   Enable persistent multiplexed Android dex and desugar actions by using workers.

`--persistent_multiplex_android_resource_processor`
:   Enable persistent multiplexed Android resource processor by using workers.

`--persistent_multiplex_android_tools`
:   Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).

`--[no]use_target_platform_for_tests` default: "false"
:   If true, then Bazel will use the target platform for running tests rather than the test exec group.

    Tags:
    [`execution`](#effect_tag_EXECUTION)

Options that configure the toolchain used for action execution:

`--android_compiler=<a string>` default: see description
:   The Android target compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--android_manifest_merger=<legacy, android or force_android>` default: "android"
:   Selects the manifest merger to use for android_binary rules. Flag to help thetransition to the Android manifest merger from the legacy merger.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--android_platforms=<a build target label>` default: ""
:   Sets 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`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--apple_crosstool_top=<a build target label>` default: "@bazel_tools//tools/cpp:toolchain"
:   The label of the crosstool package to be used in Apple and Objc rules and their dependencies.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--cc_output_directory_tag=<a string>` default: ""
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compiler=<a string>` default: see description
:   The C++ compiler to use for compiling the target.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)

`--coverage_output_generator=<a build target label>` default: "@bazel_tools//tools/test:lcov_merger"
:   Location of the binary that is used to postprocess raw coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//tools/test:lcov_merger'.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--coverage_report_generator=<a build target label>` default: "@bazel_tools//tools/test:coverage_report_generator"
:   Location of the binary that is used to generate coverage reports. This must currently be a filegroup that contains a single file, the binary. Defaults to '//tools/test:coverage_report_generator'.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--coverage_support=<a build target label>` default: "@bazel_tools//tools/test:coverage_support"
:   Location 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`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--custom_malloc=<a build target label>` default: see description
:   Specifies a custom malloc implementation. This setting overrides malloc attributes in build rules.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_add_exec_constraints_to_targets=<a '<RegexFilter>=<label1>[,<label2>,...]' assignment>` multiple uses are accumulated
:   List of comma-separated regular expressions, each optionally prefixed by - (negative expression), assigned (=) to a list of comma-separated constraint value targets. If a target matches no negative expression and at least one positive expression its toolchain resolution will be performed as if it had declared the constraint values as execution constraints. Example: //demo,-test=@platforms//cpus:x86_64 will add 'x86_64' to any target under //demo except for those whose name contains 'test'.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_include_xcode_execution_requirements` default: "false"
:   If set, add a "requires-xcode:&lcub;version&rcub;" execution requirement to every Xcode action. If the Xcode version has a hyphenated label, also add a "requires-xcode-label:&lcub;version_label&rcub;" execution requirement.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_prefer_mutual_xcode` default: "true"
:   If 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`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--extra_execution_platforms=<comma-separated list of options>` default: ""
:   The 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:
    [`execution`](#effect_tag_EXECUTION)

`--extra_toolchains=<comma-separated list of options>` multiple uses are accumulated
:   The 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().

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--grte_top=<a label>` default: see description
:   A 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`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_compiler=<a string>` default: see description
:   No-op flag. Will be removed in a future release.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION)

`--host_grte_top=<a label>` default: see description
:   If specified, this setting overrides the libc top-level directory (--grte_top) for the exec configuration.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_platform=<a build target label>` default: "@bazel_tools//tools:host_platform"
:   The label of a platform rule that describes the host system.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]incompatible_bazel_test_exec_run_under` default: "false"
:   If 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`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_dont_enable_host_nonhost_crosstool_features` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_enable_apple_toolchain_resolution` default: "false"
:   Use toolchain resolution to select the Apple SDK for apple rules (Starlark and native)

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_remove_legacy_whole_archive` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_strip_executable_safely` default: "false"
:   If true, strip action for executables will use flag -x, which does not break dynamic symbol resolution.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]interface_shared_objects` default: "true"
:   Use interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ios_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--macos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--minimum_os_version=<a string>` default: see description
:   The minimum OS version which your compilation targets.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_mappings=<a main workspace-relative path>` default: ""
:   The 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`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`immutable`](#metadata_tag_IMMUTABLE)

`--platforms=<a build target label>` default: ""
:   The labels of the platform rules describing the target platforms for the current command.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--python_path=<a string>` default: see description
:   The absolute path of the Python interpreter invoked to run Python targets on the target platform. Deprecated; disabled by --incompatible_use_python_toolchains.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--python_top=<a build target label>` default: see description
:   The label of a py_runtime representing the Python interpreter invoked to run Python targets on the target platform. Deprecated; disabled by --incompatible_use_python_toolchains.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--tvos_sdk_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Specifies 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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--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_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xcode_version=<a string>` default: see description
:   If specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xcode_version_config=<a build target label>` default: "@bazel_tools//tools/cpp:host_xcodes"
:   The label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

Options that control the output of the command:

`--[no]apple_generate_dsym` default: "false"
:   Whether to generate debug symbol(.dSYM) file(s).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]build_runfile_links` default: "true"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_runfile_manifests` default: "true"
:   If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]build_test_dwp` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cc_proto_library_header_suffixes=<comma-separated set of options>` default: ".pb.h"
:   Sets the suffixes of header files that a cc_proto_library creates.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--cc_proto_library_source_suffixes=<comma-separated set of options>` default: ".pb.cc"
:   Sets the suffixes of source files that a cc_proto_library creates.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]experimental_proto_descriptor_sets_include_source_info` default: "false"
:   Run extra actions for alternative Java api versions in a proto_library.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_save_feature_state` default: "false"
:   Save the state of enabled and requested feautres as an output of compilation.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--fission=<a set of compilation modes>` default: "no"
:   Specifies which compilation modes use fission for C++ compilations and links. May be any combination of &lcub;'fastbuild', 'dbg', 'opt'&rcub; or the special values 'yes' to enable all modes and 'no' to disable all modes.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_always_include_files_in_data` default: "true"
:   If true, native rules add &lt;code&gt;DefaultInfo.files&lt;/code&gt; of data dependencies to their runfiles, which matches the recommended behavior for Starlark rules (https://bazel.build/extending/rules#runfiles_features_to_avoid).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_compact_repo_mapping_manifest` default: "false"
:   If enabled, the &lt;binary&gt;.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`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_filegroup_runfiles_for_data` default: "false"
:   If true, runfiles of targets listed in the srcs attribute are available to targets that consume the filegroup as a data dependency.

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]legacy_external_runfiles` default: "false"
:   If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]objc_generate_linkmap` default: "false"
:   Specifies whether to generate a linkmap file.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]save_temps` default: "false"
:   If 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`](#effect_tag_AFFECTS_OUTPUTS)

Options that let the user configure the intended output, affecting its value, as opposed to its existence:

`--action_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   Specifies the set of environment variables available to actions with target configuration. Variables can be either specified by &lt;code&gt;name&lt;/code&gt;, in which case
    the value will be taken from the invocation environment, or by the &lt;code&gt;name=value&lt;/code&gt; pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.
    &lt;br&gt;
    Note that unless &lt;code&gt;--incompatible_repo_env_ignores_action_env&lt;/code&gt; is true, all &lt;code&gt;name=value&lt;/code&gt; pairs will be available to repository rules.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--allowed_cpu_values=<comma-separated set of options>` default: ""
:   Allowed values for the --cpu flag.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]android_databinding_use_androidx` default: "true"
:   Generate AndroidX-compatible data-binding files. This is only used with databinding v2. This flag is a no-op.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]android_databinding_use_v3_4_args` default: "true"
:   Use android databinding v2 with 3.4.0 argument. This flag is a no-op.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--android_dynamic_mode=<off, default or fully>` default: "off"
:   Determines 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`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_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`](#effect_tag_ACTION_COMMAND_LINES), [`execution`](#effect_tag_EXECUTION)

`--[no]android_resource_shrinking` default: "false"
:   Enables resource shrinking for android_binary APKs that use ProGuard.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]build_python_zip` default: "auto"
:   Build python executable zip; on on Windows, off on other platforms

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--catalyst_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple Catalyst binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]collect_code_coverage` default: "false"
:   If 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--compilation_mode=<fastbuild, dbg or opt>` [`-c`] default: "fastbuild"
:   Specify the mode the binary will be built in. Values: 'fastbuild', 'dbg', 'opt'.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--conlyopt=<a string>` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--copt=<a string>` multiple uses are accumulated
:   Additional options to pass to gcc.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cpu=<a string>` default: ""
:   The target CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cs_fdo_absolute_path=<a string>` default: see description
:   Use 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cs_fdo_instrument=<a string>` default: see description
:   Generate 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cs_fdo_profile=<a build target label>` default: see description
:   The cs_fdo_profile representing the context sensitive profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--cxxopt=<a string>` multiple uses are accumulated
:   Additional option to pass to gcc when compiling C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--define=<a 'name=value' assignment>` multiple uses are accumulated
:   Each --define option specifies an assignment for a build variable. In case of multiple values for a variable, the last one wins.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--dynamic_mode=<off, default or fully>` default: "default"
:   Determines 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`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_propeller_optimize_absolute_paths` default: "true"
:   If set, any use of absolute paths for propeller optimize will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_remaining_fdo_absolute_paths` default: "true"
:   If set, any use of absolute paths for FDO will raise an error.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]enable_runfiles` default: "auto"
:   Enable runfiles symlink tree; By default, it's off on Windows, on on other platforms.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--experimental_action_listener=<a build target label>` multiple uses are accumulated
:   Deprecated in favor of aspects. Use action_listener to attach an extra_action to existing build actions.

    Tags:
    [`execution`](#effect_tag_EXECUTION), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_compress_java_resources` default: "false"
:   Compress Java resources in APKs

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_databinding_v2` default: "true"
:   Use android databinding v2. This flag is a no-op.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_resource_shrinking` default: "false"
:   Enables resource shrinking for android_binary APKs that use ProGuard.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_android_rewrite_dexes_with_rex` default: "false"
:   use rex tool to rewrite dex files

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_collect_code_coverage_for_generated_files` default: "false"
:   If specified, Bazel will also generate collect coverage information for generated files.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_objc_fastbuild_options=<comma-separated list of options>` default: "-O0,-DDEBUG=1"
:   Uses these strings as objc fastbuild compiler options.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]experimental_omitfp` default: "false"
:   If true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_output_paths=<off, content or strip>` default: "off"
:   Which 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 https://github.com/bazelbuild/bazel/issues/6526 for details. Starlark actions canopt into path mapping by adding the key 'supports-path-mapping' to the 'execution_requirements' dict.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`bazel_internal_configuration`](#effect_tag_BAZEL_INTERNAL_CONFIGURATION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)

`--experimental_override_name_platform_in_output_dir=<a 'label=value' assignment>` multiple uses are accumulated
:   Each entry should be of the form label=value where label refers to a platform and values is the desired shortname to use in the output path. Only used when --experimental_platform_in_output_dir is true. Has highest naming priority.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_platform_in_output_dir` default: "false"
:   If 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 --platforms option 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_heuristic is set, use a shortname based off the current platform Label. Finally, a hash of the platform option is used as a last resort.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_py_binaries_include_label` default: "false"
:   py_binary targets include their label even when stamping is disabled.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_llvm_covmap` default: "false"
:   If specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_use_platforms_in_output_dir_legacy_heuristic` default: "true"
:   Please 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`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--fdo_instrument=<a string>` default: see description
:   Generate 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_optimize=<a string>` default: see description
:   Use 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_prefetch_hints=<a build target label>` default: see description
:   Use cache prefetch hints.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--fdo_profile=<a build target label>` default: see description
:   The fdo_profile representing the profile to be used for optimization.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the target configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones. See also --host_features

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]force_pic` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_action_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   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, or by the name=value pair which sets the value independent of the invocation environment. This option can be used multiple times; for options given for the same variable, the latest wins, options for different variables accumulate.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_compilation_mode=<fastbuild, dbg or opt>` default: "opt"
:   Specify the mode the tools used during the build will be built in. Values: 'fastbuild', 'dbg', 'opt'.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--host_conlyopt=<a string>` multiple uses are accumulated
:   Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_copt=<a string>` multiple uses are accumulated
:   Additional options to pass to the C compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cpu=<a string>` default: ""
:   The host CPU.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_cxxopt=<a string>` multiple uses are accumulated
:   Additional options to pass to C++ compiler for tools built in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_features=<a string>` multiple uses are accumulated
:   The given features will be enabled or disabled by default for targets built in the exec configuration. Specifying -&lt;feature&gt; will disable the feature. Negative features always override positive ones.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_force_python=<PY2 or PY3>` default: see description
:   Overrides the Python version for the exec configuration. Can be "PY2" or "PY3".

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--host_linkopt=<a string>` multiple uses are accumulated
:   Additional option to pass to linker when linking tools in the exec configurations.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_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`](#effect_tag_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>` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]incompatible_auto_exec_groups` default: "false"
:   When 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 https://github.com/bazelbuild/bazel/issues/17134.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_merge_genfiles_directory` default: "true"
:   If true, the genfiles directory is folded into the bin directory.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]instrument_test_targets` default: "false"
:   When 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`](#effect_tag_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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ios_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible iOS version for target simulators and devices. If unspecified, uses 'ios_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--ios_multi_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]legacy_whole_archive` default: "true"
:   Deprecated, superseded by --incompatible_remove_legacy_whole_archive (see https://github.com/bazelbuild/bazel/issues/7362 for details). When on, use --whole-archive for cc_binary rules that have linkshared=True and either linkstatic=True or '-static' in linkopts. This is for backwards compatibility only. A better alternative is to use alwayslink=1 where required.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`deprecated`](#metadata_tag_DEPRECATED)

`--linkopt=<a string>` multiple uses are accumulated
:   Additional option to pass to gcc when linking.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltobackendopt=<a string>` multiple uses are accumulated
:   Additional option to pass to the LTO backend step (under --features=thin_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--ltoindexopt=<a string>` multiple uses are accumulated
:   Additional option to pass to the LTO indexing step (under --features=thin_lto).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--macos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple macOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--macos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible macOS version for targets. If unspecified, uses 'macos_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--memprof_profile=<a build target label>` default: see description
:   Use memprof profile.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]objc_debug_with_GLIBCXX` default: "false"
:   If set, and compilation mode is set to 'dbg', define GLIBCXX_DEBUG, GLIBCXX_DEBUG_PEDANTIC and GLIBCPP_CONCEPT_CHECKS.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]objc_enable_binary_stripping` default: "false"
:   Whether 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_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--objccopt=<a string>` multiple uses are accumulated
:   Additional options to pass to gcc when compiling Objective-C/C++ source files.

    Tags:
    [`action_command_lines`](#effect_tag_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>` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_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>` multiple uses are accumulated
:   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.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--platform_suffix=<a string>` default: see description
:   Specifies a suffix to be added to the configuration directory.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--propeller_optimize=<a build target label>` default: see description
:   Use 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_profile

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--propeller_optimize_absolute_cc_profile=<a string>` default: see description
:   Absolute path name of cc_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--propeller_optimize_absolute_ld_profile=<a string>` default: see description
:   Absolute path name of ld_profile file for Propeller Optimized builds.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--run_under=<a prefix in front of command>` default: see description
:   Prefix 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: 'valgrind', 'strace', 'strace -c', 'valgrind --quiet --num-callers=20', '//package:target', '//package:target --options'.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--[no]share_native_deps` default: "true"
:   If true, native libraries that contain identical functionality will be shared among different targets

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]stamp` default: "false"
:   Stamp binaries with the date, username, hostname, workspace information, etc.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--strip=<always, sometimes or never>` default: "sometimes"
:   Specifies whether to strip binaries and shared libraries (using "-Wl,--strip-debug"). The default value of 'sometimes' means strip iff --compilation_mode=fastbuild.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--stripopt=<a string>` multiple uses are accumulated
:   Additional options to pass to strip when generating a '&lt;name&gt;.stripped' binary.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--tvos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple tvOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--tvos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible tvOS version for target simulators and devices. If unspecified, uses 'tvos_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--visionos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple visionOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_cpus=<comma-separated list of options>` multiple uses are accumulated
:   Comma-separated list of architectures for which to build Apple watchOS binaries.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--watchos_minimum_os=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   Minimum compatible watchOS version for target simulators and devices. If unspecified, uses 'watchos_sdk_version'.

    Tags:
    [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--xbinary_fdo=<a build target label>` default: see description
:   Use 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_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Options that affect how strictly Bazel enforces valid build inputs (rule definitions, flag combinations, etc.):

`--[no]check_licenses` default: "false"
:   Check that licensing constraints imposed by dependent packages do not conflict with distribution modes of the targets being built. By default, licenses are not checked.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]check_visibility` default: "true"
:   If disabled, visibility errors in target dependencies are demoted to warnings.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]desugar_for_android` default: "true"
:   Whether to desugar Java 8 bytecode before dexing.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--[no]desugar_java8_libs` default: "false"
:   Whether to include supported Java 8 libraries in apps for legacy devices.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]enforce_constraints` default: "true"
:   Checks the environments each target is compatible with and reports errors if any target has dependencies that don't support the same environments

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS)

`--[no]experimental_check_desugar_deps` default: "true"
:   Whether to double-check correct desugaring at Android binary level.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_import_deps_checking=<a string>` default: see description
:   No-op, kept only for backwards compatibility

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_one_version_enforcement=<off, warning or error>` default: "OFF"
:   When 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--experimental_strict_java_deps=<off, warn, error, strict or default>` default: "default"
:   If true, checks that a Java target explicitly declares all directly used targets as dependencies.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--[no]incompatible_check_testonly_for_output_files` default: "false"
:   If 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`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_check_visibility_for_toolchains` default: "false"
:   If enabled, visibility checking also applies to toolchain implementations.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disable_native_android_rules` default: "false"
:   If enabled, direct usage of the native Android rules is disabled. Please use the Starlark Android rules from https://github.com/bazelbuild/rules_android

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disable_native_apple_binary_rule` default: "false"
:   No-op. Kept here for backwards compatibility.

    Tags:
    [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_python_disable_py2` default: "true"
:   If true, using Python 2 settings will cause an error. This includes python_version=PY2, srcs_version=PY2, and srcs_version=PY2ONLY. See https://github.com/bazelbuild/bazel/issues/15684 for more information.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]one_version_enforcement_on_java_tests` default: "true"
:   When 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_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--python_native_rules_allowlist=<a build target label>` default: see description
:   An allowlist (package_group target) to use when enforcing --incompatible_python_disallow_native_rules.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]strict_filesets` default: "false"
:   If this option is enabled, filesets crossing package boundaries are reported as errors.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--strict_proto_deps=<off, warn, error, strict or default>` default: "error"
:   Unless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--strict_public_imports=<off, warn, error, strict or default>` default: "off"
:   Unless OFF, checks that a proto_library target explicitly declares all targets used in 'import public' as exported.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]strict_system_includes` default: "false"
:   If true, headers found through system include paths (-isystem) are also required to be declared.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`eagerness_to_exit`](#effect_tag_EAGERNESS_TO_EXIT)

`--target_environment=<a build target label>` multiple uses are accumulated
:   Declares 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.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

Options that affect the signing outputs of a build:

`--apk_signing_method=<v1, v2, v1_v2 or v4>` default: "v1_v2"
:   Implementation to use to sign APKs

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]device_debug_entitlements` default: "true"
:   If set, and compilation mode is not 'opt', objc apps will include debug entitlements when signing.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--ios_signing_cert_name=<a string>` default: see description
:   Certificate name to use for iOS signing. If not set will fall back to provisioning profile. May be the certificate's keychain identity preference or (substring) of the certificate's common name, as per codesign's man page (SIGNING IDENTITIES).

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_disallow_legacy_py_provider` default: "true"
:   No-op, will be removed soon.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_disallow_sdk_frameworks_attributes` default: "false"
:   If true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library andobjc_import.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_objc_alwayslink_by_default` default: "false"
:   If true, make the default value true for alwayslink attributes in objc_library and objc_import.

    Tags:
    [`build_file_semantics`](#effect_tag_BUILD_FILE_SEMANTICS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_python_disallow_native_rules` default: "false"
:   When true, an error occurs when using the builtin py\_\* rules; instead the rule_python rules should be used. See https://github.com/bazelbuild/bazel/issues/17773 for more information and migration instructions.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

Options that govern the behavior of the test environment or test runner:

`--[no]allow_analysis_failures` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--analysis_testing_deps_limit=<an integer>` default: "2000"
:   Sets 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`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]break_build_on_parallel_dex2oat_failure` default: "false"
:   If true dex2oat action failures will cause the build to break instead of executing dex2oat during test runtime.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--default_test_resources=<a resource name followed by equal and 1 float or 4 float, e.g memory=10,30,60,100>` multiple uses are accumulated
:   Override the default resources amount for tests. The expected format is &lt;resource&gt;=&lt;value&gt;. If a single positive number is specified as &lt;value&gt; 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 [-|\*]&lt;float&gt; (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.

`--[no]experimental_android_use_parallel_dex2oat` default: "false"
:   Use dex2oat in parallel to possibly speed up android_test.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`host_machine_resource_optimizations`](#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]ios_memleaks` default: "false"
:   Enable checking for memory leaks in ios_test targets.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES)

`--ios_simulator_device=<a string>` default: see description
:   The device to simulate when running an iOS application in the simulator, e.g. 'iPhone 6'. You can get a list of devices by running 'xcrun simctl list devicetypes' on the machine the simulator will be run on.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--ios_simulator_version=<a dotted version (for example '2.3' or '3.3alpha2.4')>` default: see description
:   The version of iOS to run on the simulator when running or testing. This is ignored for ios_test rules if a target device is specified in the rule.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--runs_per_test=<a positive integer or test_regex@runs. This flag may be passed more than once>` multiple uses 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.

`--test_env=<a 'name=value' assignment with an optional value part>` multiple uses are accumulated
:   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. This option can be used multiple times to specify several variables. Used only by the 'bazel test' command.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

`--test_timeout=<a single integer or comma-separated list of 4 integers>` default: "-1"
:   Override 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.

`--[no]zip_undeclared_test_outputs` default: "false"
:   If true, undeclared test outputs will be archived in a zip file.

    Tags:
    [`test_runner`](#effect_tag_TEST_RUNNER)

Options that trigger optimizations of the build time:

`--[no]experimental_filter_library_jar_with_program_jar` default: "false"
:   Filter the ProGuard ProgramJar to remove any classes also present in the LibraryJar.

    Tags:
    [`action_command_lines`](#effect_tag_ACTION_COMMAND_LINES), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_inmemory_dotd_files` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_inmemory_jdeps_files` default: "true"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_retain_test_configuration_across_testonly` default: "true"
:   When 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`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_starlark_cc_import` default: "false"
:   If enabled, the Starlark version of cc_import can be used.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_unsupported_and_brittle_include_scanning` default: "false"
:   Whether 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.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`execution`](#effect_tag_EXECUTION), [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]incremental_dexing` default: "true"
:   Does most of the work for dexing separately for each Jar file.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

`--[no]objc_use_dotd_pruning` default: "true"
:   If set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]process_headers_in_dependencies` default: "false"
:   When building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).

    Tags:
    [`execution`](#effect_tag_EXECUTION)

`--[no]trim_test_configuration` default: "true"
:   When 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`](#effect_tag_LOADING_AND_ANALYSIS), [`loses_incremental_state`](#effect_tag_LOSES_INCREMENTAL_STATE)

Options that affect the verbosity, format or location of logging:

`--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_output`](#effect_tag_TERMINAL_OUTPUT)

Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:

`--flag_alias=<a 'name=value' flag alias>` multiple uses are accumulated
:   Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form "&lt;key&gt;=&lt;value&gt;" as an argument.

    Tags:
    [`changes_inputs`](#effect_tag_CHANGES_INPUTS)

`--[no]incompatible_default_to_explicit_init_py` default: "false"
:   This flag changes the default behavior so that \__init\_\_.py files are no longer automatically created in the runfiles of Python targets. Precisely, when a py_binary or py_test target has legacy_create_init set to "auto" (the default), it is treated as false if and only if this flag is set. See https://github.com/bazelbuild/bazel/issues/10076.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_py2_outputs_are_suffixed` default: "true"
:   If true, targets built in the Python 2 configuration will appear under an output root that includes the suffix '-py2', while targets built for Python 3 will appear in a root with no Python-related suffix. This means that the `bazel-bin` convenience symlink will point to Python 3 targets rather than Python 2. If you enable this option it is also recommended to enable `--incompatible_py3_is_default`.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_py3_is_default` default: "true"
:   If true, `py_binary` and `py_test` targets that do not set their `python_version` (or `default_python_version`) attribute will default to PY3 rather than to PY2. If you set this flag it is also recommended to set `--incompatible_py2_outputs_are_suffixed`.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_use_python_toolchains` default: "true"
:   If set to true, executable native Python rules will use the Python runtime specified by the Python toolchain, rather than the runtime given by legacy flags like --python_top.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--python_version=<PY2 or PY3>` default: see description
:   The Python major version mode, either `PY2` or `PY3`. Note that this is overridden by `py_binary` and `py_test` targets (even if they don't explicitly specify a version) so there is usually not much reason to supply this flag.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

Miscellaneous options, not otherwise categorized.:

`--[no]cache_test_results` [`-t`] default: "auto"
:   If set to 'auto', Bazel reruns a test if and only if: (1) Bazel detects changes in the test or its dependencies, (2) the test is marked as external, (3) multiple test runs were requested with --runs_per_test, or(4) the test previously failed. If set to 'yes', Bazel caches all test results except for tests marked as external. If set to 'no', Bazel does not cache any test results.

`--[no]experimental_cancel_concurrent_tests` default: "never"
:   If 'on_failed' or 'on_passed, then Blaze will cancel concurrently running tests on the first run with that result. This is only useful in combination with --runs_per_test_detects_flakes.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_fetch_all_coverage_outputs` default: "false"
:   If true, then Bazel fetches the entire coverage data directory for each test during a coverage run.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_generate_llvm_lcov` default: "false"
:   If true, coverage for clang will generate an LCOV report.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_j2objc_header_map` default: "true"
:   Whether to generate J2ObjC header map in parallel of J2ObjC transpilation.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_j2objc_shorter_header_path` default: "false"
:   Whether to generate with shorter header path (uses "\_ios" instead of "\_j2objc").

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--experimental_java_classpath=<off, javabuilder, bazel or bazel_no_fallback>` default: "javabuilder"
:   Enables reduced classpaths for Java compilations.

`--[no]experimental_java_header_compilation_direct_deps` default: "false"
:   Use separate outputs for header and regular compilation.

    Tags:
    [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_limit_android_lint_to_android_constrained_java` default: "false"
:   No-op, kept only for backwards compatibility

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]experimental_run_android_lint_on_java_rules` default: "false"
:   Whether to validate java\_\* sources.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`experimental`](#metadata_tag_EXPERIMENTAL)

`--[no]explicit_java_test_deps` default: "false"
:   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.

`--host_java_launcher=<a build target label>` default: see description
:   The Java launcher used by tools that are executed during a build.

`--host_javacopt=<a string>` multiple uses are accumulated
:   Additional options to pass to javac when building tools that are executed during a build.

`--host_jvmopt=<a string>` multiple uses 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.

`--[no]incompatible_check_sharding_support` default: "true"
:   If true, Bazel will fail a sharded test if the test runner does not indicate that it supports sharding by touching the file at the path in TEST_SHARD_STATUS_FILE. If false, a test runner that does not support sharding will lead to all tests running in each shard.

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_exclusive_test_sandboxed` default: "true"
:   If true, exclusive tests will run with sandboxed strategy. Add 'local' tag to force an exclusive test run locally

    Tags:
    [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--[no]incompatible_strict_action_env` default: "false"
:   If 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`](#effect_tag_LOADING_AND_ANALYSIS), [`incompatible_change`](#metadata_tag_INCOMPATIBLE_CHANGE)

`--j2objc_translation_flags=<comma-separated list of options>` multiple uses are accumulated
:   Additional options to pass to the J2ObjC tool.

`--java_debug`
:   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.

`--[no]java_deps` default: "true"
:   Generate dependency information (for now, compile-time classpath) per Java target.

`--[no]java_header_compilation` default: "true"
:   Compile ijars directly from source.

`--java_language_version=<a string>` default: ""
:   The Java language version

`--java_launcher=<a build target label>` default: see description
:   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.

`--java_runtime_version=<a string>` default: "local_jdk"
:   The Java runtime version

`--javacopt=<a string>` multiple uses are accumulated
:   Additional options to pass to javac.

`--jvmopt=<a string>` multiple uses 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.

`--legacy_main_dex_list_generator=<a build target label>` default: see description
:   Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.

`--optimizing_dexer=<a build target label>` default: see description
:   Specifies a binary to use to do dexing without sharding.

`--plugin=<a build target label>` multiple uses are accumulated
:   Plugins to use in the build. Currently works with java_plugin.

`--proguard_top=<a build target label>` default: see description
:   Specifies which version of ProGuard to use for code removal when building a Java binary.

`--proto_compiler=<a build target label>` default: "@bazel_tools//tools/proto:protoc"
:   The label of the proto-compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--[no]proto_profile` default: "true"
:   Whether to pass profile_path to the proto compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_profile_path=<a build target label>` default: see description
:   The 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`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_toolchain_for_cc=<a build target label>` default: "@bazel_tools//tools/proto:cc_toolchain"
:   Label of proto_lang_toolchain() which describes how to compile C++ protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_toolchain_for_j2objc=<a build target label>` default: "@bazel_tools//tools/j2objc:j2objc_proto_toolchain"
:   Label of proto_lang_toolchain() which describes how to compile j2objc protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--proto_toolchain_for_java=<a build target label>` default: "@bazel_tools//tools/proto:java_toolchain"
:   Label of proto_lang_toolchain() which describes how to compile Java protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_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 protos

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--protocopt=<a string>` multiple uses are accumulated
:   Additional options to pass to the protobuf compiler.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS)

`--[no]runs_per_test_detects_flakes` default: "false"
:   If true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.

`--shell_executable=<a path>` default: see description
:   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). Note that using a shell that is not compatible with bash may lead to build failures or runtime failures of the generated binaries.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

`--test_arg=<a string>` multiple uses are accumulated
:   Specifies 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.

`--test_filter=<a string>` default: see description
:   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.

`--test_result_expiration=<an integer>` default: "-1"
:   This option is deprecated and has no effect.

`--[no]test_runner_fail_fast` default: "false"
:   Forwards 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: 'explicit' to only use sharding if the 'shard_count' BUILD attribute is present. 'disabled' to never use test sharding. 'forced=k' to enforce 'k' shards for testing regardless of the 'shard_count' BUILD attribute.

`--tool_java_language_version=<a string>` default: ""
:   The Java language version used to execute the tools that are needed during a build

`--tool_java_runtime_version=<a string>` default: "remotejdk_11"
:   The Java runtime version used to execute tools during the build

`--[no]use_ijars` default: "true"
:   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 existence:

`--[no]gnu_format` default: "false"
:   If set, write the version to stdout using the conventions described in the GNU standards.

    Tags:
    [`affects_outputs`](#effect_tag_AFFECTS_OUTPUTS), [`execution`](#effect_tag_EXECUTION)

This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:

`--[no]incompatible_use_plus_in_repo_names` default: "true"
:   No-op.

    Tags:
    [`loading_and_analysis`](#effect_tag_LOADING_AND_ANALYSIS)

### Option 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. |
| `immutable` | This option cannot be changed in a transition. |

