<html devsite>
<head>
  <meta name="project_path" value="/_project.yaml">
  <meta name="book_path" value="/versions/7.5.0/_book.yaml">
</head>
<body>

<h1 class="page-title">Command-Line Reference</h1>

{% dynamic setvar source_file "site/command-line-reference-prefix.html" %}
{% dynamic setvar version "7.5.0" %}
{% dynamic setvar original_path "/reference/command-line-reference" %}
{% include "_buttons.html" %}

<pre>
bazel [&lt;startup options&gt;] &lt;command&gt; [&lt;args&gt;]
</pre>

or

<pre>
bazel [&lt;startup options&gt;] &lt;command&gt; [&lt;args&gt;] -- [&lt;target patterns&gt;]
</pre>

See the <a href="/versions/7.5.0/docs/build#specifying-build-targets">User's Guide</a> for the
target patterns syntax.

<h2>Option Syntax</h2>

<p>
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:
<pre>
--&lt;option&gt;=&lt;value&gt;
--&lt;option&gt; &lt;value&gt;
</pre>
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.
<pre>
-&lt;short_form&gt; &lt;value&gt;
</pre>
</p>

<p>
Boolean options can be enabled as follows:
<pre>
--&lt;option&gt;
--&lt;option&gt;=[true|yes|1]
</pre>

and disabled as follows:
<pre>
--no&lt;option&gt;
--&lt;option&gt;=[false|no|0]
</pre>
</p>

<p>
Tristate options are usually set to automatic by default, and can be
force-enabled as follows:
<pre>
--&lt;option&gt;=[true|yes|1]
</pre>
or force-disabled as follows:
<pre>
--no&lt;option&gt;
--&lt;option&gt;=[false|no|0]
</pre>
</p>
<h2>Commands</h2>
<table>
<tr>
  <td><a href="#analyze-profile"><code>analyze-profile</code></a></td>
  <td>Analyzes build profile data.</td>
</tr>
<tr>
  <td><a href="#aquery"><code>aquery</code></a></td>
  <td>Analyzes the given targets and queries the action graph.</td>
</tr>
<tr>
  <td><a href="#build"><code>build</code></a></td>
  <td>Builds the specified targets.</td>
</tr>
<tr>
  <td><a href="#canonicalize-flags"><code>canonicalize-flags</code></a></td>
  <td>Canonicalizes a list of bazel options.</td>
</tr>
<tr>
  <td><a href="#clean"><code>clean</code></a></td>
  <td>Removes output files and optionally stops the server.</td>
</tr>
<tr>
  <td><a href="#coverage"><code>coverage</code></a></td>
  <td>Generates code coverage report for specified test targets.</td>
</tr>
<tr>
  <td><a href="#cquery"><code>cquery</code></a></td>
  <td>Loads, analyzes, and queries the specified targets w/ configurations.</td>
</tr>
<tr>
  <td><a href="#dump"><code>dump</code></a></td>
  <td>Dumps the internal state of the bazel server process.</td>
</tr>
<tr>
  <td><a href="#fetch"><code>fetch</code></a></td>
  <td>Fetches external repositories that are prerequisites to the targets.</td>
</tr>
<tr>
  <td><a href="#help"><code>help</code></a></td>
  <td>Prints help for commands, or the index.</td>
</tr>
<tr>
  <td><a href="#info"><code>info</code></a></td>
  <td>Displays runtime info about the bazel server.</td>
</tr>
<tr>
  <td><a href="#license"><code>license</code></a></td>
  <td>Prints the license of this software.</td>
</tr>
<tr>
  <td><a href="#mobile-install"><code>mobile-install</code></a></td>
  <td>Installs targets to mobile devices.</td>
</tr>
<tr>
  <td><a href="#mod"><code>mod</code></a></td>
  <td>Queries the Bzlmod external dependency graph</td>
</tr>
<tr>
  <td><a href="#print_action"><code>print_action</code></a></td>
  <td>Prints the command line args for compiling a file.</td>
</tr>
<tr>
  <td><a href="#query"><code>query</code></a></td>
  <td>Executes a dependency graph query.</td>
</tr>
<tr>
  <td><a href="#run"><code>run</code></a></td>
  <td>Runs the specified target.</td>
</tr>
<tr>
  <td><a href="#shutdown"><code>shutdown</code></a></td>
  <td>Stops the bazel server.</td>
</tr>
<tr>
  <td><a href="#sync"><code>sync</code></a></td>
  <td>Syncs all repositories specified in the workspace file</td>
</tr>
<tr>
  <td><a href="#test"><code>test</code></a></td>
  <td>Builds and runs the specified test targets.</td>
</tr>
<tr>
  <td><a href="#vendor"><code>vendor</code></a></td>
  <td>Fetches external repositories into a folder specified by the flag --vendor_dir.</td>
</tr>
<tr>
  <td><a href="#version"><code>version</code></a></td>
  <td>Prints version information for bazel.</td>
</tr>
</table>

<h2>Startup Options</h2>
<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--autodetect_server_javabase"><code><a href="#flag--autodetect_server_javabase">--[no]autodetect_server_javabase</a></code> default: "true"</dt>
<dd>
When --noautodetect_server_javabase is passed, Bazel does not fall back to the local JDK for running the bazel server and instead exits.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--batch"><code><a href="#flag--batch">--[no]batch</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--batch_cpu_scheduling"><code><a href="#flag--batch_cpu_scheduling">--[no]batch_cpu_scheduling</a></code> default: "false"</dt>
<dd>
Only on Linux; use &#39;batch&#39; CPU scheduling for Blaze. This policy is useful for workloads that are non-interactive, but do not want to lower their nice value. See &#39;man 2 sched_setscheduler&#39;. If false, then Bazel does not perform a system call.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--bazelrc"><code><a href="#flag--bazelrc">--bazelrc</a>=&lt;path&gt;</code> multiple uses are accumulated</dt>
<dd>
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&#39;s home directory.
Note: command line options will always supersede any option in bazelrc.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--block_for_lock"><code><a href="#flag--block_for_lock">--[no]block_for_lock</a></code> default: "true"</dt>
<dd>
When --noblock_for_lock is passed, Bazel does not wait for a running command to complete, but instead exits immediately.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--client_debug"><code><a href="#flag--client_debug">--[no]client_debug</a></code> default: "false"</dt>
<dd>
If true, log debug information from the client to stderr. Changing this option will not cause the server to restart.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--connect_timeout_secs"><code><a href="#flag--connect_timeout_secs">--connect_timeout_secs</a>=&lt;an integer&gt</code> default: "30"</dt>
<dd>
The amount of time the client waits for each attempt to connect to the server
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--digest_function"><code><a href="#flag--digest_function">--digest_function</a>=&lt;hash function&gt</code> default: see description</dt>
<dd>
The hash function to use when computing file digests.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--expand_configs_in_place"><code><a href="#flag--expand_configs_in_place">--[no]expand_configs_in_place</a></code> default: "true"</dt>
<dd>
Changed the expansion of --config flags to be done in-place, as opposed to in a fixed point expansion between normal rc options and command-line specified options.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a>, <a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--failure_detail_out"><code><a href="#flag--failure_detail_out">--failure_detail_out</a>=&lt;path&gt;</code> default: see description</dt>
<dd>
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 ${OUTPUT_BASE}/failure_detail.rawproto.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--home_rc"><code><a href="#flag--home_rc">--[no]home_rc</a></code> default: "true"</dt>
<dd>
Whether or not to look for the home bazelrc file at $HOME/.bazelrc
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--idle_server_tasks"><code><a href="#flag--idle_server_tasks">--[no]idle_server_tasks</a></code> default: "true"</dt>
<dd>
Run System.gc() when the server is idle
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--ignore_all_rc_files"><code><a href="#flag--ignore_all_rc_files">--[no]ignore_all_rc_files</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--io_nice_level"><code><a href="#flag--io_nice_level">--io_nice_level</a>={-1,0,1,2,3,4,5,6,7}</code> default: "-1"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--local_startup_timeout_secs"><code><a href="#flag--local_startup_timeout_secs">--local_startup_timeout_secs</a>=&lt;an integer&gt</code> default: "120"</dt>
<dd>
The maximum amount of time the client waits to connect to the server
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--macos_qos_class"><code><a href="#flag--macos_qos_class">--macos_qos_class</a>=&lt;a string&gt</code> default: "default"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--max_idle_secs"><code><a href="#flag--max_idle_secs">--max_idle_secs</a>=&lt;integer&gt;</code> default: "10800"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--output_base"><code><a href="#flag--output_base">--output_base</a>=&lt;path&gt;</code> default: see description</dt>
<dd>
If set, specifies the output location to which all build output will be written. Otherwise, the location will be ${OUTPUT_ROOT}/_blaze_${USER}/${MD5_OF_WORKSPACE_ROOT}. Note: If you specify a different option from one to the next Bazel invocation for this value, you&#39;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 &#39;bazel help shutdown&#39; on how to shutdown a Bazel server.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--output_user_root"><code><a href="#flag--output_user_root">--output_user_root</a>=&lt;path&gt;</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--preemptible"><code><a href="#flag--preemptible">--[no]preemptible</a></code> default: "false"</dt>
<dd>
If true, the command can be preempted if another command is started.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--server_jvm_out"><code><a href="#flag--server_jvm_out">--server_jvm_out</a>=&lt;path&gt;</code> default: see description</dt>
<dd>
The location to write the server&#39;s JVM&#39;s output. If unset then defaults to a location in output_base.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--shutdown_on_low_sys_mem"><code><a href="#flag--shutdown_on_low_sys_mem">--[no]shutdown_on_low_sys_mem</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--system_rc"><code><a href="#flag--system_rc">--[no]system_rc</a></code> default: "true"</dt>
<dd>
Whether or not to look for the system-wide bazelrc.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--unlimit_coredumps"><code><a href="#flag--unlimit_coredumps">--[no]unlimit_coredumps</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--watchfs"><code><a href="#flag--watchfs">--[no]watchfs</a></code> default: "false"</dt>
<dd>
If true, bazel tries to use the operating system&#39;s file watch service for local changes instead of scanning every file for a change.
<br>Tags:
<a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--windows_enable_symlinks"><code><a href="#flag--windows_enable_symlinks">--[no]windows_enable_symlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--workspace_rc"><code><a href="#flag--workspace_rc">--[no]workspace_rc</a></code> default: "true"</dt>
<dd>
Whether or not to look for the workspace bazelrc file at $workspace/.bazelrc
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--host_jvm_args"><code><a href="#flag--host_jvm_args">--host_jvm_args</a>=&lt;jvm_arg&gt;</code> multiple uses are accumulated</dt>
<dd>
Flags to pass to the JVM executing Blaze.
</dd>
<dt id="flag--host_jvm_debug"><code><a href="#flag--host_jvm_debug">--host_jvm_debug</a></code></dt>
<dd>
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.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--host_jvm_args">--host_jvm_args=-Xdebug</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--host_jvm_args">--host_jvm_args=-Xrunjdwp:transport=dt_socket,server=y,address=5005</a></code><br/>
</dd>
<dt id="flag--host_jvm_profile"><code><a href="#flag--host_jvm_profile">--host_jvm_profile</a>=&lt;profiler_name&gt;</code> default: ""</dt>
<dd>
Convenience option to add some profiler/debugger-specific JVM startup flags. Bazel has a list of known values that it maps to hard-coded JVM startup flags, possibly searching some hardcoded paths for certain files.
</dd>
<dt id="flag--server_javabase"><code><a href="#flag--server_javabase">--server_javabase</a>=&lt;jvm path&gt;</code> default: ""</dt>
<dd>
Path to the JVM used to execute Bazel itself.
</dd>
</dl>

<h2><a name="common_options">Options Common to all Commands</a></h2>
<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--http_connector_attempts"><code><a href="#flag--http_connector_attempts">--http_connector_attempts</a>=&lt;an integer&gt</code> default: "8"</dt>
<dd>
The maximum number of attempts for http downloads.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--http_connector_retry_max_timeout"><code><a href="#flag--http_connector_retry_max_timeout">--http_connector_retry_max_timeout</a>=&lt;An immutable length of time.&gt</code> default: "0s"</dt>
<dd>
The maximum timeout for http download retries. With a value of 0, no timeout maximum is defined.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--http_max_parallel_downloads"><code><a href="#flag--http_max_parallel_downloads">--http_max_parallel_downloads</a>=&lt;an integer&gt</code> default: "8"</dt>
<dd>
The maximum number parallel http downloads.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--http_timeout_scaling"><code><a href="#flag--http_timeout_scaling">--http_timeout_scaling</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
Scale all timeouts related to http downloads by the given factor
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--experimental_ui_max_stdouterr_bytes"><code><a href="#flag--experimental_ui_max_stdouterr_bytes">--experimental_ui_max_stdouterr_bytes</a>=&lt;an integer in (-1)-1073741819 range&gt</code> default: "1048576"</dt>
<dd>
The maximum size of the stdout / stderr files that will be printed to the console. -1 implies no limit.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--incompatible_remote_dangling_symlinks"><code><a href="#flag--incompatible_remote_dangling_symlinks">--[no]incompatible_remote_dangling_symlinks</a></code> default: "true"</dt>
<dd>
If set to true, symlinks uploaded to a remote or disk cache are allowed to dangle.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_remote_symlinks"><code><a href="#flag--incompatible_remote_symlinks">--[no]incompatible_remote_symlinks</a></code> default: "true"</dt>
<dd>
If set to true, Bazel will always upload symlinks as such to a remote or disk cache. Otherwise, non-dangling relative symlinks (and only those) will be uploaded as the file or directory they point to.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
</dl>
<dl>Options that configure the toolchain used for action execution:
<dt id="flag--incompatible_enable_proto_toolchain_resolution"><code><a href="#flag--incompatible_enable_proto_toolchain_resolution">--[no]incompatible_enable_proto_toolchain_resolution</a></code> default: "false"</dt>
<dd>
If true, proto lang rules define toolchains from rules_proto, rules_java, rules_cc repositories.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
</dl>
<dl></dl>
<dl>Options that let the user configure the intended output, affecting its value, as opposed to its existence:
<dt id="flag--bep_maximum_open_remote_upload_files"><code><a href="#flag--bep_maximum_open_remote_upload_files">--bep_maximum_open_remote_upload_files</a>=&lt;an integer&gt</code> default: "-1"</dt>
<dd>
Maximum number of open files allowed during BEP artifact upload.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--remote_download_all"><code><a href="#flag--remote_download_all">--remote_download_all</a></code></dt>
<dd>
Downloads all remote outputs to the local machine. This flag is an alias for --remote_download_outputs=all.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--remote_download_outputs">--remote_download_outputs=all</a></code><br/>
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--remote_download_minimal"><code><a href="#flag--remote_download_minimal">--remote_download_minimal</a></code></dt>
<dd>
Does not download any remote build outputs to the local machine. This flag is an alias for --remote_download_outputs=minimal.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--remote_download_outputs">--remote_download_outputs=minimal</a></code><br/>
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--remote_download_outputs"><code><a href="#flag--remote_download_outputs">--remote_download_outputs</a>=&lt;all, minimal or toplevel&gt</code> default: "toplevel"</dt>
<dd>
If set to &#39;minimal&#39; doesn&#39;t download any remote build outputs to the local machine, except the ones required by local actions. If set to &#39;toplevel&#39; behaves like&#39;minimal&#39; 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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--remote_download_symlink_template"><code><a href="#flag--remote_download_symlink_template">--remote_download_symlink_template</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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 {hash} and {size_bytes} that expand to the hash of the object and the size in bytes, respectively. These symbolic links may, for example, point to a FUSE file system that loads objects from the CAS on demand.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--remote_download_toplevel"><code><a href="#flag--remote_download_toplevel">--remote_download_toplevel</a></code></dt>
<dd>
Only downloads remote outputs of top level targets to the local machine. This flag is an alias for --remote_download_outputs=toplevel.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--remote_download_outputs">--remote_download_outputs=toplevel</a></code><br/>
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--repo_env"><code><a href="#flag--repo_env">--repo_env</a>=&lt;a &#39;name=value&#39; assignment with an optional value part&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
</dl>
<dl>Options that affect how strictly Bazel enforces valid build inputs (rule definitions,  flag combinations, etc.):
<dt id="flag--check_bzl_visibility"><code><a href="#flag--check_bzl_visibility">--[no]check_bzl_visibility</a></code> default: "true"</dt>
<dd>
If disabled, .bzl load visibility errors are demoted to warnings.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
</dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--enable_bzlmod"><code><a href="#flag--enable_bzlmod">--[no]enable_bzlmod</a></code> default: "true"</dt>
<dd>
If true, enables the Bzlmod dependency management system, taking precedence over WORKSPACE. See https://bazel.build/docs/bzlmod for more information.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--enable_workspace"><code><a href="#flag--enable_workspace">--[no]enable_workspace</a></code> default: "true"</dt>
<dd>
If true, enables the legacy WORKSPACE system for external dependencies. See https://bazel.build/external/overview for more information.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_bzl_visibility"><code><a href="#flag--experimental_bzl_visibility">--[no]experimental_bzl_visibility</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_cc_shared_library"><code><a href="#flag--experimental_cc_shared_library">--[no]experimental_cc_shared_library</a></code> default: "false"</dt>
<dd>
If set to true, rule attributes and Starlark API methods needed for the rule cc_shared_library will be available
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_cc_static_library"><code><a href="#flag--experimental_cc_static_library">--[no]experimental_cc_static_library</a></code> default: "false"</dt>
<dd>
If set to true, rule attributes and Starlark API methods needed for the rule cc_static_library will be available
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_disable_external_package"><code><a href="#flag--experimental_disable_external_package">--[no]experimental_disable_external_package</a></code> default: "false"</dt>
<dd>
If set to true, the auto-generated //external package will not be available anymore. Bazel will still be unable to parse the file &#39;external/BUILD&#39;, but globs reaching into external/ from the unnamed package will work.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_enable_android_migration_apis"><code><a href="#flag--experimental_enable_android_migration_apis">--[no]experimental_enable_android_migration_apis</a></code> default: "false"</dt>
<dd>
If set to true, enables the APIs required to support the Android Starlark migration.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--experimental_enable_scl_dialect"><code><a href="#flag--experimental_enable_scl_dialect">--[no]experimental_enable_scl_dialect</a></code> default: "false"</dt>
<dd>
If set to true, .scl files may be used in load() statements.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--experimental_google_legacy_api"><code><a href="#flag--experimental_google_legacy_api">--[no]experimental_google_legacy_api</a></code> default: "false"</dt>
<dd>
If set to true, exposes a number of experimental pieces of Starlark build API pertaining to Google legacy code.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_isolated_extension_usages"><code><a href="#flag--experimental_isolated_extension_usages">--[no]experimental_isolated_extension_usages</a></code> default: "false"</dt>
<dd>
If true, enables the &lt;code&gt;isolate&lt;/code&gt; parameter in the &lt;a href=&quot;https://bazel.build/rules/lib/globals/module#use_extension&quot;&gt;&lt;code&gt;use_extension&lt;/code&gt;&lt;/a&gt; function.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_java_library_export"><code><a href="#flag--experimental_java_library_export">--[no]experimental_java_library_export</a></code> default: "false"</dt>
<dd>
If enabled, experimental_java_library_export_do_not_use module is available.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--experimental_platforms_api"><code><a href="#flag--experimental_platforms_api">--[no]experimental_platforms_api</a></code> default: "false"</dt>
<dd>
If set to true, enables a number of platform-related Starlark APIs useful for debugging.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_repo_remote_exec"><code><a href="#flag--experimental_repo_remote_exec">--[no]experimental_repo_remote_exec</a></code> default: "false"</dt>
<dd>
If set to true, repository_rule gains some remote execution capabilities.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_sibling_repository_layout"><code><a href="#flag--experimental_sibling_repository_layout">--[no]experimental_sibling_repository_layout</a></code> default: "false"</dt>
<dd>
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 &#39;external&#39; directory.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_allow_tags_propagation"><code><a href="#flag--incompatible_allow_tags_propagation">--[no]incompatible_allow_tags_propagation</a></code> default: "true"</dt>
<dd>
If set to true, tags will be propagated from a target to the actions&#39; execution requirements; otherwise tags are not propagated. See https://github.com/bazelbuild/bazel/issues/8830 for details.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_always_check_depset_elements"><code><a href="#flag--incompatible_always_check_depset_elements">--[no]incompatible_always_check_depset_elements</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_autoload_externally"><code><a href="#flag--incompatible_autoload_externally">--incompatible_autoload_externally</a>=&lt;comma-separated set of options&gt</code> default: ""</dt>
<dd>
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&#39;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 &quot;+foo&quot; in this flag causes symbol foo to be autoloaded, except in foo&#39;s exempt repositories, within which the Bazel-defined version of foo is still available.
A list item of &quot;foo&quot; triggers autoloading as above, but the Bazel-defined version of foo is not made available to the excluded repositories. This ensures that foo&#39;s external repository does not depend on the old Bazel implementation of foo
A list item of &quot;-foo&quot; 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&#39;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.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_depset_for_java_output_source_jars"><code><a href="#flag--incompatible_depset_for_java_output_source_jars">--[no]incompatible_depset_for_java_output_source_jars</a></code> default: "true"</dt>
<dd>
When true, Bazel no longer returns a list from java_info.java_output[0].source_jars but returns a depset instead.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_depset_for_libraries_to_link_getter"><code><a href="#flag--incompatible_depset_for_libraries_to_link_getter">--[no]incompatible_depset_for_libraries_to_link_getter</a></code> default: "true"</dt>
<dd>
When true, Bazel no longer returns a list from linking_context.libraries_to_link but returns a depset instead.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disable_objc_library_transition"><code><a href="#flag--incompatible_disable_objc_library_transition">--[no]incompatible_disable_objc_library_transition</a></code> default: "true"</dt>
<dd>
Disable objc_library&#39;s custom transition and inherit from the top level target instead
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disable_starlark_host_transitions"><code><a href="#flag--incompatible_disable_starlark_host_transitions">--[no]incompatible_disable_starlark_host_transitions</a></code> default: "false"</dt>
<dd>
If set to true, rule attributes cannot set &#39;cfg = &quot;host&quot;&#39;. Rules should set &#39;cfg = &quot;exec&quot;&#39; instead.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disable_target_provider_fields"><code><a href="#flag--incompatible_disable_target_provider_fields">--[no]incompatible_disable_target_provider_fields</a></code> default: "false"</dt>
<dd>
If set to true, disable the ability to access providers on &#39;target&#39; 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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disallow_empty_glob"><code><a href="#flag--incompatible_disallow_empty_glob">--[no]incompatible_disallow_empty_glob</a></code> default: "false"</dt>
<dd>
If set to true, the default value of the `allow_empty` argument of glob() is False.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disallow_struct_provider_syntax"><code><a href="#flag--incompatible_disallow_struct_provider_syntax">--[no]incompatible_disallow_struct_provider_syntax</a></code> default: "false"</dt>
<dd>
If set to true, rule implementation functions may not return a struct. They must instead return a list of provider instances.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enable_deprecated_label_apis"><code><a href="#flag--incompatible_enable_deprecated_label_apis">--[no]incompatible_enable_deprecated_label_apis</a></code> default: "true"</dt>
<dd>
If enabled, certain deprecated APIs (native.repository_name, Label.workspace_name, Label.relative) can be used.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--incompatible_existing_rules_immutable_view"><code><a href="#flag--incompatible_existing_rules_immutable_view">--[no]incompatible_existing_rules_immutable_view</a></code> default: "true"</dt>
<dd>
If set to true, native.existing_rule and native.existing_rules return lightweight immutable view objects instead of mutable dicts.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_fail_on_unknown_attributes"><code><a href="#flag--incompatible_fail_on_unknown_attributes">--[no]incompatible_fail_on_unknown_attributes</a></code> default: "true"</dt>
<dd>
If enabled, targets that have unknown attributes set to None fail.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_fix_package_group_reporoot_syntax"><code><a href="#flag--incompatible_fix_package_group_reporoot_syntax">--[no]incompatible_fix_package_group_reporoot_syntax</a></code> default: "true"</dt>
<dd>
In package_group&#39;s `packages` attribute, changes the meaning of the value &quot;//...&quot; to refer to all packages in the current repository instead of all packages in any repository. You can use the special value &quot;public&quot; in place of &quot;//...&quot; to obtain the old behavior. This flag requires that --incompatible_package_group_has_public_syntax also be enabled.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_java_common_parameters"><code><a href="#flag--incompatible_java_common_parameters">--[no]incompatible_java_common_parameters</a></code> default: "true"</dt>
<dd>
If set to true, the output_jar, and host_javabase parameters in pack_sources and host_javabase in compile will all be removed.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_merge_fixed_and_default_shell_env"><code><a href="#flag--incompatible_merge_fixed_and_default_shell_env">--[no]incompatible_merge_fixed_and_default_shell_env</a></code> default: "true"</dt>
<dd>
If enabled, actions registered with ctx.actions.run and ctx.actions.run_shell with both &#39;env&#39; and &#39;use_default_shell_env = True&#39; specified will use an environment obtained from the default shell environment by overriding with the values passed in to &#39;env&#39;. If disabled, the value of &#39;env&#39; is completely ignored in this case.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_new_actions_api"><code><a href="#flag--incompatible_new_actions_api">--[no]incompatible_new_actions_api</a></code> default: "true"</dt>
<dd>
If set to true, the API to create actions is only available on `ctx.actions`, not on `ctx`.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_no_attr_license"><code><a href="#flag--incompatible_no_attr_license">--[no]incompatible_no_attr_license</a></code> default: "true"</dt>
<dd>
If set to true, disables the function `attr.license`.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_no_implicit_file_export"><code><a href="#flag--incompatible_no_implicit_file_export">--[no]incompatible_no_implicit_file_export</a></code> default: "false"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_no_implicit_watch_label"><code><a href="#flag--incompatible_no_implicit_watch_label">--[no]incompatible_no_implicit_watch_label</a></code> default: "false"</dt>
<dd>
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 = &quot;no&quot;&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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_no_rule_outputs_param"><code><a href="#flag--incompatible_no_rule_outputs_param">--[no]incompatible_no_rule_outputs_param</a></code> default: "false"</dt>
<dd>
If set to true, disables the `outputs` parameter of the `rule()` Starlark function.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_objc_provider_remove_linking_info"><code><a href="#flag--incompatible_objc_provider_remove_linking_info">--[no]incompatible_objc_provider_remove_linking_info</a></code> default: "false"</dt>
<dd>
If set to true, the ObjcProvider&#39;s APIs for linking info will be removed.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_package_group_has_public_syntax"><code><a href="#flag--incompatible_package_group_has_public_syntax">--[no]incompatible_package_group_has_public_syntax</a></code> default: "true"</dt>
<dd>
In package_group&#39;s `packages` attribute, allows writing &quot;public&quot; or &quot;private&quot; to refer to all packages or no packages respectively.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_require_linker_input_cc_api"><code><a href="#flag--incompatible_require_linker_input_cc_api">--[no]incompatible_require_linker_input_cc_api</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_run_shell_command_string"><code><a href="#flag--incompatible_run_shell_command_string">--[no]incompatible_run_shell_command_string</a></code> default: "true"</dt>
<dd>
If set to true, the command parameter of actions.run_shell will only accept string
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_stop_exporting_language_modules"><code><a href="#flag--incompatible_stop_exporting_language_modules">--[no]incompatible_stop_exporting_language_modules</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_struct_has_no_methods"><code><a href="#flag--incompatible_struct_has_no_methods">--[no]incompatible_struct_has_no_methods</a></code> default: "false"</dt>
<dd>
Disables the to_json and to_proto methods of struct, which pollute the struct field namespace. Instead, use json.encode or json.encode_indent for JSON, or proto.encode_text for textproto.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_top_level_aspects_require_providers"><code><a href="#flag--incompatible_top_level_aspects_require_providers">--[no]incompatible_top_level_aspects_require_providers</a></code> default: "false"</dt>
<dd>
If set to true, the top level aspect will honor its required providers and only run on top level targets whose rules&#39; advertised providers satisfy the required providers of the aspect.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_unambiguous_label_stringification"><code><a href="#flag--incompatible_unambiguous_label_stringification">--[no]incompatible_unambiguous_label_stringification</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_use_cc_configure_from_rules_cc"><code><a href="#flag--incompatible_use_cc_configure_from_rules_cc">--[no]incompatible_use_cc_configure_from_rules_cc</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_use_plus_in_repo_names"><code><a href="#flag--incompatible_use_plus_in_repo_names">--[no]incompatible_use_plus_in_repo_names</a></code> default: "false"</dt>
<dd>
If true, uses the plus sign (+) as the separator in canonical repo names, instead of the tilde (~). This is to address severe performance issues on Windows; see https://github.com/bazelbuild/bazel/issues/22865 for more information.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--incompatible_visibility_private_attributes_at_definition"><code><a href="#flag--incompatible_visibility_private_attributes_at_definition">--[no]incompatible_visibility_private_attributes_at_definition</a></code> default: "true"</dt>
<dd>
If set to true, the visibility of private rule attributes is checked with respect to the rule definition, falling back to rule usage if not visible.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--max_computation_steps"><code><a href="#flag--max_computation_steps">--max_computation_steps</a>=&lt;a long integer&gt</code> default: "0"</dt>
<dd>
The maximum number of Starlark computation steps that may be executed by a BUILD file (zero means no limit).
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--nested_set_depth_limit"><code><a href="#flag--nested_set_depth_limit">--nested_set_depth_limit</a>=&lt;an integer&gt</code> default: "3500"</dt>
<dd>
The maximum depth of the graph internal to a depset (also known as NestedSet), above which the depset() constructor will fail.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--repositories_without_autoloads"><code><a href="#flag--repositories_without_autoloads">--repositories_without_autoloads</a>=&lt;comma-separated set of options&gt</code> default: ""</dt>
<dd>
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).
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--heuristically_drop_nodes"><code><a href="#flag--heuristically_drop_nodes">--[no]heuristically_drop_nodes</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--incompatible_do_not_split_linking_cmdline"><code><a href="#flag--incompatible_do_not_split_linking_cmdline">--[no]incompatible_do_not_split_linking_cmdline</a></code> default: "true"</dt>
<dd>
When true, Bazel no longer modifies command line flags used for linking, and also doesn&#39;t selectively decide which flags go to the param file and which don&#39;t.  See https://github.com/bazelbuild/bazel/issues/7670 for details.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--keep_state_after_build"><code><a href="#flag--keep_state_after_build">--[no]keep_state_after_build</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--track_incremental_state"><code><a href="#flag--track_incremental_state">--[no]track_incremental_state</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--announce_rc"><code><a href="#flag--announce_rc">--[no]announce_rc</a></code> default: "false"</dt>
<dd>
Whether to announce rc options.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--attempt_to_print_relative_paths"><code><a href="#flag--attempt_to_print_relative_paths">--[no]attempt_to_print_relative_paths</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--bes_backend"><code><a href="#flag--bes_backend">--bes_backend</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--bes_check_preceding_lifecycle_events"><code><a href="#flag--bes_check_preceding_lifecycle_events">--[no]bes_check_preceding_lifecycle_events</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--bes_header"><code><a href="#flag--bes_header">--bes_header</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--bes_instance_name"><code><a href="#flag--bes_instance_name">--bes_instance_name</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Specifies the instance name under which the BES will persist uploaded BEP. Defaults to null.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--bes_keywords"><code><a href="#flag--bes_keywords">--bes_keywords</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Specifies a list of notification keywords to be added the default set of keywords published to BES (&quot;command_name=&lt;command_name&gt; &quot;, &quot;protocol_name=BEP&quot;). Defaults to none.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--bes_lifecycle_events"><code><a href="#flag--bes_lifecycle_events">--[no]bes_lifecycle_events</a></code> default: "true"</dt>
<dd>
Specifies whether to publish BES lifecycle events. (defaults to &#39;true&#39;).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--bes_oom_finish_upload_timeout"><code><a href="#flag--bes_oom_finish_upload_timeout">--bes_oom_finish_upload_timeout</a>=&lt;An immutable length of time.&gt</code> default: "10m"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--bes_outerr_buffer_size"><code><a href="#flag--bes_outerr_buffer_size">--bes_outerr_buffer_size</a>=&lt;an integer&gt</code> default: "10240"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--bes_outerr_chunk_size"><code><a href="#flag--bes_outerr_chunk_size">--bes_outerr_chunk_size</a>=&lt;an integer&gt</code> default: "1048576"</dt>
<dd>
Specifies the maximal size of stdout or stderr to be sent to BEP in a single message.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--bes_proxy"><code><a href="#flag--bes_proxy">--bes_proxy</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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).
</dd>
<dt id="flag--bes_results_url"><code><a href="#flag--bes_results_url">--bes_results_url</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--bes_system_keywords"><code><a href="#flag--bes_system_keywords">--bes_system_keywords</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Specifies a list of notification keywords to be included directly, without the &quot;user_keyword=&quot; 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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--bes_timeout"><code><a href="#flag--bes_timeout">--bes_timeout</a>=&lt;An immutable length of time.&gt</code> default: "0s"</dt>
<dd>
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 &#39;0&#39; which means that there is no timeout.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--bes_upload_mode"><code><a href="#flag--bes_upload_mode">--bes_upload_mode</a>=&lt;wait_for_upload_complete, nowait_for_upload_complete or fully_async&gt</code> default: "wait_for_upload_complete"</dt>
<dd>
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 &#39;wait_for_upload_complete&#39; (default), &#39;nowait_for_upload_complete&#39;, or &#39;fully_async&#39;.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--build_event_binary_file"><code><a href="#flag--build_event_binary_file">--build_event_binary_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_event_binary_file_path_conversion"><code><a href="#flag--build_event_binary_file_path_conversion">--[no]build_event_binary_file_path_conversion</a></code> default: "true"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_event_binary_file_upload_mode"><code><a href="#flag--build_event_binary_file_upload_mode">--build_event_binary_file_upload_mode</a>=&lt;wait_for_upload_complete, nowait_for_upload_complete or fully_async&gt</code> default: "wait_for_upload_complete"</dt>
<dd>
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 &#39;wait_for_upload_complete&#39; (default), &#39;nowait_for_upload_complete&#39;, or &#39;fully_async&#39;.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--build_event_json_file"><code><a href="#flag--build_event_json_file">--build_event_json_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_event_json_file_path_conversion"><code><a href="#flag--build_event_json_file_path_conversion">--[no]build_event_json_file_path_conversion</a></code> default: "true"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_event_json_file_upload_mode"><code><a href="#flag--build_event_json_file_upload_mode">--build_event_json_file_upload_mode</a>=&lt;wait_for_upload_complete, nowait_for_upload_complete or fully_async&gt</code> default: "wait_for_upload_complete"</dt>
<dd>
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 &#39;wait_for_upload_complete&#39; (default), &#39;nowait_for_upload_complete&#39;, or &#39;fully_async&#39;.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--build_event_max_named_set_of_file_entries"><code><a href="#flag--build_event_max_named_set_of_file_entries">--build_event_max_named_set_of_file_entries</a>=&lt;an integer&gt</code> default: "-1"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_event_publish_all_actions"><code><a href="#flag--build_event_publish_all_actions">--[no]build_event_publish_all_actions</a></code> default: "false"</dt>
<dd>
Whether all actions should be published.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_event_text_file"><code><a href="#flag--build_event_text_file">--build_event_text_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty, write a textual representation of the build event protocol to that file
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_event_text_file_path_conversion"><code><a href="#flag--build_event_text_file_path_conversion">--[no]build_event_text_file_path_conversion</a></code> default: "true"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_event_text_file_upload_mode"><code><a href="#flag--build_event_text_file_upload_mode">--build_event_text_file_upload_mode</a>=&lt;wait_for_upload_complete, nowait_for_upload_complete or fully_async&gt</code> default: "wait_for_upload_complete"</dt>
<dd>
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 &#39;wait_for_upload_complete&#39; (default), &#39;nowait_for_upload_complete&#39;, or &#39;fully_async&#39;.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--experimental_announce_profile_path"><code><a href="#flag--experimental_announce_profile_path">--[no]experimental_announce_profile_path</a></code> default: "false"</dt>
<dd>
If enabled, adds the JSON profile path to the log.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--experimental_bep_target_summary"><code><a href="#flag--experimental_bep_target_summary">--[no]experimental_bep_target_summary</a></code> default: "false"</dt>
<dd>
Whether to publish TargetSummary events.
</dd>
<dt id="flag--experimental_build_event_expand_filesets"><code><a href="#flag--experimental_build_event_expand_filesets">--[no]experimental_build_event_expand_filesets</a></code> default: "false"</dt>
<dd>
If true, expand Filesets in the BEP when presenting output files.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_build_event_fully_resolve_fileset_symlinks"><code><a href="#flag--experimental_build_event_fully_resolve_fileset_symlinks">--[no]experimental_build_event_fully_resolve_fileset_symlinks</a></code> default: "false"</dt>
<dd>
If true, fully resolve relative Fileset symlinks in the BEP when presenting output files. Requires --experimental_build_event_expand_filesets.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_build_event_upload_max_retries"><code><a href="#flag--experimental_build_event_upload_max_retries">--experimental_build_event_upload_max_retries</a>=&lt;an integer&gt</code> default: "4"</dt>
<dd>
The maximum number of times Bazel should retry uploading a build event.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_build_event_upload_retry_minimum_delay"><code><a href="#flag--experimental_build_event_upload_retry_minimum_delay">--experimental_build_event_upload_retry_minimum_delay</a>=&lt;An immutable length of time.&gt</code> default: "1s"</dt>
<dd>
Initial, minimum delay for exponential backoff retries when BEP upload fails. (exponent: 1.6)
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_build_event_upload_strategy"><code><a href="#flag--experimental_build_event_upload_strategy">--experimental_build_event_upload_strategy</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Selects how to upload artifacts referenced in the build event protocol.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_collect_load_average_in_profiler"><code><a href="#flag--experimental_collect_load_average_in_profiler">--[no]experimental_collect_load_average_in_profiler</a></code> default: "true"</dt>
<dd>
If enabled, the profiler collects the system&#39;s overall load average.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--experimental_collect_pressure_stall_indicators"><code><a href="#flag--experimental_collect_pressure_stall_indicators">--[no]experimental_collect_pressure_stall_indicators</a></code> default: "false"</dt>
<dd>
If enabled, the profiler collects the Linux PSI data.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--experimental_collect_resource_estimation"><code><a href="#flag--experimental_collect_resource_estimation">--[no]experimental_collect_resource_estimation</a></code> default: "false"</dt>
<dd>
If enabled, the profiler collects CPU and memory usage estimation for local actions.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--experimental_collect_system_network_usage"><code><a href="#flag--experimental_collect_system_network_usage">--[no]experimental_collect_system_network_usage</a></code> default: "false"</dt>
<dd>
If enabled, the profiler collects the system&#39;s network usage.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--experimental_collect_worker_data_in_profiler"><code><a href="#flag--experimental_collect_worker_data_in_profiler">--[no]experimental_collect_worker_data_in_profiler</a></code> default: "false"</dt>
<dd>
If enabled, the profiler collects worker&#39;s aggregated resource data.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--experimental_profile_additional_tasks"><code><a href="#flag--experimental_profile_additional_tasks">--experimental_profile_additional_tasks</a>=&lt;phase, action, action_check, action_lock, action_release, action_update, action_complete, 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, action_counts, action_cache_counts, local_cpu_usage, system_cpu_usage, cpu_usage_estimation, local_memory_usage, system_memory_usage, memory_usage_estimation, system_network_up_usage, system_network_down_usage, workers_memory_usage, system_load_average, starlark_parser, starlark_user_fn, starlark_builtin_fn, starlark_user_compiled_fn, starlark_repository_fn, 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, pressure_stall_io, pressure_stall_memory, conflict_check, dynamic_lock, repository_fetch, repository_vendor or unknown&gt</code> multiple uses are accumulated</dt>
<dd>
Specifies additional profile tasks to be included in the profile.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--experimental_profile_include_primary_output"><code><a href="#flag--experimental_profile_include_primary_output">--[no]experimental_profile_include_primary_output</a></code> default: "false"</dt>
<dd>
Includes the extra &quot;out&quot; attribute in action events that contains the exec path to the action&#39;s primary output.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--experimental_profile_include_target_label"><code><a href="#flag--experimental_profile_include_target_label">--[no]experimental_profile_include_target_label</a></code> default: "false"</dt>
<dd>
Includes target label in action events&#39; JSON profile data.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--experimental_run_bep_event_include_residue"><code><a href="#flag--experimental_run_bep_event_include_residue">--[no]experimental_run_bep_event_include_residue</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_stream_log_file_uploads"><code><a href="#flag--experimental_stream_log_file_uploads">--[no]experimental_stream_log_file_uploads</a></code> default: "false"</dt>
<dd>
Stream log file uploads directly to the remote storage rather than writing them to disk.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_workspace_rules_log_file"><code><a href="#flag--experimental_workspace_rules_log_file">--experimental_workspace_rules_log_file</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
Log certain Workspace Rules events into this file as delimited WorkspaceEvent protos.
</dd>
<dt id="flag--generate_json_trace_profile"><code><a href="#flag--generate_json_trace_profile">--[no]generate_json_trace_profile</a></code> default: "auto"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--heap_dump_on_oom"><code><a href="#flag--heap_dump_on_oom">--[no]heap_dump_on_oom</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--legacy_important_outputs"><code><a href="#flag--legacy_important_outputs">--[no]legacy_important_outputs</a></code> default: "true"</dt>
<dd>
Use this to suppress generation of the legacy important_outputs field in the TargetComplete event. important_outputs are required for Bazel to ResultStore integration.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--logging"><code><a href="#flag--logging">--logging</a>=&lt;0 &lt;= an integer &lt;= 6&gt</code> default: "3"</dt>
<dd>
The logging level.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--memory_profile"><code><a href="#flag--memory_profile">--memory_profile</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
If set, write memory usage data to the specified file at phase ends and stable heap to master log at end of build.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--memory_profile_stable_heap_parameters"><code><a href="#flag--memory_profile_stable_heap_parameters">--memory_profile_stable_heap_parameters</a>=&lt;integers, separated by a comma expected in pairs&gt</code> default: "1,0"</dt>
<dd>
Tune memory profile&#39;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
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--profile"><code><a href="#flag--profile">--profile</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
If set, profile Bazel and write data to the specified file. Use bazel analyze-profile to analyze the profile.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--record_full_profiler_data"><code><a href="#flag--record_full_profiler_data">--[no]record_full_profiler_data</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--remote_print_execution_messages"><code><a href="#flag--remote_print_execution_messages">--remote_print_execution_messages</a>=&lt;failure, success or all&gt</code> default: "failure"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--slim_profile"><code><a href="#flag--slim_profile">--[no]slim_profile</a></code> default: "true"</dt>
<dd>
Slims down the size of the JSON profile by merging events if the profile gets  too large.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--starlark_cpu_profile"><code><a href="#flag--starlark_cpu_profile">--starlark_cpu_profile</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
Writes into the specified file a pprof profile of CPU usage by all Starlark threads.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--tool_tag"><code><a href="#flag--tool_tag">--tool_tag</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
A tool name to attribute this Bazel invocation to.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--ui_event_filters"><code><a href="#flag--ui_event_filters">--ui_event_filters</a>=&lt;Convert list of comma separated event kind to list of filters&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
</dl>
<dl></dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_circuit_breaker_strategy"><code><a href="#flag--experimental_circuit_breaker_strategy">--experimental_circuit_breaker_strategy</a>=&lt;failure&gt</code> default: see description</dt>
<dd>
Specifies the strategy for the circuit breaker to use. Available strategies are &quot;failure&quot;. On invalid value for the option the behavior same as the option is not set.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_guard_against_concurrent_changes"><code><a href="#flag--experimental_guard_against_concurrent_changes">--[no]experimental_guard_against_concurrent_changes</a></code> default: "false"</dt>
<dd>
Turn this off to disable checking the ctime of 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.
</dd>
<dt id="flag--experimental_remote_cache_async"><code><a href="#flag--experimental_remote_cache_async">--[no]experimental_remote_cache_async</a></code> default: "false"</dt>
<dd>
If true, remote cache I/O will happen in the background instead of taking place as the part of a spawn.
</dd>
<dt id="flag--experimental_remote_cache_compression_threshold"><code><a href="#flag--experimental_remote_cache_compression_threshold">--experimental_remote_cache_compression_threshold</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The minimum blob size required to compress/decompress with zstd. Ineffectual unless --remote_cache_compression is set.
</dd>
<dt id="flag--experimental_remote_cache_lease_extension"><code><a href="#flag--experimental_remote_cache_lease_extension">--[no]experimental_remote_cache_lease_extension</a></code> default: "false"</dt>
<dd>
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`.
</dd>
<dt id="flag--experimental_remote_cache_ttl"><code><a href="#flag--experimental_remote_cache_ttl">--experimental_remote_cache_ttl</a>=&lt;An immutable length of time.&gt</code> default: "3h"</dt>
<dd>
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&#39; TTL e.g. doesn&#39;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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_remote_capture_corrupted_outputs"><code><a href="#flag--experimental_remote_capture_corrupted_outputs">--experimental_remote_capture_corrupted_outputs</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
A path to a directory where the corrupted outputs will be captured to.
</dd>
<dt id="flag--experimental_remote_discard_merkle_trees"><code><a href="#flag--experimental_remote_discard_merkle_trees">--[no]experimental_remote_discard_merkle_trees</a></code> default: "false"</dt>
<dd>
If set to true, discard in-memory copies of the input root&#39;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.
</dd>
<dt id="flag--experimental_remote_downloader"><code><a href="#flag--experimental_remote_downloader">--experimental_remote_downloader</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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
</dd>
<dt id="flag--experimental_remote_downloader_local_fallback"><code><a href="#flag--experimental_remote_downloader_local_fallback">--[no]experimental_remote_downloader_local_fallback</a></code> default: "false"</dt>
<dd>
Whether to fall back to the local downloader if remote downloader fails.
</dd>
<dt id="flag--experimental_remote_execution_keepalive"><code><a href="#flag--experimental_remote_execution_keepalive">--[no]experimental_remote_execution_keepalive</a></code> default: "false"</dt>
<dd>
Whether to use keepalive for remote execution calls.
</dd>
<dt id="flag--experimental_remote_failure_rate_threshold"><code><a href="#flag--experimental_remote_failure_rate_threshold">--experimental_remote_failure_rate_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "10"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_remote_failure_window_interval"><code><a href="#flag--experimental_remote_failure_window_interval">--experimental_remote_failure_window_interval</a>=&lt;An immutable length of time.&gt</code> default: "60s"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_remote_mark_tool_inputs"><code><a href="#flag--experimental_remote_mark_tool_inputs">--[no]experimental_remote_mark_tool_inputs</a></code> default: "false"</dt>
<dd>
If set to true, Bazel will mark inputs as tool inputs for the remote executor. This can be used to implement remote persistent workers.
</dd>
<dt id="flag--experimental_remote_merkle_tree_cache"><code><a href="#flag--experimental_remote_merkle_tree_cache">--[no]experimental_remote_merkle_tree_cache</a></code> default: "false"</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_remote_merkle_tree_cache_size"><code><a href="#flag--experimental_remote_merkle_tree_cache_size">--experimental_remote_merkle_tree_cache_size</a>=&lt;a long integer&gt</code> default: "1000"</dt>
<dd>
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&#39;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&#39;s size. Default to 1000.
</dd>
<dt id="flag--experimental_remote_output_service"><code><a href="#flag--experimental_remote_output_service">--experimental_remote_output_service</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_remote_output_service_output_path_prefix"><code><a href="#flag--experimental_remote_output_service_output_path_prefix">--experimental_remote_output_service_output_path_prefix</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_remote_require_cached"><code><a href="#flag--experimental_remote_require_cached">--[no]experimental_remote_require_cached</a></code> default: "false"</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_remote_scrubbing_config"><code><a href="#flag--experimental_remote_scrubbing_config">--experimental_remote_scrubbing_config</a>=&lt;Converts to a Scrubber&gt</code> default: see description</dt>
<dd>
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).
</dd>
<dt id="flag--incompatible_remote_build_event_upload_respect_no_cache"><code><a href="#flag--incompatible_remote_build_event_upload_respect_no_cache">--[no]incompatible_remote_build_event_upload_respect_no_cache</a></code> default: "false"</dt>
<dd>
Deprecated. No-op. Use --remote_build_event_upload=minimal instead.
</dd>
<dt id="flag--incompatible_remote_downloader_send_all_headers"><code><a href="#flag--incompatible_remote_downloader_send_all_headers">--[no]incompatible_remote_downloader_send_all_headers</a></code> default: "true"</dt>
<dd>
Whether to send all values of a multi-valued header to the remote downloader instead of just the first.
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_remote_output_paths_relative_to_input_root"><code><a href="#flag--incompatible_remote_output_paths_relative_to_input_root">--[no]incompatible_remote_output_paths_relative_to_input_root</a></code> default: "false"</dt>
<dd>
If set to true, output paths are relative to input root instead of working directory.
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_remote_results_ignore_disk"><code><a href="#flag--incompatible_remote_results_ignore_disk">--[no]incompatible_remote_results_ignore_disk</a></code> default: "true"</dt>
<dd>
No-op
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--remote_accept_cached"><code><a href="#flag--remote_accept_cached">--[no]remote_accept_cached</a></code> default: "true"</dt>
<dd>
Whether to accept remotely cached action results.
</dd>
<dt id="flag--remote_build_event_upload"><code><a href="#flag--remote_build_event_upload">--remote_build_event_upload</a>=&lt;all or minimal&gt</code> default: "minimal"</dt>
<dd>
If set to &#39;all&#39;, all local outputs referenced by BEP are uploaded to remote cache.
If set to &#39;minimal&#39;, 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 &#39;minimal&#39;.
</dd>
<dt id="flag--remote_bytestream_uri_prefix"><code><a href="#flag--remote_bytestream_uri_prefix">--remote_bytestream_uri_prefix</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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 &quot;${hostname}/${instance_name}&quot;.
</dd>
<dt id="flag--remote_cache"><code><a href="#flag--remote_cache">--remote_cache</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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
</dd>
<dt id="flag--remote_cache_compression"><code><a href="#flag--remote_cache_compression">--[no]remote_cache_compression</a></code> default: "false"</dt>
<dd>
If enabled, compress/decompress cache blobs with zstd when their size is at least --experimental_remote_cache_compression_threshold.
</dd>
<dt id="flag--remote_cache_header"><code><a href="#flag--remote_cache_header">--remote_cache_header</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--remote_default_exec_properties"><code><a href="#flag--remote_default_exec_properties">--remote_default_exec_properties</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
Set the default exec properties to be used as the remote execution platform if an execution platform does not already set exec_properties.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--remote_default_platform_properties"><code><a href="#flag--remote_default_platform_properties">--remote_default_platform_properties</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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.
</dd>
<dt id="flag--remote_download_regex"><code><a href="#flag--remote_download_regex">--remote_download_regex</a>=&lt;a valid Java regular expression&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--remote_downloader_header"><code><a href="#flag--remote_downloader_header">--remote_downloader_header</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--remote_exec_header"><code><a href="#flag--remote_exec_header">--remote_exec_header</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--remote_execution_priority"><code><a href="#flag--remote_execution_priority">--remote_execution_priority</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The relative priority of actions to be executed remotely. The semantics of the particular priority values are server-dependent.
</dd>
<dt id="flag--remote_executor"><code><a href="#flag--remote_executor">--remote_executor</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--remote_grpc_log"><code><a href="#flag--remote_grpc_log">--remote_grpc_log</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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).
</dd>
<dt id="flag--remote_header"><code><a href="#flag--remote_header">--remote_header</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--remote_instance_name"><code><a href="#flag--remote_instance_name">--remote_instance_name</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
Value to pass as instance_name in the remote execution API.
</dd>
<dt id="flag--remote_local_fallback"><code><a href="#flag--remote_local_fallback">--[no]remote_local_fallback</a></code> default: "false"</dt>
<dd>
Whether to fall back to standalone local execution strategy if remote execution fails.
</dd>
<dt id="flag--remote_local_fallback_strategy"><code><a href="#flag--remote_local_fallback_strategy">--remote_local_fallback_strategy</a>=&lt;a string&gt</code> default: "local"</dt>
<dd>
No-op, deprecated. See https://github.com/bazelbuild/bazel/issues/7480 for details.
</dd>
<dt id="flag--remote_max_connections"><code><a href="#flag--remote_max_connections">--remote_max_connections</a>=&lt;an integer&gt</code> default: "100"</dt>
<dd>
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, so Bazel could make around `--remote_max_connections * 100` concurrent requests.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--remote_proxy"><code><a href="#flag--remote_proxy">--remote_proxy</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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).
</dd>
<dt id="flag--remote_result_cache_priority"><code><a href="#flag--remote_result_cache_priority">--remote_result_cache_priority</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The relative priority of remote actions to be stored in remote cache. The semantics of the particular priority values are server-dependent.
</dd>
<dt id="flag--remote_retries"><code><a href="#flag--remote_retries">--remote_retries</a>=&lt;an integer&gt</code> default: "5"</dt>
<dd>
The maximum number of attempts to retry a transient error. If set to 0, retries are disabled.
</dd>
<dt id="flag--remote_retry_max_delay"><code><a href="#flag--remote_retry_max_delay">--remote_retry_max_delay</a>=&lt;An immutable length of time.&gt</code> default: "5s"</dt>
<dd>
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.
</dd>
<dt id="flag--remote_timeout"><code><a href="#flag--remote_timeout">--remote_timeout</a>=&lt;An immutable length of time.&gt</code> default: "60s"</dt>
<dd>
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.
</dd>
<dt id="flag--remote_upload_local_results"><code><a href="#flag--remote_upload_local_results">--[no]remote_upload_local_results</a></code> default: "true"</dt>
<dd>
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.
</dd>
<dt id="flag--remote_verify_downloads"><code><a href="#flag--remote_verify_downloads">--[no]remote_verify_downloads</a></code> default: "true"</dt>
<dd>
If set to true, Bazel will compute the hash sum of all remote downloads and  discard the remotely cached values if they don&#39;t match the expected value.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--build_metadata"><code><a href="#flag--build_metadata">--build_metadata</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
Custom key-value string pairs to supply in a build event.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--color"><code><a href="#flag--color">--color</a>=&lt;yes, no or auto&gt</code> default: "auto"</dt>
<dd>
Use terminal controls to colorize output.
</dd>
<dt id="flag--config"><code><a href="#flag--config">--config</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;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.
</dd>
<dt id="flag--credential_helper"><code><a href="#flag--credential_helper">--credential_helper</a>=&lt;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 &#39;=&#39;. The scope is a domain name, optionally with a single leading &#39;*&#39; 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.&gt</code> multiple uses are accumulated</dt>
<dd>
Configures a credential helper conforming to the &lt;a href=&quot;https://github.com/EngFlow/credential-helper-spec&quot;&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.
</dd>
<dt id="flag--credential_helper_cache_duration"><code><a href="#flag--credential_helper_cache_duration">--credential_helper_cache_duration</a>=&lt;An immutable length of time.&gt</code> default: "30m"</dt>
<dd>
The default duration for which credentials supplied by a credential helper are cached if the helper does not provide when the credentials expire.
</dd>
<dt id="flag--credential_helper_timeout"><code><a href="#flag--credential_helper_timeout">--credential_helper_timeout</a>=&lt;An immutable length of time.&gt</code> default: "10s"</dt>
<dd>
Configures the timeout for a credential helper.

Credential helpers failing to respond within this timeout will fail the invocation.
</dd>
<dt id="flag--curses"><code><a href="#flag--curses">--curses</a>=&lt;yes, no or auto&gt</code> default: "auto"</dt>
<dd>
Use terminal cursor controls to minimize scrolling output.
</dd>
<dt id="flag--disk_cache"><code><a href="#flag--disk_cache">--disk_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--enable_platform_specific_config"><code><a href="#flag--enable_platform_specific_config">--[no]enable_platform_specific_config</a></code> default: "false"</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_disk_cache_gc_idle_delay"><code><a href="#flag--experimental_disk_cache_gc_idle_delay">--experimental_disk_cache_gc_idle_delay</a>=&lt;An immutable length of time.&gt</code> default: "5m"</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_disk_cache_gc_max_age"><code><a href="#flag--experimental_disk_cache_gc_max_age">--experimental_disk_cache_gc_max_age</a>=&lt;An immutable length of time.&gt</code> default: "0"</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_disk_cache_gc_max_size"><code><a href="#flag--experimental_disk_cache_gc_max_size">--experimental_disk_cache_gc_max_size</a>=&lt;a size in bytes, optionally followed by a K, M, G or T multiplier&gt</code> default: "0"</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_rule_extension_api"><code><a href="#flag--experimental_rule_extension_api">--[no]experimental_rule_extension_api</a></code> default: "false"</dt>
<dd>
Enable experimental rule extension API and subrule APIs
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_windows_watchfs"><code><a href="#flag--experimental_windows_watchfs">--[no]experimental_windows_watchfs</a></code> default: "false"</dt>
<dd>
If true, experimental Windows support for --watchfs is enabled. Otherwise --watchfsis a non-op on Windows. Make sure to also enable --watchfs.
</dd>
<dt id="flag--google_auth_scopes"><code><a href="#flag--google_auth_scopes">--google_auth_scopes</a>=&lt;comma-separated list of options&gt</code> default: "https://www.googleapis.com/auth/cloud-platform"</dt>
<dd>
A comma-separated list of Google Cloud authentication scopes.
</dd>
<dt id="flag--google_credentials"><code><a href="#flag--google_credentials">--google_credentials</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Specifies the file to get authentication credentials from. See https://cloud.google.com/docs/authentication for details.
</dd>
<dt id="flag--google_default_credentials"><code><a href="#flag--google_default_credentials">--[no]google_default_credentials</a></code> default: "false"</dt>
<dd>
Whether to use &#39;Google Application Default Credentials&#39; for authentication. See https://cloud.google.com/docs/authentication for details. Disabled by default.
</dd>
<dt id="flag--grpc_keepalive_time"><code><a href="#flag--grpc_keepalive_time">--grpc_keepalive_time</a>=&lt;An immutable length of time.&gt</code> default: see description</dt>
<dd>
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
</dd>
<dt id="flag--grpc_keepalive_timeout"><code><a href="#flag--grpc_keepalive_timeout">--grpc_keepalive_timeout</a>=&lt;An immutable length of time.&gt</code> default: "20s"</dt>
<dd>
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.
</dd>
<dt id="flag--incompatible_disable_non_executable_java_binary"><code><a href="#flag--incompatible_disable_non_executable_java_binary">--[no]incompatible_disable_non_executable_java_binary</a></code> default: "false"</dt>
<dd>
If true, java_binary is always executable. create_executable attribute is removed.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disallow_symlink_file_to_dir"><code><a href="#flag--incompatible_disallow_symlink_file_to_dir">--[no]incompatible_disallow_symlink_file_to_dir</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--invocation_id"><code><a href="#flag--invocation_id">--invocation_id</a>=&lt;a UUID&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a>, <a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--progress_in_terminal_title"><code><a href="#flag--progress_in_terminal_title">--[no]progress_in_terminal_title</a></code> default: "false"</dt>
<dd>
Show the command progress in the terminal title. Useful to see what bazel is doing when having multiple terminal tabs.
</dd>
<dt id="flag--show_progress"><code><a href="#flag--show_progress">--[no]show_progress</a></code> default: "true"</dt>
<dd>
Display progress messages during a build.
</dd>
<dt id="flag--show_progress_rate_limit"><code><a href="#flag--show_progress_rate_limit">--show_progress_rate_limit</a>=&lt;a double&gt</code> default: "0.2"</dt>
<dd>
Minimum number of seconds between progress messages in the output.
</dd>
<dt id="flag--show_timestamps"><code><a href="#flag--show_timestamps">--[no]show_timestamps</a></code> default: "false"</dt>
<dd>
Include timestamps in messages
</dd>
<dt id="flag--tls_certificate"><code><a href="#flag--tls_certificate">--tls_certificate</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Specify a path to a TLS certificate that is trusted to sign server certificates.
</dd>
<dt id="flag--tls_client_certificate"><code><a href="#flag--tls_client_certificate">--tls_client_certificate</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Specify the TLS client certificate to use; you also need to provide a client key to enable client authentication.
</dd>
<dt id="flag--tls_client_key"><code><a href="#flag--tls_client_key">--tls_client_key</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Specify the TLS client key to use; you also need to provide a client certificate to enable client authentication.
</dd>
<dt id="flag--ui_actions_shown"><code><a href="#flag--ui_actions_shown">--ui_actions_shown</a>=&lt;an integer&gt</code> default: "8"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--watchfs"><code><a href="#flag--watchfs">--[no]watchfs</a></code> default: "false"</dt>
<dd>
On Linux/macOS: If true, bazel tries to use the operating system&#39;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.
</dd>
</dl>

<h2><a name="analyze-profile">Analyze-profile Options</a></h2>
<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--dump"><code><a href="#flag--dump">--dump</a>=&lt;text or raw&gt</code> [<code>-d</code>] default: see description</dt>
<dd>
output full profile data dump either in human-readable &#39;text&#39; format or script-friendly &#39;raw&#39; format.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
</dl>

<h2><a name="aquery">Aquery Options</a></h2>
<p>Inherits all options from <a href="#build">build</a>.</p>

<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
</dl>
<dl></dl>
<dl>Options relating to query output and semantics:
<dt id="flag--aspect_deps"><code><a href="#flag--aspect_deps">--aspect_deps</a>=&lt;off, conservative or precise&gt</code> default: "conservative"</dt>
<dd>
How to resolve aspect dependencies when the output format is one of {xml,proto,record}. &#39;off&#39; means no aspect dependencies are resolved, &#39;conservative&#39; (the default) means all declared aspect dependencies are added regardless of whether they are given the rule class of direct dependencies, &#39;precise&#39; 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 &#39;bazel query&#39;.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--consistent_labels"><code><a href="#flag--consistent_labels">--[no]consistent_labels</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--experimental_explicit_aspects"><code><a href="#flag--experimental_explicit_aspects">--[no]experimental_explicit_aspects</a></code> default: "false"</dt>
<dd>
aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--graph:factored"><code><a href="#flag--graph:factored">--[no]graph:factored</a></code> default: "true"</dt>
<dd>
If true, then the graph will be emitted &#39;factored&#39;, i.e. topologically-equivalent nodes will be merged together and their labels concatenated. This option is only applicable to --output=graph.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--graph:node_limit"><code><a href="#flag--graph:node_limit">--graph:node_limit</a>=&lt;an integer&gt</code> default: "512"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--implicit_deps"><code><a href="#flag--implicit_deps">--[no]implicit_deps</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--include_artifacts"><code><a href="#flag--include_artifacts">--[no]include_artifacts</a></code> default: "true"</dt>
<dd>
Includes names of the action inputs and outputs in the output (potentially large).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--include_aspects"><code><a href="#flag--include_aspects">--[no]include_aspects</a></code> default: "true"</dt>
<dd>
aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--include_commandline"><code><a href="#flag--include_commandline">--[no]include_commandline</a></code> default: "true"</dt>
<dd>
Includes the content of the action command lines in the output (potentially large).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--include_file_write_contents"><code><a href="#flag--include_file_write_contents">--[no]include_file_write_contents</a></code> default: "false"</dt>
<dd>
Include the file contents for the FileWrite, SourceSymlinkManifest, and RepoMappingManifest actions (potentially large).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--include_param_files"><code><a href="#flag--include_param_files">--[no]include_param_files</a></code> default: "false"</dt>
<dd>
Include the content of the param files used in the command (potentially large). Note: Enabling this flag will automatically enable the --include_commandline flag.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--incompatible_package_group_includes_double_slash"><code><a href="#flag--incompatible_package_group_includes_double_slash">--[no]incompatible_package_group_includes_double_slash</a></code> default: "true"</dt>
<dd>
If enabled, when outputting package_group&#39;s `packages` attribute, the leading `//` will not be omitted.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--infer_universe_scope"><code><a href="#flag--infer_universe_scope">--[no]infer_universe_scope</a></code> default: "false"</dt>
<dd>
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&#39;s value is ignored. Note: this option applies only to `query` (i.e. not `cquery`).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--line_terminator_null"><code><a href="#flag--line_terminator_null">--[no]line_terminator_null</a></code> default: "false"</dt>
<dd>
Whether each format is terminated with \0 instead of newline.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--nodep_deps"><code><a href="#flag--nodep_deps">--[no]nodep_deps</a></code> default: "true"</dt>
<dd>
If enabled, deps from &quot;nodep&quot; attributes will be included in the dependency graph over which the query operates. A common example of a &quot;nodep&quot; attribute is &quot;visibility&quot;. Run and parse the output of `info build-language` to learn about all the &quot;nodep&quot; attributes in the build language.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--output"><code><a href="#flag--output">--output</a>=&lt;a string&gt</code> default: "text"</dt>
<dd>
The format in which the aquery results should be printed. Allowed values for aquery are: text, textproto, proto, streamed_proto, jsonproto.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--output_file"><code><a href="#flag--output_file">--output_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
When specified, query results will be written directly to this file, and nothing will be printed to Bazel&#39;s standard output stream (stdout). In benchmarks, this is generally faster than &lt;code&gt;bazel query &amp;gt; file&lt;/code&gt;.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:default_values"><code><a href="#flag--proto:default_values">--[no]proto:default_values</a></code> default: "true"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:definition_stack"><code><a href="#flag--proto:definition_stack">--[no]proto:definition_stack</a></code> default: "false"</dt>
<dd>
Populate the definition_stack proto field, which records for each rule instance the Starlark call stack at the moment the rule&#39;s class was defined.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:flatten_selects"><code><a href="#flag--proto:flatten_selects">--[no]proto:flatten_selects</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--proto:include_attribute_source_aspects"><code><a href="#flag--proto:include_attribute_source_aspects">--[no]proto:include_attribute_source_aspects</a></code> default: "false"</dt>
<dd>
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).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:include_synthetic_attribute_hash"><code><a href="#flag--proto:include_synthetic_attribute_hash">--[no]proto:include_synthetic_attribute_hash</a></code> default: "false"</dt>
<dd>
Whether or not to calculate and populate the $internal_attr_hash attribute.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:instantiation_stack"><code><a href="#flag--proto:instantiation_stack">--[no]proto:instantiation_stack</a></code> default: "false"</dt>
<dd>
Populate the instantiation call stack of each rule. Note that this requires the stack to be present
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:locations"><code><a href="#flag--proto:locations">--[no]proto:locations</a></code> default: "true"</dt>
<dd>
Whether to output location information in proto output at all.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:output_rule_attrs"><code><a href="#flag--proto:output_rule_attrs">--proto:output_rule_attrs</a>=&lt;comma-separated list of options&gt</code> default: "all"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:rule_inputs_and_outputs"><code><a href="#flag--proto:rule_inputs_and_outputs">--[no]proto:rule_inputs_and_outputs</a></code> default: "true"</dt>
<dd>
Whether or not to populate the rule_input and rule_output fields.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--query_file"><code><a href="#flag--query_file">--query_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--relative_locations"><code><a href="#flag--relative_locations">--[no]relative_locations</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--skyframe_state"><code><a href="#flag--skyframe_state">--[no]skyframe_state</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--tool_deps"><code><a href="#flag--tool_deps">--[no]tool_deps</a></code> default: "true"</dt>
<dd>
Query: If disabled, dependencies on &#39;exec configuration&#39; will not be included in the dependency graph over which the query operates. An &#39;exec configuration&#39; dependency edge, such as the one from any &#39;proto_library&#39; rule to the Protocol Compiler, usually points to a tool executed during the build rather than a part of the same &#39;target&#39; 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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--universe_scope"><code><a href="#flag--universe_scope">--universe_scope</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
</dl>

<dl></dl>
<dl>Options that control build execution:
<dt id="flag--experimental_inprocess_symlink_creation"><code><a href="#flag--experimental_inprocess_symlink_creation">--[no]experimental_inprocess_symlink_creation</a></code> default: "false"</dt>
<dd>
Whether to make direct file system calls to create symlink trees
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_persistent_aar_extractor"><code><a href="#flag--experimental_persistent_aar_extractor">--[no]experimental_persistent_aar_extractor</a></code> default: "false"</dt>
<dd>
Enable persistent aar extractor by using workers.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_remotable_source_manifests"><code><a href="#flag--experimental_remotable_source_manifests">--[no]experimental_remotable_source_manifests</a></code> default: "false"</dt>
<dd>
Whether to make source manifest actions remotable
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_split_coverage_postprocessing"><code><a href="#flag--experimental_split_coverage_postprocessing">--[no]experimental_split_coverage_postprocessing</a></code> default: "false"</dt>
<dd>
If true, then Bazel will run coverage postprocessing for test in a new spawn.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_strict_fileset_output"><code><a href="#flag--experimental_strict_fileset_output">--[no]experimental_strict_fileset_output</a></code> default: "false"</dt>
<dd>
If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--incompatible_disallow_unsound_directory_outputs"><code><a href="#flag--incompatible_disallow_unsound_directory_outputs">--[no]incompatible_disallow_unsound_directory_outputs</a></code> default: "true"</dt>
<dd>
If set, it is an error for an action to materialize an output file as a directory. Does not affect source directories. See https://github.com/bazelbuild/bazel/issues/18646.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_modify_execution_info_additive"><code><a href="#flag--incompatible_modify_execution_info_additive">--[no]incompatible_modify_execution_info_additive</a></code> default: "false"</dt>
<dd>
When enabled, passing multiple --modify_execution_info flags is additive. When disabled, only the last flag is taken into account.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--modify_execution_info"><code><a href="#flag--modify_execution_info">--modify_execution_info</a>=&lt;regex=[+-]key,regex=[+-]key,...&gt</code> multiple uses are accumulated</dt>
<dd>
Add or remove keys from an action&#39;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: &quot;regex=[+-]key,regex=[+-]key,...&quot;.

Examples:
  &#39;.*=+x,.*=-y,.*=+z&#39; adds &#39;x&#39; and &#39;z&#39; to, and removes &#39;y&#39; from, the execution info for all actions.
  &#39;Genrule=+requires-x&#39; adds &#39;requires-x&#39; to the execution info for all Genrule actions.
  &#39;(?!Genrule).*=-requires-x&#39; removes &#39;requires-x&#39; from the execution info for all non-Genrule actions.

<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--persistent_android_dex_desugar"><code><a href="#flag--persistent_android_dex_desugar">--persistent_android_dex_desugar</a></code></dt>
<dd>
Enable persistent Android dex and desugar actions by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_android_dex_desugar">--internal_persistent_android_dex_desugar</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=Desugar=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=DexBuilder=worker</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_android_resource_processor"><code><a href="#flag--persistent_android_resource_processor">--persistent_android_resource_processor</a></code></dt>
<dd>
Enable persistent Android resource processor by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_busybox_tools">--internal_persistent_busybox_tools</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AaptPackage=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceParser=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceValidator=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceCompiler=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=RClassGenerator=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceLink=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidAapt2=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidAssetMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidCompiledResourceMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=ManifestMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidManifestMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=Aapt2Optimize=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AARGenerator=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=ProcessDatabinding=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=GenerateDataBindingBaseClasses=worker</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_multiplex_android_dex_desugar"><code><a href="#flag--persistent_multiplex_android_dex_desugar">--persistent_multiplex_android_dex_desugar</a></code></dt>
<dd>
Enable persistent multiplexed Android dex and desugar actions by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_android_dex_desugar">--persistent_android_dex_desugar</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_multiplex_android_dex_desugar">--internal_persistent_multiplex_android_dex_desugar</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_multiplex_android_resource_processor"><code><a href="#flag--persistent_multiplex_android_resource_processor">--persistent_multiplex_android_resource_processor</a></code></dt>
<dd>
Enable persistent multiplexed Android resource processor by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_android_resource_processor">--persistent_android_resource_processor</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AaptPackage=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceParser=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceValidator=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceCompiler=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=RClassGenerator=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceLink=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidAapt2=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidAssetMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidCompiledResourceMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=ManifestMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidManifestMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=Aapt2Optimize=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AARGenerator=+supports-multiplex-workers</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_multiplex_android_tools"><code><a href="#flag--persistent_multiplex_android_tools">--persistent_multiplex_android_tools</a></code></dt>
<dd>
Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_multiplex_busybox_tools">--internal_persistent_multiplex_busybox_tools</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_multiplex_android_resource_processor">--persistent_multiplex_android_resource_processor</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_multiplex_android_dex_desugar">--persistent_multiplex_android_dex_desugar</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--use_target_platform_for_tests"><code><a href="#flag--use_target_platform_for_tests">--[no]use_target_platform_for_tests</a></code> default: "false"</dt>
<dd>
If true, then Bazel will use the target platform for running tests rather than the test exec group.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
</dl>
<dl>Options that configure the toolchain used for action execution:
<dt id="flag--android_compiler"><code><a href="#flag--android_compiler">--android_compiler</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The Android target compiler.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_crosstool_top"><code><a href="#flag--android_crosstool_top">--android_crosstool_top</a>=&lt;a build target label&gt</code> default: "//external:android/crosstool"</dt>
<dd>
The location of the C++ compiler used for Android builds.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_grte_top"><code><a href="#flag--android_grte_top">--android_grte_top</a>=&lt;a label&gt</code> default: see description</dt>
<dd>
The Android target grte_top.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_manifest_merger"><code><a href="#flag--android_manifest_merger">--android_manifest_merger</a>=&lt;legacy, android or force_android&gt</code> default: "android"</dt>
<dd>
Selects the manifest merger to use for android_binary rules. Flag to help thetransition to the Android manifest merger from the legacy merger.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_platforms"><code><a href="#flag--android_platforms">--android_platforms</a>=&lt;a build target label&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_sdk"><code><a href="#flag--android_sdk">--android_sdk</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/android:sdk"</dt>
<dd>
Specifies Android SDK/platform that is used to build Android applications.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--apple_crosstool_top"><code><a href="#flag--apple_crosstool_top">--apple_crosstool_top</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/cpp:toolchain"</dt>
<dd>
The label of the crosstool package to be used in Apple and Objc rules and their dependencies.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--cc_output_directory_tag"><code><a href="#flag--cc_output_directory_tag">--cc_output_directory_tag</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
Specifies a suffix to be added to the configuration directory.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--compiler"><code><a href="#flag--compiler">--compiler</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The C++ compiler to use for compiling the target.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--coverage_output_generator"><code><a href="#flag--coverage_output_generator">--coverage_output_generator</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/test:lcov_merger"</dt>
<dd>
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 &#39;//tools/test:lcov_merger&#39;.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--coverage_report_generator"><code><a href="#flag--coverage_report_generator">--coverage_report_generator</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/test:coverage_report_generator"</dt>
<dd>
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 &#39;//tools/test:coverage_report_generator&#39;.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--coverage_support"><code><a href="#flag--coverage_support">--coverage_support</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/test:coverage_support"</dt>
<dd>
Location of support files that are required on the inputs of every test action that collects code coverage. Defaults to &#39;//tools/test:coverage_support&#39;.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--crosstool_top"><code><a href="#flag--crosstool_top">--crosstool_top</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/cpp:toolchain"</dt>
<dd>
The label of the crosstool package to be used for compiling C++ code.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--custom_malloc"><code><a href="#flag--custom_malloc">--custom_malloc</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies a custom malloc implementation. This setting overrides malloc attributes in build rules.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_add_exec_constraints_to_targets"><code><a href="#flag--experimental_add_exec_constraints_to_targets">--experimental_add_exec_constraints_to_targets</a>=&lt;a &#39;&lt;RegexFilter&gt;=&lt;label1&gt;[,&lt;label2&gt;,...]&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;x86_64&#39; to any target under //demo except for those whose name contains &#39;test&#39;.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_include_xcode_execution_requirements"><code><a href="#flag--experimental_include_xcode_execution_requirements">--[no]experimental_include_xcode_execution_requirements</a></code> default: "false"</dt>
<dd>
If set, add a &quot;requires-xcode:{version}&quot; execution requirement to every Xcode action.  If the xcode version has a hyphenated label,  also add a &quot;requires-xcode-label:{version_label}&quot; execution requirement.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_prefer_mutual_xcode"><code><a href="#flag--experimental_prefer_mutual_xcode">--[no]experimental_prefer_mutual_xcode</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--extra_execution_platforms"><code><a href="#flag--extra_execution_platforms">--extra_execution_platforms</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--extra_toolchains"><code><a href="#flag--extra_toolchains">--extra_toolchains</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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().
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--grte_top"><code><a href="#flag--grte_top">--grte_top</a>=&lt;a label&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_compiler"><code><a href="#flag--host_compiler">--host_compiler</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The C++ compiler to use for host compilation. It is ignored if --host_crosstool_top is not set.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--host_crosstool_top"><code><a href="#flag--host_crosstool_top">--host_crosstool_top</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
By default, the --crosstool_top and --compiler options are also used for the exec configuration. If this flag is provided, Bazel uses the default libc and compiler for the given crosstool_top.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_grte_top"><code><a href="#flag--host_grte_top">--host_grte_top</a>=&lt;a label&gt</code> default: see description</dt>
<dd>
If specified, this setting overrides the libc top-level directory (--grte_top) for the exec configuration.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_platform"><code><a href="#flag--host_platform">--host_platform</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools:host_platform"</dt>
<dd>
The label of a platform rule that describes the host system.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--incompatible_dont_enable_host_nonhost_crosstool_features"><code><a href="#flag--incompatible_dont_enable_host_nonhost_crosstool_features">--[no]incompatible_dont_enable_host_nonhost_crosstool_features</a></code> default: "true"</dt>
<dd>
If true, Bazel will not enable &#39;host&#39; and &#39;nonhost&#39; features in the c++ toolchain (see https://github.com/bazelbuild/bazel/issues/7407 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enable_android_toolchain_resolution"><code><a href="#flag--incompatible_enable_android_toolchain_resolution">--[no]incompatible_enable_android_toolchain_resolution</a></code> default: "true"</dt>
<dd>
Use toolchain resolution to select the Android SDK for android rules (Starlark and native)
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enable_apple_toolchain_resolution"><code><a href="#flag--incompatible_enable_apple_toolchain_resolution">--[no]incompatible_enable_apple_toolchain_resolution</a></code> default: "false"</dt>
<dd>
Use toolchain resolution to select the Apple SDK for apple rules (Starlark and native)
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_make_thinlto_command_lines_standalone"><code><a href="#flag--incompatible_make_thinlto_command_lines_standalone">--[no]incompatible_make_thinlto_command_lines_standalone</a></code> default: "true"</dt>
<dd>
If true, Bazel will not reuse C++ link action command lines for lto indexing command lines (see https://github.com/bazelbuild/bazel/issues/6791 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_remove_legacy_whole_archive"><code><a href="#flag--incompatible_remove_legacy_whole_archive">--[no]incompatible_remove_legacy_whole_archive</a></code> default: "true"</dt>
<dd>
If true, Bazel will not link library dependencies as whole archive by default (see https://github.com/bazelbuild/bazel/issues/7362 for migration instructions).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_require_ctx_in_configure_features"><code><a href="#flag--incompatible_require_ctx_in_configure_features">--[no]incompatible_require_ctx_in_configure_features</a></code> default: "true"</dt>
<dd>
If true, Bazel will require &#39;ctx&#39; parameter in to cc_common.configure_features (see https://github.com/bazelbuild/bazel/issues/7793 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--interface_shared_objects"><code><a href="#flag--interface_shared_objects">--[no]interface_shared_objects</a></code> default: "true"</dt>
<dd>
Use interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ios_sdk_version"><code><a href="#flag--ios_sdk_version">--ios_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the iOS SDK to use to build iOS applications. If unspecified, uses default iOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--macos_sdk_version"><code><a href="#flag--macos_sdk_version">--macos_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the macOS SDK to use to build macOS applications. If unspecified, uses default macOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--minimum_os_version"><code><a href="#flag--minimum_os_version">--minimum_os_version</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The minimum OS version which your compilation targets.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--platform_mappings"><code><a href="#flag--platform_mappings">--platform_mappings</a>=&lt;a relative path&gt</code> default: ""</dt>
<dd>
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 &#39;platform_mappings&#39; (a file directly under the workspace root).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--platforms"><code><a href="#flag--platforms">--platforms</a>=&lt;a build target label&gt</code> default: ""</dt>
<dd>
The labels of the platform rules describing the target platforms for the current command.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--python2_path"><code><a href="#flag--python2_path">--python2_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Deprecated, no-op. Disabled by `--incompatible_use_python_toolchains`.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a>, <a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--python3_path"><code><a href="#flag--python3_path">--python3_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Deprecated, no-op. Disabled by `--incompatible_use_python_toolchains`.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a>, <a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--python_path"><code><a href="#flag--python_path">--python_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The absolute path of the Python interpreter invoked to run Python targets on the target platform. Deprecated; disabled by --incompatible_use_python_toolchains.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--python_top"><code><a href="#flag--python_top">--python_top</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--tvos_sdk_version"><code><a href="#flag--tvos_sdk_version">--tvos_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the tvOS SDK to use to build tvOS applications. If unspecified, uses default tvOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--watchos_sdk_version"><code><a href="#flag--watchos_sdk_version">--watchos_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses default watchOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--xcode_version"><code><a href="#flag--xcode_version">--xcode_version</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
If specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--xcode_version_config"><code><a href="#flag--xcode_version_config">--xcode_version_config</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/cpp:host_xcodes"</dt>
<dd>
The label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that control the output of the command:
<dt id="flag--apple_generate_dsym"><code><a href="#flag--apple_generate_dsym">--[no]apple_generate_dsym</a></code> default: "false"</dt>
<dd>
Whether to generate debug symbol(.dSYM) file(s).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--build_runfile_links"><code><a href="#flag--build_runfile_links">--[no]build_runfile_links</a></code> default: "true"</dt>
<dd>
If true, build runfiles symlink forests for all targets.  If false, write them only when required by a local action, test or run command.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_runfile_manifests"><code><a href="#flag--build_runfile_manifests">--[no]build_runfile_manifests</a></code> default: "true"</dt>
<dd>
If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_test_dwp"><code><a href="#flag--build_test_dwp">--[no]build_test_dwp</a></code> default: "false"</dt>
<dd>
If enabled, when building C++ tests statically and with fission the .dwp file  for the test binary will be automatically built as well.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cc_proto_library_header_suffixes"><code><a href="#flag--cc_proto_library_header_suffixes">--cc_proto_library_header_suffixes</a>=&lt;comma-separated set of options&gt</code> default: ".pb.h"</dt>
<dd>
Sets the suffixes of header files that a cc_proto_library creates.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--cc_proto_library_source_suffixes"><code><a href="#flag--cc_proto_library_source_suffixes">--cc_proto_library_source_suffixes</a>=&lt;comma-separated set of options&gt</code> default: ".pb.cc"</dt>
<dd>
Sets the suffixes of source files that a cc_proto_library creates.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_proto_descriptor_sets_include_source_info"><code><a href="#flag--experimental_proto_descriptor_sets_include_source_info">--[no]experimental_proto_descriptor_sets_include_source_info</a></code> default: "false"</dt>
<dd>
Run extra actions for alternative Java api versions in a proto_library.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_proto_extra_actions"><code><a href="#flag--experimental_proto_extra_actions">--[no]experimental_proto_extra_actions</a></code> default: "false"</dt>
<dd>
Run extra actions for alternative Java api versions in a proto_library.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_save_feature_state"><code><a href="#flag--experimental_save_feature_state">--[no]experimental_save_feature_state</a></code> default: "false"</dt>
<dd>
Save the state of enabled and requested feautres as an output of compilation.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--fission"><code><a href="#flag--fission">--fission</a>=&lt;a set of compilation modes&gt</code> default: "no"</dt>
<dd>
Specifies which compilation modes use fission for C++ compilations and links.  May be any combination of {&#39;fastbuild&#39;, &#39;dbg&#39;, &#39;opt&#39;} or the special values &#39;yes&#39;  to enable all modes and &#39;no&#39; to disable all modes.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--incompatible_always_include_files_in_data"><code><a href="#flag--incompatible_always_include_files_in_data">--[no]incompatible_always_include_files_in_data</a></code> default: "true"</dt>
<dd>
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).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--legacy_external_runfiles"><code><a href="#flag--legacy_external_runfiles">--[no]legacy_external_runfiles</a></code> default: "true"</dt>
<dd>
If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--objc_generate_linkmap"><code><a href="#flag--objc_generate_linkmap">--[no]objc_generate_linkmap</a></code> default: "false"</dt>
<dd>
Specifies whether to generate a linkmap file.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--save_temps"><code><a href="#flag--save_temps">--[no]save_temps</a></code> default: "false"</dt>
<dd>
If set, temporary outputs from gcc will be saved.  These include .s files (assembler code), .i files (preprocessed C) and .ii files (preprocessed C++).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options that let the user configure the intended output, affecting its value, as opposed to its existence:
<dt id="flag--action_env"><code><a href="#flag--action_env">--action_env</a>=&lt;a &#39;name=value&#39; assignment with an optional value part&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--android_cpu"><code><a href="#flag--android_cpu">--android_cpu</a>=&lt;a string&gt</code> default: "armeabi-v7a"</dt>
<dd>
The Android target CPU.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_databinding_use_androidx"><code><a href="#flag--android_databinding_use_androidx">--[no]android_databinding_use_androidx</a></code> default: "true"</dt>
<dd>
Generate AndroidX-compatible data-binding files. This is only used with databinding v2. This flag is a no-op.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--android_databinding_use_v3_4_args"><code><a href="#flag--android_databinding_use_v3_4_args">--[no]android_databinding_use_v3_4_args</a></code> default: "true"</dt>
<dd>
Use android databinding v2 with 3.4.0 argument. This flag is a no-op.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--android_dynamic_mode"><code><a href="#flag--android_dynamic_mode">--android_dynamic_mode</a>=&lt;off, default or fully&gt</code> default: "off"</dt>
<dd>
Determines whether C++ deps of Android rules will be linked dynamically when a cc_binary does not explicitly create a shared library. &#39;default&#39; means bazel will choose whether to link dynamically.  &#39;fully&#39; means all libraries will be linked dynamically. &#39;off&#39; means that all libraries will be linked in mostly static mode.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--android_manifest_merger_order"><code><a href="#flag--android_manifest_merger_order">--android_manifest_merger_order</a>=&lt;alphabetical, alphabetical_by_configuration or dependency&gt</code> default: "alphabetical"</dt>
<dd>
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&#39;s manifest coming before the manifests of its dependencies.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--android_resource_shrinking"><code><a href="#flag--android_resource_shrinking">--[no]android_resource_shrinking</a></code> default: "false"</dt>
<dd>
Enables resource shrinking for android_binary APKs that use ProGuard.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--build_python_zip"><code><a href="#flag--build_python_zip">--[no]build_python_zip</a></code> default: "auto"</dt>
<dd>
Build python executable zip; on on Windows, off on other platforms
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--catalyst_cpus"><code><a href="#flag--catalyst_cpus">--catalyst_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple Catalyst binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--collect_code_coverage"><code><a href="#flag--collect_code_coverage">--[no]collect_code_coverage</a></code> default: "false"</dt>
<dd>
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 - &#39;bazel coverage&#39; command should be used instead.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--compilation_mode"><code><a href="#flag--compilation_mode">--compilation_mode</a>=&lt;fastbuild, dbg or opt&gt</code> [<code>-c</code>] default: "fastbuild"</dt>
<dd>
Specify the mode the binary will be built in. Values: &#39;fastbuild&#39;, &#39;dbg&#39;, &#39;opt&#39;.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--conlyopt"><code><a href="#flag--conlyopt">--conlyopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to gcc when compiling C source files.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--copt"><code><a href="#flag--copt">--copt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to gcc.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cpu"><code><a href="#flag--cpu">--cpu</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The target CPU.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cs_fdo_absolute_path"><code><a href="#flag--cs_fdo_absolute_path">--cs_fdo_absolute_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cs_fdo_instrument"><code><a href="#flag--cs_fdo_instrument">--cs_fdo_instrument</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cs_fdo_profile"><code><a href="#flag--cs_fdo_profile">--cs_fdo_profile</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The cs_fdo_profile representing the context sensitive profile to be used for optimization.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cxxopt"><code><a href="#flag--cxxopt">--cxxopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to gcc when compiling C++ source files.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--define"><code><a href="#flag--define">--define</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
Each --define option specifies an assignment for a build variable.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--dynamic_mode"><code><a href="#flag--dynamic_mode">--dynamic_mode</a>=&lt;off, default or fully&gt</code> default: "default"</dt>
<dd>
Determines whether C++ binaries will be linked dynamically.  &#39;default&#39; means Bazel will choose whether to link dynamically.  &#39;fully&#39; means all libraries will be linked dynamically. &#39;off&#39; means that all libraries will be linked in mostly static mode.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--enable_fdo_profile_absolute_path"><code><a href="#flag--enable_fdo_profile_absolute_path">--[no]enable_fdo_profile_absolute_path</a></code> default: "true"</dt>
<dd>
If set, use of fdo_absolute_profile_path will raise an error.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--enable_runfiles"><code><a href="#flag--enable_runfiles">--[no]enable_runfiles</a></code> default: "auto"</dt>
<dd>
Enable runfiles symlink tree; By default, it&#39;s off on Windows, on on other platforms.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_action_listener"><code><a href="#flag--experimental_action_listener">--experimental_action_listener</a>=&lt;a build target label&gt</code> multiple uses are accumulated</dt>
<dd>
Deprecated in favor of aspects. Use action_listener to attach an extra_action to existing build actions.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_android_compress_java_resources"><code><a href="#flag--experimental_android_compress_java_resources">--[no]experimental_android_compress_java_resources</a></code> default: "false"</dt>
<dd>
Compress Java resources in APKs
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_android_databinding_v2"><code><a href="#flag--experimental_android_databinding_v2">--[no]experimental_android_databinding_v2</a></code> default: "true"</dt>
<dd>
Use android databinding v2. This flag is a no-op.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_android_resource_shrinking"><code><a href="#flag--experimental_android_resource_shrinking">--[no]experimental_android_resource_shrinking</a></code> default: "false"</dt>
<dd>
Enables resource shrinking for android_binary APKs that use ProGuard.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_android_rewrite_dexes_with_rex"><code><a href="#flag--experimental_android_rewrite_dexes_with_rex">--[no]experimental_android_rewrite_dexes_with_rex</a></code> default: "false"</dt>
<dd>
use rex tool to rewrite dex files
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_collect_code_coverage_for_generated_files"><code><a href="#flag--experimental_collect_code_coverage_for_generated_files">--[no]experimental_collect_code_coverage_for_generated_files</a></code> default: "false"</dt>
<dd>
If specified, Bazel will also generate collect coverage information for generated files.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_objc_fastbuild_options"><code><a href="#flag--experimental_objc_fastbuild_options">--experimental_objc_fastbuild_options</a>=&lt;comma-separated list of options&gt</code> default: "-O0,-DDEBUG=1"</dt>
<dd>
Uses these strings as objc fastbuild compiler options.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--experimental_omitfp"><code><a href="#flag--experimental_omitfp">--[no]experimental_omitfp</a></code> default: "false"</dt>
<dd>
If true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_output_paths"><code><a href="#flag--experimental_output_paths">--experimental_output_paths</a>=&lt;off, content or strip&gt</code> default: "off"</dt>
<dd>
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 &#39;supports-path-mapping&#39; to the &#39;execution_requirements&#39; dict.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_override_name_platform_in_output_dir"><code><a href="#flag--experimental_override_name_platform_in_output_dir">--experimental_override_name_platform_in_output_dir</a>=&lt;a &#39;label=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_platform_in_output_dir"><code><a href="#flag--experimental_platform_in_output_dir">--[no]experimental_platform_in_output_dir</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_use_llvm_covmap"><code><a href="#flag--experimental_use_llvm_covmap">--[no]experimental_use_llvm_covmap</a></code> default: "false"</dt>
<dd>
If specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_use_platforms_in_output_dir_legacy_heuristic"><code><a href="#flag--experimental_use_platforms_in_output_dir_legacy_heuristic">--[no]experimental_use_platforms_in_output_dir_legacy_heuristic</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--fat_apk_cpu"><code><a href="#flag--fat_apk_cpu">--fat_apk_cpu</a>=&lt;comma-separated set of options&gt</code> default: "armeabi-v7a"</dt>
<dd>
Setting this option enables fat APKs, which contain native binaries for all specified target architectures, e.g., --fat_apk_cpu=x86,armeabi-v7a. If this flag is specified, then --android_cpu is ignored for dependencies of android_binary rules.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--fat_apk_hwasan"><code><a href="#flag--fat_apk_hwasan">--[no]fat_apk_hwasan</a></code> default: "false"</dt>
<dd>
Whether to create HWASAN splits.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--fdo_instrument"><code><a href="#flag--fdo_instrument">--fdo_instrument</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--fdo_optimize"><code><a href="#flag--fdo_optimize">--fdo_optimize</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--fdo_prefetch_hints"><code><a href="#flag--fdo_prefetch_hints">--fdo_prefetch_hints</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Use cache prefetch hints.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--fdo_profile"><code><a href="#flag--fdo_profile">--fdo_profile</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The fdo_profile representing the profile to be used for optimization.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--features"><code><a href="#flag--features">--features</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--force_pic"><code><a href="#flag--force_pic">--[no]force_pic</a></code> default: "false"</dt>
<dd>
If enabled, all C++ compilations produce position-independent code (&quot;-fPIC&quot;), links prefer PIC pre-built libraries over non-PIC libraries, and links produce position-independent executables (&quot;-pie&quot;).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_action_env"><code><a href="#flag--host_action_env">--host_action_env</a>=&lt;a &#39;name=value&#39; assignment with an optional value part&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--host_compilation_mode"><code><a href="#flag--host_compilation_mode">--host_compilation_mode</a>=&lt;fastbuild, dbg or opt&gt</code> default: "opt"</dt>
<dd>
Specify the mode the tools used during the build will be built in. Values: &#39;fastbuild&#39;, &#39;dbg&#39;, &#39;opt&#39;.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--host_conlyopt"><code><a href="#flag--host_conlyopt">--host_conlyopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_copt"><code><a href="#flag--host_copt">--host_copt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the C compiler for tools built in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_cpu"><code><a href="#flag--host_cpu">--host_cpu</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The host CPU.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_cxxopt"><code><a href="#flag--host_cxxopt">--host_cxxopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to C++ compiler for tools built in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_features"><code><a href="#flag--host_features">--host_features</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_force_python"><code><a href="#flag--host_force_python">--host_force_python</a>=&lt;PY2 or PY3&gt</code> default: see description</dt>
<dd>
Overrides the Python version for the exec configuration. Can be &quot;PY2&quot; or &quot;PY3&quot;.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_linkopt"><code><a href="#flag--host_linkopt">--host_linkopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to linker when linking tools in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_macos_minimum_os"><code><a href="#flag--host_macos_minimum_os">--host_macos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible macOS version for host targets. If unspecified, uses &#39;macos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--host_per_file_copt"><code><a href="#flag--host_per_file_copt">--host_per_file_copt</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths followed by an @ and a comma separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_swiftcopt"><code><a href="#flag--host_swiftcopt">--host_swiftcopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to swiftc for exec tools.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--incompatible_auto_exec_groups"><code><a href="#flag--incompatible_auto_exec_groups">--[no]incompatible_auto_exec_groups</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_merge_genfiles_directory"><code><a href="#flag--incompatible_merge_genfiles_directory">--[no]incompatible_merge_genfiles_directory</a></code> default: "true"</dt>
<dd>
If true, the genfiles directory is folded into the bin directory.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_use_host_features"><code><a href="#flag--incompatible_use_host_features">--[no]incompatible_use_host_features</a></code> default: "true"</dt>
<dd>
If true, use --features only for the target configuration and --host_features for the exec configuration.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--instrument_test_targets"><code><a href="#flag--instrument_test_targets">--[no]instrument_test_targets</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--instrumentation_filter"><code><a href="#flag--instrumentation_filter">--instrumentation_filter</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths&gt</code> default: "-/javatests[/:],-/test/java[/:]"</dt>
<dd>
When coverage is enabled, only rules with names included by the specified regex-based filter will be instrumented. Rules prefixed with &#39;-&#39; are excluded instead. Note that only non-test rules are instrumented unless --instrument_test_targets is enabled.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ios_minimum_os"><code><a href="#flag--ios_minimum_os">--ios_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible iOS version for target simulators and devices. If unspecified, uses &#39;ios_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--ios_multi_cpus"><code><a href="#flag--ios_multi_cpus">--ios_multi_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--legacy_whole_archive"><code><a href="#flag--legacy_whole_archive">--[no]legacy_whole_archive</a></code> default: "true"</dt>
<dd>
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 &#39;-static&#39; in linkopts. This is for backwards compatibility only. A better alternative is to use alwayslink=1 where required.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--linkopt"><code><a href="#flag--linkopt">--linkopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to gcc when linking.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ltobackendopt"><code><a href="#flag--ltobackendopt">--ltobackendopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to the LTO backend step (under --features=thin_lto).
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ltoindexopt"><code><a href="#flag--ltoindexopt">--ltoindexopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to the LTO indexing step (under --features=thin_lto).
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--macos_cpus"><code><a href="#flag--macos_cpus">--macos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple macOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--macos_minimum_os"><code><a href="#flag--macos_minimum_os">--macos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible macOS version for targets. If unspecified, uses &#39;macos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--memprof_profile"><code><a href="#flag--memprof_profile">--memprof_profile</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Use memprof profile.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--objc_debug_with_GLIBCXX"><code><a href="#flag--objc_debug_with_GLIBCXX">--[no]objc_debug_with_GLIBCXX</a></code> default: "false"</dt>
<dd>
If set, and compilation mode is set to &#39;dbg&#39;, define GLIBCXX_DEBUG,  GLIBCXX_DEBUG_PEDANTIC and GLIBCPP_CONCEPT_CHECKS.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--objc_enable_binary_stripping"><code><a href="#flag--objc_enable_binary_stripping">--[no]objc_enable_binary_stripping</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--objccopt"><code><a href="#flag--objccopt">--objccopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to gcc when compiling Objective-C/C++ source files.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--per_file_copt"><code><a href="#flag--per_file_copt">--per_file_copt</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths followed by an @ and a comma separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--per_file_ltobackendopt"><code><a href="#flag--per_file_ltobackendopt">--per_file_ltobackendopt</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths followed by an @ and a comma separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--platform_suffix"><code><a href="#flag--platform_suffix">--platform_suffix</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Specifies a suffix to be added to the configuration directory.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--propeller_optimize"><code><a href="#flag--propeller_optimize">--propeller_optimize</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
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 = &quot;propeller_profile&quot;,    cc_profile = &quot;propeller_cc_profile.txt&quot;,    ld_profile = &quot;propeller_ld_profile.txt&quot;,)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
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--propeller_optimize_absolute_cc_profile"><code><a href="#flag--propeller_optimize_absolute_cc_profile">--propeller_optimize_absolute_cc_profile</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Absolute path name of cc_profile file for Propeller Optimized builds.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--propeller_optimize_absolute_ld_profile"><code><a href="#flag--propeller_optimize_absolute_ld_profile">--propeller_optimize_absolute_ld_profile</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Absolute path name of ld_profile file for Propeller Optimized builds.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--run_under"><code><a href="#flag--run_under">--run_under</a>=&lt;a prefix in front of command&gt</code> default: see description</dt>
<dd>
Prefix to insert before the executables for the &#39;test&#39; and &#39;run&#39; commands. If the value is &#39;foo -bar&#39;, and the execution command line is &#39;test_binary -baz&#39;, then the final command line is &#39;foo -bar test_binary -baz&#39;.This can also be a label to an executable target. Some examples are: &#39;valgrind&#39;, &#39;strace&#39;, &#39;strace -c&#39;, &#39;valgrind --quiet --num-callers=20&#39;, &#39;//package:target&#39;,  &#39;//package:target --options&#39;.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--share_native_deps"><code><a href="#flag--share_native_deps">--[no]share_native_deps</a></code> default: "true"</dt>
<dd>
If true, native libraries that contain identical functionality will be shared among different targets
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--stamp"><code><a href="#flag--stamp">--[no]stamp</a></code> default: "false"</dt>
<dd>
Stamp binaries with the date, username, hostname, workspace information, etc.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--strip"><code><a href="#flag--strip">--strip</a>=&lt;always, sometimes or never&gt</code> default: "sometimes"</dt>
<dd>
Specifies whether to strip binaries and shared libraries  (using &quot;-Wl,--strip-debug&quot;).  The default value of &#39;sometimes&#39; means strip iff --compilation_mode=fastbuild.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--stripopt"><code><a href="#flag--stripopt">--stripopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to strip when generating a &#39;&lt;name&gt;.stripped&#39; binary.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--swiftcopt"><code><a href="#flag--swiftcopt">--swiftcopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to Swift compilation.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--tvos_cpus"><code><a href="#flag--tvos_cpus">--tvos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple tvOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--tvos_minimum_os"><code><a href="#flag--tvos_minimum_os">--tvos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible tvOS version for target simulators and devices. If unspecified, uses &#39;tvos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--visionos_cpus"><code><a href="#flag--visionos_cpus">--visionos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple visionOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--watchos_cpus"><code><a href="#flag--watchos_cpus">--watchos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple watchOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--watchos_minimum_os"><code><a href="#flag--watchos_minimum_os">--watchos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible watchOS version for target simulators and devices. If unspecified, uses &#39;watchos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--xbinary_fdo"><code><a href="#flag--xbinary_fdo">--xbinary_fdo</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options that affect how strictly Bazel enforces valid build inputs (rule definitions,  flag combinations, etc.):
<dt id="flag--auto_cpu_environment_group"><code><a href="#flag--auto_cpu_environment_group">--auto_cpu_environment_group</a>=&lt;a build target label&gt</code> default: ""</dt>
<dd>
Declare the environment_group to use for automatically mapping cpu values to target_environment values.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--check_licenses"><code><a href="#flag--check_licenses">--[no]check_licenses</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--check_visibility"><code><a href="#flag--check_visibility">--[no]check_visibility</a></code> default: "true"</dt>
<dd>
If disabled, visibility errors in target dependencies are demoted to warnings.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--desugar_for_android"><code><a href="#flag--desugar_for_android">--[no]desugar_for_android</a></code> default: "true"</dt>
<dd>
Whether to desugar Java 8 bytecode before dexing.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--desugar_java8_libs"><code><a href="#flag--desugar_java8_libs">--[no]desugar_java8_libs</a></code> default: "false"</dt>
<dd>
Whether to include supported Java 8 libraries in apps for legacy devices.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--enforce_constraints"><code><a href="#flag--enforce_constraints">--[no]enforce_constraints</a></code> default: "true"</dt>
<dd>
Checks the environments each target is compatible with and reports errors if any target has dependencies that don&#39;t support the same environments
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--experimental_check_desugar_deps"><code><a href="#flag--experimental_check_desugar_deps">--[no]experimental_check_desugar_deps</a></code> default: "true"</dt>
<dd>
Whether to double-check correct desugaring at Android binary level.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_import_deps_checking"><code><a href="#flag--experimental_import_deps_checking">--experimental_import_deps_checking</a>=&lt;off, warning or error&gt</code> default: "OFF"</dt>
<dd>
When enabled, check whether the dependencies of an aar_import are complete. This enforcement can break the build, or can just result in warnings.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_one_version_enforcement"><code><a href="#flag--experimental_one_version_enforcement">--experimental_one_version_enforcement</a>=&lt;off, warning or error&gt</code> default: "OFF"</dt>
<dd>
When enabled, enforce that a java_binary rule can&#39;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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_strict_java_deps"><code><a href="#flag--experimental_strict_java_deps">--experimental_strict_java_deps</a>=&lt;off, warn, error, strict or default&gt</code> default: "default"</dt>
<dd>
If true, checks that a Java target explicitly declares all directly used targets as dependencies.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--incompatible_check_testonly_for_output_files"><code><a href="#flag--incompatible_check_testonly_for_output_files">--[no]incompatible_check_testonly_for_output_files</a></code> default: "false"</dt>
<dd>
If enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_check_visibility_for_toolchains"><code><a href="#flag--incompatible_check_visibility_for_toolchains">--[no]incompatible_check_visibility_for_toolchains</a></code> default: "false"</dt>
<dd>
If enabled, visibility checking also applies to toolchain implementations.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disable_native_android_rules"><code><a href="#flag--incompatible_disable_native_android_rules">--[no]incompatible_disable_native_android_rules</a></code> default: "false"</dt>
<dd>
If enabled, direct usage of the native Android rules is disabled. Please use the Starlark Android rules from https://github.com/bazelbuild/rules_android
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disable_native_apple_binary_rule"><code><a href="#flag--incompatible_disable_native_apple_binary_rule">--[no]incompatible_disable_native_apple_binary_rule</a></code> default: "false"</dt>
<dd>
No-op. Kept here for backwards compatibility.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_python_disable_py2"><code><a href="#flag--incompatible_python_disable_py2">--[no]incompatible_python_disable_py2</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_validate_top_level_header_inclusions"><code><a href="#flag--incompatible_validate_top_level_header_inclusions">--[no]incompatible_validate_top_level_header_inclusions</a></code> default: "true"</dt>
<dd>
If true, Bazel will also validate top level directory header inclusions (see https://github.com/bazelbuild/bazel/issues/10047 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--one_version_enforcement_on_java_tests"><code><a href="#flag--one_version_enforcement_on_java_tests">--[no]one_version_enforcement_on_java_tests</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--python_native_rules_allowlist"><code><a href="#flag--python_native_rules_allowlist">--python_native_rules_allowlist</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
An allowlist (package_group target) to use when enforcing --incompatible_python_disallow_native_rules.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--strict_filesets"><code><a href="#flag--strict_filesets">--[no]strict_filesets</a></code> default: "false"</dt>
<dd>
If this option is enabled, filesets crossing package boundaries are reported as errors.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--strict_proto_deps"><code><a href="#flag--strict_proto_deps">--strict_proto_deps</a>=&lt;off, warn, error, strict or default&gt</code> default: "error"</dt>
<dd>
Unless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--strict_public_imports"><code><a href="#flag--strict_public_imports">--strict_public_imports</a>=&lt;off, warn, error, strict or default&gt</code> default: "off"</dt>
<dd>
Unless OFF, checks that a proto_library target explicitly declares all targets used in &#39;import public&#39; as exported.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--strict_system_includes"><code><a href="#flag--strict_system_includes">--[no]strict_system_includes</a></code> default: "false"</dt>
<dd>
If true, headers found through system include paths (-isystem) are also required to be declared.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--target_environment"><code><a href="#flag--target_environment">--target_environment</a>=&lt;a build target label&gt</code> multiple uses are accumulated</dt>
<dd>
Declares this build&#39;s target environment. Must be a label reference to an &quot;environment&quot; rule. If specified, all top-level targets must be compatible with this environment.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Options that affect the signing outputs of a build:
<dt id="flag--apk_signing_method"><code><a href="#flag--apk_signing_method">--apk_signing_method</a>=&lt;v1, v2, v1_v2 or v4&gt</code> default: "v1_v2"</dt>
<dd>
Implementation to use to sign APKs
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--device_debug_entitlements"><code><a href="#flag--device_debug_entitlements">--[no]device_debug_entitlements</a></code> default: "true"</dt>
<dd>
If set, and compilation mode is not &#39;opt&#39;, objc apps will include debug entitlements when signing.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--ios_signing_cert_name"><code><a href="#flag--ios_signing_cert_name">--ios_signing_cert_name</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Certificate name to use for iOS signing. If not set will fall back to provisioning profile. May be the certificate&#39;s keychain identity preference or (substring) of the certificate&#39;s common name, as per codesign&#39;s man page (SIGNING IDENTITIES).
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
</dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--incompatible_disallow_legacy_py_provider"><code><a href="#flag--incompatible_disallow_legacy_py_provider">--[no]incompatible_disallow_legacy_py_provider</a></code> default: "true"</dt>
<dd>
No-op, will be removed soon.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disallow_sdk_frameworks_attributes"><code><a href="#flag--incompatible_disallow_sdk_frameworks_attributes">--[no]incompatible_disallow_sdk_frameworks_attributes</a></code> default: "false"</dt>
<dd>
If true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library andobjc_import.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_objc_alwayslink_by_default"><code><a href="#flag--incompatible_objc_alwayslink_by_default">--[no]incompatible_objc_alwayslink_by_default</a></code> default: "false"</dt>
<dd>
If true, make the default value true for alwayslink attributes in objc_library and objc_import.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_python_disallow_native_rules"><code><a href="#flag--incompatible_python_disallow_native_rules">--[no]incompatible_python_disallow_native_rules</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
</dl>
<dl>Options that govern the behavior of the test environment or test runner:
<dt id="flag--allow_analysis_failures"><code><a href="#flag--allow_analysis_failures">--[no]allow_analysis_failures</a></code> default: "false"</dt>
<dd>
If true, an analysis failure of a rule target results in the target&#39;s propagation of an instance of AnalysisFailureInfo containing the error description, instead of resulting in a build failure.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--analysis_testing_deps_limit"><code><a href="#flag--analysis_testing_deps_limit">--analysis_testing_deps_limit</a>=&lt;an integer&gt</code> default: "2000"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--break_build_on_parallel_dex2oat_failure"><code><a href="#flag--break_build_on_parallel_dex2oat_failure">--[no]break_build_on_parallel_dex2oat_failure</a></code> default: "false"</dt>
<dd>
If true dex2oat action failures will cause the build to break instead of executing dex2oat during test runtime.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--default_test_resources"><code><a href="#flag--default_test_resources">--default_test_resources</a>=&lt;a resource name followed by equal and 1 float or 4 float, e.g. memory=10,30,60,100&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_android_use_parallel_dex2oat"><code><a href="#flag--experimental_android_use_parallel_dex2oat">--[no]experimental_android_use_parallel_dex2oat</a></code> default: "false"</dt>
<dd>
Use dex2oat in parallel to possibly speed up android_test.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--ios_memleaks"><code><a href="#flag--ios_memleaks">--[no]ios_memleaks</a></code> default: "false"</dt>
<dd>
Enable checking for memory leaks in ios_test targets.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--ios_simulator_device"><code><a href="#flag--ios_simulator_device">--ios_simulator_device</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The device to simulate when running an iOS application in the simulator, e.g. &#39;iPhone 6&#39;. You can get a list of devices by running &#39;xcrun simctl list devicetypes&#39; on the machine the simulator will be run on.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
<dt id="flag--ios_simulator_version"><code><a href="#flag--ios_simulator_version">--ios_simulator_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
<dt id="flag--runs_per_test"><code><a href="#flag--runs_per_test">--runs_per_test</a>=&lt;a positive integer or test_regex@runs. This flag may be passed more than once&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--test_env"><code><a href="#flag--test_env">--test_env</a>=&lt;a &#39;name=value&#39; assignment with an optional value part&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;bazel test&#39; command.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
<dt id="flag--test_timeout"><code><a href="#flag--test_timeout">--test_timeout</a>=&lt;a single integer or comma-separated list of 4 integers&gt</code> default: "-1"</dt>
<dd>
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.
</dd>
<dt id="flag--zip_undeclared_test_outputs"><code><a href="#flag--zip_undeclared_test_outputs">--[no]zip_undeclared_test_outputs</a></code> default: "true"</dt>
<dd>
If true, undeclared test outputs will be archived in a zip file.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
</dl>
<dl>Options relating to query output and semantics:
<dt id="flag--aspect_deps"><code><a href="#flag--aspect_deps">--aspect_deps</a>=&lt;off, conservative or precise&gt</code> default: "conservative"</dt>
<dd>
How to resolve aspect dependencies when the output format is one of {xml,proto,record}. &#39;off&#39; means no aspect dependencies are resolved, &#39;conservative&#39; (the default) means all declared aspect dependencies are added regardless of whether they are given the rule class of direct dependencies, &#39;precise&#39; 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 &#39;bazel query&#39;.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--consistent_labels"><code><a href="#flag--consistent_labels">--[no]consistent_labels</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--experimental_explicit_aspects"><code><a href="#flag--experimental_explicit_aspects">--[no]experimental_explicit_aspects</a></code> default: "false"</dt>
<dd>
aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--graph:factored"><code><a href="#flag--graph:factored">--[no]graph:factored</a></code> default: "true"</dt>
<dd>
If true, then the graph will be emitted &#39;factored&#39;, i.e. topologically-equivalent nodes will be merged together and their labels concatenated. This option is only applicable to --output=graph.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--graph:node_limit"><code><a href="#flag--graph:node_limit">--graph:node_limit</a>=&lt;an integer&gt</code> default: "512"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--implicit_deps"><code><a href="#flag--implicit_deps">--[no]implicit_deps</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--include_artifacts"><code><a href="#flag--include_artifacts">--[no]include_artifacts</a></code> default: "true"</dt>
<dd>
Includes names of the action inputs and outputs in the output (potentially large).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--include_aspects"><code><a href="#flag--include_aspects">--[no]include_aspects</a></code> default: "true"</dt>
<dd>
aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--include_commandline"><code><a href="#flag--include_commandline">--[no]include_commandline</a></code> default: "true"</dt>
<dd>
Includes the content of the action command lines in the output (potentially large).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--include_file_write_contents"><code><a href="#flag--include_file_write_contents">--[no]include_file_write_contents</a></code> default: "false"</dt>
<dd>
Include the file contents for the FileWrite, SourceSymlinkManifest, and RepoMappingManifest actions (potentially large).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--include_param_files"><code><a href="#flag--include_param_files">--[no]include_param_files</a></code> default: "false"</dt>
<dd>
Include the content of the param files used in the command (potentially large). Note: Enabling this flag will automatically enable the --include_commandline flag.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--incompatible_package_group_includes_double_slash"><code><a href="#flag--incompatible_package_group_includes_double_slash">--[no]incompatible_package_group_includes_double_slash</a></code> default: "true"</dt>
<dd>
If enabled, when outputting package_group&#39;s `packages` attribute, the leading `//` will not be omitted.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--infer_universe_scope"><code><a href="#flag--infer_universe_scope">--[no]infer_universe_scope</a></code> default: "false"</dt>
<dd>
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&#39;s value is ignored. Note: this option applies only to `query` (i.e. not `cquery`).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--line_terminator_null"><code><a href="#flag--line_terminator_null">--[no]line_terminator_null</a></code> default: "false"</dt>
<dd>
Whether each format is terminated with \0 instead of newline.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--nodep_deps"><code><a href="#flag--nodep_deps">--[no]nodep_deps</a></code> default: "true"</dt>
<dd>
If enabled, deps from &quot;nodep&quot; attributes will be included in the dependency graph over which the query operates. A common example of a &quot;nodep&quot; attribute is &quot;visibility&quot;. Run and parse the output of `info build-language` to learn about all the &quot;nodep&quot; attributes in the build language.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--output"><code><a href="#flag--output">--output</a>=&lt;a string&gt</code> default: "text"</dt>
<dd>
The format in which the aquery results should be printed. Allowed values for aquery are: text, textproto, proto, streamed_proto, jsonproto.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--output_file"><code><a href="#flag--output_file">--output_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
When specified, query results will be written directly to this file, and nothing will be printed to Bazel&#39;s standard output stream (stdout). In benchmarks, this is generally faster than &lt;code&gt;bazel query &amp;gt; file&lt;/code&gt;.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:default_values"><code><a href="#flag--proto:default_values">--[no]proto:default_values</a></code> default: "true"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:definition_stack"><code><a href="#flag--proto:definition_stack">--[no]proto:definition_stack</a></code> default: "false"</dt>
<dd>
Populate the definition_stack proto field, which records for each rule instance the Starlark call stack at the moment the rule&#39;s class was defined.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:flatten_selects"><code><a href="#flag--proto:flatten_selects">--[no]proto:flatten_selects</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--proto:include_attribute_source_aspects"><code><a href="#flag--proto:include_attribute_source_aspects">--[no]proto:include_attribute_source_aspects</a></code> default: "false"</dt>
<dd>
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).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:include_synthetic_attribute_hash"><code><a href="#flag--proto:include_synthetic_attribute_hash">--[no]proto:include_synthetic_attribute_hash</a></code> default: "false"</dt>
<dd>
Whether or not to calculate and populate the $internal_attr_hash attribute.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:instantiation_stack"><code><a href="#flag--proto:instantiation_stack">--[no]proto:instantiation_stack</a></code> default: "false"</dt>
<dd>
Populate the instantiation call stack of each rule. Note that this requires the stack to be present
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:locations"><code><a href="#flag--proto:locations">--[no]proto:locations</a></code> default: "true"</dt>
<dd>
Whether to output location information in proto output at all.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:output_rule_attrs"><code><a href="#flag--proto:output_rule_attrs">--proto:output_rule_attrs</a>=&lt;comma-separated list of options&gt</code> default: "all"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:rule_inputs_and_outputs"><code><a href="#flag--proto:rule_inputs_and_outputs">--[no]proto:rule_inputs_and_outputs</a></code> default: "true"</dt>
<dd>
Whether or not to populate the rule_input and rule_output fields.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--query_file"><code><a href="#flag--query_file">--query_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--relative_locations"><code><a href="#flag--relative_locations">--[no]relative_locations</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--skyframe_state"><code><a href="#flag--skyframe_state">--[no]skyframe_state</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--tool_deps"><code><a href="#flag--tool_deps">--[no]tool_deps</a></code> default: "true"</dt>
<dd>
Query: If disabled, dependencies on &#39;exec configuration&#39; will not be included in the dependency graph over which the query operates. An &#39;exec configuration&#39; dependency edge, such as the one from any &#39;proto_library&#39; rule to the Protocol Compiler, usually points to a tool executed during the build rather than a part of the same &#39;target&#39; 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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--universe_scope"><code><a href="#flag--universe_scope">--universe_scope</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--experimental_filter_library_jar_with_program_jar"><code><a href="#flag--experimental_filter_library_jar_with_program_jar">--[no]experimental_filter_library_jar_with_program_jar</a></code> default: "false"</dt>
<dd>
Filter the ProGuard ProgramJar to remove any classes also present in the LibraryJar.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--experimental_inmemory_dotd_files"><code><a href="#flag--experimental_inmemory_dotd_files">--[no]experimental_inmemory_dotd_files</a></code> default: "true"</dt>
<dd>
If enabled, C++ .d files will be passed through in memory directly from the remote build nodes instead of being written to disk.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_inmemory_jdeps_files"><code><a href="#flag--experimental_inmemory_jdeps_files">--[no]experimental_inmemory_jdeps_files</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_objc_include_scanning"><code><a href="#flag--experimental_objc_include_scanning">--[no]experimental_objc_include_scanning</a></code> default: "false"</dt>
<dd>
Whether to perform include scanning for objective C/C++.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--experimental_retain_test_configuration_across_testonly"><code><a href="#flag--experimental_retain_test_configuration_across_testonly">--[no]experimental_retain_test_configuration_across_testonly</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--experimental_starlark_cc_import"><code><a href="#flag--experimental_starlark_cc_import">--[no]experimental_starlark_cc_import</a></code> default: "false"</dt>
<dd>
If enabled, the Starlark version of cc_import can be used.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_unsupported_and_brittle_include_scanning"><code><a href="#flag--experimental_unsupported_and_brittle_include_scanning">--[no]experimental_unsupported_and_brittle_include_scanning</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--incremental_dexing"><code><a href="#flag--incremental_dexing">--[no]incremental_dexing</a></code> default: "true"</dt>
<dd>
Does most of the work for dexing separately for each Jar file.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--objc_use_dotd_pruning"><code><a href="#flag--objc_use_dotd_pruning">--[no]objc_use_dotd_pruning</a></code> default: "true"</dt>
<dd>
If set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--process_headers_in_dependencies"><code><a href="#flag--process_headers_in_dependencies">--[no]process_headers_in_dependencies</a></code> default: "false"</dt>
<dd>
When building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--trim_test_configuration"><code><a href="#flag--trim_test_configuration">--[no]trim_test_configuration</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--toolchain_resolution_debug"><code><a href="#flag--toolchain_resolution_debug">--toolchain_resolution_debug</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths&gt</code> default: "-.*"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--flag_alias"><code><a href="#flag--flag_alias">--flag_alias</a>=&lt;a &#39;name=value&#39; flag alias&gt</code> multiple uses are accumulated</dt>
<dd>
Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form &quot;&lt;key&gt;=&lt;value&gt;&quot; as an argument.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--incompatible_default_to_explicit_init_py"><code><a href="#flag--incompatible_default_to_explicit_init_py">--[no]incompatible_default_to_explicit_init_py</a></code> default: "false"</dt>
<dd>
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 &quot;auto&quot; (the default), it is treated as false if and only if this flag is set. See https://github.com/bazelbuild/bazel/issues/10076.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_py2_outputs_are_suffixed"><code><a href="#flag--incompatible_py2_outputs_are_suffixed">--[no]incompatible_py2_outputs_are_suffixed</a></code> default: "true"</dt>
<dd>
If true, targets built in the Python 2 configuration will appear under an output root that includes the suffix &#39;-py2&#39;, 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`.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_py3_is_default"><code><a href="#flag--incompatible_py3_is_default">--[no]incompatible_py3_is_default</a></code> default: "true"</dt>
<dd>
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`.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_use_python_toolchains"><code><a href="#flag--incompatible_use_python_toolchains">--[no]incompatible_use_python_toolchains</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--python_version"><code><a href="#flag--python_version">--python_version</a>=&lt;PY2 or PY3&gt</code> default: see description</dt>
<dd>
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&#39;t explicitly specify a version) so there is usually not much reason to supply this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl></dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--cache_test_results"><code><a href="#flag--cache_test_results">--[no]cache_test_results</a></code> [<code>-t</code>] default: "auto"</dt>
<dd>
If set to &#39;auto&#39;, 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 &#39;yes&#39;, Bazel caches all test results except for tests marked as external. If set to &#39;no&#39;, Bazel does not cache any test results.
</dd>
<dt id="flag--experimental_cancel_concurrent_tests"><code><a href="#flag--experimental_cancel_concurrent_tests">--[no]experimental_cancel_concurrent_tests</a></code> default: "false"</dt>
<dd>
If true, then Blaze will cancel concurrently running tests on the first successful run. This is only useful in combination with --runs_per_test_detects_flakes.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_fetch_all_coverage_outputs"><code><a href="#flag--experimental_fetch_all_coverage_outputs">--[no]experimental_fetch_all_coverage_outputs</a></code> default: "false"</dt>
<dd>
If true, then Bazel fetches the entire coverage data directory for each test during a coverage run.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_generate_llvm_lcov"><code><a href="#flag--experimental_generate_llvm_lcov">--[no]experimental_generate_llvm_lcov</a></code> default: "false"</dt>
<dd>
If true, coverage for clang will generate an LCOV report.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_j2objc_header_map"><code><a href="#flag--experimental_j2objc_header_map">--[no]experimental_j2objc_header_map</a></code> default: "true"</dt>
<dd>
Whether to generate J2ObjC header map in parallel of J2ObjC transpilation.
</dd>
<dt id="flag--experimental_j2objc_shorter_header_path"><code><a href="#flag--experimental_j2objc_shorter_header_path">--[no]experimental_j2objc_shorter_header_path</a></code> default: "false"</dt>
<dd>
Whether to generate with shorter header path (uses &quot;_ios&quot; instead of &quot;_j2objc&quot;).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_java_classpath"><code><a href="#flag--experimental_java_classpath">--experimental_java_classpath</a>=&lt;off, javabuilder or bazel&gt</code> default: "javabuilder"</dt>
<dd>
Enables reduced classpaths for Java compilations.
</dd>
<dt id="flag--experimental_limit_android_lint_to_android_constrained_java"><code><a href="#flag--experimental_limit_android_lint_to_android_constrained_java">--[no]experimental_limit_android_lint_to_android_constrained_java</a></code> default: "false"</dt>
<dd>
Limit --experimental_run_android_lint_on_java_rules to Android-compatible libraries.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_run_android_lint_on_java_rules"><code><a href="#flag--experimental_run_android_lint_on_java_rules">--[no]experimental_run_android_lint_on_java_rules</a></code> default: "false"</dt>
<dd>
Whether to validate java_* sources.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--explicit_java_test_deps"><code><a href="#flag--explicit_java_test_deps">--[no]explicit_java_test_deps</a></code> default: "false"</dt>
<dd>
Explicitly specify a dependency to JUnit or Hamcrest in a java_test instead of  accidentally obtaining from the TestRunner&#39;s deps. Only works for bazel right now.
</dd>
<dt id="flag--host_java_launcher"><code><a href="#flag--host_java_launcher">--host_java_launcher</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The Java launcher used by tools that are executed during a build.
</dd>
<dt id="flag--host_javacopt"><code><a href="#flag--host_javacopt">--host_javacopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to javac when building tools that are executed during a build.
</dd>
<dt id="flag--host_jvmopt"><code><a href="#flag--host_jvmopt">--host_jvmopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--incompatible_check_sharding_support"><code><a href="#flag--incompatible_check_sharding_support">--[no]incompatible_check_sharding_support</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_exclusive_test_sandboxed"><code><a href="#flag--incompatible_exclusive_test_sandboxed">--[no]incompatible_exclusive_test_sandboxed</a></code> default: "true"</dt>
<dd>
If true, exclusive tests will run with sandboxed strategy. Add &#39;local&#39; tag to force an exclusive test run locally
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_strict_action_env"><code><a href="#flag--incompatible_strict_action_env">--[no]incompatible_strict_action_env</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--j2objc_translation_flags"><code><a href="#flag--j2objc_translation_flags">--j2objc_translation_flags</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the J2ObjC tool.
</dd>
<dt id="flag--java_debug"><code><a href="#flag--java_debug">--java_debug</a></code></dt>
<dd>
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.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--test_arg">--test_arg=--wrapper_script_flag=--debug</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--test_output">--test_output=streamed</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--test_strategy">--test_strategy=exclusive</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--test_timeout">--test_timeout=9999</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--nocache_test_results">--nocache_test_results</a></code><br/>
</dd>
<dt id="flag--java_deps"><code><a href="#flag--java_deps">--[no]java_deps</a></code> default: "true"</dt>
<dd>
Generate dependency information (for now, compile-time classpath) per Java target.
</dd>
<dt id="flag--java_header_compilation"><code><a href="#flag--java_header_compilation">--[no]java_header_compilation</a></code> default: "true"</dt>
<dd>
Compile ijars directly from source.
</dd>
<dt id="flag--java_language_version"><code><a href="#flag--java_language_version">--java_language_version</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The Java language version
</dd>
<dt id="flag--java_launcher"><code><a href="#flag--java_launcher">--java_launcher</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The Java launcher to use when building Java binaries.  If this flag is set to the empty string, the JDK launcher is used. The &quot;launcher&quot; attribute overrides this flag.
</dd>
<dt id="flag--java_runtime_version"><code><a href="#flag--java_runtime_version">--java_runtime_version</a>=&lt;a string&gt</code> default: "local_jdk"</dt>
<dd>
The Java runtime version
</dd>
<dt id="flag--javacopt"><code><a href="#flag--javacopt">--javacopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to javac.
</dd>
<dt id="flag--jvmopt"><code><a href="#flag--jvmopt">--jvmopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the Java VM. These options will get added to the VM startup options of each java_binary target.
</dd>
<dt id="flag--legacy_main_dex_list_generator"><code><a href="#flag--legacy_main_dex_list_generator">--legacy_main_dex_list_generator</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.
</dd>
<dt id="flag--optimizing_dexer"><code><a href="#flag--optimizing_dexer">--optimizing_dexer</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies a binary to use to do dexing without sharding.
</dd>
<dt id="flag--plugin"><code><a href="#flag--plugin">--plugin</a>=&lt;a build target label&gt</code> multiple uses are accumulated</dt>
<dd>
Plugins to use in the build. Currently works with java_plugin.
</dd>
<dt id="flag--proguard_top"><code><a href="#flag--proguard_top">--proguard_top</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies which version of ProGuard to use for code removal when building a Java binary.
</dd>
<dt id="flag--proto_compiler"><code><a href="#flag--proto_compiler">--proto_compiler</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:protoc"</dt>
<dd>
The label of the proto-compiler.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_cc"><code><a href="#flag--proto_toolchain_for_cc">--proto_toolchain_for_cc</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:cc_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile C++ protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_j2objc"><code><a href="#flag--proto_toolchain_for_j2objc">--proto_toolchain_for_j2objc</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/j2objc:j2objc_proto_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile j2objc protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_java"><code><a href="#flag--proto_toolchain_for_java">--proto_toolchain_for_java</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:java_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile Java protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_javalite"><code><a href="#flag--proto_toolchain_for_javalite">--proto_toolchain_for_javalite</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:javalite_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile JavaLite protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--protocopt"><code><a href="#flag--protocopt">--protocopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the protobuf compiler.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--runs_per_test_detects_flakes"><code><a href="#flag--runs_per_test_detects_flakes">--[no]runs_per_test_detects_flakes</a></code> default: "false"</dt>
<dd>
If true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.
</dd>
<dt id="flag--shell_executable"><code><a href="#flag--shell_executable">--shell_executable</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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:/tools/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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--test_arg"><code><a href="#flag--test_arg">--test_arg</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;bazel test&#39; command.
</dd>
<dt id="flag--test_filter"><code><a href="#flag--test_filter">--test_filter</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--test_result_expiration"><code><a href="#flag--test_result_expiration">--test_result_expiration</a>=&lt;an integer&gt</code> default: "-1"</dt>
<dd>
This option is deprecated and has no effect.
</dd>
<dt id="flag--test_runner_fail_fast"><code><a href="#flag--test_runner_fail_fast">--[no]test_runner_fail_fast</a></code> default: "false"</dt>
<dd>
Forwards fail fast option to the test runner. The test runner should stop execution upon first failure.
</dd>
<dt id="flag--test_sharding_strategy"><code><a href="#flag--test_sharding_strategy">--test_sharding_strategy</a>=&lt;explicit, disabled or forced=k where k is the number of shards to enforce&gt</code> default: "explicit"</dt>
<dd>
Specify strategy for test sharding: &#39;explicit&#39; to only use sharding if the &#39;shard_count&#39; BUILD attribute is present. &#39;disabled&#39; to never use test sharding. &#39;forced=k&#39; to enforce &#39;k&#39; shards for testing regardless of the &#39;shard_count&#39; BUILD attribute.
</dd>
<dt id="flag--tool_java_language_version"><code><a href="#flag--tool_java_language_version">--tool_java_language_version</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The Java language version used to execute the tools that are needed during a build
</dd>
<dt id="flag--tool_java_runtime_version"><code><a href="#flag--tool_java_runtime_version">--tool_java_runtime_version</a>=&lt;a string&gt</code> default: "remotejdk_11"</dt>
<dd>
The Java runtime version used to execute tools during the build
</dd>
<dt id="flag--use_ijars"><code><a href="#flag--use_ijars">--[no]use_ijars</a></code> default: "true"</dt>
<dd>
If enabled, this option causes Java compilation to use interface jars. This will result in faster incremental compilation, but error messages can be different.
</dd>
</dl>

<h2><a name="build">Build Options</a></h2>
<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--check_up_to_date"><code><a href="#flag--check_up_to_date">--[no]check_up_to_date</a></code> default: "false"</dt>
<dd>
Don&#39;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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--dynamic_local_execution_delay"><code><a href="#flag--dynamic_local_execution_delay">--dynamic_local_execution_delay</a>=&lt;an integer&gt</code> default: "1000"</dt>
<dd>
How many milliseconds should local execution be delayed, if remote execution was faster during a build at least once?
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--dynamic_local_strategy"><code><a href="#flag--dynamic_local_strategy">--dynamic_local_strategy</a>=&lt;a &#39;[name=]value1[,..,valueN]&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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,...]
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--dynamic_remote_strategy"><code><a href="#flag--dynamic_remote_strategy">--dynamic_remote_strategy</a>=&lt;a &#39;[name=]value1[,..,valueN]&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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,...]
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--experimental_docker_image"><code><a href="#flag--experimental_docker_image">--experimental_docker_image</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
Specify a Docker image name (e.g. &quot;ubuntu:latest&quot;) that should be used to execute a sandboxed action when using the docker strategy and the action itself doesn&#39;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 &#39;docker run&#39;, so it supports the same syntax and mechanisms as Docker itself.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_docker_use_customized_images"><code><a href="#flag--experimental_docker_use_customized_images">--[no]experimental_docker_use_customized_images</a></code> default: "true"</dt>
<dd>
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&#39;t work in your case or you know that you don&#39;t need it.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_dynamic_exclude_tools"><code><a href="#flag--experimental_dynamic_exclude_tools">--[no]experimental_dynamic_exclude_tools</a></code> default: "true"</dt>
<dd>
When set, targets that are build &quot;for tool&quot; are not subject to dynamic execution. Such targets are extremely unlikely to be built incrementally and thus not worth spending local cycles on.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--experimental_dynamic_local_load_factor"><code><a href="#flag--experimental_dynamic_local_load_factor">--experimental_dynamic_local_load_factor</a>=&lt;a double&gt</code> default: "0"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--experimental_dynamic_slow_remote_time"><code><a href="#flag--experimental_dynamic_slow_remote_time">--experimental_dynamic_slow_remote_time</a>=&lt;An immutable length of time.&gt</code> default: "0"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--experimental_enable_docker_sandbox"><code><a href="#flag--experimental_enable_docker_sandbox">--[no]experimental_enable_docker_sandbox</a></code> default: "false"</dt>
<dd>
Enable Docker-based sandboxing. This option has no effect if Docker is not installed.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_inmemory_sandbox_stashes"><code><a href="#flag--experimental_inmemory_sandbox_stashes">--[no]experimental_inmemory_sandbox_stashes</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_sandbox_async_tree_delete_idle_threads"><code><a href="#flag--experimental_sandbox_async_tree_delete_idle_threads">--experimental_sandbox_async_tree_delete_idle_threads</a>=&lt;an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> default: "4"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_sandbox_memory_limit_mb"><code><a href="#flag--experimental_sandbox_memory_limit_mb">--experimental_sandbox_memory_limit_mb</a>=&lt;an integer number of MBs, or &quot;HOST_RAM&quot;, optionally followed by [-|*]&lt;float&gt;.&gt</code> default: "0"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_shrink_worker_pool"><code><a href="#flag--experimental_shrink_worker_pool">--[no]experimental_shrink_worker_pool</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--experimental_split_xml_generation"><code><a href="#flag--experimental_split_xml_generation">--[no]experimental_split_xml_generation</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_total_worker_memory_limit_mb"><code><a href="#flag--experimental_total_worker_memory_limit_mb">--experimental_total_worker_memory_limit_mb</a>=&lt;an integer number of MBs, or &quot;HOST_RAM&quot;, optionally followed by [-|*]&lt;float&gt;.&gt</code> default: "0"</dt>
<dd>
If this limit is greater than zero idle workers might be killed if the total memory usage of all  workers exceed the limit.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--experimental_use_hermetic_linux_sandbox"><code><a href="#flag--experimental_use_hermetic_linux_sandbox">--[no]experimental_use_hermetic_linux_sandbox</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_use_semaphore_for_jobs"><code><a href="#flag--experimental_use_semaphore_for_jobs">--[no]experimental_use_semaphore_for_jobs</a></code> default: "true"</dt>
<dd>
If set to true, additionally use semaphore to limit number of concurrent jobs.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_use_windows_sandbox"><code><a href="#flag--experimental_use_windows_sandbox">--[no]experimental_use_windows_sandbox</a></code> default: "false"</dt>
<dd>
Use Windows sandbox to run actions. If &quot;yes&quot;, the binary provided by --experimental_windows_sandbox_path must be valid and correspond to a supported version of sandboxfs. If &quot;auto&quot;, the binary may be missing or not compatible.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_windows_sandbox_path"><code><a href="#flag--experimental_windows_sandbox_path">--experimental_windows_sandbox_path</a>=&lt;a string&gt</code> default: "BazelSandbox.exe"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_worker_allowlist"><code><a href="#flag--experimental_worker_allowlist">--experimental_worker_allowlist</a>=&lt;comma-separated set of options&gt</code> default: see description</dt>
<dd>
If non-empty, only allow using persistent workers with the given worker key mnemonic.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--experimental_worker_as_resource"><code><a href="#flag--experimental_worker_as_resource">--[no]experimental_worker_as_resource</a></code> default: "true"</dt>
<dd>
No-op, will be removed soon.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
<dt id="flag--experimental_worker_cancellation"><code><a href="#flag--experimental_worker_cancellation">--[no]experimental_worker_cancellation</a></code> default: "false"</dt>
<dd>
If enabled, Bazel may send cancellation requests to workers that support them.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_worker_memory_limit_mb"><code><a href="#flag--experimental_worker_memory_limit_mb">--experimental_worker_memory_limit_mb</a>=&lt;an integer number of MBs, or &quot;HOST_RAM&quot;, optionally followed by [-|*]&lt;float&gt;.&gt</code> default: "0"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--experimental_worker_metrics_poll_interval"><code><a href="#flag--experimental_worker_metrics_poll_interval">--experimental_worker_metrics_poll_interval</a>=&lt;An immutable length of time.&gt</code> default: "5s"</dt>
<dd>
The interval between collecting worker metrics and possibly attempting evictions. Cannot effectively be less than 1s for performance reasons.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--experimental_worker_multiplex_sandboxing"><code><a href="#flag--experimental_worker_multiplex_sandboxing">--[no]experimental_worker_multiplex_sandboxing</a></code> default: "false"</dt>
<dd>
If enabled, multiplex workers will be sandboxed, using a separate sandbox directory per work request. Only workers that have the &#39;supports-multiplex-sandboxing&#39; execution requirement will be sandboxed.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_worker_sandbox_hardening"><code><a href="#flag--experimental_worker_sandbox_hardening">--[no]experimental_worker_sandbox_hardening</a></code> default: "false"</dt>
<dd>
If enabled, workers are run in a hardened sandbox, if the implementation allows it.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_worker_strict_flagfiles"><code><a href="#flag--experimental_worker_strict_flagfiles">--[no]experimental_worker_strict_flagfiles</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--genrule_strategy"><code><a href="#flag--genrule_strategy">--genrule_strategy</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--high_priority_workers"><code><a href="#flag--high_priority_workers">--high_priority_workers</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
No-op, will be removed soon.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--incompatible_remote_dangling_symlinks"><code><a href="#flag--incompatible_remote_dangling_symlinks">--[no]incompatible_remote_dangling_symlinks</a></code> default: "true"</dt>
<dd>
If set to true, symlinks uploaded to a remote or disk cache are allowed to dangle.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_remote_symlinks"><code><a href="#flag--incompatible_remote_symlinks">--[no]incompatible_remote_symlinks</a></code> default: "true"</dt>
<dd>
If set to true, Bazel will always upload symlinks as such to a remote or disk cache. Otherwise, non-dangling relative symlinks (and only those) will be uploaded as the file or directory they point to.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_sandbox_hermetic_tmp"><code><a href="#flag--incompatible_sandbox_hermetic_tmp">--[no]incompatible_sandbox_hermetic_tmp</a></code> default: "true"</dt>
<dd>
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&#39;s /tmp in all sandboxes.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--internal_spawn_scheduler"><code><a href="#flag--internal_spawn_scheduler">--[no]internal_spawn_scheduler</a></code> default: "false"</dt>
<dd>
Placeholder option so that we can tell in Blaze whether the spawn scheduler was enabled.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--jobs"><code><a href="#flag--jobs">--jobs</a>=&lt;an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> [<code>-j</code>] default: "auto"</dt>
<dd>
The number of concurrent jobs to run. Takes an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;. Values must be between 1 and 5000. Values above 2500 may cause memory issues. &quot;auto&quot; calculates a reasonable default based on host resources.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--keep_going"><code><a href="#flag--keep_going">--[no]keep_going</a></code> [<code>-k</code>] default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--loading_phase_threads"><code><a href="#flag--loading_phase_threads">--loading_phase_threads</a>=&lt;an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> default: "auto"</dt>
<dd>
Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;. &quot;auto&quot; sets a reasonable default based on host resources. Must be at least 1.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--reuse_sandbox_directories"><code><a href="#flag--reuse_sandbox_directories">--[no]reuse_sandbox_directories</a></code> default: "true"</dt>
<dd>
If set to true, directories used by sandboxed non-worker execution may be reused to avoid unnecessary setup costs.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--sandbox_base"><code><a href="#flag--sandbox_base">--sandbox_base</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--sandbox_explicit_pseudoterminal"><code><a href="#flag--sandbox_explicit_pseudoterminal">--[no]sandbox_explicit_pseudoterminal</a></code> default: "false"</dt>
<dd>
Explicitly enable the creation of pseudoterminals for sandboxed actions. Some linux distributions require setting the group id of the process to &#39;tty&#39; 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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--sandbox_tmpfs_path"><code><a href="#flag--sandbox_tmpfs_path">--sandbox_tmpfs_path</a>=&lt;an absolute path&gt</code> multiple uses are accumulated</dt>
<dd>
For sandboxed actions, mount an empty, writable directory at this absolute path (if supported by the sandboxing implementation, ignored otherwise).
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--skip_incompatible_explicit_targets"><code><a href="#flag--skip_incompatible_explicit_targets">--[no]skip_incompatible_explicit_targets</a></code> default: "false"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--spawn_strategy"><code><a href="#flag--spawn_strategy">--spawn_strategy</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
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 &quot;remote,worker,sandboxed,local&quot;. See https://blog.bazel.build/2019/06/19/list-strategy.html for details.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--strategy"><code><a href="#flag--strategy">--strategy</a>=&lt;a &#39;[name=]value1[,..,valueN]&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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 &quot;remote,worker,sandboxed,local&quot;. 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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--strategy_regexp"><code><a href="#flag--strategy_regexp">--strategy_regexp</a>=&lt;a &#39;&lt;RegexFilter&gt;=value[,value]&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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=&#39;Compiling.*/bar=local  --strategy_regexp=Compiling=sandboxed will run &#39;Compiling //foo/bar/baz&#39; with the &#39;local&#39; strategy, but reversing the order would run it with &#39;sandboxed&#39;.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--worker_extra_flag"><code><a href="#flag--worker_extra_flag">--worker_extra_flag</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--worker_max_instances"><code><a href="#flag--worker_max_instances">--worker_max_instances</a>=&lt;[name=]value, where value is an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> multiple uses are accumulated</dt>
<dd>
How many instances of each kind of persistent worker may be launched if you use the &#39;worker&#39; 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 (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;. &#39;auto&#39; calculates a reasonable default based on machine capacity. &quot;=value&quot; sets a default for unspecified mnemonics.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--worker_max_multiplex_instances"><code><a href="#flag--worker_max_multiplex_instances">--worker_max_multiplex_instances</a>=&lt;[name=]value, where value is an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> multiple uses are accumulated</dt>
<dd>
How many WorkRequests a multiplex worker process may receive in parallel if you use the &#39;worker&#39; 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 (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;. &#39;auto&#39; calculates a reasonable default based on machine capacity. &quot;=value&quot; sets a default for unspecified mnemonics.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--worker_multiplex"><code><a href="#flag--worker_multiplex">--[no]worker_multiplex</a></code> default: "true"</dt>
<dd>
If enabled, workers will use multiplexing if they support it.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--worker_quit_after_build"><code><a href="#flag--worker_quit_after_build">--[no]worker_quit_after_build</a></code> default: "false"</dt>
<dd>
If enabled, all workers quit after a build is done.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--worker_sandboxing"><code><a href="#flag--worker_sandboxing">--[no]worker_sandboxing</a></code> default: "false"</dt>
<dd>
If enabled, workers will be executed in a sandboxed environment.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--worker_verbose"><code><a href="#flag--worker_verbose">--[no]worker_verbose</a></code> default: "false"</dt>
<dd>
If enabled, prints verbose messages when workers are started, shutdown, ...
</dd>
</dl>
<dl>Options that configure the toolchain used for action execution:
<dt id="flag--target_platform_fallback"><code><a href="#flag--target_platform_fallback">--target_platform_fallback</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
This option is deprecated and has no effect.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that control the output of the command:
<dt id="flag--build"><code><a href="#flag--build">--[no]build</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_use_validation_aspect"><code><a href="#flag--experimental_use_validation_aspect">--[no]experimental_use_validation_aspect</a></code> default: "false"</dt>
<dd>
Whether to run validation actions using aspect (for parallelism with tests).
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--output_groups"><code><a href="#flag--output_groups">--output_groups</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--run_validations"><code><a href="#flag--run_validations">--[no]run_validations</a></code> default: "true"</dt>
<dd>
Whether to run validation actions as part of the build. See https://bazel.build/extending/rules#validation_actions
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options that let the user configure the intended output, affecting its value, as opposed to its existence:
<dt id="flag--aspects"><code><a href="#flag--aspects">--aspects</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39; providers. &lt;bzl-file-label&gt;%&lt;aspect_name&gt;, for example &#39;//tools:my_def.bzl%my_aspect&#39;, where &#39;my_aspect&#39; is a top-level value from a file tools/my_def.bzl
</dd>
<dt id="flag--bep_maximum_open_remote_upload_files"><code><a href="#flag--bep_maximum_open_remote_upload_files">--bep_maximum_open_remote_upload_files</a>=&lt;an integer&gt</code> default: "-1"</dt>
<dd>
Maximum number of open files allowed during BEP artifact upload.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_convenience_symlinks"><code><a href="#flag--experimental_convenience_symlinks">--[no]experimental_convenience_symlinks</a></code> default: "normal"</dt>
<dd>
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 be left alone.
  log_only: Generate log messages as if &#39;normal&#39; were passed, but don&#39;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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_convenience_symlinks_bep_event"><code><a href="#flag--experimental_convenience_symlinks_bep_event">--[no]experimental_convenience_symlinks_bep_event</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--remote_download_all"><code><a href="#flag--remote_download_all">--remote_download_all</a></code></dt>
<dd>
Downloads all remote outputs to the local machine. This flag is an alias for --remote_download_outputs=all.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--remote_download_outputs">--remote_download_outputs=all</a></code><br/>
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--remote_download_minimal"><code><a href="#flag--remote_download_minimal">--remote_download_minimal</a></code></dt>
<dd>
Does not download any remote build outputs to the local machine. This flag is an alias for --remote_download_outputs=minimal.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--remote_download_outputs">--remote_download_outputs=minimal</a></code><br/>
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--remote_download_outputs"><code><a href="#flag--remote_download_outputs">--remote_download_outputs</a>=&lt;all, minimal or toplevel&gt</code> default: "toplevel"</dt>
<dd>
If set to &#39;minimal&#39; doesn&#39;t download any remote build outputs to the local machine, except the ones required by local actions. If set to &#39;toplevel&#39; behaves like&#39;minimal&#39; 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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--remote_download_symlink_template"><code><a href="#flag--remote_download_symlink_template">--remote_download_symlink_template</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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 {hash} and {size_bytes} that expand to the hash of the object and the size in bytes, respectively. These symbolic links may, for example, point to a FUSE file system that loads objects from the CAS on demand.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--remote_download_toplevel"><code><a href="#flag--remote_download_toplevel">--remote_download_toplevel</a></code></dt>
<dd>
Only downloads remote outputs of top level targets to the local machine. This flag is an alias for --remote_download_outputs=toplevel.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--remote_download_outputs">--remote_download_outputs=toplevel</a></code><br/>
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--symlink_prefix"><code><a href="#flag--symlink_prefix">--symlink_prefix</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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 &#39;/&#39; is passed, then no symlinks are created and no warning is emitted. Warning: the special functionality for &#39;/&#39; will be deprecated soon; use --experimental_convenience_symlinks=ignore instead.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options that affect how strictly Bazel enforces valid build inputs (rule definitions,  flag combinations, etc.):
<dt id="flag--experimental_docker_privileged"><code><a href="#flag--experimental_docker_privileged">--[no]experimental_docker_privileged</a></code> default: "false"</dt>
<dd>
If enabled, Bazel will pass the --privileged flag to &#39;docker run&#39; when running actions. This might be required by your build, but it might also result in reduced hermeticity.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_sandboxfs_map_symlink_targets"><code><a href="#flag--experimental_sandboxfs_map_symlink_targets">--[no]experimental_sandboxfs_map_symlink_targets</a></code> default: "false"</dt>
<dd>
No-op
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--incompatible_legacy_local_fallback"><code><a href="#flag--incompatible_legacy_local_fallback">--[no]incompatible_legacy_local_fallback</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--sandbox_add_mount_pair"><code><a href="#flag--sandbox_add_mount_pair">--sandbox_add_mount_pair</a>=&lt;a single path or a &#39;source:target&#39; pair&gt</code> multiple uses are accumulated</dt>
<dd>
Add additional path pair to mount in sandbox.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--sandbox_block_path"><code><a href="#flag--sandbox_block_path">--sandbox_block_path</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
For sandboxed actions, disallow access to this path.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--sandbox_default_allow_network"><code><a href="#flag--sandbox_default_allow_network">--[no]sandbox_default_allow_network</a></code> default: "true"</dt>
<dd>
Allow network access by default for actions; this may not work with all sandboxing implementations.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--sandbox_fake_hostname"><code><a href="#flag--sandbox_fake_hostname">--[no]sandbox_fake_hostname</a></code> default: "false"</dt>
<dd>
Change the current hostname to &#39;localhost&#39; for sandboxed actions.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--sandbox_fake_username"><code><a href="#flag--sandbox_fake_username">--[no]sandbox_fake_username</a></code> default: "false"</dt>
<dd>
Change the current username to &#39;nobody&#39; for sandboxed actions.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--sandbox_writable_path"><code><a href="#flag--sandbox_writable_path">--sandbox_writable_path</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
For sandboxed actions, make an existing directory writable in the sandbox (if supported by the sandboxing implementation, ignored otherwise).
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
</dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
<dt id="flag--incompatible_config_setting_private_default_visibility"><code><a href="#flag--incompatible_config_setting_private_default_visibility">--[no]incompatible_config_setting_private_default_visibility</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enforce_config_setting_visibility"><code><a href="#flag--incompatible_enforce_config_setting_visibility">--[no]incompatible_enforce_config_setting_visibility</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
</dl>
<dl>Options that govern the behavior of the test environment or test runner:
<dt id="flag--check_tests_up_to_date"><code><a href="#flag--check_tests_up_to_date">--[no]check_tests_up_to_date</a></code> default: "false"</dt>
<dd>
Don&#39;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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--flaky_test_attempts"><code><a href="#flag--flaky_test_attempts">--flaky_test_attempts</a>=&lt;a positive integer, the string &quot;default&quot;, or test_regex@attempts. This flag may be passed more than once&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;FLAKY&#39; in the test summary. Normally the value specified is just an integer or the string &#39;default&#39;. If an integer, then all tests will be run up to N times. If &#39;default&#39;, 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 &#39;default&#39; above.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--local_test_jobs"><code><a href="#flag--local_test_jobs">--local_test_jobs</a>=&lt;an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> default: "auto"</dt>
<dd>
The max number of local test jobs to run concurrently. Takes an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;. 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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--test_keep_going"><code><a href="#flag--test_keep_going">--[no]test_keep_going</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--test_strategy"><code><a href="#flag--test_strategy">--test_strategy</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
Specifies which strategy to use when running tests.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--test_tmpdir"><code><a href="#flag--test_tmpdir">--test_tmpdir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
Specifies the base temporary directory for &#39;bazel test&#39; to use.
</dd>
</dl>
<dl>Options relating to query output and semantics:
<dt id="flag--experimental_parallel_aquery_output"><code><a href="#flag--experimental_parallel_aquery_output">--[no]experimental_parallel_aquery_output</a></code> default: "true"</dt>
<dd>
No-op.
</dd>
</dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--cache_computed_file_digests"><code><a href="#flag--cache_computed_file_digests">--cache_computed_file_digests</a>=&lt;a long integer&gt</code> default: "50000"</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_dynamic_ignore_local_signals"><code><a href="#flag--experimental_dynamic_ignore_local_signals">--experimental_dynamic_ignore_local_signals</a>=&lt;a comma-separated list of signal numbers&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--local_cpu_resources"><code><a href="#flag--local_cpu_resources">--local_cpu_resources</a>=&lt;an integer, or &quot;HOST_CPUS&quot;, optionally followed by [-|*]&lt;float&gt;.&gt</code> default: "HOST_CPUS"</dt>
<dd>
Explicitly set the total number of local CPU cores available to Bazel to spend on build actions executed locally. Takes an integer, or &quot;HOST_CPUS&quot;, optionally followed by [-|*]&lt;float&gt; (eg. HOST_CPUS*.5 to use half the available CPU cores). By default, (&quot;HOST_CPUS&quot;), Bazel will query system configuration to estimate the number of CPU cores available.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--local_extra_resources"><code><a href="#flag--local_extra_resources">--local_extra_resources</a>=&lt;a named float, &#39;name=value&#39;&gt</code> multiple uses are accumulated</dt>
<dd>
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 &quot;resources:&lt;resoucename&gt;:&lt;amount&gt;&quot; format. Available CPU, RAM and resources cannot be set with this flag.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--local_ram_resources"><code><a href="#flag--local_ram_resources">--local_ram_resources</a>=&lt;an integer number of MBs, or &quot;HOST_RAM&quot;, optionally followed by [-|*]&lt;float&gt;.&gt</code> default: "HOST_RAM*.67"</dt>
<dd>
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 &quot;HOST_RAM&quot;, optionally followed by [-|*]&lt;float&gt; (eg. HOST_RAM*.5 to use half the available RAM). By default, (&quot;HOST_RAM*.67&quot;), Bazel will query system configuration to estimate the amount of RAM available and will use 67% of it.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--local_resources"><code><a href="#flag--local_resources">--local_resources</a>=&lt;a named double, &#39;name=value&#39;, where value is an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> multiple uses are accumulated</dt>
<dd>
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 &quot;resources:&lt;resource name&gt;:&lt;amount&gt;&quot; format. Overrides resources specified by --local_{cpu|ram|extra}_resources.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--debug_spawn_scheduler"><code><a href="#flag--debug_spawn_scheduler">--[no]debug_spawn_scheduler</a></code> default: "false"</dt>
<dd>
</dd>
<dt id="flag--experimental_bep_target_summary"><code><a href="#flag--experimental_bep_target_summary">--[no]experimental_bep_target_summary</a></code> default: "false"</dt>
<dd>
Whether to publish TargetSummary events.
</dd>
<dt id="flag--experimental_build_event_expand_filesets"><code><a href="#flag--experimental_build_event_expand_filesets">--[no]experimental_build_event_expand_filesets</a></code> default: "false"</dt>
<dd>
If true, expand Filesets in the BEP when presenting output files.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_build_event_fully_resolve_fileset_symlinks"><code><a href="#flag--experimental_build_event_fully_resolve_fileset_symlinks">--[no]experimental_build_event_fully_resolve_fileset_symlinks</a></code> default: "false"</dt>
<dd>
If true, fully resolve relative Fileset symlinks in the BEP when presenting output files. Requires --experimental_build_event_expand_filesets.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_build_event_upload_max_retries"><code><a href="#flag--experimental_build_event_upload_max_retries">--experimental_build_event_upload_max_retries</a>=&lt;an integer&gt</code> default: "4"</dt>
<dd>
The maximum number of times Bazel should retry uploading a build event.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_build_event_upload_retry_minimum_delay"><code><a href="#flag--experimental_build_event_upload_retry_minimum_delay">--experimental_build_event_upload_retry_minimum_delay</a>=&lt;An immutable length of time.&gt</code> default: "1s"</dt>
<dd>
Initial, minimum delay for exponential backoff retries when BEP upload fails. (exponent: 1.6)
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_build_event_upload_strategy"><code><a href="#flag--experimental_build_event_upload_strategy">--experimental_build_event_upload_strategy</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Selects how to upload artifacts referenced in the build event protocol.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_collect_local_sandbox_action_metrics"><code><a href="#flag--experimental_collect_local_sandbox_action_metrics">--[no]experimental_collect_local_sandbox_action_metrics</a></code> default: "true"</dt>
<dd>
Deprecated no-op.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_docker_verbose"><code><a href="#flag--experimental_docker_verbose">--[no]experimental_docker_verbose</a></code> default: "false"</dt>
<dd>
If enabled, Bazel will print more verbose messages about the Docker sandbox strategy.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_materialize_param_files_directly"><code><a href="#flag--experimental_materialize_param_files_directly">--[no]experimental_materialize_param_files_directly</a></code> default: "false"</dt>
<dd>
If materializing param files, do so with direct writes to disk.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
<dt id="flag--experimental_repository_resolved_file"><code><a href="#flag--experimental_repository_resolved_file">--experimental_repository_resolved_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty, write a Starlark value with the resolved information of all Starlark repository rules that were executed.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_run_bep_event_include_residue"><code><a href="#flag--experimental_run_bep_event_include_residue">--[no]experimental_run_bep_event_include_residue</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_stream_log_file_uploads"><code><a href="#flag--experimental_stream_log_file_uploads">--[no]experimental_stream_log_file_uploads</a></code> default: "false"</dt>
<dd>
Stream log file uploads directly to the remote storage rather than writing them to disk.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--explain"><code><a href="#flag--explain">--explain</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
Causes the build system to explain each executed step of the build. The explanation is written to the specified log file.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ignore_unsupported_sandboxing"><code><a href="#flag--ignore_unsupported_sandboxing">--[no]ignore_unsupported_sandboxing</a></code> default: "false"</dt>
<dd>
Do not print a warning when sandboxed execution is not supported on this system.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--legacy_important_outputs"><code><a href="#flag--legacy_important_outputs">--[no]legacy_important_outputs</a></code> default: "true"</dt>
<dd>
Use this to suppress generation of the legacy important_outputs field in the TargetComplete event. important_outputs are required for Bazel to ResultStore integration.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--materialize_param_files"><code><a href="#flag--materialize_param_files">--[no]materialize_param_files</a></code> default: "false"</dt>
<dd>
Writes intermediate parameter files to output tree even when using remote action execution. Useful when debugging actions. This is implied by --subcommands and --verbose_failures.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--max_config_changes_to_show"><code><a href="#flag--max_config_changes_to_show">--max_config_changes_to_show</a>=&lt;an integer&gt</code> default: "3"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--max_test_output_bytes"><code><a href="#flag--max_test_output_bytes">--max_test_output_bytes</a>=&lt;an integer&gt</code> default: "-1"</dt>
<dd>
Specifies maximum per-test-log size that can be emitted when --test_output is &#39;errors&#39; or &#39;all&#39;. 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.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a>, <a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--output_filter"><code><a href="#flag--output_filter">--output_filter</a>=&lt;a valid Java regular expression&gt</code> default: see description</dt>
<dd>
Only shows warnings and action outputs for rules with a name matching the provided regular expression.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--progress_report_interval"><code><a href="#flag--progress_report_interval">--progress_report_interval</a>=&lt;an integer in 0-3600 range&gt</code> default: "0"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--remote_print_execution_messages"><code><a href="#flag--remote_print_execution_messages">--remote_print_execution_messages</a>=&lt;failure, success or all&gt</code> default: "failure"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--sandbox_debug"><code><a href="#flag--sandbox_debug">--[no]sandbox_debug</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--show_result"><code><a href="#flag--show_result">--show_result</a>=&lt;an integer&gt</code> default: "1"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--subcommands"><code><a href="#flag--subcommands">--[no]subcommands</a></code> [<code>-s</code>] default: "false"</dt>
<dd>
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).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--test_output"><code><a href="#flag--test_output">--test_output</a>=&lt;summary, errors, all or streamed&gt</code> default: "summary"</dt>
<dd>
Specifies desired output mode. Valid values are &#39;summary&#39; to output only test status summary, &#39;errors&#39; to also print test logs for failed tests, &#39;all&#39; to print logs for all tests and &#39;streamed&#39; 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).
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a>, <a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--test_summary"><code><a href="#flag--test_summary">--test_summary</a>=&lt;short, terse, detailed, none or testcase&gt</code> default: "short"</dt>
<dd>
Specifies the desired format of the test summary. Valid values are &#39;short&#39; to print information only about tests executed, &#39;terse&#39;, to print information only about unsuccessful tests that were run, &#39;detailed&#39; to print detailed information about failed test cases, &#39;testcase&#39; to print summary in test case resolution, do not print detailed information about failed test cases and &#39;none&#39; to omit the summary.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--verbose_explanations"><code><a href="#flag--verbose_explanations">--[no]verbose_explanations</a></code> default: "false"</dt>
<dd>
Increases the verbosity of the explanations issued if --explain is enabled. Has no effect if --explain is not enabled.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--verbose_failures"><code><a href="#flag--verbose_failures">--[no]verbose_failures</a></code> default: "false"</dt>
<dd>
If a command fails, print out the full command line.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--aspects_parameters"><code><a href="#flag--aspects_parameters">--aspects_parameters</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;my_param=my_val&#39; where &#39;my_param&#39; 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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--target_pattern_file"><code><a href="#flag--target_pattern_file">--target_pattern_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_circuit_breaker_strategy"><code><a href="#flag--experimental_circuit_breaker_strategy">--experimental_circuit_breaker_strategy</a>=&lt;failure&gt</code> default: see description</dt>
<dd>
Specifies the strategy for the circuit breaker to use. Available strategies are &quot;failure&quot;. On invalid value for the option the behavior same as the option is not set.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_guard_against_concurrent_changes"><code><a href="#flag--experimental_guard_against_concurrent_changes">--[no]experimental_guard_against_concurrent_changes</a></code> default: "false"</dt>
<dd>
Turn this off to disable checking the ctime of 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.
</dd>
<dt id="flag--experimental_remote_cache_async"><code><a href="#flag--experimental_remote_cache_async">--[no]experimental_remote_cache_async</a></code> default: "false"</dt>
<dd>
If true, remote cache I/O will happen in the background instead of taking place as the part of a spawn.
</dd>
<dt id="flag--experimental_remote_cache_compression_threshold"><code><a href="#flag--experimental_remote_cache_compression_threshold">--experimental_remote_cache_compression_threshold</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The minimum blob size required to compress/decompress with zstd. Ineffectual unless --remote_cache_compression is set.
</dd>
<dt id="flag--experimental_remote_cache_eviction_retries"><code><a href="#flag--experimental_remote_cache_eviction_retries">--experimental_remote_cache_eviction_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_remote_cache_lease_extension"><code><a href="#flag--experimental_remote_cache_lease_extension">--[no]experimental_remote_cache_lease_extension</a></code> default: "false"</dt>
<dd>
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`.
</dd>
<dt id="flag--experimental_remote_cache_ttl"><code><a href="#flag--experimental_remote_cache_ttl">--experimental_remote_cache_ttl</a>=&lt;An immutable length of time.&gt</code> default: "3h"</dt>
<dd>
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&#39; TTL e.g. doesn&#39;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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_remote_capture_corrupted_outputs"><code><a href="#flag--experimental_remote_capture_corrupted_outputs">--experimental_remote_capture_corrupted_outputs</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
A path to a directory where the corrupted outputs will be captured to.
</dd>
<dt id="flag--experimental_remote_discard_merkle_trees"><code><a href="#flag--experimental_remote_discard_merkle_trees">--[no]experimental_remote_discard_merkle_trees</a></code> default: "false"</dt>
<dd>
If set to true, discard in-memory copies of the input root&#39;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.
</dd>
<dt id="flag--experimental_remote_downloader"><code><a href="#flag--experimental_remote_downloader">--experimental_remote_downloader</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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
</dd>
<dt id="flag--experimental_remote_downloader_local_fallback"><code><a href="#flag--experimental_remote_downloader_local_fallback">--[no]experimental_remote_downloader_local_fallback</a></code> default: "false"</dt>
<dd>
Whether to fall back to the local downloader if remote downloader fails.
</dd>
<dt id="flag--experimental_remote_execution_keepalive"><code><a href="#flag--experimental_remote_execution_keepalive">--[no]experimental_remote_execution_keepalive</a></code> default: "false"</dt>
<dd>
Whether to use keepalive for remote execution calls.
</dd>
<dt id="flag--experimental_remote_failure_rate_threshold"><code><a href="#flag--experimental_remote_failure_rate_threshold">--experimental_remote_failure_rate_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "10"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_remote_failure_window_interval"><code><a href="#flag--experimental_remote_failure_window_interval">--experimental_remote_failure_window_interval</a>=&lt;An immutable length of time.&gt</code> default: "60s"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_remote_mark_tool_inputs"><code><a href="#flag--experimental_remote_mark_tool_inputs">--[no]experimental_remote_mark_tool_inputs</a></code> default: "false"</dt>
<dd>
If set to true, Bazel will mark inputs as tool inputs for the remote executor. This can be used to implement remote persistent workers.
</dd>
<dt id="flag--experimental_remote_merkle_tree_cache"><code><a href="#flag--experimental_remote_merkle_tree_cache">--[no]experimental_remote_merkle_tree_cache</a></code> default: "false"</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_remote_merkle_tree_cache_size"><code><a href="#flag--experimental_remote_merkle_tree_cache_size">--experimental_remote_merkle_tree_cache_size</a>=&lt;a long integer&gt</code> default: "1000"</dt>
<dd>
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&#39;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&#39;s size. Default to 1000.
</dd>
<dt id="flag--experimental_remote_output_service"><code><a href="#flag--experimental_remote_output_service">--experimental_remote_output_service</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_remote_output_service_output_path_prefix"><code><a href="#flag--experimental_remote_output_service_output_path_prefix">--experimental_remote_output_service_output_path_prefix</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_remote_require_cached"><code><a href="#flag--experimental_remote_require_cached">--[no]experimental_remote_require_cached</a></code> default: "false"</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_remote_scrubbing_config"><code><a href="#flag--experimental_remote_scrubbing_config">--experimental_remote_scrubbing_config</a>=&lt;Converts to a Scrubber&gt</code> default: see description</dt>
<dd>
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).
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
<dt id="flag--incompatible_remote_build_event_upload_respect_no_cache"><code><a href="#flag--incompatible_remote_build_event_upload_respect_no_cache">--[no]incompatible_remote_build_event_upload_respect_no_cache</a></code> default: "false"</dt>
<dd>
Deprecated. No-op. Use --remote_build_event_upload=minimal instead.
</dd>
<dt id="flag--incompatible_remote_downloader_send_all_headers"><code><a href="#flag--incompatible_remote_downloader_send_all_headers">--[no]incompatible_remote_downloader_send_all_headers</a></code> default: "true"</dt>
<dd>
Whether to send all values of a multi-valued header to the remote downloader instead of just the first.
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_remote_output_paths_relative_to_input_root"><code><a href="#flag--incompatible_remote_output_paths_relative_to_input_root">--[no]incompatible_remote_output_paths_relative_to_input_root</a></code> default: "false"</dt>
<dd>
If set to true, output paths are relative to input root instead of working directory.
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_remote_results_ignore_disk"><code><a href="#flag--incompatible_remote_results_ignore_disk">--[no]incompatible_remote_results_ignore_disk</a></code> default: "true"</dt>
<dd>
No-op
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_remote_use_new_exit_code_for_lost_inputs"><code><a href="#flag--incompatible_remote_use_new_exit_code_for_lost_inputs">--[no]incompatible_remote_use_new_exit_code_for_lost_inputs</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--remote_accept_cached"><code><a href="#flag--remote_accept_cached">--[no]remote_accept_cached</a></code> default: "true"</dt>
<dd>
Whether to accept remotely cached action results.
</dd>
<dt id="flag--remote_build_event_upload"><code><a href="#flag--remote_build_event_upload">--remote_build_event_upload</a>=&lt;all or minimal&gt</code> default: "minimal"</dt>
<dd>
If set to &#39;all&#39;, all local outputs referenced by BEP are uploaded to remote cache.
If set to &#39;minimal&#39;, 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 &#39;minimal&#39;.
</dd>
<dt id="flag--remote_bytestream_uri_prefix"><code><a href="#flag--remote_bytestream_uri_prefix">--remote_bytestream_uri_prefix</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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 &quot;${hostname}/${instance_name}&quot;.
</dd>
<dt id="flag--remote_cache"><code><a href="#flag--remote_cache">--remote_cache</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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
</dd>
<dt id="flag--remote_cache_compression"><code><a href="#flag--remote_cache_compression">--[no]remote_cache_compression</a></code> default: "false"</dt>
<dd>
If enabled, compress/decompress cache blobs with zstd when their size is at least --experimental_remote_cache_compression_threshold.
</dd>
<dt id="flag--remote_cache_header"><code><a href="#flag--remote_cache_header">--remote_cache_header</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--remote_default_exec_properties"><code><a href="#flag--remote_default_exec_properties">--remote_default_exec_properties</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
Set the default exec properties to be used as the remote execution platform if an execution platform does not already set exec_properties.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--remote_default_platform_properties"><code><a href="#flag--remote_default_platform_properties">--remote_default_platform_properties</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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.
</dd>
<dt id="flag--remote_download_regex"><code><a href="#flag--remote_download_regex">--remote_download_regex</a>=&lt;a valid Java regular expression&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--remote_downloader_header"><code><a href="#flag--remote_downloader_header">--remote_downloader_header</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--remote_exec_header"><code><a href="#flag--remote_exec_header">--remote_exec_header</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--remote_execution_priority"><code><a href="#flag--remote_execution_priority">--remote_execution_priority</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The relative priority of actions to be executed remotely. The semantics of the particular priority values are server-dependent.
</dd>
<dt id="flag--remote_executor"><code><a href="#flag--remote_executor">--remote_executor</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--remote_grpc_log"><code><a href="#flag--remote_grpc_log">--remote_grpc_log</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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).
</dd>
<dt id="flag--remote_header"><code><a href="#flag--remote_header">--remote_header</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--remote_instance_name"><code><a href="#flag--remote_instance_name">--remote_instance_name</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
Value to pass as instance_name in the remote execution API.
</dd>
<dt id="flag--remote_local_fallback"><code><a href="#flag--remote_local_fallback">--[no]remote_local_fallback</a></code> default: "false"</dt>
<dd>
Whether to fall back to standalone local execution strategy if remote execution fails.
</dd>
<dt id="flag--remote_local_fallback_strategy"><code><a href="#flag--remote_local_fallback_strategy">--remote_local_fallback_strategy</a>=&lt;a string&gt</code> default: "local"</dt>
<dd>
No-op, deprecated. See https://github.com/bazelbuild/bazel/issues/7480 for details.
</dd>
<dt id="flag--remote_max_connections"><code><a href="#flag--remote_max_connections">--remote_max_connections</a>=&lt;an integer&gt</code> default: "100"</dt>
<dd>
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, so Bazel could make around `--remote_max_connections * 100` concurrent requests.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--remote_proxy"><code><a href="#flag--remote_proxy">--remote_proxy</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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).
</dd>
<dt id="flag--remote_result_cache_priority"><code><a href="#flag--remote_result_cache_priority">--remote_result_cache_priority</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The relative priority of remote actions to be stored in remote cache. The semantics of the particular priority values are server-dependent.
</dd>
<dt id="flag--remote_retries"><code><a href="#flag--remote_retries">--remote_retries</a>=&lt;an integer&gt</code> default: "5"</dt>
<dd>
The maximum number of attempts to retry a transient error. If set to 0, retries are disabled.
</dd>
<dt id="flag--remote_retry_max_delay"><code><a href="#flag--remote_retry_max_delay">--remote_retry_max_delay</a>=&lt;An immutable length of time.&gt</code> default: "5s"</dt>
<dd>
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.
</dd>
<dt id="flag--remote_timeout"><code><a href="#flag--remote_timeout">--remote_timeout</a>=&lt;An immutable length of time.&gt</code> default: "60s"</dt>
<dd>
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.
</dd>
<dt id="flag--remote_upload_local_results"><code><a href="#flag--remote_upload_local_results">--[no]remote_upload_local_results</a></code> default: "true"</dt>
<dd>
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.
</dd>
<dt id="flag--remote_verify_downloads"><code><a href="#flag--remote_verify_downloads">--[no]remote_verify_downloads</a></code> default: "true"</dt>
<dd>
If set to true, Bazel will compute the hash sum of all remote downloads and  discard the remotely cached values if they don&#39;t match the expected value.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--allow_analysis_cache_discard"><code><a href="#flag--allow_analysis_cache_discard">--[no]allow_analysis_cache_discard</a></code> default: "true"</dt>
<dd>
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 &#39;discard_analysis_cache&#39; is also set.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--auto_output_filter"><code><a href="#flag--auto_output_filter">--auto_output_filter</a>=&lt;none, all, packages or subpackages&gt</code> default: "none"</dt>
<dd>
If --output_filter is not specified, then the value for this option is used create a filter automatically. Allowed values are &#39;none&#39; (filter nothing / show everything), &#39;all&#39; (filter everything / show nothing), &#39;packages&#39; (include output from rules in packages mentioned on the Blaze command line), and &#39;subpackages&#39; (like &#39;packages&#39;, but also include subpackages). For the &#39;packages&#39; and &#39;subpackages&#39; values //java/foo and //javatests/foo are treated as one package)&#39;.
</dd>
<dt id="flag--build_manual_tests"><code><a href="#flag--build_manual_tests">--[no]build_manual_tests</a></code> default: "false"</dt>
<dd>
Forces test targets tagged &#39;manual&#39; to be built. &#39;manual&#39; tests are excluded from processing. This option forces them to be built (but not executed).
</dd>
<dt id="flag--build_tag_filters"><code><a href="#flag--build_tag_filters">--build_tag_filters</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
Specifies a comma-separated list of tags. Each tag can be optionally preceded with &#39;-&#39; 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 &#39;test&#39; command; those are be governed by the test filtering options, for example &#39;--test_tag_filters&#39;
</dd>
<dt id="flag--build_tests_only"><code><a href="#flag--build_tests_only">--[no]build_tests_only</a></code> default: "false"</dt>
<dd>
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.
</dd>
<dt id="flag--combined_report"><code><a href="#flag--combined_report">--combined_report</a>=&lt;none or lcov&gt</code> default: "none"</dt>
<dd>
Specifies desired cumulative coverage report type. At this point only LCOV is supported.
</dd>
<dt id="flag--compile_one_dependency"><code><a href="#flag--compile_one_dependency">--[no]compile_one_dependency</a></code> default: "false"</dt>
<dd>
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.
</dd>
<dt id="flag--deleted_packages"><code><a href="#flag--deleted_packages">--deleted_packages</a>=&lt;comma-separated list of package names&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;x/y&#39; of an existing package &#39;x&#39;.  For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label &#39;//x:y/z&#39; if that is still provided by another package_path entry.  Specifying --deleted_packages x/y avoids this problem.
</dd>
<dt id="flag--discard_analysis_cache"><code><a href="#flag--discard_analysis_cache">--[no]discard_analysis_cache</a></code> default: "false"</dt>
<dd>
Discard the analysis cache immediately after the analysis phase completes. Reduces memory usage by ~10%, but makes further incremental builds slower.
</dd>
<dt id="flag--disk_cache"><code><a href="#flag--disk_cache">--disk_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--embed_label"><code><a href="#flag--embed_label">--embed_label</a>=&lt;a one-line string&gt</code> default: ""</dt>
<dd>
Embed source control revision or release label in binary
</dd>
<dt id="flag--execution_log_binary_file"><code><a href="#flag--execution_log_binary_file">--execution_log_binary_file</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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).
</dd>
<dt id="flag--execution_log_compact_file"><code><a href="#flag--execution_log_compact_file">--execution_log_compact_file</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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).
</dd>
<dt id="flag--execution_log_json_file"><code><a href="#flag--execution_log_json_file">--execution_log_json_file</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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).
</dd>
<dt id="flag--execution_log_sort"><code><a href="#flag--execution_log_sort">--[no]execution_log_sort</a></code> default: "true"</dt>
<dd>
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.
</dd>
<dt id="flag--expand_test_suites"><code><a href="#flag--expand_test_suites">--[no]expand_test_suites</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_disk_cache_gc_idle_delay"><code><a href="#flag--experimental_disk_cache_gc_idle_delay">--experimental_disk_cache_gc_idle_delay</a>=&lt;An immutable length of time.&gt</code> default: "5m"</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_disk_cache_gc_max_age"><code><a href="#flag--experimental_disk_cache_gc_max_age">--experimental_disk_cache_gc_max_age</a>=&lt;An immutable length of time.&gt</code> default: "0"</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_disk_cache_gc_max_size"><code><a href="#flag--experimental_disk_cache_gc_max_size">--experimental_disk_cache_gc_max_size</a>=&lt;a size in bytes, optionally followed by a K, M, G or T multiplier&gt</code> default: "0"</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_extra_action_filter"><code><a href="#flag--experimental_extra_action_filter">--experimental_extra_action_filter</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths&gt</code> default: ""</dt>
<dd>
Deprecated in favor of aspects. Filters set of targets to schedule extra_actions for.
</dd>
<dt id="flag--experimental_extra_action_top_level_only"><code><a href="#flag--experimental_extra_action_top_level_only">--[no]experimental_extra_action_top_level_only</a></code> default: "false"</dt>
<dd>
Deprecated in favor of aspects. Only schedules extra_actions for top level targets.
</dd>
<dt id="flag--experimental_spawn_scheduler"><code><a href="#flag--experimental_spawn_scheduler">--experimental_spawn_scheduler</a></code></dt>
<dd>
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.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--internal_spawn_scheduler">--internal_spawn_scheduler</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--spawn_strategy">--spawn_strategy=dynamic</a></code><br/>
</dd>
<dt id="flag--fetch"><code><a href="#flag--fetch">--[no]fetch</a></code> default: "true"</dt>
<dd>
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.
</dd>
<dt id="flag--incompatible_dont_use_javasourceinfoprovider"><code><a href="#flag--incompatible_dont_use_javasourceinfoprovider">--[no]incompatible_dont_use_javasourceinfoprovider</a></code> default: "false"</dt>
<dd>
No-op
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--local_termination_grace_seconds"><code><a href="#flag--local_termination_grace_seconds">--local_termination_grace_seconds</a>=&lt;an integer&gt</code> default: "15"</dt>
<dd>
Time to wait between terminating a local process due to timeout and forcefully shutting it down.
</dd>
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--package_path"><code><a href="#flag--package_path">--package_path</a>=&lt;colon-separated list of options&gt</code> default: "%workspace%"</dt>
<dd>
A colon-separated list of where to look for packages. Elements beginning with &#39;%workspace%&#39; are relative to the enclosing workspace. If omitted or empty, the default is the output of &#39;bazel info default-package-path&#39;.
</dd>
<dt id="flag--show_loading_progress"><code><a href="#flag--show_loading_progress">--[no]show_loading_progress</a></code> default: "true"</dt>
<dd>
If enabled, causes Bazel to print &quot;Loading package:&quot; messages.
</dd>
<dt id="flag--test_lang_filters"><code><a href="#flag--test_lang_filters">--test_lang_filters</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
Specifies a comma-separated list of test languages. Each language can be optionally preceded with &#39;-&#39; 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 &#39;cc&#39;, &#39;java&#39;, &#39;py&#39;, etc. This option affects --build_tests_only behavior and the test command.
</dd>
<dt id="flag--test_size_filters"><code><a href="#flag--test_size_filters">--test_size_filters</a>=&lt;comma-separated list of values: small, medium, large or enormous&gt</code> default: ""</dt>
<dd>
Specifies a comma-separated list of test sizes. Each size can be optionally preceded with &#39;-&#39; 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.
</dd>
<dt id="flag--test_tag_filters"><code><a href="#flag--test_tag_filters">--test_tag_filters</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
Specifies a comma-separated list of test tags. Each tag can be optionally preceded with &#39;-&#39; 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.
</dd>
<dt id="flag--test_timeout_filters"><code><a href="#flag--test_timeout_filters">--test_timeout_filters</a>=&lt;comma-separated list of values: short, moderate, long or eternal&gt</code> default: ""</dt>
<dd>
Specifies a comma-separated list of test timeouts. Each timeout can be optionally preceded with &#39;-&#39; 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.
</dd>
<dt id="flag--workspace_status_command"><code><a href="#flag--workspace_status_command">--workspace_status_command</a>=&lt;path&gt;</code> default: ""</dt>
<dd>
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&#39;s Manual for the full specification. Also see tools/buildstamp/get_workspace_status for an example.
</dd>
</dl>

<dl></dl>
<dl>Options that control build execution:
<dt id="flag--check_up_to_date"><code><a href="#flag--check_up_to_date">--[no]check_up_to_date</a></code> default: "false"</dt>
<dd>
Don&#39;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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_inprocess_symlink_creation"><code><a href="#flag--experimental_inprocess_symlink_creation">--[no]experimental_inprocess_symlink_creation</a></code> default: "false"</dt>
<dd>
Whether to make direct file system calls to create symlink trees
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_persistent_aar_extractor"><code><a href="#flag--experimental_persistent_aar_extractor">--[no]experimental_persistent_aar_extractor</a></code> default: "false"</dt>
<dd>
Enable persistent aar extractor by using workers.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_remotable_source_manifests"><code><a href="#flag--experimental_remotable_source_manifests">--[no]experimental_remotable_source_manifests</a></code> default: "false"</dt>
<dd>
Whether to make source manifest actions remotable
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_split_coverage_postprocessing"><code><a href="#flag--experimental_split_coverage_postprocessing">--[no]experimental_split_coverage_postprocessing</a></code> default: "false"</dt>
<dd>
If true, then Bazel will run coverage postprocessing for test in a new spawn.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_split_xml_generation"><code><a href="#flag--experimental_split_xml_generation">--[no]experimental_split_xml_generation</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_strict_fileset_output"><code><a href="#flag--experimental_strict_fileset_output">--[no]experimental_strict_fileset_output</a></code> default: "false"</dt>
<dd>
If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_use_semaphore_for_jobs"><code><a href="#flag--experimental_use_semaphore_for_jobs">--[no]experimental_use_semaphore_for_jobs</a></code> default: "true"</dt>
<dd>
If set to true, additionally use semaphore to limit number of concurrent jobs.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--genrule_strategy"><code><a href="#flag--genrule_strategy">--genrule_strategy</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--incompatible_disallow_unsound_directory_outputs"><code><a href="#flag--incompatible_disallow_unsound_directory_outputs">--[no]incompatible_disallow_unsound_directory_outputs</a></code> default: "true"</dt>
<dd>
If set, it is an error for an action to materialize an output file as a directory. Does not affect source directories. See https://github.com/bazelbuild/bazel/issues/18646.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_modify_execution_info_additive"><code><a href="#flag--incompatible_modify_execution_info_additive">--[no]incompatible_modify_execution_info_additive</a></code> default: "false"</dt>
<dd>
When enabled, passing multiple --modify_execution_info flags is additive. When disabled, only the last flag is taken into account.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--jobs"><code><a href="#flag--jobs">--jobs</a>=&lt;an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> [<code>-j</code>] default: "auto"</dt>
<dd>
The number of concurrent jobs to run. Takes an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;. Values must be between 1 and 5000. Values above 2500 may cause memory issues. &quot;auto&quot; calculates a reasonable default based on host resources.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--keep_going"><code><a href="#flag--keep_going">--[no]keep_going</a></code> [<code>-k</code>] default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--loading_phase_threads"><code><a href="#flag--loading_phase_threads">--loading_phase_threads</a>=&lt;an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> default: "auto"</dt>
<dd>
Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;. &quot;auto&quot; sets a reasonable default based on host resources. Must be at least 1.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--modify_execution_info"><code><a href="#flag--modify_execution_info">--modify_execution_info</a>=&lt;regex=[+-]key,regex=[+-]key,...&gt</code> multiple uses are accumulated</dt>
<dd>
Add or remove keys from an action&#39;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: &quot;regex=[+-]key,regex=[+-]key,...&quot;.

Examples:
  &#39;.*=+x,.*=-y,.*=+z&#39; adds &#39;x&#39; and &#39;z&#39; to, and removes &#39;y&#39; from, the execution info for all actions.
  &#39;Genrule=+requires-x&#39; adds &#39;requires-x&#39; to the execution info for all Genrule actions.
  &#39;(?!Genrule).*=-requires-x&#39; removes &#39;requires-x&#39; from the execution info for all non-Genrule actions.

<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--persistent_android_dex_desugar"><code><a href="#flag--persistent_android_dex_desugar">--persistent_android_dex_desugar</a></code></dt>
<dd>
Enable persistent Android dex and desugar actions by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_android_dex_desugar">--internal_persistent_android_dex_desugar</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=Desugar=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=DexBuilder=worker</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_android_resource_processor"><code><a href="#flag--persistent_android_resource_processor">--persistent_android_resource_processor</a></code></dt>
<dd>
Enable persistent Android resource processor by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_busybox_tools">--internal_persistent_busybox_tools</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AaptPackage=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceParser=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceValidator=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceCompiler=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=RClassGenerator=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceLink=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidAapt2=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidAssetMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidCompiledResourceMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=ManifestMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidManifestMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=Aapt2Optimize=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AARGenerator=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=ProcessDatabinding=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=GenerateDataBindingBaseClasses=worker</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_multiplex_android_dex_desugar"><code><a href="#flag--persistent_multiplex_android_dex_desugar">--persistent_multiplex_android_dex_desugar</a></code></dt>
<dd>
Enable persistent multiplexed Android dex and desugar actions by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_android_dex_desugar">--persistent_android_dex_desugar</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_multiplex_android_dex_desugar">--internal_persistent_multiplex_android_dex_desugar</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_multiplex_android_resource_processor"><code><a href="#flag--persistent_multiplex_android_resource_processor">--persistent_multiplex_android_resource_processor</a></code></dt>
<dd>
Enable persistent multiplexed Android resource processor by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_android_resource_processor">--persistent_android_resource_processor</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AaptPackage=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceParser=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceValidator=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceCompiler=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=RClassGenerator=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceLink=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidAapt2=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidAssetMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidCompiledResourceMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=ManifestMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidManifestMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=Aapt2Optimize=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AARGenerator=+supports-multiplex-workers</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_multiplex_android_tools"><code><a href="#flag--persistent_multiplex_android_tools">--persistent_multiplex_android_tools</a></code></dt>
<dd>
Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_multiplex_busybox_tools">--internal_persistent_multiplex_busybox_tools</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_multiplex_android_resource_processor">--persistent_multiplex_android_resource_processor</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_multiplex_android_dex_desugar">--persistent_multiplex_android_dex_desugar</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--skip_incompatible_explicit_targets"><code><a href="#flag--skip_incompatible_explicit_targets">--[no]skip_incompatible_explicit_targets</a></code> default: "false"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--spawn_strategy"><code><a href="#flag--spawn_strategy">--spawn_strategy</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
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 &quot;remote,worker,sandboxed,local&quot;. See https://blog.bazel.build/2019/06/19/list-strategy.html for details.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--strategy"><code><a href="#flag--strategy">--strategy</a>=&lt;a &#39;[name=]value1[,..,valueN]&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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 &quot;remote,worker,sandboxed,local&quot;. 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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--strategy_regexp"><code><a href="#flag--strategy_regexp">--strategy_regexp</a>=&lt;a &#39;&lt;RegexFilter&gt;=value[,value]&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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=&#39;Compiling.*/bar=local  --strategy_regexp=Compiling=sandboxed will run &#39;Compiling //foo/bar/baz&#39; with the &#39;local&#39; strategy, but reversing the order would run it with &#39;sandboxed&#39;.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--use_target_platform_for_tests"><code><a href="#flag--use_target_platform_for_tests">--[no]use_target_platform_for_tests</a></code> default: "false"</dt>
<dd>
If true, then Bazel will use the target platform for running tests rather than the test exec group.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
</dl>
<dl>Options that configure the toolchain used for action execution:
<dt id="flag--android_compiler"><code><a href="#flag--android_compiler">--android_compiler</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The Android target compiler.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_crosstool_top"><code><a href="#flag--android_crosstool_top">--android_crosstool_top</a>=&lt;a build target label&gt</code> default: "//external:android/crosstool"</dt>
<dd>
The location of the C++ compiler used for Android builds.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_grte_top"><code><a href="#flag--android_grte_top">--android_grte_top</a>=&lt;a label&gt</code> default: see description</dt>
<dd>
The Android target grte_top.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_manifest_merger"><code><a href="#flag--android_manifest_merger">--android_manifest_merger</a>=&lt;legacy, android or force_android&gt</code> default: "android"</dt>
<dd>
Selects the manifest merger to use for android_binary rules. Flag to help thetransition to the Android manifest merger from the legacy merger.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_platforms"><code><a href="#flag--android_platforms">--android_platforms</a>=&lt;a build target label&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_sdk"><code><a href="#flag--android_sdk">--android_sdk</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/android:sdk"</dt>
<dd>
Specifies Android SDK/platform that is used to build Android applications.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--apple_crosstool_top"><code><a href="#flag--apple_crosstool_top">--apple_crosstool_top</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/cpp:toolchain"</dt>
<dd>
The label of the crosstool package to be used in Apple and Objc rules and their dependencies.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--cc_output_directory_tag"><code><a href="#flag--cc_output_directory_tag">--cc_output_directory_tag</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
Specifies a suffix to be added to the configuration directory.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--compiler"><code><a href="#flag--compiler">--compiler</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The C++ compiler to use for compiling the target.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--coverage_output_generator"><code><a href="#flag--coverage_output_generator">--coverage_output_generator</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/test:lcov_merger"</dt>
<dd>
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 &#39;//tools/test:lcov_merger&#39;.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--coverage_report_generator"><code><a href="#flag--coverage_report_generator">--coverage_report_generator</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/test:coverage_report_generator"</dt>
<dd>
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 &#39;//tools/test:coverage_report_generator&#39;.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--coverage_support"><code><a href="#flag--coverage_support">--coverage_support</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/test:coverage_support"</dt>
<dd>
Location of support files that are required on the inputs of every test action that collects code coverage. Defaults to &#39;//tools/test:coverage_support&#39;.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--crosstool_top"><code><a href="#flag--crosstool_top">--crosstool_top</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/cpp:toolchain"</dt>
<dd>
The label of the crosstool package to be used for compiling C++ code.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--custom_malloc"><code><a href="#flag--custom_malloc">--custom_malloc</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies a custom malloc implementation. This setting overrides malloc attributes in build rules.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_add_exec_constraints_to_targets"><code><a href="#flag--experimental_add_exec_constraints_to_targets">--experimental_add_exec_constraints_to_targets</a>=&lt;a &#39;&lt;RegexFilter&gt;=&lt;label1&gt;[,&lt;label2&gt;,...]&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;x86_64&#39; to any target under //demo except for those whose name contains &#39;test&#39;.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_include_xcode_execution_requirements"><code><a href="#flag--experimental_include_xcode_execution_requirements">--[no]experimental_include_xcode_execution_requirements</a></code> default: "false"</dt>
<dd>
If set, add a &quot;requires-xcode:{version}&quot; execution requirement to every Xcode action.  If the xcode version has a hyphenated label,  also add a &quot;requires-xcode-label:{version_label}&quot; execution requirement.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_prefer_mutual_xcode"><code><a href="#flag--experimental_prefer_mutual_xcode">--[no]experimental_prefer_mutual_xcode</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--extra_execution_platforms"><code><a href="#flag--extra_execution_platforms">--extra_execution_platforms</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--extra_toolchains"><code><a href="#flag--extra_toolchains">--extra_toolchains</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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().
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--grte_top"><code><a href="#flag--grte_top">--grte_top</a>=&lt;a label&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_compiler"><code><a href="#flag--host_compiler">--host_compiler</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The C++ compiler to use for host compilation. It is ignored if --host_crosstool_top is not set.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--host_crosstool_top"><code><a href="#flag--host_crosstool_top">--host_crosstool_top</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
By default, the --crosstool_top and --compiler options are also used for the exec configuration. If this flag is provided, Bazel uses the default libc and compiler for the given crosstool_top.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_grte_top"><code><a href="#flag--host_grte_top">--host_grte_top</a>=&lt;a label&gt</code> default: see description</dt>
<dd>
If specified, this setting overrides the libc top-level directory (--grte_top) for the exec configuration.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_platform"><code><a href="#flag--host_platform">--host_platform</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools:host_platform"</dt>
<dd>
The label of a platform rule that describes the host system.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--incompatible_dont_enable_host_nonhost_crosstool_features"><code><a href="#flag--incompatible_dont_enable_host_nonhost_crosstool_features">--[no]incompatible_dont_enable_host_nonhost_crosstool_features</a></code> default: "true"</dt>
<dd>
If true, Bazel will not enable &#39;host&#39; and &#39;nonhost&#39; features in the c++ toolchain (see https://github.com/bazelbuild/bazel/issues/7407 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enable_android_toolchain_resolution"><code><a href="#flag--incompatible_enable_android_toolchain_resolution">--[no]incompatible_enable_android_toolchain_resolution</a></code> default: "true"</dt>
<dd>
Use toolchain resolution to select the Android SDK for android rules (Starlark and native)
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enable_apple_toolchain_resolution"><code><a href="#flag--incompatible_enable_apple_toolchain_resolution">--[no]incompatible_enable_apple_toolchain_resolution</a></code> default: "false"</dt>
<dd>
Use toolchain resolution to select the Apple SDK for apple rules (Starlark and native)
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_make_thinlto_command_lines_standalone"><code><a href="#flag--incompatible_make_thinlto_command_lines_standalone">--[no]incompatible_make_thinlto_command_lines_standalone</a></code> default: "true"</dt>
<dd>
If true, Bazel will not reuse C++ link action command lines for lto indexing command lines (see https://github.com/bazelbuild/bazel/issues/6791 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_remove_legacy_whole_archive"><code><a href="#flag--incompatible_remove_legacy_whole_archive">--[no]incompatible_remove_legacy_whole_archive</a></code> default: "true"</dt>
<dd>
If true, Bazel will not link library dependencies as whole archive by default (see https://github.com/bazelbuild/bazel/issues/7362 for migration instructions).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_require_ctx_in_configure_features"><code><a href="#flag--incompatible_require_ctx_in_configure_features">--[no]incompatible_require_ctx_in_configure_features</a></code> default: "true"</dt>
<dd>
If true, Bazel will require &#39;ctx&#39; parameter in to cc_common.configure_features (see https://github.com/bazelbuild/bazel/issues/7793 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--interface_shared_objects"><code><a href="#flag--interface_shared_objects">--[no]interface_shared_objects</a></code> default: "true"</dt>
<dd>
Use interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ios_sdk_version"><code><a href="#flag--ios_sdk_version">--ios_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the iOS SDK to use to build iOS applications. If unspecified, uses default iOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--macos_sdk_version"><code><a href="#flag--macos_sdk_version">--macos_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the macOS SDK to use to build macOS applications. If unspecified, uses default macOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--minimum_os_version"><code><a href="#flag--minimum_os_version">--minimum_os_version</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The minimum OS version which your compilation targets.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--platform_mappings"><code><a href="#flag--platform_mappings">--platform_mappings</a>=&lt;a relative path&gt</code> default: ""</dt>
<dd>
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 &#39;platform_mappings&#39; (a file directly under the workspace root).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--platforms"><code><a href="#flag--platforms">--platforms</a>=&lt;a build target label&gt</code> default: ""</dt>
<dd>
The labels of the platform rules describing the target platforms for the current command.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--python2_path"><code><a href="#flag--python2_path">--python2_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Deprecated, no-op. Disabled by `--incompatible_use_python_toolchains`.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a>, <a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--python3_path"><code><a href="#flag--python3_path">--python3_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Deprecated, no-op. Disabled by `--incompatible_use_python_toolchains`.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a>, <a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--python_path"><code><a href="#flag--python_path">--python_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The absolute path of the Python interpreter invoked to run Python targets on the target platform. Deprecated; disabled by --incompatible_use_python_toolchains.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--python_top"><code><a href="#flag--python_top">--python_top</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--tvos_sdk_version"><code><a href="#flag--tvos_sdk_version">--tvos_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the tvOS SDK to use to build tvOS applications. If unspecified, uses default tvOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--watchos_sdk_version"><code><a href="#flag--watchos_sdk_version">--watchos_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses default watchOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--xcode_version"><code><a href="#flag--xcode_version">--xcode_version</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
If specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--xcode_version_config"><code><a href="#flag--xcode_version_config">--xcode_version_config</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/cpp:host_xcodes"</dt>
<dd>
The label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that control the output of the command:
<dt id="flag--apple_generate_dsym"><code><a href="#flag--apple_generate_dsym">--[no]apple_generate_dsym</a></code> default: "false"</dt>
<dd>
Whether to generate debug symbol(.dSYM) file(s).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--build"><code><a href="#flag--build">--[no]build</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_runfile_links"><code><a href="#flag--build_runfile_links">--[no]build_runfile_links</a></code> default: "true"</dt>
<dd>
If true, build runfiles symlink forests for all targets.  If false, write them only when required by a local action, test or run command.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_runfile_manifests"><code><a href="#flag--build_runfile_manifests">--[no]build_runfile_manifests</a></code> default: "true"</dt>
<dd>
If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_test_dwp"><code><a href="#flag--build_test_dwp">--[no]build_test_dwp</a></code> default: "false"</dt>
<dd>
If enabled, when building C++ tests statically and with fission the .dwp file  for the test binary will be automatically built as well.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cc_proto_library_header_suffixes"><code><a href="#flag--cc_proto_library_header_suffixes">--cc_proto_library_header_suffixes</a>=&lt;comma-separated set of options&gt</code> default: ".pb.h"</dt>
<dd>
Sets the suffixes of header files that a cc_proto_library creates.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--cc_proto_library_source_suffixes"><code><a href="#flag--cc_proto_library_source_suffixes">--cc_proto_library_source_suffixes</a>=&lt;comma-separated set of options&gt</code> default: ".pb.cc"</dt>
<dd>
Sets the suffixes of source files that a cc_proto_library creates.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_proto_descriptor_sets_include_source_info"><code><a href="#flag--experimental_proto_descriptor_sets_include_source_info">--[no]experimental_proto_descriptor_sets_include_source_info</a></code> default: "false"</dt>
<dd>
Run extra actions for alternative Java api versions in a proto_library.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_proto_extra_actions"><code><a href="#flag--experimental_proto_extra_actions">--[no]experimental_proto_extra_actions</a></code> default: "false"</dt>
<dd>
Run extra actions for alternative Java api versions in a proto_library.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_save_feature_state"><code><a href="#flag--experimental_save_feature_state">--[no]experimental_save_feature_state</a></code> default: "false"</dt>
<dd>
Save the state of enabled and requested feautres as an output of compilation.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_use_validation_aspect"><code><a href="#flag--experimental_use_validation_aspect">--[no]experimental_use_validation_aspect</a></code> default: "false"</dt>
<dd>
Whether to run validation actions using aspect (for parallelism with tests).
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--fission"><code><a href="#flag--fission">--fission</a>=&lt;a set of compilation modes&gt</code> default: "no"</dt>
<dd>
Specifies which compilation modes use fission for C++ compilations and links.  May be any combination of {&#39;fastbuild&#39;, &#39;dbg&#39;, &#39;opt&#39;} or the special values &#39;yes&#39;  to enable all modes and &#39;no&#39; to disable all modes.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--incompatible_always_include_files_in_data"><code><a href="#flag--incompatible_always_include_files_in_data">--[no]incompatible_always_include_files_in_data</a></code> default: "true"</dt>
<dd>
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).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--legacy_external_runfiles"><code><a href="#flag--legacy_external_runfiles">--[no]legacy_external_runfiles</a></code> default: "true"</dt>
<dd>
If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--objc_generate_linkmap"><code><a href="#flag--objc_generate_linkmap">--[no]objc_generate_linkmap</a></code> default: "false"</dt>
<dd>
Specifies whether to generate a linkmap file.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--output_groups"><code><a href="#flag--output_groups">--output_groups</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--run_validations"><code><a href="#flag--run_validations">--[no]run_validations</a></code> default: "true"</dt>
<dd>
Whether to run validation actions as part of the build. See https://bazel.build/extending/rules#validation_actions
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--save_temps"><code><a href="#flag--save_temps">--[no]save_temps</a></code> default: "false"</dt>
<dd>
If set, temporary outputs from gcc will be saved.  These include .s files (assembler code), .i files (preprocessed C) and .ii files (preprocessed C++).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options that let the user configure the intended output, affecting its value, as opposed to its existence:
<dt id="flag--action_env"><code><a href="#flag--action_env">--action_env</a>=&lt;a &#39;name=value&#39; assignment with an optional value part&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--android_cpu"><code><a href="#flag--android_cpu">--android_cpu</a>=&lt;a string&gt</code> default: "armeabi-v7a"</dt>
<dd>
The Android target CPU.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_databinding_use_androidx"><code><a href="#flag--android_databinding_use_androidx">--[no]android_databinding_use_androidx</a></code> default: "true"</dt>
<dd>
Generate AndroidX-compatible data-binding files. This is only used with databinding v2. This flag is a no-op.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--android_databinding_use_v3_4_args"><code><a href="#flag--android_databinding_use_v3_4_args">--[no]android_databinding_use_v3_4_args</a></code> default: "true"</dt>
<dd>
Use android databinding v2 with 3.4.0 argument. This flag is a no-op.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--android_dynamic_mode"><code><a href="#flag--android_dynamic_mode">--android_dynamic_mode</a>=&lt;off, default or fully&gt</code> default: "off"</dt>
<dd>
Determines whether C++ deps of Android rules will be linked dynamically when a cc_binary does not explicitly create a shared library. &#39;default&#39; means bazel will choose whether to link dynamically.  &#39;fully&#39; means all libraries will be linked dynamically. &#39;off&#39; means that all libraries will be linked in mostly static mode.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--android_manifest_merger_order"><code><a href="#flag--android_manifest_merger_order">--android_manifest_merger_order</a>=&lt;alphabetical, alphabetical_by_configuration or dependency&gt</code> default: "alphabetical"</dt>
<dd>
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&#39;s manifest coming before the manifests of its dependencies.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--android_resource_shrinking"><code><a href="#flag--android_resource_shrinking">--[no]android_resource_shrinking</a></code> default: "false"</dt>
<dd>
Enables resource shrinking for android_binary APKs that use ProGuard.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--aspects"><code><a href="#flag--aspects">--aspects</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39; providers. &lt;bzl-file-label&gt;%&lt;aspect_name&gt;, for example &#39;//tools:my_def.bzl%my_aspect&#39;, where &#39;my_aspect&#39; is a top-level value from a file tools/my_def.bzl
</dd>
<dt id="flag--build_python_zip"><code><a href="#flag--build_python_zip">--[no]build_python_zip</a></code> default: "auto"</dt>
<dd>
Build python executable zip; on on Windows, off on other platforms
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--catalyst_cpus"><code><a href="#flag--catalyst_cpus">--catalyst_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple Catalyst binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--collect_code_coverage"><code><a href="#flag--collect_code_coverage">--[no]collect_code_coverage</a></code> default: "false"</dt>
<dd>
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 - &#39;bazel coverage&#39; command should be used instead.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--compilation_mode"><code><a href="#flag--compilation_mode">--compilation_mode</a>=&lt;fastbuild, dbg or opt&gt</code> [<code>-c</code>] default: "fastbuild"</dt>
<dd>
Specify the mode the binary will be built in. Values: &#39;fastbuild&#39;, &#39;dbg&#39;, &#39;opt&#39;.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--conlyopt"><code><a href="#flag--conlyopt">--conlyopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to gcc when compiling C source files.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--copt"><code><a href="#flag--copt">--copt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to gcc.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cpu"><code><a href="#flag--cpu">--cpu</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The target CPU.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cs_fdo_absolute_path"><code><a href="#flag--cs_fdo_absolute_path">--cs_fdo_absolute_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cs_fdo_instrument"><code><a href="#flag--cs_fdo_instrument">--cs_fdo_instrument</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cs_fdo_profile"><code><a href="#flag--cs_fdo_profile">--cs_fdo_profile</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The cs_fdo_profile representing the context sensitive profile to be used for optimization.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cxxopt"><code><a href="#flag--cxxopt">--cxxopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to gcc when compiling C++ source files.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--define"><code><a href="#flag--define">--define</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
Each --define option specifies an assignment for a build variable.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--dynamic_mode"><code><a href="#flag--dynamic_mode">--dynamic_mode</a>=&lt;off, default or fully&gt</code> default: "default"</dt>
<dd>
Determines whether C++ binaries will be linked dynamically.  &#39;default&#39; means Bazel will choose whether to link dynamically.  &#39;fully&#39; means all libraries will be linked dynamically. &#39;off&#39; means that all libraries will be linked in mostly static mode.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--enable_fdo_profile_absolute_path"><code><a href="#flag--enable_fdo_profile_absolute_path">--[no]enable_fdo_profile_absolute_path</a></code> default: "true"</dt>
<dd>
If set, use of fdo_absolute_profile_path will raise an error.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--enable_runfiles"><code><a href="#flag--enable_runfiles">--[no]enable_runfiles</a></code> default: "auto"</dt>
<dd>
Enable runfiles symlink tree; By default, it&#39;s off on Windows, on on other platforms.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_action_listener"><code><a href="#flag--experimental_action_listener">--experimental_action_listener</a>=&lt;a build target label&gt</code> multiple uses are accumulated</dt>
<dd>
Deprecated in favor of aspects. Use action_listener to attach an extra_action to existing build actions.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_android_compress_java_resources"><code><a href="#flag--experimental_android_compress_java_resources">--[no]experimental_android_compress_java_resources</a></code> default: "false"</dt>
<dd>
Compress Java resources in APKs
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_android_databinding_v2"><code><a href="#flag--experimental_android_databinding_v2">--[no]experimental_android_databinding_v2</a></code> default: "true"</dt>
<dd>
Use android databinding v2. This flag is a no-op.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_android_resource_shrinking"><code><a href="#flag--experimental_android_resource_shrinking">--[no]experimental_android_resource_shrinking</a></code> default: "false"</dt>
<dd>
Enables resource shrinking for android_binary APKs that use ProGuard.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_android_rewrite_dexes_with_rex"><code><a href="#flag--experimental_android_rewrite_dexes_with_rex">--[no]experimental_android_rewrite_dexes_with_rex</a></code> default: "false"</dt>
<dd>
use rex tool to rewrite dex files
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_collect_code_coverage_for_generated_files"><code><a href="#flag--experimental_collect_code_coverage_for_generated_files">--[no]experimental_collect_code_coverage_for_generated_files</a></code> default: "false"</dt>
<dd>
If specified, Bazel will also generate collect coverage information for generated files.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_convenience_symlinks"><code><a href="#flag--experimental_convenience_symlinks">--[no]experimental_convenience_symlinks</a></code> default: "normal"</dt>
<dd>
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 be left alone.
  log_only: Generate log messages as if &#39;normal&#39; were passed, but don&#39;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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_convenience_symlinks_bep_event"><code><a href="#flag--experimental_convenience_symlinks_bep_event">--[no]experimental_convenience_symlinks_bep_event</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_objc_fastbuild_options"><code><a href="#flag--experimental_objc_fastbuild_options">--experimental_objc_fastbuild_options</a>=&lt;comma-separated list of options&gt</code> default: "-O0,-DDEBUG=1"</dt>
<dd>
Uses these strings as objc fastbuild compiler options.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--experimental_omitfp"><code><a href="#flag--experimental_omitfp">--[no]experimental_omitfp</a></code> default: "false"</dt>
<dd>
If true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_output_paths"><code><a href="#flag--experimental_output_paths">--experimental_output_paths</a>=&lt;off, content or strip&gt</code> default: "off"</dt>
<dd>
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 &#39;supports-path-mapping&#39; to the &#39;execution_requirements&#39; dict.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_override_name_platform_in_output_dir"><code><a href="#flag--experimental_override_name_platform_in_output_dir">--experimental_override_name_platform_in_output_dir</a>=&lt;a &#39;label=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_platform_in_output_dir"><code><a href="#flag--experimental_platform_in_output_dir">--[no]experimental_platform_in_output_dir</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_use_llvm_covmap"><code><a href="#flag--experimental_use_llvm_covmap">--[no]experimental_use_llvm_covmap</a></code> default: "false"</dt>
<dd>
If specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_use_platforms_in_output_dir_legacy_heuristic"><code><a href="#flag--experimental_use_platforms_in_output_dir_legacy_heuristic">--[no]experimental_use_platforms_in_output_dir_legacy_heuristic</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--fat_apk_cpu"><code><a href="#flag--fat_apk_cpu">--fat_apk_cpu</a>=&lt;comma-separated set of options&gt</code> default: "armeabi-v7a"</dt>
<dd>
Setting this option enables fat APKs, which contain native binaries for all specified target architectures, e.g., --fat_apk_cpu=x86,armeabi-v7a. If this flag is specified, then --android_cpu is ignored for dependencies of android_binary rules.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--fat_apk_hwasan"><code><a href="#flag--fat_apk_hwasan">--[no]fat_apk_hwasan</a></code> default: "false"</dt>
<dd>
Whether to create HWASAN splits.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--fdo_instrument"><code><a href="#flag--fdo_instrument">--fdo_instrument</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--fdo_optimize"><code><a href="#flag--fdo_optimize">--fdo_optimize</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--fdo_prefetch_hints"><code><a href="#flag--fdo_prefetch_hints">--fdo_prefetch_hints</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Use cache prefetch hints.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--fdo_profile"><code><a href="#flag--fdo_profile">--fdo_profile</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The fdo_profile representing the profile to be used for optimization.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--features"><code><a href="#flag--features">--features</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--force_pic"><code><a href="#flag--force_pic">--[no]force_pic</a></code> default: "false"</dt>
<dd>
If enabled, all C++ compilations produce position-independent code (&quot;-fPIC&quot;), links prefer PIC pre-built libraries over non-PIC libraries, and links produce position-independent executables (&quot;-pie&quot;).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_action_env"><code><a href="#flag--host_action_env">--host_action_env</a>=&lt;a &#39;name=value&#39; assignment with an optional value part&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--host_compilation_mode"><code><a href="#flag--host_compilation_mode">--host_compilation_mode</a>=&lt;fastbuild, dbg or opt&gt</code> default: "opt"</dt>
<dd>
Specify the mode the tools used during the build will be built in. Values: &#39;fastbuild&#39;, &#39;dbg&#39;, &#39;opt&#39;.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--host_conlyopt"><code><a href="#flag--host_conlyopt">--host_conlyopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_copt"><code><a href="#flag--host_copt">--host_copt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the C compiler for tools built in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_cpu"><code><a href="#flag--host_cpu">--host_cpu</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The host CPU.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_cxxopt"><code><a href="#flag--host_cxxopt">--host_cxxopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to C++ compiler for tools built in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_features"><code><a href="#flag--host_features">--host_features</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_force_python"><code><a href="#flag--host_force_python">--host_force_python</a>=&lt;PY2 or PY3&gt</code> default: see description</dt>
<dd>
Overrides the Python version for the exec configuration. Can be &quot;PY2&quot; or &quot;PY3&quot;
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_linkopt"><code><a href="#flag--host_linkopt">--host_linkopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to linker when linking tools in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_macos_minimum_os"><code><a href="#flag--host_macos_minimum_os">--host_macos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible macOS version for host targets. If unspecified, uses &#39;macos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--host_per_file_copt"><code><a href="#flag--host_per_file_copt">--host_per_file_copt</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths followed by an @ and a comma separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_swiftcopt"><code><a href="#flag--host_swiftcopt">--host_swiftcopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to swiftc for exec tools.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--incompatible_auto_exec_groups"><code><a href="#flag--incompatible_auto_exec_groups">--[no]incompatible_auto_exec_groups</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_merge_genfiles_directory"><code><a href="#flag--incompatible_merge_genfiles_directory">--[no]incompatible_merge_genfiles_directory</a></code> default: "true"</dt>
<dd>
If true, the genfiles directory is folded into the bin directory.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_use_host_features"><code><a href="#flag--incompatible_use_host_features">--[no]incompatible_use_host_features</a></code> default: "true"</dt>
<dd>
If true, use --features only for the target configuration and --host_features for the exec configuration.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--instrument_test_targets"><code><a href="#flag--instrument_test_targets">--[no]instrument_test_targets</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--instrumentation_filter"><code><a href="#flag--instrumentation_filter">--instrumentation_filter</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths&gt</code> default: "-/javatests[/:],-/test/java[/:]"</dt>
<dd>
When coverage is enabled, only rules with names included by the specified regex-based filter will be instrumented. Rules prefixed with &#39;-&#39; are excluded instead. Note that only non-test rules are instrumented unless --instrument_test_targets is enabled.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ios_minimum_os"><code><a href="#flag--ios_minimum_os">--ios_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible iOS version for target simulators and devices. If unspecified, uses &#39;ios_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--ios_multi_cpus"><code><a href="#flag--ios_multi_cpus">--ios_multi_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--legacy_whole_archive"><code><a href="#flag--legacy_whole_archive">--[no]legacy_whole_archive</a></code> default: "true"</dt>
<dd>
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 &#39;-static&#39; in linkopts. This is for backwards compatibility only. A better alternative is to use alwayslink=1 where required.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--linkopt"><code><a href="#flag--linkopt">--linkopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to gcc when linking.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ltobackendopt"><code><a href="#flag--ltobackendopt">--ltobackendopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to the LTO backend step (under --features=thin_lto).
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ltoindexopt"><code><a href="#flag--ltoindexopt">--ltoindexopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to the LTO indexing step (under --features=thin_lto).
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--macos_cpus"><code><a href="#flag--macos_cpus">--macos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple macOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--macos_minimum_os"><code><a href="#flag--macos_minimum_os">--macos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible macOS version for targets. If unspecified, uses &#39;macos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--memprof_profile"><code><a href="#flag--memprof_profile">--memprof_profile</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Use memprof profile.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--objc_debug_with_GLIBCXX"><code><a href="#flag--objc_debug_with_GLIBCXX">--[no]objc_debug_with_GLIBCXX</a></code> default: "false"</dt>
<dd>
If set, and compilation mode is set to &#39;dbg&#39;, define GLIBCXX_DEBUG,  GLIBCXX_DEBUG_PEDANTIC and GLIBCPP_CONCEPT_CHECKS.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--objc_enable_binary_stripping"><code><a href="#flag--objc_enable_binary_stripping">--[no]objc_enable_binary_stripping</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--objccopt"><code><a href="#flag--objccopt">--objccopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to gcc when compiling Objective-C/C++ source files.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--per_file_copt"><code><a href="#flag--per_file_copt">--per_file_copt</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths followed by an @ and a comma separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--per_file_ltobackendopt"><code><a href="#flag--per_file_ltobackendopt">--per_file_ltobackendopt</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths followed by an @ and a comma separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--platform_suffix"><code><a href="#flag--platform_suffix">--platform_suffix</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Specifies a suffix to be added to the configuration directory.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--propeller_optimize"><code><a href="#flag--propeller_optimize">--propeller_optimize</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
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 = &quot;propeller_profile&quot;,    cc_profile = &quot;propeller_cc_profile.txt&quot;,    ld_profile = &quot;propeller_ld_profile.txt&quot;,)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
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--propeller_optimize_absolute_cc_profile"><code><a href="#flag--propeller_optimize_absolute_cc_profile">--propeller_optimize_absolute_cc_profile</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Absolute path name of cc_profile file for Propeller Optimized builds.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--propeller_optimize_absolute_ld_profile"><code><a href="#flag--propeller_optimize_absolute_ld_profile">--propeller_optimize_absolute_ld_profile</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Absolute path name of ld_profile file for Propeller Optimized builds.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--run_under"><code><a href="#flag--run_under">--run_under</a>=&lt;a prefix in front of command&gt</code> default: see description</dt>
<dd>
Prefix to insert before the executables for the &#39;test&#39; and &#39;run&#39; commands. If the value is &#39;foo -bar&#39;, and the execution command line is &#39;test_binary -baz&#39;, then the final command line is &#39;foo -bar test_binary -baz&#39;.This can also be a label to an executable target. Some examples are: &#39;valgrind&#39;, &#39;strace&#39;, &#39;strace -c&#39;, &#39;valgrind --quiet --num-callers=20&#39;, &#39;//package:target&#39;,  &#39;//package:target --options&#39;.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--share_native_deps"><code><a href="#flag--share_native_deps">--[no]share_native_deps</a></code> default: "true"</dt>
<dd>
If true, native libraries that contain identical functionality will be shared among different targets
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--stamp"><code><a href="#flag--stamp">--[no]stamp</a></code> default: "false"</dt>
<dd>
Stamp binaries with the date, username, hostname, workspace information, etc.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--strip"><code><a href="#flag--strip">--strip</a>=&lt;always, sometimes or never&gt</code> default: "sometimes"</dt>
<dd>
Specifies whether to strip binaries and shared libraries  (using &quot;-Wl,--strip-debug&quot;).  The default value of &#39;sometimes&#39; means strip iff --compilation_mode=fastbuild.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--stripopt"><code><a href="#flag--stripopt">--stripopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to strip when generating a &#39;&lt;name&gt;.stripped&#39; binary.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--swiftcopt"><code><a href="#flag--swiftcopt">--swiftcopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to Swift compilation.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--symlink_prefix"><code><a href="#flag--symlink_prefix">--symlink_prefix</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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 &#39;/&#39; is passed, then no symlinks are created and no warning is emitted. Warning: the special functionality for &#39;/&#39; will be deprecated soon; use --experimental_convenience_symlinks=ignore instead.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--tvos_cpus"><code><a href="#flag--tvos_cpus">--tvos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple tvOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--tvos_minimum_os"><code><a href="#flag--tvos_minimum_os">--tvos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible tvOS version for target simulators and devices. If unspecified, uses &#39;tvos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--visionos_cpus"><code><a href="#flag--visionos_cpus">--visionos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple visionOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--watchos_cpus"><code><a href="#flag--watchos_cpus">--watchos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple watchOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--watchos_minimum_os"><code><a href="#flag--watchos_minimum_os">--watchos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible watchOS version for target simulators and devices. If unspecified, uses &#39;watchos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--xbinary_fdo"><code><a href="#flag--xbinary_fdo">--xbinary_fdo</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options that affect how strictly Bazel enforces valid build inputs (rule definitions,  flag combinations, etc.):
<dt id="flag--auto_cpu_environment_group"><code><a href="#flag--auto_cpu_environment_group">--auto_cpu_environment_group</a>=&lt;a build target label&gt</code> default: ""</dt>
<dd>
Declare the environment_group to use for automatically mapping cpu values to target_environment values.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--check_licenses"><code><a href="#flag--check_licenses">--[no]check_licenses</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--check_visibility"><code><a href="#flag--check_visibility">--[no]check_visibility</a></code> default: "true"</dt>
<dd>
If disabled, visibility errors in target dependencies are demoted to warnings.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--desugar_for_android"><code><a href="#flag--desugar_for_android">--[no]desugar_for_android</a></code> default: "true"</dt>
<dd>
Whether to desugar Java 8 bytecode before dexing.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--desugar_java8_libs"><code><a href="#flag--desugar_java8_libs">--[no]desugar_java8_libs</a></code> default: "false"</dt>
<dd>
Whether to include supported Java 8 libraries in apps for legacy devices.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--enforce_constraints"><code><a href="#flag--enforce_constraints">--[no]enforce_constraints</a></code> default: "true"</dt>
<dd>
Checks the environments each target is compatible with and reports errors if any target has dependencies that don&#39;t support the same environments
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--experimental_check_desugar_deps"><code><a href="#flag--experimental_check_desugar_deps">--[no]experimental_check_desugar_deps</a></code> default: "true"</dt>
<dd>
Whether to double-check correct desugaring at Android binary level.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_import_deps_checking"><code><a href="#flag--experimental_import_deps_checking">--experimental_import_deps_checking</a>=&lt;off, warning or error&gt</code> default: "OFF"</dt>
<dd>
When enabled, check whether the dependencies of an aar_import are complete. This enforcement can break the build, or can just result in warnings.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_one_version_enforcement"><code><a href="#flag--experimental_one_version_enforcement">--experimental_one_version_enforcement</a>=&lt;off, warning or error&gt</code> default: "OFF"</dt>
<dd>
When enabled, enforce that a java_binary rule can&#39;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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_strict_java_deps"><code><a href="#flag--experimental_strict_java_deps">--experimental_strict_java_deps</a>=&lt;off, warn, error, strict or default&gt</code> default: "default"</dt>
<dd>
If true, checks that a Java target explicitly declares all directly used targets as dependencies.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--incompatible_check_testonly_for_output_files"><code><a href="#flag--incompatible_check_testonly_for_output_files">--[no]incompatible_check_testonly_for_output_files</a></code> default: "false"</dt>
<dd>
If enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_check_visibility_for_toolchains"><code><a href="#flag--incompatible_check_visibility_for_toolchains">--[no]incompatible_check_visibility_for_toolchains</a></code> default: "false"</dt>
<dd>
If enabled, visibility checking also applies to toolchain implementations.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disable_native_android_rules"><code><a href="#flag--incompatible_disable_native_android_rules">--[no]incompatible_disable_native_android_rules</a></code> default: "false"</dt>
<dd>
If enabled, direct usage of the native Android rules is disabled. Please use the Starlark Android rules from https://github.com/bazelbuild/rules_android
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disable_native_apple_binary_rule"><code><a href="#flag--incompatible_disable_native_apple_binary_rule">--[no]incompatible_disable_native_apple_binary_rule</a></code> default: "false"</dt>
<dd>
No-op. Kept here for backwards compatibility.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_python_disable_py2"><code><a href="#flag--incompatible_python_disable_py2">--[no]incompatible_python_disable_py2</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_validate_top_level_header_inclusions"><code><a href="#flag--incompatible_validate_top_level_header_inclusions">--[no]incompatible_validate_top_level_header_inclusions</a></code> default: "true"</dt>
<dd>
If true, Bazel will also validate top level directory header inclusions (see https://github.com/bazelbuild/bazel/issues/10047 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--one_version_enforcement_on_java_tests"><code><a href="#flag--one_version_enforcement_on_java_tests">--[no]one_version_enforcement_on_java_tests</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--python_native_rules_allowlist"><code><a href="#flag--python_native_rules_allowlist">--python_native_rules_allowlist</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
An allowlist (package_group target) to use when enforcing --incompatible_python_disallow_native_rules.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--strict_filesets"><code><a href="#flag--strict_filesets">--[no]strict_filesets</a></code> default: "false"</dt>
<dd>
If this option is enabled, filesets crossing package boundaries are reported as errors.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--strict_proto_deps"><code><a href="#flag--strict_proto_deps">--strict_proto_deps</a>=&lt;off, warn, error, strict or default&gt</code> default: "error"</dt>
<dd>
Unless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--strict_public_imports"><code><a href="#flag--strict_public_imports">--strict_public_imports</a>=&lt;off, warn, error, strict or default&gt</code> default: "off"</dt>
<dd>
Unless OFF, checks that a proto_library target explicitly declares all targets used in &#39;import public&#39; as exported.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--strict_system_includes"><code><a href="#flag--strict_system_includes">--[no]strict_system_includes</a></code> default: "false"</dt>
<dd>
If true, headers found through system include paths (-isystem) are also required to be declared.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--target_environment"><code><a href="#flag--target_environment">--target_environment</a>=&lt;a build target label&gt</code> multiple uses are accumulated</dt>
<dd>
Declares this build&#39;s target environment. Must be a label reference to an &quot;environment&quot; rule. If specified, all top-level targets must be compatible with this environment.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Options that affect the signing outputs of a build:
<dt id="flag--apk_signing_method"><code><a href="#flag--apk_signing_method">--apk_signing_method</a>=&lt;v1, v2, v1_v2 or v4&gt</code> default: "v1_v2"</dt>
<dd>
Implementation to use to sign APKs
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--device_debug_entitlements"><code><a href="#flag--device_debug_entitlements">--[no]device_debug_entitlements</a></code> default: "true"</dt>
<dd>
If set, and compilation mode is not &#39;opt&#39;, objc apps will include debug entitlements when signing.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--ios_signing_cert_name"><code><a href="#flag--ios_signing_cert_name">--ios_signing_cert_name</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Certificate name to use for iOS signing. If not set will fall back to provisioning profile. May be the certificate&#39;s keychain identity preference or (substring) of the certificate&#39;s common name, as per codesign&#39;s man page (SIGNING IDENTITIES).
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
</dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--incompatible_config_setting_private_default_visibility"><code><a href="#flag--incompatible_config_setting_private_default_visibility">--[no]incompatible_config_setting_private_default_visibility</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disallow_legacy_py_provider"><code><a href="#flag--incompatible_disallow_legacy_py_provider">--[no]incompatible_disallow_legacy_py_provider</a></code> default: "true"</dt>
<dd>
No-op, will be removed soon.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disallow_sdk_frameworks_attributes"><code><a href="#flag--incompatible_disallow_sdk_frameworks_attributes">--[no]incompatible_disallow_sdk_frameworks_attributes</a></code> default: "false"</dt>
<dd>
If true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library andobjc_import.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enforce_config_setting_visibility"><code><a href="#flag--incompatible_enforce_config_setting_visibility">--[no]incompatible_enforce_config_setting_visibility</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_objc_alwayslink_by_default"><code><a href="#flag--incompatible_objc_alwayslink_by_default">--[no]incompatible_objc_alwayslink_by_default</a></code> default: "false"</dt>
<dd>
If true, make the default value true for alwayslink attributes in objc_library and objc_import.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_python_disallow_native_rules"><code><a href="#flag--incompatible_python_disallow_native_rules">--[no]incompatible_python_disallow_native_rules</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
</dl>
<dl>Options that govern the behavior of the test environment or test runner:
<dt id="flag--allow_analysis_failures"><code><a href="#flag--allow_analysis_failures">--[no]allow_analysis_failures</a></code> default: "false"</dt>
<dd>
If true, an analysis failure of a rule target results in the target&#39;s propagation of an instance of AnalysisFailureInfo containing the error description, instead of resulting in a build failure.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--analysis_testing_deps_limit"><code><a href="#flag--analysis_testing_deps_limit">--analysis_testing_deps_limit</a>=&lt;an integer&gt</code> default: "2000"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--break_build_on_parallel_dex2oat_failure"><code><a href="#flag--break_build_on_parallel_dex2oat_failure">--[no]break_build_on_parallel_dex2oat_failure</a></code> default: "false"</dt>
<dd>
If true dex2oat action failures will cause the build to break instead of executing dex2oat during test runtime.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--check_tests_up_to_date"><code><a href="#flag--check_tests_up_to_date">--[no]check_tests_up_to_date</a></code> default: "false"</dt>
<dd>
Don&#39;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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--default_test_resources"><code><a href="#flag--default_test_resources">--default_test_resources</a>=&lt;a resource name followed by equal and 1 float or 4 float, e.g. memory=10,30,60,100&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_android_use_parallel_dex2oat"><code><a href="#flag--experimental_android_use_parallel_dex2oat">--[no]experimental_android_use_parallel_dex2oat</a></code> default: "false"</dt>
<dd>
Use dex2oat in parallel to possibly speed up android_test.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--flaky_test_attempts"><code><a href="#flag--flaky_test_attempts">--flaky_test_attempts</a>=&lt;a positive integer, the string &quot;default&quot;, or test_regex@attempts. This flag may be passed more than once&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;FLAKY&#39; in the test summary. Normally the value specified is just an integer or the string &#39;default&#39;. If an integer, then all tests will be run up to N times. If &#39;default&#39;, 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 &#39;default&#39; above.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--ios_memleaks"><code><a href="#flag--ios_memleaks">--[no]ios_memleaks</a></code> default: "false"</dt>
<dd>
Enable checking for memory leaks in ios_test targets.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--ios_simulator_device"><code><a href="#flag--ios_simulator_device">--ios_simulator_device</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The device to simulate when running an iOS application in the simulator, e.g. &#39;iPhone 6&#39;. You can get a list of devices by running &#39;xcrun simctl list devicetypes&#39; on the machine the simulator will be run on.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
<dt id="flag--ios_simulator_version"><code><a href="#flag--ios_simulator_version">--ios_simulator_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
<dt id="flag--local_test_jobs"><code><a href="#flag--local_test_jobs">--local_test_jobs</a>=&lt;an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> default: "auto"</dt>
<dd>
The max number of local test jobs to run concurrently. Takes an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;. 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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--runs_per_test"><code><a href="#flag--runs_per_test">--runs_per_test</a>=&lt;a positive integer or test_regex@runs. This flag may be passed more than once&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--test_env"><code><a href="#flag--test_env">--test_env</a>=&lt;a &#39;name=value&#39; assignment with an optional value part&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;bazel test&#39; command.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
<dt id="flag--test_keep_going"><code><a href="#flag--test_keep_going">--[no]test_keep_going</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--test_strategy"><code><a href="#flag--test_strategy">--test_strategy</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
Specifies which strategy to use when running tests.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--test_timeout"><code><a href="#flag--test_timeout">--test_timeout</a>=&lt;a single integer or comma-separated list of 4 integers&gt</code> default: "-1"</dt>
<dd>
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.
</dd>
<dt id="flag--test_tmpdir"><code><a href="#flag--test_tmpdir">--test_tmpdir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
Specifies the base temporary directory for &#39;bazel test&#39; to use.
</dd>
<dt id="flag--zip_undeclared_test_outputs"><code><a href="#flag--zip_undeclared_test_outputs">--[no]zip_undeclared_test_outputs</a></code> default: "true"</dt>
<dd>
If true, undeclared test outputs will be archived in a zip file.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--cache_computed_file_digests"><code><a href="#flag--cache_computed_file_digests">--cache_computed_file_digests</a>=&lt;a long integer&gt</code> default: "50000"</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_filter_library_jar_with_program_jar"><code><a href="#flag--experimental_filter_library_jar_with_program_jar">--[no]experimental_filter_library_jar_with_program_jar</a></code> default: "false"</dt>
<dd>
Filter the ProGuard ProgramJar to remove any classes also present in the LibraryJar.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--experimental_inmemory_dotd_files"><code><a href="#flag--experimental_inmemory_dotd_files">--[no]experimental_inmemory_dotd_files</a></code> default: "true"</dt>
<dd>
If enabled, C++ .d files will be passed through in memory directly from the remote build nodes instead of being written to disk.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_inmemory_jdeps_files"><code><a href="#flag--experimental_inmemory_jdeps_files">--[no]experimental_inmemory_jdeps_files</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_objc_include_scanning"><code><a href="#flag--experimental_objc_include_scanning">--[no]experimental_objc_include_scanning</a></code> default: "false"</dt>
<dd>
Whether to perform include scanning for objective C/C++.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--experimental_retain_test_configuration_across_testonly"><code><a href="#flag--experimental_retain_test_configuration_across_testonly">--[no]experimental_retain_test_configuration_across_testonly</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--experimental_starlark_cc_import"><code><a href="#flag--experimental_starlark_cc_import">--[no]experimental_starlark_cc_import</a></code> default: "false"</dt>
<dd>
If enabled, the Starlark version of cc_import can be used.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_unsupported_and_brittle_include_scanning"><code><a href="#flag--experimental_unsupported_and_brittle_include_scanning">--[no]experimental_unsupported_and_brittle_include_scanning</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--incremental_dexing"><code><a href="#flag--incremental_dexing">--[no]incremental_dexing</a></code> default: "true"</dt>
<dd>
Does most of the work for dexing separately for each Jar file.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--local_cpu_resources"><code><a href="#flag--local_cpu_resources">--local_cpu_resources</a>=&lt;an integer, or &quot;HOST_CPUS&quot;, optionally followed by [-|*]&lt;float&gt;.&gt</code> default: "HOST_CPUS"</dt>
<dd>
Explicitly set the total number of local CPU cores available to Bazel to spend on build actions executed locally. Takes an integer, or &quot;HOST_CPUS&quot;, optionally followed by [-|*]&lt;float&gt; (eg. HOST_CPUS*.5 to use half the available CPU cores). By default, (&quot;HOST_CPUS&quot;), Bazel will query system configuration to estimate the number of CPU cores available.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--local_extra_resources"><code><a href="#flag--local_extra_resources">--local_extra_resources</a>=&lt;a named float, &#39;name=value&#39;&gt</code> multiple uses are accumulated</dt>
<dd>
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 &quot;resources:&lt;resoucename&gt;:&lt;amount&gt;&quot; format. Available CPU, RAM and resources cannot be set with this flag.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--local_ram_resources"><code><a href="#flag--local_ram_resources">--local_ram_resources</a>=&lt;an integer number of MBs, or &quot;HOST_RAM&quot;, optionally followed by [-|*]&lt;float&gt;.&gt</code> default: "HOST_RAM*.67"</dt>
<dd>
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 &quot;HOST_RAM&quot;, optionally followed by [-|*]&lt;float&gt; (eg. HOST_RAM*.5 to use half the available RAM). By default, (&quot;HOST_RAM*.67&quot;), Bazel will query system configuration to estimate the amount of RAM available and will use 67% of it.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--local_resources"><code><a href="#flag--local_resources">--local_resources</a>=&lt;a named double, &#39;name=value&#39;, where value is an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> multiple uses are accumulated</dt>
<dd>
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 &quot;resources:&lt;resource name&gt;:&lt;amount&gt;&quot; format. Overrides resources specified by --local_{cpu|ram|extra}_resources.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--objc_use_dotd_pruning"><code><a href="#flag--objc_use_dotd_pruning">--[no]objc_use_dotd_pruning</a></code> default: "true"</dt>
<dd>
If set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--process_headers_in_dependencies"><code><a href="#flag--process_headers_in_dependencies">--[no]process_headers_in_dependencies</a></code> default: "false"</dt>
<dd>
When building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--trim_test_configuration"><code><a href="#flag--trim_test_configuration">--[no]trim_test_configuration</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_bep_target_summary"><code><a href="#flag--experimental_bep_target_summary">--[no]experimental_bep_target_summary</a></code> default: "false"</dt>
<dd>
Whether to publish TargetSummary events.
</dd>
<dt id="flag--experimental_build_event_expand_filesets"><code><a href="#flag--experimental_build_event_expand_filesets">--[no]experimental_build_event_expand_filesets</a></code> default: "false"</dt>
<dd>
If true, expand Filesets in the BEP when presenting output files.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_build_event_fully_resolve_fileset_symlinks"><code><a href="#flag--experimental_build_event_fully_resolve_fileset_symlinks">--[no]experimental_build_event_fully_resolve_fileset_symlinks</a></code> default: "false"</dt>
<dd>
If true, fully resolve relative Fileset symlinks in the BEP when presenting output files. Requires --experimental_build_event_expand_filesets.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_build_event_upload_max_retries"><code><a href="#flag--experimental_build_event_upload_max_retries">--experimental_build_event_upload_max_retries</a>=&lt;an integer&gt</code> default: "4"</dt>
<dd>
The maximum number of times Bazel should retry uploading a build event.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_build_event_upload_retry_minimum_delay"><code><a href="#flag--experimental_build_event_upload_retry_minimum_delay">--experimental_build_event_upload_retry_minimum_delay</a>=&lt;An immutable length of time.&gt</code> default: "1s"</dt>
<dd>
Initial, minimum delay for exponential backoff retries when BEP upload fails. (exponent: 1.6)
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_build_event_upload_strategy"><code><a href="#flag--experimental_build_event_upload_strategy">--experimental_build_event_upload_strategy</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Selects how to upload artifacts referenced in the build event protocol.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_materialize_param_files_directly"><code><a href="#flag--experimental_materialize_param_files_directly">--[no]experimental_materialize_param_files_directly</a></code> default: "false"</dt>
<dd>
If materializing param files, do so with direct writes to disk.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_run_bep_event_include_residue"><code><a href="#flag--experimental_run_bep_event_include_residue">--[no]experimental_run_bep_event_include_residue</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_stream_log_file_uploads"><code><a href="#flag--experimental_stream_log_file_uploads">--[no]experimental_stream_log_file_uploads</a></code> default: "false"</dt>
<dd>
Stream log file uploads directly to the remote storage rather than writing them to disk.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--explain"><code><a href="#flag--explain">--explain</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
Causes the build system to explain each executed step of the build. The explanation is written to the specified log file.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--legacy_important_outputs"><code><a href="#flag--legacy_important_outputs">--[no]legacy_important_outputs</a></code> default: "true"</dt>
<dd>
Use this to suppress generation of the legacy important_outputs field in the TargetComplete event. important_outputs are required for Bazel to ResultStore integration.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--materialize_param_files"><code><a href="#flag--materialize_param_files">--[no]materialize_param_files</a></code> default: "false"</dt>
<dd>
Writes intermediate parameter files to output tree even when using remote action execution. Useful when debugging actions. This is implied by --subcommands and --verbose_failures.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--max_config_changes_to_show"><code><a href="#flag--max_config_changes_to_show">--max_config_changes_to_show</a>=&lt;an integer&gt</code> default: "3"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--max_test_output_bytes"><code><a href="#flag--max_test_output_bytes">--max_test_output_bytes</a>=&lt;an integer&gt</code> default: "-1"</dt>
<dd>
Specifies maximum per-test-log size that can be emitted when --test_output is &#39;errors&#39; or &#39;all&#39;. 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.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a>, <a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--output_filter"><code><a href="#flag--output_filter">--output_filter</a>=&lt;a valid Java regular expression&gt</code> default: see description</dt>
<dd>
Only shows warnings and action outputs for rules with a name matching the provided regular expression.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--progress_report_interval"><code><a href="#flag--progress_report_interval">--progress_report_interval</a>=&lt;an integer in 0-3600 range&gt</code> default: "0"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--show_result"><code><a href="#flag--show_result">--show_result</a>=&lt;an integer&gt</code> default: "1"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--subcommands"><code><a href="#flag--subcommands">--[no]subcommands</a></code> [<code>-s</code>] default: "false"</dt>
<dd>
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).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--test_output"><code><a href="#flag--test_output">--test_output</a>=&lt;summary, errors, all or streamed&gt</code> default: "summary"</dt>
<dd>
Specifies desired output mode. Valid values are &#39;summary&#39; to output only test status summary, &#39;errors&#39; to also print test logs for failed tests, &#39;all&#39; to print logs for all tests and &#39;streamed&#39; 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).
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a>, <a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--test_summary"><code><a href="#flag--test_summary">--test_summary</a>=&lt;short, terse, detailed, none or testcase&gt</code> default: "short"</dt>
<dd>
Specifies the desired format of the test summary. Valid values are &#39;short&#39; to print information only about tests executed, &#39;terse&#39;, to print information only about unsuccessful tests that were run, &#39;detailed&#39; to print detailed information about failed test cases, &#39;testcase&#39; to print summary in test case resolution, do not print detailed information about failed test cases and &#39;none&#39; to omit the summary.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--toolchain_resolution_debug"><code><a href="#flag--toolchain_resolution_debug">--toolchain_resolution_debug</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths&gt</code> default: "-.*"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--verbose_explanations"><code><a href="#flag--verbose_explanations">--[no]verbose_explanations</a></code> default: "false"</dt>
<dd>
Increases the verbosity of the explanations issued if --explain is enabled. Has no effect if --explain is not enabled.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--verbose_failures"><code><a href="#flag--verbose_failures">--[no]verbose_failures</a></code> default: "false"</dt>
<dd>
If a command fails, print out the full command line.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--aspects_parameters"><code><a href="#flag--aspects_parameters">--aspects_parameters</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;my_param=my_val&#39; where &#39;my_param&#39; 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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--flag_alias"><code><a href="#flag--flag_alias">--flag_alias</a>=&lt;a &#39;name=value&#39; flag alias&gt</code> multiple uses are accumulated</dt>
<dd>
Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form &quot;&lt;key&gt;=&lt;value&gt;&quot; as an argument.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--incompatible_default_to_explicit_init_py"><code><a href="#flag--incompatible_default_to_explicit_init_py">--[no]incompatible_default_to_explicit_init_py</a></code> default: "false"</dt>
<dd>
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 &quot;auto&quot; (the default), it is treated as false if and only if this flag is set. See https://github.com/bazelbuild/bazel/issues/10076.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_py2_outputs_are_suffixed"><code><a href="#flag--incompatible_py2_outputs_are_suffixed">--[no]incompatible_py2_outputs_are_suffixed</a></code> default: "true"</dt>
<dd>
If true, targets built in the Python 2 configuration will appear under an output root that includes the suffix &#39;-py2&#39;, 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`.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_py3_is_default"><code><a href="#flag--incompatible_py3_is_default">--[no]incompatible_py3_is_default</a></code> default: "true"</dt>
<dd>
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`.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_use_python_toolchains"><code><a href="#flag--incompatible_use_python_toolchains">--[no]incompatible_use_python_toolchains</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--python_version"><code><a href="#flag--python_version">--python_version</a>=&lt;PY2 or PY3&gt</code> default: see description</dt>
<dd>
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&#39;t explicitly specify a version) so there is usually not much reason to supply this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--target_pattern_file"><code><a href="#flag--target_pattern_file">--target_pattern_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_remote_cache_eviction_retries"><code><a href="#flag--experimental_remote_cache_eviction_retries">--experimental_remote_cache_eviction_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--incompatible_remote_use_new_exit_code_for_lost_inputs"><code><a href="#flag--incompatible_remote_use_new_exit_code_for_lost_inputs">--[no]incompatible_remote_use_new_exit_code_for_lost_inputs</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--allow_analysis_cache_discard"><code><a href="#flag--allow_analysis_cache_discard">--[no]allow_analysis_cache_discard</a></code> default: "true"</dt>
<dd>
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 &#39;discard_analysis_cache&#39; is also set.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--build_manual_tests"><code><a href="#flag--build_manual_tests">--[no]build_manual_tests</a></code> default: "false"</dt>
<dd>
Forces test targets tagged &#39;manual&#39; to be built. &#39;manual&#39; tests are excluded from processing. This option forces them to be built (but not executed).
</dd>
<dt id="flag--build_tag_filters"><code><a href="#flag--build_tag_filters">--build_tag_filters</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
Specifies a comma-separated list of tags. Each tag can be optionally preceded with &#39;-&#39; 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 &#39;test&#39; command; those are be governed by the test filtering options, for example &#39;--test_tag_filters&#39;
</dd>
<dt id="flag--build_tests_only"><code><a href="#flag--build_tests_only">--[no]build_tests_only</a></code> default: "false"</dt>
<dd>
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.
</dd>
<dt id="flag--cache_test_results"><code><a href="#flag--cache_test_results">--[no]cache_test_results</a></code> [<code>-t</code>] default: "auto"</dt>
<dd>
If set to &#39;auto&#39;, 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 &#39;yes&#39;, Bazel caches all test results except for tests marked as external. If set to &#39;no&#39;, Bazel does not cache any test results.
</dd>
<dt id="flag--compile_one_dependency"><code><a href="#flag--compile_one_dependency">--[no]compile_one_dependency</a></code> default: "false"</dt>
<dd>
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.
</dd>
<dt id="flag--deleted_packages"><code><a href="#flag--deleted_packages">--deleted_packages</a>=&lt;comma-separated list of package names&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;x/y&#39; of an existing package &#39;x&#39;.  For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label &#39;//x:y/z&#39; if that is still provided by another package_path entry.  Specifying --deleted_packages x/y avoids this problem.
</dd>
<dt id="flag--discard_analysis_cache"><code><a href="#flag--discard_analysis_cache">--[no]discard_analysis_cache</a></code> default: "false"</dt>
<dd>
Discard the analysis cache immediately after the analysis phase completes. Reduces memory usage by ~10%, but makes further incremental builds slower.
</dd>
<dt id="flag--execution_log_binary_file"><code><a href="#flag--execution_log_binary_file">--execution_log_binary_file</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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).
</dd>
<dt id="flag--execution_log_compact_file"><code><a href="#flag--execution_log_compact_file">--execution_log_compact_file</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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).
</dd>
<dt id="flag--execution_log_json_file"><code><a href="#flag--execution_log_json_file">--execution_log_json_file</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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).
</dd>
<dt id="flag--execution_log_sort"><code><a href="#flag--execution_log_sort">--[no]execution_log_sort</a></code> default: "true"</dt>
<dd>
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.
</dd>
<dt id="flag--expand_test_suites"><code><a href="#flag--expand_test_suites">--[no]expand_test_suites</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_cancel_concurrent_tests"><code><a href="#flag--experimental_cancel_concurrent_tests">--[no]experimental_cancel_concurrent_tests</a></code> default: "false"</dt>
<dd>
If true, then Blaze will cancel concurrently running tests on the first successful run. This is only useful in combination with --runs_per_test_detects_flakes.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_extra_action_filter"><code><a href="#flag--experimental_extra_action_filter">--experimental_extra_action_filter</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths&gt</code> default: ""</dt>
<dd>
Deprecated in favor of aspects. Filters set of targets to schedule extra_actions for.
</dd>
<dt id="flag--experimental_extra_action_top_level_only"><code><a href="#flag--experimental_extra_action_top_level_only">--[no]experimental_extra_action_top_level_only</a></code> default: "false"</dt>
<dd>
Deprecated in favor of aspects. Only schedules extra_actions for top level targets.
</dd>
<dt id="flag--experimental_fetch_all_coverage_outputs"><code><a href="#flag--experimental_fetch_all_coverage_outputs">--[no]experimental_fetch_all_coverage_outputs</a></code> default: "false"</dt>
<dd>
If true, then Bazel fetches the entire coverage data directory for each test during a coverage run.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_generate_llvm_lcov"><code><a href="#flag--experimental_generate_llvm_lcov">--[no]experimental_generate_llvm_lcov</a></code> default: "false"</dt>
<dd>
If true, coverage for clang will generate an LCOV report.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_j2objc_header_map"><code><a href="#flag--experimental_j2objc_header_map">--[no]experimental_j2objc_header_map</a></code> default: "true"</dt>
<dd>
Whether to generate J2ObjC header map in parallel of J2ObjC transpilation.
</dd>
<dt id="flag--experimental_j2objc_shorter_header_path"><code><a href="#flag--experimental_j2objc_shorter_header_path">--[no]experimental_j2objc_shorter_header_path</a></code> default: "false"</dt>
<dd>
Whether to generate with shorter header path (uses &quot;_ios&quot; instead of &quot;_j2objc&quot;).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_java_classpath"><code><a href="#flag--experimental_java_classpath">--experimental_java_classpath</a>=&lt;off, javabuilder or bazel&gt</code> default: "javabuilder"</dt>
<dd>
Enables reduced classpaths for Java compilations.
</dd>
<dt id="flag--experimental_limit_android_lint_to_android_constrained_java"><code><a href="#flag--experimental_limit_android_lint_to_android_constrained_java">--[no]experimental_limit_android_lint_to_android_constrained_java</a></code> default: "false"</dt>
<dd>
Limit --experimental_run_android_lint_on_java_rules to Android-compatible libraries.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_run_android_lint_on_java_rules"><code><a href="#flag--experimental_run_android_lint_on_java_rules">--[no]experimental_run_android_lint_on_java_rules</a></code> default: "false"</dt>
<dd>
Whether to validate java_* sources.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--explicit_java_test_deps"><code><a href="#flag--explicit_java_test_deps">--[no]explicit_java_test_deps</a></code> default: "false"</dt>
<dd>
Explicitly specify a dependency to JUnit or Hamcrest in a java_test instead of  accidentally obtaining from the TestRunner&#39;s deps. Only works for bazel right now.
</dd>
<dt id="flag--fetch"><code><a href="#flag--fetch">--[no]fetch</a></code> default: "true"</dt>
<dd>
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.
</dd>
<dt id="flag--host_java_launcher"><code><a href="#flag--host_java_launcher">--host_java_launcher</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The Java launcher used by tools that are executed during a build.
</dd>
<dt id="flag--host_javacopt"><code><a href="#flag--host_javacopt">--host_javacopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to javac when building tools that are executed during a build.
</dd>
<dt id="flag--host_jvmopt"><code><a href="#flag--host_jvmopt">--host_jvmopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--incompatible_check_sharding_support"><code><a href="#flag--incompatible_check_sharding_support">--[no]incompatible_check_sharding_support</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_exclusive_test_sandboxed"><code><a href="#flag--incompatible_exclusive_test_sandboxed">--[no]incompatible_exclusive_test_sandboxed</a></code> default: "true"</dt>
<dd>
If true, exclusive tests will run with sandboxed strategy. Add &#39;local&#39; tag to force an exclusive test run locally
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_strict_action_env"><code><a href="#flag--incompatible_strict_action_env">--[no]incompatible_strict_action_env</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--j2objc_translation_flags"><code><a href="#flag--j2objc_translation_flags">--j2objc_translation_flags</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the J2ObjC tool.
</dd>
<dt id="flag--java_debug"><code><a href="#flag--java_debug">--java_debug</a></code></dt>
<dd>
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.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--test_arg">--test_arg=--wrapper_script_flag=--debug</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--test_output">--test_output=streamed</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--test_strategy">--test_strategy=exclusive</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--test_timeout">--test_timeout=9999</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--nocache_test_results">--nocache_test_results</a></code><br/>
</dd>
<dt id="flag--java_deps"><code><a href="#flag--java_deps">--[no]java_deps</a></code> default: "true"</dt>
<dd>
Generate dependency information (for now, compile-time classpath) per Java target.
</dd>
<dt id="flag--java_header_compilation"><code><a href="#flag--java_header_compilation">--[no]java_header_compilation</a></code> default: "true"</dt>
<dd>
Compile ijars directly from source.
</dd>
<dt id="flag--java_language_version"><code><a href="#flag--java_language_version">--java_language_version</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The Java language version
</dd>
<dt id="flag--java_launcher"><code><a href="#flag--java_launcher">--java_launcher</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The Java launcher to use when building Java binaries.  If this flag is set to the empty string, the JDK launcher is used. The &quot;launcher&quot; attribute overrides this flag.
</dd>
<dt id="flag--java_runtime_version"><code><a href="#flag--java_runtime_version">--java_runtime_version</a>=&lt;a string&gt</code> default: "local_jdk"</dt>
<dd>
The Java runtime version
</dd>
<dt id="flag--javacopt"><code><a href="#flag--javacopt">--javacopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to javac.
</dd>
<dt id="flag--jvmopt"><code><a href="#flag--jvmopt">--jvmopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the Java VM. These options will get added to the VM startup options of each java_binary target.
</dd>
<dt id="flag--legacy_main_dex_list_generator"><code><a href="#flag--legacy_main_dex_list_generator">--legacy_main_dex_list_generator</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.
</dd>
<dt id="flag--local_termination_grace_seconds"><code><a href="#flag--local_termination_grace_seconds">--local_termination_grace_seconds</a>=&lt;an integer&gt</code> default: "15"</dt>
<dd>
Time to wait between terminating a local process due to timeout and forcefully shutting it down.
</dd>
<dt id="flag--optimizing_dexer"><code><a href="#flag--optimizing_dexer">--optimizing_dexer</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies a binary to use to do dexing without sharding.
</dd>
<dt id="flag--package_path"><code><a href="#flag--package_path">--package_path</a>=&lt;colon-separated list of options&gt</code> default: "%workspace%"</dt>
<dd>
A colon-separated list of where to look for packages. Elements beginning with &#39;%workspace%&#39; are relative to the enclosing workspace. If omitted or empty, the default is the output of &#39;bazel info default-package-path&#39;.
</dd>
<dt id="flag--plugin"><code><a href="#flag--plugin">--plugin</a>=&lt;a build target label&gt</code> multiple uses are accumulated</dt>
<dd>
Plugins to use in the build. Currently works with java_plugin.
</dd>
<dt id="flag--proguard_top"><code><a href="#flag--proguard_top">--proguard_top</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies which version of ProGuard to use for code removal when building a Java binary.
</dd>
<dt id="flag--proto_compiler"><code><a href="#flag--proto_compiler">--proto_compiler</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:protoc"</dt>
<dd>
The label of the proto-compiler.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_cc"><code><a href="#flag--proto_toolchain_for_cc">--proto_toolchain_for_cc</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:cc_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile C++ protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_j2objc"><code><a href="#flag--proto_toolchain_for_j2objc">--proto_toolchain_for_j2objc</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/j2objc:j2objc_proto_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile j2objc protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_java"><code><a href="#flag--proto_toolchain_for_java">--proto_toolchain_for_java</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:java_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile Java protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_javalite"><code><a href="#flag--proto_toolchain_for_javalite">--proto_toolchain_for_javalite</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:javalite_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile JavaLite protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--protocopt"><code><a href="#flag--protocopt">--protocopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the protobuf compiler.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--runs_per_test_detects_flakes"><code><a href="#flag--runs_per_test_detects_flakes">--[no]runs_per_test_detects_flakes</a></code> default: "false"</dt>
<dd>
If true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.
</dd>
<dt id="flag--shell_executable"><code><a href="#flag--shell_executable">--shell_executable</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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:/tools/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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--show_loading_progress"><code><a href="#flag--show_loading_progress">--[no]show_loading_progress</a></code> default: "true"</dt>
<dd>
If enabled, causes Bazel to print &quot;Loading package:&quot; messages.
</dd>
<dt id="flag--test_arg"><code><a href="#flag--test_arg">--test_arg</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;bazel test&#39; command.
</dd>
<dt id="flag--test_filter"><code><a href="#flag--test_filter">--test_filter</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--test_lang_filters"><code><a href="#flag--test_lang_filters">--test_lang_filters</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
Specifies a comma-separated list of test languages. Each language can be optionally preceded with &#39;-&#39; 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 &#39;cc&#39;, &#39;java&#39;, &#39;py&#39;, etc. This option affects --build_tests_only behavior and the test command.
</dd>
<dt id="flag--test_result_expiration"><code><a href="#flag--test_result_expiration">--test_result_expiration</a>=&lt;an integer&gt</code> default: "-1"</dt>
<dd>
This option is deprecated and has no effect.
</dd>
<dt id="flag--test_runner_fail_fast"><code><a href="#flag--test_runner_fail_fast">--[no]test_runner_fail_fast</a></code> default: "false"</dt>
<dd>
Forwards fail fast option to the test runner. The test runner should stop execution upon first failure.
</dd>
<dt id="flag--test_sharding_strategy"><code><a href="#flag--test_sharding_strategy">--test_sharding_strategy</a>=&lt;explicit, disabled or forced=k where k is the number of shards to enforce&gt</code> default: "explicit"</dt>
<dd>
Specify strategy for test sharding: &#39;explicit&#39; to only use sharding if the &#39;shard_count&#39; BUILD attribute is present. &#39;disabled&#39; to never use test sharding. &#39;forced=k&#39; to enforce &#39;k&#39; shards for testing regardless of the &#39;shard_count&#39; BUILD attribute.
</dd>
<dt id="flag--test_size_filters"><code><a href="#flag--test_size_filters">--test_size_filters</a>=&lt;comma-separated list of values: small, medium, large or enormous&gt</code> default: ""</dt>
<dd>
Specifies a comma-separated list of test sizes. Each size can be optionally preceded with &#39;-&#39; 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.
</dd>
<dt id="flag--test_tag_filters"><code><a href="#flag--test_tag_filters">--test_tag_filters</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
Specifies a comma-separated list of test tags. Each tag can be optionally preceded with &#39;-&#39; 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.
</dd>
<dt id="flag--test_timeout_filters"><code><a href="#flag--test_timeout_filters">--test_timeout_filters</a>=&lt;comma-separated list of values: short, moderate, long or eternal&gt</code> default: ""</dt>
<dd>
Specifies a comma-separated list of test timeouts. Each timeout can be optionally preceded with &#39;-&#39; 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.
</dd>
<dt id="flag--tool_java_language_version"><code><a href="#flag--tool_java_language_version">--tool_java_language_version</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The Java language version used to execute the tools that are needed during a build
</dd>
<dt id="flag--tool_java_runtime_version"><code><a href="#flag--tool_java_runtime_version">--tool_java_runtime_version</a>=&lt;a string&gt</code> default: "remotejdk_11"</dt>
<dd>
The Java runtime version used to execute tools during the build
</dd>
<dt id="flag--use_ijars"><code><a href="#flag--use_ijars">--[no]use_ijars</a></code> default: "true"</dt>
<dd>
If enabled, this option causes Java compilation to use interface jars. This will result in faster incremental compilation, but error messages can be different.
</dd>
</dl>

<h2><a name="canonicalize-flags">Canonicalize-flags Options</a></h2>
<p>Inherits all options from <a href="#build">build</a>.</p>

<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl></dl>
<dl>Options that control the output of the command:
<dt id="flag--canonicalize_policy"><code><a href="#flag--canonicalize_policy">--[no]canonicalize_policy</a></code> default: "false"</dt>
<dd>
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 &#39;build&#39;.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--experimental_include_default_values"><code><a href="#flag--experimental_include_default_values">--[no]experimental_include_default_values</a></code> default: "false"</dt>
<dd>
Whether Starlark options set to their default values are included in the output.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
<dt id="flag--incompatible_config_setting_private_default_visibility"><code><a href="#flag--incompatible_config_setting_private_default_visibility">--[no]incompatible_config_setting_private_default_visibility</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enforce_config_setting_visibility"><code><a href="#flag--incompatible_enforce_config_setting_visibility">--[no]incompatible_enforce_config_setting_visibility</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--for_command"><code><a href="#flag--for_command">--for_command</a>=&lt;a string&gt</code> default: "build"</dt>
<dd>
The command for which the options should be canonicalized.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--invocation_policy"><code><a href="#flag--invocation_policy">--invocation_policy</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
Applies an invocation policy to the options to be canonicalized.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--deleted_packages"><code><a href="#flag--deleted_packages">--deleted_packages</a>=&lt;comma-separated list of package names&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;x/y&#39; of an existing package &#39;x&#39;.  For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label &#39;//x:y/z&#39; if that is still provided by another package_path entry.  Specifying --deleted_packages x/y avoids this problem.
</dd>
<dt id="flag--fetch"><code><a href="#flag--fetch">--[no]fetch</a></code> default: "true"</dt>
<dd>
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.
</dd>
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--package_path"><code><a href="#flag--package_path">--package_path</a>=&lt;colon-separated list of options&gt</code> default: "%workspace%"</dt>
<dd>
A colon-separated list of where to look for packages. Elements beginning with &#39;%workspace%&#39; are relative to the enclosing workspace. If omitted or empty, the default is the output of &#39;bazel info default-package-path&#39;.
</dd>
<dt id="flag--show_loading_progress"><code><a href="#flag--show_loading_progress">--[no]show_loading_progress</a></code> default: "true"</dt>
<dd>
If enabled, causes Bazel to print &quot;Loading package:&quot; messages.
</dd>
</dl>

<h2><a name="clean">Clean Options</a></h2>
<p>Inherits all options from <a href="#build">build</a>.</p>

<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl></dl>
<dl>Options that control the output of the command:
<dt id="flag--async"><code><a href="#flag--async">--[no]async</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--expunge"><code><a href="#flag--expunge">--[no]expunge</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--expunge_async"><code><a href="#flag--expunge_async">--expunge_async</a></code></dt>
<dd>
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.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--expunge">--expunge</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--async">--async</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
</dl>

<h2><a name="config">Config Options</a></h2>
<h2><a name="coverage">Coverage Options</a></h2>
<p>Inherits all options from <a href="#test">test</a>.</p>

<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
</dl>

<h2><a name="cquery">Cquery Options</a></h2>
<p>Inherits all options from <a href="#test">test</a>.</p>

<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
</dl>
<dl></dl>
<dl>Options relating to query output and semantics:
<dt id="flag--aspect_deps"><code><a href="#flag--aspect_deps">--aspect_deps</a>=&lt;off, conservative or precise&gt</code> default: "conservative"</dt>
<dd>
How to resolve aspect dependencies when the output format is one of {xml,proto,record}. &#39;off&#39; means no aspect dependencies are resolved, &#39;conservative&#39; (the default) means all declared aspect dependencies are added regardless of whether they are given the rule class of direct dependencies, &#39;precise&#39; 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 &#39;bazel query&#39;.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--consistent_labels"><code><a href="#flag--consistent_labels">--[no]consistent_labels</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--experimental_explicit_aspects"><code><a href="#flag--experimental_explicit_aspects">--[no]experimental_explicit_aspects</a></code> default: "false"</dt>
<dd>
aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--graph:factored"><code><a href="#flag--graph:factored">--[no]graph:factored</a></code> default: "true"</dt>
<dd>
If true, then the graph will be emitted &#39;factored&#39;, i.e. topologically-equivalent nodes will be merged together and their labels concatenated. This option is only applicable to --output=graph.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--graph:node_limit"><code><a href="#flag--graph:node_limit">--graph:node_limit</a>=&lt;an integer&gt</code> default: "512"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--implicit_deps"><code><a href="#flag--implicit_deps">--[no]implicit_deps</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--include_aspects"><code><a href="#flag--include_aspects">--[no]include_aspects</a></code> default: "true"</dt>
<dd>
aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--incompatible_package_group_includes_double_slash"><code><a href="#flag--incompatible_package_group_includes_double_slash">--[no]incompatible_package_group_includes_double_slash</a></code> default: "true"</dt>
<dd>
If enabled, when outputting package_group&#39;s `packages` attribute, the leading `//` will not be omitted.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--infer_universe_scope"><code><a href="#flag--infer_universe_scope">--[no]infer_universe_scope</a></code> default: "false"</dt>
<dd>
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&#39;s value is ignored. Note: this option applies only to `query` (i.e. not `cquery`).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--line_terminator_null"><code><a href="#flag--line_terminator_null">--[no]line_terminator_null</a></code> default: "false"</dt>
<dd>
Whether each format is terminated with \0 instead of newline.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--nodep_deps"><code><a href="#flag--nodep_deps">--[no]nodep_deps</a></code> default: "true"</dt>
<dd>
If enabled, deps from &quot;nodep&quot; attributes will be included in the dependency graph over which the query operates. A common example of a &quot;nodep&quot; attribute is &quot;visibility&quot;. Run and parse the output of `info build-language` to learn about all the &quot;nodep&quot; attributes in the build language.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--output"><code><a href="#flag--output">--output</a>=&lt;a string&gt</code> default: "label"</dt>
<dd>
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 &#39;transitions&#39;, you also have to specify the --transitions=(lite|full) option.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--output_file"><code><a href="#flag--output_file">--output_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
When specified, query results will be written directly to this file, and nothing will be printed to Bazel&#39;s standard output stream (stdout). In benchmarks, this is generally faster than &lt;code&gt;bazel query &amp;gt; file&lt;/code&gt;.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:default_values"><code><a href="#flag--proto:default_values">--[no]proto:default_values</a></code> default: "true"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:definition_stack"><code><a href="#flag--proto:definition_stack">--[no]proto:definition_stack</a></code> default: "false"</dt>
<dd>
Populate the definition_stack proto field, which records for each rule instance the Starlark call stack at the moment the rule&#39;s class was defined.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:flatten_selects"><code><a href="#flag--proto:flatten_selects">--[no]proto:flatten_selects</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--proto:include_attribute_source_aspects"><code><a href="#flag--proto:include_attribute_source_aspects">--[no]proto:include_attribute_source_aspects</a></code> default: "false"</dt>
<dd>
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).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:include_configurations"><code><a href="#flag--proto:include_configurations">--[no]proto:include_configurations</a></code> default: "true"</dt>
<dd>
if enabled, proto output will include information about configurations. When disabled,cquery proto output format resembles query output format.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--proto:include_synthetic_attribute_hash"><code><a href="#flag--proto:include_synthetic_attribute_hash">--[no]proto:include_synthetic_attribute_hash</a></code> default: "false"</dt>
<dd>
Whether or not to calculate and populate the $internal_attr_hash attribute.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:instantiation_stack"><code><a href="#flag--proto:instantiation_stack">--[no]proto:instantiation_stack</a></code> default: "false"</dt>
<dd>
Populate the instantiation call stack of each rule. Note that this requires the stack to be present
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:locations"><code><a href="#flag--proto:locations">--[no]proto:locations</a></code> default: "true"</dt>
<dd>
Whether to output location information in proto output at all.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:output_rule_attrs"><code><a href="#flag--proto:output_rule_attrs">--proto:output_rule_attrs</a>=&lt;comma-separated list of options&gt</code> default: "all"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:rule_inputs_and_outputs"><code><a href="#flag--proto:rule_inputs_and_outputs">--[no]proto:rule_inputs_and_outputs</a></code> default: "true"</dt>
<dd>
Whether or not to populate the rule_input and rule_output fields.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--query_file"><code><a href="#flag--query_file">--query_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--relative_locations"><code><a href="#flag--relative_locations">--[no]relative_locations</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--show_config_fragments"><code><a href="#flag--show_config_fragments">--show_config_fragments</a>=&lt;off, direct or transitive&gt</code> default: "off"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--starlark:expr"><code><a href="#flag--starlark:expr">--starlark:expr</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
A Starlark expression to format each configured target in cquery&#39;s --output=starlark mode. The configured target is bound to &#39;target&#39;. If neither --starlark:expr nor --starlark:file is specified, this option will default to &#39;str(target.label)&#39;. It is an error to specify both --starlark:expr and --starlark:file.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--starlark:file"><code><a href="#flag--starlark:file">--starlark:file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The name of a file that defines a Starlark function called &#39;format&#39;, 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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--tool_deps"><code><a href="#flag--tool_deps">--[no]tool_deps</a></code> default: "true"</dt>
<dd>
Query: If disabled, dependencies on &#39;exec configuration&#39; will not be included in the dependency graph over which the query operates. An &#39;exec configuration&#39; dependency edge, such as the one from any &#39;proto_library&#39; rule to the Protocol Compiler, usually points to a tool executed during the build rather than a part of the same &#39;target&#39; 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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--transitions"><code><a href="#flag--transitions">--transitions</a>=&lt;full, lite or none&gt</code> default: "none"</dt>
<dd>
The format in which cquery will print transition information.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--universe_scope"><code><a href="#flag--universe_scope">--universe_scope</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
</dl>

<dl></dl>
<dl>Options that control build execution:
<dt id="flag--experimental_inprocess_symlink_creation"><code><a href="#flag--experimental_inprocess_symlink_creation">--[no]experimental_inprocess_symlink_creation</a></code> default: "false"</dt>
<dd>
Whether to make direct file system calls to create symlink trees
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_persistent_aar_extractor"><code><a href="#flag--experimental_persistent_aar_extractor">--[no]experimental_persistent_aar_extractor</a></code> default: "false"</dt>
<dd>
Enable persistent aar extractor by using workers.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_remotable_source_manifests"><code><a href="#flag--experimental_remotable_source_manifests">--[no]experimental_remotable_source_manifests</a></code> default: "false"</dt>
<dd>
Whether to make source manifest actions remotable
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_split_coverage_postprocessing"><code><a href="#flag--experimental_split_coverage_postprocessing">--[no]experimental_split_coverage_postprocessing</a></code> default: "false"</dt>
<dd>
If true, then Bazel will run coverage postprocessing for test in a new spawn.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_strict_fileset_output"><code><a href="#flag--experimental_strict_fileset_output">--[no]experimental_strict_fileset_output</a></code> default: "false"</dt>
<dd>
If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--incompatible_disallow_unsound_directory_outputs"><code><a href="#flag--incompatible_disallow_unsound_directory_outputs">--[no]incompatible_disallow_unsound_directory_outputs</a></code> default: "true"</dt>
<dd>
If set, it is an error for an action to materialize an output file as a directory. Does not affect source directories. See https://github.com/bazelbuild/bazel/issues/18646.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_modify_execution_info_additive"><code><a href="#flag--incompatible_modify_execution_info_additive">--[no]incompatible_modify_execution_info_additive</a></code> default: "false"</dt>
<dd>
When enabled, passing multiple --modify_execution_info flags is additive. When disabled, only the last flag is taken into account.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--modify_execution_info"><code><a href="#flag--modify_execution_info">--modify_execution_info</a>=&lt;regex=[+-]key,regex=[+-]key,...&gt</code> multiple uses are accumulated</dt>
<dd>
Add or remove keys from an action&#39;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: &quot;regex=[+-]key,regex=[+-]key,...&quot;.

Examples:
  &#39;.*=+x,.*=-y,.*=+z&#39; adds &#39;x&#39; and &#39;z&#39; to, and removes &#39;y&#39; from, the execution info for all actions.
  &#39;Genrule=+requires-x&#39; adds &#39;requires-x&#39; to the execution info for all Genrule actions.
  &#39;(?!Genrule).*=-requires-x&#39; removes &#39;requires-x&#39; from the execution info for all non-Genrule actions.

<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--persistent_android_dex_desugar"><code><a href="#flag--persistent_android_dex_desugar">--persistent_android_dex_desugar</a></code></dt>
<dd>
Enable persistent Android dex and desugar actions by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_android_dex_desugar">--internal_persistent_android_dex_desugar</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=Desugar=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=DexBuilder=worker</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_android_resource_processor"><code><a href="#flag--persistent_android_resource_processor">--persistent_android_resource_processor</a></code></dt>
<dd>
Enable persistent Android resource processor by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_busybox_tools">--internal_persistent_busybox_tools</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AaptPackage=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceParser=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceValidator=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceCompiler=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=RClassGenerator=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceLink=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidAapt2=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidAssetMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidCompiledResourceMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=ManifestMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidManifestMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=Aapt2Optimize=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AARGenerator=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=ProcessDatabinding=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=GenerateDataBindingBaseClasses=worker</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_multiplex_android_dex_desugar"><code><a href="#flag--persistent_multiplex_android_dex_desugar">--persistent_multiplex_android_dex_desugar</a></code></dt>
<dd>
Enable persistent multiplexed Android dex and desugar actions by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_android_dex_desugar">--persistent_android_dex_desugar</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_multiplex_android_dex_desugar">--internal_persistent_multiplex_android_dex_desugar</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_multiplex_android_resource_processor"><code><a href="#flag--persistent_multiplex_android_resource_processor">--persistent_multiplex_android_resource_processor</a></code></dt>
<dd>
Enable persistent multiplexed Android resource processor by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_android_resource_processor">--persistent_android_resource_processor</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AaptPackage=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceParser=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceValidator=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceCompiler=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=RClassGenerator=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceLink=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidAapt2=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidAssetMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidCompiledResourceMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=ManifestMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidManifestMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=Aapt2Optimize=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AARGenerator=+supports-multiplex-workers</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_multiplex_android_tools"><code><a href="#flag--persistent_multiplex_android_tools">--persistent_multiplex_android_tools</a></code></dt>
<dd>
Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_multiplex_busybox_tools">--internal_persistent_multiplex_busybox_tools</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_multiplex_android_resource_processor">--persistent_multiplex_android_resource_processor</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_multiplex_android_dex_desugar">--persistent_multiplex_android_dex_desugar</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--use_target_platform_for_tests"><code><a href="#flag--use_target_platform_for_tests">--[no]use_target_platform_for_tests</a></code> default: "false"</dt>
<dd>
If true, then Bazel will use the target platform for running tests rather than the test exec group.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
</dl>
<dl>Options that configure the toolchain used for action execution:
<dt id="flag--android_compiler"><code><a href="#flag--android_compiler">--android_compiler</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The Android target compiler.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_crosstool_top"><code><a href="#flag--android_crosstool_top">--android_crosstool_top</a>=&lt;a build target label&gt</code> default: "//external:android/crosstool"</dt>
<dd>
The location of the C++ compiler used for Android builds.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_grte_top"><code><a href="#flag--android_grte_top">--android_grte_top</a>=&lt;a label&gt</code> default: see description</dt>
<dd>
The Android target grte_top.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_manifest_merger"><code><a href="#flag--android_manifest_merger">--android_manifest_merger</a>=&lt;legacy, android or force_android&gt</code> default: "android"</dt>
<dd>
Selects the manifest merger to use for android_binary rules. Flag to help thetransition to the Android manifest merger from the legacy merger.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_platforms"><code><a href="#flag--android_platforms">--android_platforms</a>=&lt;a build target label&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_sdk"><code><a href="#flag--android_sdk">--android_sdk</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/android:sdk"</dt>
<dd>
Specifies Android SDK/platform that is used to build Android applications.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--apple_crosstool_top"><code><a href="#flag--apple_crosstool_top">--apple_crosstool_top</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/cpp:toolchain"</dt>
<dd>
The label of the crosstool package to be used in Apple and Objc rules and their dependencies.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--cc_output_directory_tag"><code><a href="#flag--cc_output_directory_tag">--cc_output_directory_tag</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
Specifies a suffix to be added to the configuration directory.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--compiler"><code><a href="#flag--compiler">--compiler</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The C++ compiler to use for compiling the target.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--coverage_output_generator"><code><a href="#flag--coverage_output_generator">--coverage_output_generator</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/test:lcov_merger"</dt>
<dd>
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 &#39;//tools/test:lcov_merger&#39;.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--coverage_report_generator"><code><a href="#flag--coverage_report_generator">--coverage_report_generator</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/test:coverage_report_generator"</dt>
<dd>
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 &#39;//tools/test:coverage_report_generator&#39;.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--coverage_support"><code><a href="#flag--coverage_support">--coverage_support</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/test:coverage_support"</dt>
<dd>
Location of support files that are required on the inputs of every test action that collects code coverage. Defaults to &#39;//tools/test:coverage_support&#39;.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--crosstool_top"><code><a href="#flag--crosstool_top">--crosstool_top</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/cpp:toolchain"</dt>
<dd>
The label of the crosstool package to be used for compiling C++ code.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--custom_malloc"><code><a href="#flag--custom_malloc">--custom_malloc</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies a custom malloc implementation. This setting overrides malloc attributes in build rules.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_add_exec_constraints_to_targets"><code><a href="#flag--experimental_add_exec_constraints_to_targets">--experimental_add_exec_constraints_to_targets</a>=&lt;a &#39;&lt;RegexFilter&gt;=&lt;label1&gt;[,&lt;label2&gt;,...]&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;x86_64&#39; to any target under //demo except for those whose name contains &#39;test&#39;.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_include_xcode_execution_requirements"><code><a href="#flag--experimental_include_xcode_execution_requirements">--[no]experimental_include_xcode_execution_requirements</a></code> default: "false"</dt>
<dd>
If set, add a &quot;requires-xcode:{version}&quot; execution requirement to every Xcode action.  If the xcode version has a hyphenated label,  also add a &quot;requires-xcode-label:{version_label}&quot; execution requirement.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_prefer_mutual_xcode"><code><a href="#flag--experimental_prefer_mutual_xcode">--[no]experimental_prefer_mutual_xcode</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--extra_execution_platforms"><code><a href="#flag--extra_execution_platforms">--extra_execution_platforms</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--extra_toolchains"><code><a href="#flag--extra_toolchains">--extra_toolchains</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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().
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--grte_top"><code><a href="#flag--grte_top">--grte_top</a>=&lt;a label&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_compiler"><code><a href="#flag--host_compiler">--host_compiler</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The C++ compiler to use for host compilation. It is ignored if --host_crosstool_top is not set.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--host_crosstool_top"><code><a href="#flag--host_crosstool_top">--host_crosstool_top</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
By default, the --crosstool_top and --compiler options are also used for the exec configuration. If this flag is provided, Bazel uses the default libc and compiler for the given crosstool_top.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_grte_top"><code><a href="#flag--host_grte_top">--host_grte_top</a>=&lt;a label&gt</code> default: see description</dt>
<dd>
If specified, this setting overrides the libc top-level directory (--grte_top) for the exec configuration.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_platform"><code><a href="#flag--host_platform">--host_platform</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools:host_platform"</dt>
<dd>
The label of a platform rule that describes the host system.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--incompatible_dont_enable_host_nonhost_crosstool_features"><code><a href="#flag--incompatible_dont_enable_host_nonhost_crosstool_features">--[no]incompatible_dont_enable_host_nonhost_crosstool_features</a></code> default: "true"</dt>
<dd>
If true, Bazel will not enable &#39;host&#39; and &#39;nonhost&#39; features in the c++ toolchain (see https://github.com/bazelbuild/bazel/issues/7407 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enable_android_toolchain_resolution"><code><a href="#flag--incompatible_enable_android_toolchain_resolution">--[no]incompatible_enable_android_toolchain_resolution</a></code> default: "true"</dt>
<dd>
Use toolchain resolution to select the Android SDK for android rules (Starlark and native)
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enable_apple_toolchain_resolution"><code><a href="#flag--incompatible_enable_apple_toolchain_resolution">--[no]incompatible_enable_apple_toolchain_resolution</a></code> default: "false"</dt>
<dd>
Use toolchain resolution to select the Apple SDK for apple rules (Starlark and native)
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_make_thinlto_command_lines_standalone"><code><a href="#flag--incompatible_make_thinlto_command_lines_standalone">--[no]incompatible_make_thinlto_command_lines_standalone</a></code> default: "true"</dt>
<dd>
If true, Bazel will not reuse C++ link action command lines for lto indexing command lines (see https://github.com/bazelbuild/bazel/issues/6791 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_remove_legacy_whole_archive"><code><a href="#flag--incompatible_remove_legacy_whole_archive">--[no]incompatible_remove_legacy_whole_archive</a></code> default: "true"</dt>
<dd>
If true, Bazel will not link library dependencies as whole archive by default (see https://github.com/bazelbuild/bazel/issues/7362 for migration instructions).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_require_ctx_in_configure_features"><code><a href="#flag--incompatible_require_ctx_in_configure_features">--[no]incompatible_require_ctx_in_configure_features</a></code> default: "true"</dt>
<dd>
If true, Bazel will require &#39;ctx&#39; parameter in to cc_common.configure_features (see https://github.com/bazelbuild/bazel/issues/7793 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--interface_shared_objects"><code><a href="#flag--interface_shared_objects">--[no]interface_shared_objects</a></code> default: "true"</dt>
<dd>
Use interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ios_sdk_version"><code><a href="#flag--ios_sdk_version">--ios_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the iOS SDK to use to build iOS applications. If unspecified, uses default iOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--macos_sdk_version"><code><a href="#flag--macos_sdk_version">--macos_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the macOS SDK to use to build macOS applications. If unspecified, uses default macOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--minimum_os_version"><code><a href="#flag--minimum_os_version">--minimum_os_version</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The minimum OS version which your compilation targets.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--platform_mappings"><code><a href="#flag--platform_mappings">--platform_mappings</a>=&lt;a relative path&gt</code> default: ""</dt>
<dd>
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 &#39;platform_mappings&#39; (a file directly under the workspace root).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--platforms"><code><a href="#flag--platforms">--platforms</a>=&lt;a build target label&gt</code> default: ""</dt>
<dd>
The labels of the platform rules describing the target platforms for the current command.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--python2_path"><code><a href="#flag--python2_path">--python2_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Deprecated, no-op. Disabled by `--incompatible_use_python_toolchains`.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a>, <a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--python3_path"><code><a href="#flag--python3_path">--python3_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Deprecated, no-op. Disabled by `--incompatible_use_python_toolchains`.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a>, <a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--python_path"><code><a href="#flag--python_path">--python_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The absolute path of the Python interpreter invoked to run Python targets on the target platform. Deprecated; disabled by --incompatible_use_python_toolchains.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--python_top"><code><a href="#flag--python_top">--python_top</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--tvos_sdk_version"><code><a href="#flag--tvos_sdk_version">--tvos_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the tvOS SDK to use to build tvOS applications. If unspecified, uses default tvOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--watchos_sdk_version"><code><a href="#flag--watchos_sdk_version">--watchos_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses default watchOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--xcode_version"><code><a href="#flag--xcode_version">--xcode_version</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
If specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--xcode_version_config"><code><a href="#flag--xcode_version_config">--xcode_version_config</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/cpp:host_xcodes"</dt>
<dd>
The label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that control the output of the command:
<dt id="flag--apple_generate_dsym"><code><a href="#flag--apple_generate_dsym">--[no]apple_generate_dsym</a></code> default: "false"</dt>
<dd>
Whether to generate debug symbol(.dSYM) file(s).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--build_runfile_links"><code><a href="#flag--build_runfile_links">--[no]build_runfile_links</a></code> default: "true"</dt>
<dd>
If true, build runfiles symlink forests for all targets.  If false, write them only when required by a local action, test or run command.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_runfile_manifests"><code><a href="#flag--build_runfile_manifests">--[no]build_runfile_manifests</a></code> default: "true"</dt>
<dd>
If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_test_dwp"><code><a href="#flag--build_test_dwp">--[no]build_test_dwp</a></code> default: "false"</dt>
<dd>
If enabled, when building C++ tests statically and with fission the .dwp file  for the test binary will be automatically built as well.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cc_proto_library_header_suffixes"><code><a href="#flag--cc_proto_library_header_suffixes">--cc_proto_library_header_suffixes</a>=&lt;comma-separated set of options&gt</code> default: ".pb.h"</dt>
<dd>
Sets the suffixes of header files that a cc_proto_library creates.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--cc_proto_library_source_suffixes"><code><a href="#flag--cc_proto_library_source_suffixes">--cc_proto_library_source_suffixes</a>=&lt;comma-separated set of options&gt</code> default: ".pb.cc"</dt>
<dd>
Sets the suffixes of source files that a cc_proto_library creates.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_proto_descriptor_sets_include_source_info"><code><a href="#flag--experimental_proto_descriptor_sets_include_source_info">--[no]experimental_proto_descriptor_sets_include_source_info</a></code> default: "false"</dt>
<dd>
Run extra actions for alternative Java api versions in a proto_library.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_proto_extra_actions"><code><a href="#flag--experimental_proto_extra_actions">--[no]experimental_proto_extra_actions</a></code> default: "false"</dt>
<dd>
Run extra actions for alternative Java api versions in a proto_library.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_save_feature_state"><code><a href="#flag--experimental_save_feature_state">--[no]experimental_save_feature_state</a></code> default: "false"</dt>
<dd>
Save the state of enabled and requested feautres as an output of compilation.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--fission"><code><a href="#flag--fission">--fission</a>=&lt;a set of compilation modes&gt</code> default: "no"</dt>
<dd>
Specifies which compilation modes use fission for C++ compilations and links.  May be any combination of {&#39;fastbuild&#39;, &#39;dbg&#39;, &#39;opt&#39;} or the special values &#39;yes&#39;  to enable all modes and &#39;no&#39; to disable all modes.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--incompatible_always_include_files_in_data"><code><a href="#flag--incompatible_always_include_files_in_data">--[no]incompatible_always_include_files_in_data</a></code> default: "true"</dt>
<dd>
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).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--legacy_external_runfiles"><code><a href="#flag--legacy_external_runfiles">--[no]legacy_external_runfiles</a></code> default: "true"</dt>
<dd>
If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--objc_generate_linkmap"><code><a href="#flag--objc_generate_linkmap">--[no]objc_generate_linkmap</a></code> default: "false"</dt>
<dd>
Specifies whether to generate a linkmap file.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--save_temps"><code><a href="#flag--save_temps">--[no]save_temps</a></code> default: "false"</dt>
<dd>
If set, temporary outputs from gcc will be saved.  These include .s files (assembler code), .i files (preprocessed C) and .ii files (preprocessed C++).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options that let the user configure the intended output, affecting its value, as opposed to its existence:
<dt id="flag--action_env"><code><a href="#flag--action_env">--action_env</a>=&lt;a &#39;name=value&#39; assignment with an optional value part&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--android_cpu"><code><a href="#flag--android_cpu">--android_cpu</a>=&lt;a string&gt</code> default: "armeabi-v7a"</dt>
<dd>
The Android target CPU.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_databinding_use_androidx"><code><a href="#flag--android_databinding_use_androidx">--[no]android_databinding_use_androidx</a></code> default: "true"</dt>
<dd>
Generate AndroidX-compatible data-binding files. This is only used with databinding v2. This flag is a no-op.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--android_databinding_use_v3_4_args"><code><a href="#flag--android_databinding_use_v3_4_args">--[no]android_databinding_use_v3_4_args</a></code> default: "true"</dt>
<dd>
Use android databinding v2 with 3.4.0 argument. This flag is a no-op.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--android_dynamic_mode"><code><a href="#flag--android_dynamic_mode">--android_dynamic_mode</a>=&lt;off, default or fully&gt</code> default: "off"</dt>
<dd>
Determines whether C++ deps of Android rules will be linked dynamically when a cc_binary does not explicitly create a shared library. &#39;default&#39; means bazel will choose whether to link dynamically.  &#39;fully&#39; means all libraries will be linked dynamically. &#39;off&#39; means that all libraries will be linked in mostly static mode.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--android_manifest_merger_order"><code><a href="#flag--android_manifest_merger_order">--android_manifest_merger_order</a>=&lt;alphabetical, alphabetical_by_configuration or dependency&gt</code> default: "alphabetical"</dt>
<dd>
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&#39;s manifest coming before the manifests of its dependencies.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--android_resource_shrinking"><code><a href="#flag--android_resource_shrinking">--[no]android_resource_shrinking</a></code> default: "false"</dt>
<dd>
Enables resource shrinking for android_binary APKs that use ProGuard.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--build_python_zip"><code><a href="#flag--build_python_zip">--[no]build_python_zip</a></code> default: "auto"</dt>
<dd>
Build python executable zip; on on Windows, off on other platforms
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--catalyst_cpus"><code><a href="#flag--catalyst_cpus">--catalyst_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple Catalyst binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--collect_code_coverage"><code><a href="#flag--collect_code_coverage">--[no]collect_code_coverage</a></code> default: "false"</dt>
<dd>
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 - &#39;bazel coverage&#39; command should be used instead.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--compilation_mode"><code><a href="#flag--compilation_mode">--compilation_mode</a>=&lt;fastbuild, dbg or opt&gt</code> [<code>-c</code>] default: "fastbuild"</dt>
<dd>
Specify the mode the binary will be built in. Values: &#39;fastbuild&#39;, &#39;dbg&#39;, &#39;opt&#39;.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--conlyopt"><code><a href="#flag--conlyopt">--conlyopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to gcc when compiling C source files.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--copt"><code><a href="#flag--copt">--copt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to gcc.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cpu"><code><a href="#flag--cpu">--cpu</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The target CPU.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cs_fdo_absolute_path"><code><a href="#flag--cs_fdo_absolute_path">--cs_fdo_absolute_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cs_fdo_instrument"><code><a href="#flag--cs_fdo_instrument">--cs_fdo_instrument</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cs_fdo_profile"><code><a href="#flag--cs_fdo_profile">--cs_fdo_profile</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The cs_fdo_profile representing the context sensitive profile to be used for optimization.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cxxopt"><code><a href="#flag--cxxopt">--cxxopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to gcc when compiling C++ source files.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--define"><code><a href="#flag--define">--define</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
Each --define option specifies an assignment for a build variable.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--dynamic_mode"><code><a href="#flag--dynamic_mode">--dynamic_mode</a>=&lt;off, default or fully&gt</code> default: "default"</dt>
<dd>
Determines whether C++ binaries will be linked dynamically.  &#39;default&#39; means Bazel will choose whether to link dynamically.  &#39;fully&#39; means all libraries will be linked dynamically. &#39;off&#39; means that all libraries will be linked in mostly static mode.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--enable_fdo_profile_absolute_path"><code><a href="#flag--enable_fdo_profile_absolute_path">--[no]enable_fdo_profile_absolute_path</a></code> default: "true"</dt>
<dd>
If set, use of fdo_absolute_profile_path will raise an error.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--enable_runfiles"><code><a href="#flag--enable_runfiles">--[no]enable_runfiles</a></code> default: "auto"</dt>
<dd>
Enable runfiles symlink tree; By default, it&#39;s off on Windows, on on other platforms.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_action_listener"><code><a href="#flag--experimental_action_listener">--experimental_action_listener</a>=&lt;a build target label&gt</code> multiple uses are accumulated</dt>
<dd>
Deprecated in favor of aspects. Use action_listener to attach an extra_action to existing build actions.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_android_compress_java_resources"><code><a href="#flag--experimental_android_compress_java_resources">--[no]experimental_android_compress_java_resources</a></code> default: "false"</dt>
<dd>
Compress Java resources in APKs
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_android_databinding_v2"><code><a href="#flag--experimental_android_databinding_v2">--[no]experimental_android_databinding_v2</a></code> default: "true"</dt>
<dd>
Use android databinding v2. This flag is a no-op.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_android_resource_shrinking"><code><a href="#flag--experimental_android_resource_shrinking">--[no]experimental_android_resource_shrinking</a></code> default: "false"</dt>
<dd>
Enables resource shrinking for android_binary APKs that use ProGuard.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_android_rewrite_dexes_with_rex"><code><a href="#flag--experimental_android_rewrite_dexes_with_rex">--[no]experimental_android_rewrite_dexes_with_rex</a></code> default: "false"</dt>
<dd>
use rex tool to rewrite dex files
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_collect_code_coverage_for_generated_files"><code><a href="#flag--experimental_collect_code_coverage_for_generated_files">--[no]experimental_collect_code_coverage_for_generated_files</a></code> default: "false"</dt>
<dd>
If specified, Bazel will also generate collect coverage information for generated files.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_objc_fastbuild_options"><code><a href="#flag--experimental_objc_fastbuild_options">--experimental_objc_fastbuild_options</a>=&lt;comma-separated list of options&gt</code> default: "-O0,-DDEBUG=1"</dt>
<dd>
Uses these strings as objc fastbuild compiler options.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--experimental_omitfp"><code><a href="#flag--experimental_omitfp">--[no]experimental_omitfp</a></code> default: "false"</dt>
<dd>
If true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_output_paths"><code><a href="#flag--experimental_output_paths">--experimental_output_paths</a>=&lt;off, content or strip&gt</code> default: "off"</dt>
<dd>
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 &#39;supports-path-mapping&#39; to the &#39;execution_requirements&#39; dict.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_override_name_platform_in_output_dir"><code><a href="#flag--experimental_override_name_platform_in_output_dir">--experimental_override_name_platform_in_output_dir</a>=&lt;a &#39;label=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_platform_in_output_dir"><code><a href="#flag--experimental_platform_in_output_dir">--[no]experimental_platform_in_output_dir</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_use_llvm_covmap"><code><a href="#flag--experimental_use_llvm_covmap">--[no]experimental_use_llvm_covmap</a></code> default: "false"</dt>
<dd>
If specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_use_platforms_in_output_dir_legacy_heuristic"><code><a href="#flag--experimental_use_platforms_in_output_dir_legacy_heuristic">--[no]experimental_use_platforms_in_output_dir_legacy_heuristic</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--fat_apk_cpu"><code><a href="#flag--fat_apk_cpu">--fat_apk_cpu</a>=&lt;comma-separated set of options&gt</code> default: "armeabi-v7a"</dt>
<dd>
Setting this option enables fat APKs, which contain native binaries for all specified target architectures, e.g., --fat_apk_cpu=x86,armeabi-v7a. If this flag is specified, then --android_cpu is ignored for dependencies of android_binary rules.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--fat_apk_hwasan"><code><a href="#flag--fat_apk_hwasan">--[no]fat_apk_hwasan</a></code> default: "false"</dt>
<dd>
Whether to create HWASAN splits.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--fdo_instrument"><code><a href="#flag--fdo_instrument">--fdo_instrument</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--fdo_optimize"><code><a href="#flag--fdo_optimize">--fdo_optimize</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--fdo_prefetch_hints"><code><a href="#flag--fdo_prefetch_hints">--fdo_prefetch_hints</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Use cache prefetch hints.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--fdo_profile"><code><a href="#flag--fdo_profile">--fdo_profile</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The fdo_profile representing the profile to be used for optimization.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--features"><code><a href="#flag--features">--features</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--force_pic"><code><a href="#flag--force_pic">--[no]force_pic</a></code> default: "false"</dt>
<dd>
If enabled, all C++ compilations produce position-independent code (&quot;-fPIC&quot;), links prefer PIC pre-built libraries over non-PIC libraries, and links produce position-independent executables (&quot;-pie&quot;).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_action_env"><code><a href="#flag--host_action_env">--host_action_env</a>=&lt;a &#39;name=value&#39; assignment with an optional value part&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--host_compilation_mode"><code><a href="#flag--host_compilation_mode">--host_compilation_mode</a>=&lt;fastbuild, dbg or opt&gt</code> default: "opt"</dt>
<dd>
Specify the mode the tools used during the build will be built in. Values: &#39;fastbuild&#39;, &#39;dbg&#39;, &#39;opt&#39;.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--host_conlyopt"><code><a href="#flag--host_conlyopt">--host_conlyopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_copt"><code><a href="#flag--host_copt">--host_copt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the C compiler for tools built in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_cpu"><code><a href="#flag--host_cpu">--host_cpu</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The host CPU.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_cxxopt"><code><a href="#flag--host_cxxopt">--host_cxxopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to C++ compiler for tools built in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_features"><code><a href="#flag--host_features">--host_features</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_force_python"><code><a href="#flag--host_force_python">--host_force_python</a>=&lt;PY2 or PY3&gt</code> default: see description</dt>
<dd>
Overrides the Python version for the exec configuration. Can be &quot;PY2&quot; or &quot;PY3&quot;.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_linkopt"><code><a href="#flag--host_linkopt">--host_linkopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to linker when linking tools in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_macos_minimum_os"><code><a href="#flag--host_macos_minimum_os">--host_macos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible macOS version for host targets. If unspecified, uses &#39;macos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--host_per_file_copt"><code><a href="#flag--host_per_file_copt">--host_per_file_copt</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths followed by an @ and a comma separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_swiftcopt"><code><a href="#flag--host_swiftcopt">--host_swiftcopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to swiftc for exec tools.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--incompatible_auto_exec_groups"><code><a href="#flag--incompatible_auto_exec_groups">--[no]incompatible_auto_exec_groups</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_merge_genfiles_directory"><code><a href="#flag--incompatible_merge_genfiles_directory">--[no]incompatible_merge_genfiles_directory</a></code> default: "true"</dt>
<dd>
If true, the genfiles directory is folded into the bin directory.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_use_host_features"><code><a href="#flag--incompatible_use_host_features">--[no]incompatible_use_host_features</a></code> default: "true"</dt>
<dd>
If true, use --features only for the target configuration and --host_features for the exec configuration.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--instrument_test_targets"><code><a href="#flag--instrument_test_targets">--[no]instrument_test_targets</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--instrumentation_filter"><code><a href="#flag--instrumentation_filter">--instrumentation_filter</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths&gt</code> default: "-/javatests[/:],-/test/java[/:]"</dt>
<dd>
When coverage is enabled, only rules with names included by the specified regex-based filter will be instrumented. Rules prefixed with &#39;-&#39; are excluded instead. Note that only non-test rules are instrumented unless --instrument_test_targets is enabled.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ios_minimum_os"><code><a href="#flag--ios_minimum_os">--ios_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible iOS version for target simulators and devices. If unspecified, uses &#39;ios_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--ios_multi_cpus"><code><a href="#flag--ios_multi_cpus">--ios_multi_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--legacy_whole_archive"><code><a href="#flag--legacy_whole_archive">--[no]legacy_whole_archive</a></code> default: "true"</dt>
<dd>
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 &#39;-static&#39; in linkopts. This is for backwards compatibility only. A better alternative is to use alwayslink=1 where required.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--linkopt"><code><a href="#flag--linkopt">--linkopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to gcc when linking.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ltobackendopt"><code><a href="#flag--ltobackendopt">--ltobackendopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to the LTO backend step (under --features=thin_lto).
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ltoindexopt"><code><a href="#flag--ltoindexopt">--ltoindexopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to the LTO indexing step (under --features=thin_lto).
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--macos_cpus"><code><a href="#flag--macos_cpus">--macos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple macOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--macos_minimum_os"><code><a href="#flag--macos_minimum_os">--macos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible macOS version for targets. If unspecified, uses &#39;macos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--memprof_profile"><code><a href="#flag--memprof_profile">--memprof_profile</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Use memprof profile.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--objc_debug_with_GLIBCXX"><code><a href="#flag--objc_debug_with_GLIBCXX">--[no]objc_debug_with_GLIBCXX</a></code> default: "false"</dt>
<dd>
If set, and compilation mode is set to &#39;dbg&#39;, define GLIBCXX_DEBUG,  GLIBCXX_DEBUG_PEDANTIC and GLIBCPP_CONCEPT_CHECKS.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--objc_enable_binary_stripping"><code><a href="#flag--objc_enable_binary_stripping">--[no]objc_enable_binary_stripping</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--objccopt"><code><a href="#flag--objccopt">--objccopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to gcc when compiling Objective-C/C++ source files.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--per_file_copt"><code><a href="#flag--per_file_copt">--per_file_copt</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths followed by an @ and a comma separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--per_file_ltobackendopt"><code><a href="#flag--per_file_ltobackendopt">--per_file_ltobackendopt</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths followed by an @ and a comma separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--platform_suffix"><code><a href="#flag--platform_suffix">--platform_suffix</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Specifies a suffix to be added to the configuration directory.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--propeller_optimize"><code><a href="#flag--propeller_optimize">--propeller_optimize</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
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 = &quot;propeller_profile&quot;,    cc_profile = &quot;propeller_cc_profile.txt&quot;,    ld_profile = &quot;propeller_ld_profile.txt&quot;,)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
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--propeller_optimize_absolute_cc_profile"><code><a href="#flag--propeller_optimize_absolute_cc_profile">--propeller_optimize_absolute_cc_profile</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Absolute path name of cc_profile file for Propeller Optimized builds.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--propeller_optimize_absolute_ld_profile"><code><a href="#flag--propeller_optimize_absolute_ld_profile">--propeller_optimize_absolute_ld_profile</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Absolute path name of ld_profile file for Propeller Optimized builds.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--run_under"><code><a href="#flag--run_under">--run_under</a>=&lt;a prefix in front of command&gt</code> default: see description</dt>
<dd>
Prefix to insert before the executables for the &#39;test&#39; and &#39;run&#39; commands. If the value is &#39;foo -bar&#39;, and the execution command line is &#39;test_binary -baz&#39;, then the final command line is &#39;foo -bar test_binary -baz&#39;.This can also be a label to an executable target. Some examples are: &#39;valgrind&#39;, &#39;strace&#39;, &#39;strace -c&#39;, &#39;valgrind --quiet --num-callers=20&#39;, &#39;//package:target&#39;,  &#39;//package:target --options&#39;.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--share_native_deps"><code><a href="#flag--share_native_deps">--[no]share_native_deps</a></code> default: "true"</dt>
<dd>
If true, native libraries that contain identical functionality will be shared among different targets
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--stamp"><code><a href="#flag--stamp">--[no]stamp</a></code> default: "false"</dt>
<dd>
Stamp binaries with the date, username, hostname, workspace information, etc.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--strip"><code><a href="#flag--strip">--strip</a>=&lt;always, sometimes or never&gt</code> default: "sometimes"</dt>
<dd>
Specifies whether to strip binaries and shared libraries  (using &quot;-Wl,--strip-debug&quot;).  The default value of &#39;sometimes&#39; means strip iff --compilation_mode=fastbuild.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--stripopt"><code><a href="#flag--stripopt">--stripopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to strip when generating a &#39;&lt;name&gt;.stripped&#39; binary.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--swiftcopt"><code><a href="#flag--swiftcopt">--swiftcopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to Swift compilation.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--tvos_cpus"><code><a href="#flag--tvos_cpus">--tvos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple tvOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--tvos_minimum_os"><code><a href="#flag--tvos_minimum_os">--tvos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible tvOS version for target simulators and devices. If unspecified, uses &#39;tvos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--visionos_cpus"><code><a href="#flag--visionos_cpus">--visionos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple visionOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--watchos_cpus"><code><a href="#flag--watchos_cpus">--watchos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple watchOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--watchos_minimum_os"><code><a href="#flag--watchos_minimum_os">--watchos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible watchOS version for target simulators and devices. If unspecified, uses &#39;watchos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--xbinary_fdo"><code><a href="#flag--xbinary_fdo">--xbinary_fdo</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options that affect how strictly Bazel enforces valid build inputs (rule definitions,  flag combinations, etc.):
<dt id="flag--auto_cpu_environment_group"><code><a href="#flag--auto_cpu_environment_group">--auto_cpu_environment_group</a>=&lt;a build target label&gt</code> default: ""</dt>
<dd>
Declare the environment_group to use for automatically mapping cpu values to target_environment values.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--check_licenses"><code><a href="#flag--check_licenses">--[no]check_licenses</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--check_visibility"><code><a href="#flag--check_visibility">--[no]check_visibility</a></code> default: "true"</dt>
<dd>
If disabled, visibility errors in target dependencies are demoted to warnings.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--desugar_for_android"><code><a href="#flag--desugar_for_android">--[no]desugar_for_android</a></code> default: "true"</dt>
<dd>
Whether to desugar Java 8 bytecode before dexing.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--desugar_java8_libs"><code><a href="#flag--desugar_java8_libs">--[no]desugar_java8_libs</a></code> default: "false"</dt>
<dd>
Whether to include supported Java 8 libraries in apps for legacy devices.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--enforce_constraints"><code><a href="#flag--enforce_constraints">--[no]enforce_constraints</a></code> default: "true"</dt>
<dd>
Checks the environments each target is compatible with and reports errors if any target has dependencies that don&#39;t support the same environments
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--experimental_check_desugar_deps"><code><a href="#flag--experimental_check_desugar_deps">--[no]experimental_check_desugar_deps</a></code> default: "true"</dt>
<dd>
Whether to double-check correct desugaring at Android binary level.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_import_deps_checking"><code><a href="#flag--experimental_import_deps_checking">--experimental_import_deps_checking</a>=&lt;off, warning or error&gt</code> default: "OFF"</dt>
<dd>
When enabled, check whether the dependencies of an aar_import are complete. This enforcement can break the build, or can just result in warnings.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_one_version_enforcement"><code><a href="#flag--experimental_one_version_enforcement">--experimental_one_version_enforcement</a>=&lt;off, warning or error&gt</code> default: "OFF"</dt>
<dd>
When enabled, enforce that a java_binary rule can&#39;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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_strict_java_deps"><code><a href="#flag--experimental_strict_java_deps">--experimental_strict_java_deps</a>=&lt;off, warn, error, strict or default&gt</code> default: "default"</dt>
<dd>
If true, checks that a Java target explicitly declares all directly used targets as dependencies.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--incompatible_check_testonly_for_output_files"><code><a href="#flag--incompatible_check_testonly_for_output_files">--[no]incompatible_check_testonly_for_output_files</a></code> default: "false"</dt>
<dd>
If enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_check_visibility_for_toolchains"><code><a href="#flag--incompatible_check_visibility_for_toolchains">--[no]incompatible_check_visibility_for_toolchains</a></code> default: "false"</dt>
<dd>
If enabled, visibility checking also applies to toolchain implementations.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disable_native_android_rules"><code><a href="#flag--incompatible_disable_native_android_rules">--[no]incompatible_disable_native_android_rules</a></code> default: "false"</dt>
<dd>
If enabled, direct usage of the native Android rules is disabled. Please use the Starlark Android rules from https://github.com/bazelbuild/rules_android
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disable_native_apple_binary_rule"><code><a href="#flag--incompatible_disable_native_apple_binary_rule">--[no]incompatible_disable_native_apple_binary_rule</a></code> default: "false"</dt>
<dd>
No-op. Kept here for backwards compatibility.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_python_disable_py2"><code><a href="#flag--incompatible_python_disable_py2">--[no]incompatible_python_disable_py2</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_validate_top_level_header_inclusions"><code><a href="#flag--incompatible_validate_top_level_header_inclusions">--[no]incompatible_validate_top_level_header_inclusions</a></code> default: "true"</dt>
<dd>
If true, Bazel will also validate top level directory header inclusions (see https://github.com/bazelbuild/bazel/issues/10047 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--one_version_enforcement_on_java_tests"><code><a href="#flag--one_version_enforcement_on_java_tests">--[no]one_version_enforcement_on_java_tests</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--python_native_rules_allowlist"><code><a href="#flag--python_native_rules_allowlist">--python_native_rules_allowlist</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
An allowlist (package_group target) to use when enforcing --incompatible_python_disallow_native_rules.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--strict_filesets"><code><a href="#flag--strict_filesets">--[no]strict_filesets</a></code> default: "false"</dt>
<dd>
If this option is enabled, filesets crossing package boundaries are reported as errors.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--strict_proto_deps"><code><a href="#flag--strict_proto_deps">--strict_proto_deps</a>=&lt;off, warn, error, strict or default&gt</code> default: "error"</dt>
<dd>
Unless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--strict_public_imports"><code><a href="#flag--strict_public_imports">--strict_public_imports</a>=&lt;off, warn, error, strict or default&gt</code> default: "off"</dt>
<dd>
Unless OFF, checks that a proto_library target explicitly declares all targets used in &#39;import public&#39; as exported.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--strict_system_includes"><code><a href="#flag--strict_system_includes">--[no]strict_system_includes</a></code> default: "false"</dt>
<dd>
If true, headers found through system include paths (-isystem) are also required to be declared.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--target_environment"><code><a href="#flag--target_environment">--target_environment</a>=&lt;a build target label&gt</code> multiple uses are accumulated</dt>
<dd>
Declares this build&#39;s target environment. Must be a label reference to an &quot;environment&quot; rule. If specified, all top-level targets must be compatible with this environment.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Options that affect the signing outputs of a build:
<dt id="flag--apk_signing_method"><code><a href="#flag--apk_signing_method">--apk_signing_method</a>=&lt;v1, v2, v1_v2 or v4&gt</code> default: "v1_v2"</dt>
<dd>
Implementation to use to sign APKs
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--device_debug_entitlements"><code><a href="#flag--device_debug_entitlements">--[no]device_debug_entitlements</a></code> default: "true"</dt>
<dd>
If set, and compilation mode is not &#39;opt&#39;, objc apps will include debug entitlements when signing.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--ios_signing_cert_name"><code><a href="#flag--ios_signing_cert_name">--ios_signing_cert_name</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Certificate name to use for iOS signing. If not set will fall back to provisioning profile. May be the certificate&#39;s keychain identity preference or (substring) of the certificate&#39;s common name, as per codesign&#39;s man page (SIGNING IDENTITIES).
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
</dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--incompatible_disallow_legacy_py_provider"><code><a href="#flag--incompatible_disallow_legacy_py_provider">--[no]incompatible_disallow_legacy_py_provider</a></code> default: "true"</dt>
<dd>
No-op, will be removed soon.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disallow_sdk_frameworks_attributes"><code><a href="#flag--incompatible_disallow_sdk_frameworks_attributes">--[no]incompatible_disallow_sdk_frameworks_attributes</a></code> default: "false"</dt>
<dd>
If true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library andobjc_import.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_objc_alwayslink_by_default"><code><a href="#flag--incompatible_objc_alwayslink_by_default">--[no]incompatible_objc_alwayslink_by_default</a></code> default: "false"</dt>
<dd>
If true, make the default value true for alwayslink attributes in objc_library and objc_import.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_python_disallow_native_rules"><code><a href="#flag--incompatible_python_disallow_native_rules">--[no]incompatible_python_disallow_native_rules</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
</dl>
<dl>Options that govern the behavior of the test environment or test runner:
<dt id="flag--allow_analysis_failures"><code><a href="#flag--allow_analysis_failures">--[no]allow_analysis_failures</a></code> default: "false"</dt>
<dd>
If true, an analysis failure of a rule target results in the target&#39;s propagation of an instance of AnalysisFailureInfo containing the error description, instead of resulting in a build failure.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--analysis_testing_deps_limit"><code><a href="#flag--analysis_testing_deps_limit">--analysis_testing_deps_limit</a>=&lt;an integer&gt</code> default: "2000"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--break_build_on_parallel_dex2oat_failure"><code><a href="#flag--break_build_on_parallel_dex2oat_failure">--[no]break_build_on_parallel_dex2oat_failure</a></code> default: "false"</dt>
<dd>
If true dex2oat action failures will cause the build to break instead of executing dex2oat during test runtime.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--default_test_resources"><code><a href="#flag--default_test_resources">--default_test_resources</a>=&lt;a resource name followed by equal and 1 float or 4 float, e.g. memory=10,30,60,100&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_android_use_parallel_dex2oat"><code><a href="#flag--experimental_android_use_parallel_dex2oat">--[no]experimental_android_use_parallel_dex2oat</a></code> default: "false"</dt>
<dd>
Use dex2oat in parallel to possibly speed up android_test.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--ios_memleaks"><code><a href="#flag--ios_memleaks">--[no]ios_memleaks</a></code> default: "false"</dt>
<dd>
Enable checking for memory leaks in ios_test targets.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--ios_simulator_device"><code><a href="#flag--ios_simulator_device">--ios_simulator_device</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The device to simulate when running an iOS application in the simulator, e.g. &#39;iPhone 6&#39;. You can get a list of devices by running &#39;xcrun simctl list devicetypes&#39; on the machine the simulator will be run on.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
<dt id="flag--ios_simulator_version"><code><a href="#flag--ios_simulator_version">--ios_simulator_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
<dt id="flag--runs_per_test"><code><a href="#flag--runs_per_test">--runs_per_test</a>=&lt;a positive integer or test_regex@runs. This flag may be passed more than once&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--test_env"><code><a href="#flag--test_env">--test_env</a>=&lt;a &#39;name=value&#39; assignment with an optional value part&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;bazel test&#39; command.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
<dt id="flag--test_timeout"><code><a href="#flag--test_timeout">--test_timeout</a>=&lt;a single integer or comma-separated list of 4 integers&gt</code> default: "-1"</dt>
<dd>
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.
</dd>
<dt id="flag--zip_undeclared_test_outputs"><code><a href="#flag--zip_undeclared_test_outputs">--[no]zip_undeclared_test_outputs</a></code> default: "true"</dt>
<dd>
If true, undeclared test outputs will be archived in a zip file.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
</dl>
<dl>Options relating to query output and semantics:
<dt id="flag--aspect_deps"><code><a href="#flag--aspect_deps">--aspect_deps</a>=&lt;off, conservative or precise&gt</code> default: "conservative"</dt>
<dd>
How to resolve aspect dependencies when the output format is one of {xml,proto,record}. &#39;off&#39; means no aspect dependencies are resolved, &#39;conservative&#39; (the default) means all declared aspect dependencies are added regardless of whether they are given the rule class of direct dependencies, &#39;precise&#39; 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 &#39;bazel query&#39;.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--consistent_labels"><code><a href="#flag--consistent_labels">--[no]consistent_labels</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--experimental_explicit_aspects"><code><a href="#flag--experimental_explicit_aspects">--[no]experimental_explicit_aspects</a></code> default: "false"</dt>
<dd>
aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--graph:factored"><code><a href="#flag--graph:factored">--[no]graph:factored</a></code> default: "true"</dt>
<dd>
If true, then the graph will be emitted &#39;factored&#39;, i.e. topologically-equivalent nodes will be merged together and their labels concatenated. This option is only applicable to --output=graph.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--graph:node_limit"><code><a href="#flag--graph:node_limit">--graph:node_limit</a>=&lt;an integer&gt</code> default: "512"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--implicit_deps"><code><a href="#flag--implicit_deps">--[no]implicit_deps</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--include_aspects"><code><a href="#flag--include_aspects">--[no]include_aspects</a></code> default: "true"</dt>
<dd>
aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--incompatible_package_group_includes_double_slash"><code><a href="#flag--incompatible_package_group_includes_double_slash">--[no]incompatible_package_group_includes_double_slash</a></code> default: "true"</dt>
<dd>
If enabled, when outputting package_group&#39;s `packages` attribute, the leading `//` will not be omitted.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--infer_universe_scope"><code><a href="#flag--infer_universe_scope">--[no]infer_universe_scope</a></code> default: "false"</dt>
<dd>
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&#39;s value is ignored. Note: this option applies only to `query` (i.e. not `cquery`).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--line_terminator_null"><code><a href="#flag--line_terminator_null">--[no]line_terminator_null</a></code> default: "false"</dt>
<dd>
Whether each format is terminated with \0 instead of newline.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--nodep_deps"><code><a href="#flag--nodep_deps">--[no]nodep_deps</a></code> default: "true"</dt>
<dd>
If enabled, deps from &quot;nodep&quot; attributes will be included in the dependency graph over which the query operates. A common example of a &quot;nodep&quot; attribute is &quot;visibility&quot;. Run and parse the output of `info build-language` to learn about all the &quot;nodep&quot; attributes in the build language.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--output"><code><a href="#flag--output">--output</a>=&lt;a string&gt</code> default: "label"</dt>
<dd>
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 &#39;transitions&#39;, you also have to specify the --transitions=(lite|full) option.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--output_file"><code><a href="#flag--output_file">--output_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
When specified, query results will be written directly to this file, and nothing will be printed to Bazel&#39;s standard output stream (stdout). In benchmarks, this is generally faster than &lt;code&gt;bazel query &amp;gt; file&lt;/code&gt;.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:default_values"><code><a href="#flag--proto:default_values">--[no]proto:default_values</a></code> default: "true"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:definition_stack"><code><a href="#flag--proto:definition_stack">--[no]proto:definition_stack</a></code> default: "false"</dt>
<dd>
Populate the definition_stack proto field, which records for each rule instance the Starlark call stack at the moment the rule&#39;s class was defined.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:flatten_selects"><code><a href="#flag--proto:flatten_selects">--[no]proto:flatten_selects</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--proto:include_attribute_source_aspects"><code><a href="#flag--proto:include_attribute_source_aspects">--[no]proto:include_attribute_source_aspects</a></code> default: "false"</dt>
<dd>
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).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:include_configurations"><code><a href="#flag--proto:include_configurations">--[no]proto:include_configurations</a></code> default: "true"</dt>
<dd>
if enabled, proto output will include information about configurations. When disabled,cquery proto output format resembles query output format.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--proto:include_synthetic_attribute_hash"><code><a href="#flag--proto:include_synthetic_attribute_hash">--[no]proto:include_synthetic_attribute_hash</a></code> default: "false"</dt>
<dd>
Whether or not to calculate and populate the $internal_attr_hash attribute.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:instantiation_stack"><code><a href="#flag--proto:instantiation_stack">--[no]proto:instantiation_stack</a></code> default: "false"</dt>
<dd>
Populate the instantiation call stack of each rule. Note that this requires the stack to be present
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:locations"><code><a href="#flag--proto:locations">--[no]proto:locations</a></code> default: "true"</dt>
<dd>
Whether to output location information in proto output at all.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:output_rule_attrs"><code><a href="#flag--proto:output_rule_attrs">--proto:output_rule_attrs</a>=&lt;comma-separated list of options&gt</code> default: "all"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:rule_inputs_and_outputs"><code><a href="#flag--proto:rule_inputs_and_outputs">--[no]proto:rule_inputs_and_outputs</a></code> default: "true"</dt>
<dd>
Whether or not to populate the rule_input and rule_output fields.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--query_file"><code><a href="#flag--query_file">--query_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--relative_locations"><code><a href="#flag--relative_locations">--[no]relative_locations</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--show_config_fragments"><code><a href="#flag--show_config_fragments">--show_config_fragments</a>=&lt;off, direct or transitive&gt</code> default: "off"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--starlark:expr"><code><a href="#flag--starlark:expr">--starlark:expr</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
A Starlark expression to format each configured target in cquery&#39;s --output=starlark mode. The configured target is bound to &#39;target&#39;. If neither --starlark:expr nor --starlark:file is specified, this option will default to &#39;str(target.label)&#39;. It is an error to specify both --starlark:expr and --starlark:file.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--starlark:file"><code><a href="#flag--starlark:file">--starlark:file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The name of a file that defines a Starlark function called &#39;format&#39;, 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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--tool_deps"><code><a href="#flag--tool_deps">--[no]tool_deps</a></code> default: "true"</dt>
<dd>
Query: If disabled, dependencies on &#39;exec configuration&#39; will not be included in the dependency graph over which the query operates. An &#39;exec configuration&#39; dependency edge, such as the one from any &#39;proto_library&#39; rule to the Protocol Compiler, usually points to a tool executed during the build rather than a part of the same &#39;target&#39; 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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--transitions"><code><a href="#flag--transitions">--transitions</a>=&lt;full, lite or none&gt</code> default: "none"</dt>
<dd>
The format in which cquery will print transition information.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--universe_scope"><code><a href="#flag--universe_scope">--universe_scope</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--experimental_filter_library_jar_with_program_jar"><code><a href="#flag--experimental_filter_library_jar_with_program_jar">--[no]experimental_filter_library_jar_with_program_jar</a></code> default: "false"</dt>
<dd>
Filter the ProGuard ProgramJar to remove any classes also present in the LibraryJar.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--experimental_inmemory_dotd_files"><code><a href="#flag--experimental_inmemory_dotd_files">--[no]experimental_inmemory_dotd_files</a></code> default: "true"</dt>
<dd>
If enabled, C++ .d files will be passed through in memory directly from the remote build nodes instead of being written to disk.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_inmemory_jdeps_files"><code><a href="#flag--experimental_inmemory_jdeps_files">--[no]experimental_inmemory_jdeps_files</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_objc_include_scanning"><code><a href="#flag--experimental_objc_include_scanning">--[no]experimental_objc_include_scanning</a></code> default: "false"</dt>
<dd>
Whether to perform include scanning for objective C/C++.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--experimental_retain_test_configuration_across_testonly"><code><a href="#flag--experimental_retain_test_configuration_across_testonly">--[no]experimental_retain_test_configuration_across_testonly</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--experimental_starlark_cc_import"><code><a href="#flag--experimental_starlark_cc_import">--[no]experimental_starlark_cc_import</a></code> default: "false"</dt>
<dd>
If enabled, the Starlark version of cc_import can be used.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_unsupported_and_brittle_include_scanning"><code><a href="#flag--experimental_unsupported_and_brittle_include_scanning">--[no]experimental_unsupported_and_brittle_include_scanning</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--incremental_dexing"><code><a href="#flag--incremental_dexing">--[no]incremental_dexing</a></code> default: "true"</dt>
<dd>
Does most of the work for dexing separately for each Jar file.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--objc_use_dotd_pruning"><code><a href="#flag--objc_use_dotd_pruning">--[no]objc_use_dotd_pruning</a></code> default: "true"</dt>
<dd>
If set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--process_headers_in_dependencies"><code><a href="#flag--process_headers_in_dependencies">--[no]process_headers_in_dependencies</a></code> default: "false"</dt>
<dd>
When building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--trim_test_configuration"><code><a href="#flag--trim_test_configuration">--[no]trim_test_configuration</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--toolchain_resolution_debug"><code><a href="#flag--toolchain_resolution_debug">--toolchain_resolution_debug</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths&gt</code> default: "-.*"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--flag_alias"><code><a href="#flag--flag_alias">--flag_alias</a>=&lt;a &#39;name=value&#39; flag alias&gt</code> multiple uses are accumulated</dt>
<dd>
Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form &quot;&lt;key&gt;=&lt;value&gt;&quot; as an argument.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--incompatible_default_to_explicit_init_py"><code><a href="#flag--incompatible_default_to_explicit_init_py">--[no]incompatible_default_to_explicit_init_py</a></code> default: "false"</dt>
<dd>
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 &quot;auto&quot; (the default), it is treated as false if and only if this flag is set. See https://github.com/bazelbuild/bazel/issues/10076.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_py2_outputs_are_suffixed"><code><a href="#flag--incompatible_py2_outputs_are_suffixed">--[no]incompatible_py2_outputs_are_suffixed</a></code> default: "true"</dt>
<dd>
If true, targets built in the Python 2 configuration will appear under an output root that includes the suffix &#39;-py2&#39;, 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`.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_py3_is_default"><code><a href="#flag--incompatible_py3_is_default">--[no]incompatible_py3_is_default</a></code> default: "true"</dt>
<dd>
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`.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_use_python_toolchains"><code><a href="#flag--incompatible_use_python_toolchains">--[no]incompatible_use_python_toolchains</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--python_version"><code><a href="#flag--python_version">--python_version</a>=&lt;PY2 or PY3&gt</code> default: see description</dt>
<dd>
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&#39;t explicitly specify a version) so there is usually not much reason to supply this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl></dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--cache_test_results"><code><a href="#flag--cache_test_results">--[no]cache_test_results</a></code> [<code>-t</code>] default: "auto"</dt>
<dd>
If set to &#39;auto&#39;, 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 &#39;yes&#39;, Bazel caches all test results except for tests marked as external. If set to &#39;no&#39;, Bazel does not cache any test results.
</dd>
<dt id="flag--experimental_cancel_concurrent_tests"><code><a href="#flag--experimental_cancel_concurrent_tests">--[no]experimental_cancel_concurrent_tests</a></code> default: "false"</dt>
<dd>
If true, then Blaze will cancel concurrently running tests on the first successful run. This is only useful in combination with --runs_per_test_detects_flakes.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_fetch_all_coverage_outputs"><code><a href="#flag--experimental_fetch_all_coverage_outputs">--[no]experimental_fetch_all_coverage_outputs</a></code> default: "false"</dt>
<dd>
If true, then Bazel fetches the entire coverage data directory for each test during a coverage run.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_generate_llvm_lcov"><code><a href="#flag--experimental_generate_llvm_lcov">--[no]experimental_generate_llvm_lcov</a></code> default: "false"</dt>
<dd>
If true, coverage for clang will generate an LCOV report.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_j2objc_header_map"><code><a href="#flag--experimental_j2objc_header_map">--[no]experimental_j2objc_header_map</a></code> default: "true"</dt>
<dd>
Whether to generate J2ObjC header map in parallel of J2ObjC transpilation.
</dd>
<dt id="flag--experimental_j2objc_shorter_header_path"><code><a href="#flag--experimental_j2objc_shorter_header_path">--[no]experimental_j2objc_shorter_header_path</a></code> default: "false"</dt>
<dd>
Whether to generate with shorter header path (uses &quot;_ios&quot; instead of &quot;_j2objc&quot;).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_java_classpath"><code><a href="#flag--experimental_java_classpath">--experimental_java_classpath</a>=&lt;off, javabuilder or bazel&gt</code> default: "javabuilder"</dt>
<dd>
Enables reduced classpaths for Java compilations.
</dd>
<dt id="flag--experimental_limit_android_lint_to_android_constrained_java"><code><a href="#flag--experimental_limit_android_lint_to_android_constrained_java">--[no]experimental_limit_android_lint_to_android_constrained_java</a></code> default: "false"</dt>
<dd>
Limit --experimental_run_android_lint_on_java_rules to Android-compatible libraries.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_run_android_lint_on_java_rules"><code><a href="#flag--experimental_run_android_lint_on_java_rules">--[no]experimental_run_android_lint_on_java_rules</a></code> default: "false"</dt>
<dd>
Whether to validate java_* sources.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--explicit_java_test_deps"><code><a href="#flag--explicit_java_test_deps">--[no]explicit_java_test_deps</a></code> default: "false"</dt>
<dd>
Explicitly specify a dependency to JUnit or Hamcrest in a java_test instead of  accidentally obtaining from the TestRunner&#39;s deps. Only works for bazel right now.
</dd>
<dt id="flag--host_java_launcher"><code><a href="#flag--host_java_launcher">--host_java_launcher</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The Java launcher used by tools that are executed during a build.
</dd>
<dt id="flag--host_javacopt"><code><a href="#flag--host_javacopt">--host_javacopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to javac when building tools that are executed during a build.
</dd>
<dt id="flag--host_jvmopt"><code><a href="#flag--host_jvmopt">--host_jvmopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--incompatible_check_sharding_support"><code><a href="#flag--incompatible_check_sharding_support">--[no]incompatible_check_sharding_support</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_exclusive_test_sandboxed"><code><a href="#flag--incompatible_exclusive_test_sandboxed">--[no]incompatible_exclusive_test_sandboxed</a></code> default: "true"</dt>
<dd>
If true, exclusive tests will run with sandboxed strategy. Add &#39;local&#39; tag to force an exclusive test run locally
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_strict_action_env"><code><a href="#flag--incompatible_strict_action_env">--[no]incompatible_strict_action_env</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--j2objc_translation_flags"><code><a href="#flag--j2objc_translation_flags">--j2objc_translation_flags</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the J2ObjC tool.
</dd>
<dt id="flag--java_debug"><code><a href="#flag--java_debug">--java_debug</a></code></dt>
<dd>
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.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--test_arg">--test_arg=--wrapper_script_flag=--debug</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--test_output">--test_output=streamed</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--test_strategy">--test_strategy=exclusive</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--test_timeout">--test_timeout=9999</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--nocache_test_results">--nocache_test_results</a></code><br/>
</dd>
<dt id="flag--java_deps"><code><a href="#flag--java_deps">--[no]java_deps</a></code> default: "true"</dt>
<dd>
Generate dependency information (for now, compile-time classpath) per Java target.
</dd>
<dt id="flag--java_header_compilation"><code><a href="#flag--java_header_compilation">--[no]java_header_compilation</a></code> default: "true"</dt>
<dd>
Compile ijars directly from source.
</dd>
<dt id="flag--java_language_version"><code><a href="#flag--java_language_version">--java_language_version</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The Java language version
</dd>
<dt id="flag--java_launcher"><code><a href="#flag--java_launcher">--java_launcher</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The Java launcher to use when building Java binaries.  If this flag is set to the empty string, the JDK launcher is used. The &quot;launcher&quot; attribute overrides this flag.
</dd>
<dt id="flag--java_runtime_version"><code><a href="#flag--java_runtime_version">--java_runtime_version</a>=&lt;a string&gt</code> default: "local_jdk"</dt>
<dd>
The Java runtime version
</dd>
<dt id="flag--javacopt"><code><a href="#flag--javacopt">--javacopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to javac.
</dd>
<dt id="flag--jvmopt"><code><a href="#flag--jvmopt">--jvmopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the Java VM. These options will get added to the VM startup options of each java_binary target.
</dd>
<dt id="flag--legacy_main_dex_list_generator"><code><a href="#flag--legacy_main_dex_list_generator">--legacy_main_dex_list_generator</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.
</dd>
<dt id="flag--optimizing_dexer"><code><a href="#flag--optimizing_dexer">--optimizing_dexer</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies a binary to use to do dexing without sharding.
</dd>
<dt id="flag--plugin"><code><a href="#flag--plugin">--plugin</a>=&lt;a build target label&gt</code> multiple uses are accumulated</dt>
<dd>
Plugins to use in the build. Currently works with java_plugin.
</dd>
<dt id="flag--proguard_top"><code><a href="#flag--proguard_top">--proguard_top</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies which version of ProGuard to use for code removal when building a Java binary.
</dd>
<dt id="flag--proto_compiler"><code><a href="#flag--proto_compiler">--proto_compiler</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:protoc"</dt>
<dd>
The label of the proto-compiler.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_cc"><code><a href="#flag--proto_toolchain_for_cc">--proto_toolchain_for_cc</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:cc_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile C++ protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_j2objc"><code><a href="#flag--proto_toolchain_for_j2objc">--proto_toolchain_for_j2objc</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/j2objc:j2objc_proto_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile j2objc protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_java"><code><a href="#flag--proto_toolchain_for_java">--proto_toolchain_for_java</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:java_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile Java protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_javalite"><code><a href="#flag--proto_toolchain_for_javalite">--proto_toolchain_for_javalite</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:javalite_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile JavaLite protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--protocopt"><code><a href="#flag--protocopt">--protocopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the protobuf compiler.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--runs_per_test_detects_flakes"><code><a href="#flag--runs_per_test_detects_flakes">--[no]runs_per_test_detects_flakes</a></code> default: "false"</dt>
<dd>
If true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.
</dd>
<dt id="flag--shell_executable"><code><a href="#flag--shell_executable">--shell_executable</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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:/tools/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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--test_arg"><code><a href="#flag--test_arg">--test_arg</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;bazel test&#39; command.
</dd>
<dt id="flag--test_filter"><code><a href="#flag--test_filter">--test_filter</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--test_result_expiration"><code><a href="#flag--test_result_expiration">--test_result_expiration</a>=&lt;an integer&gt</code> default: "-1"</dt>
<dd>
This option is deprecated and has no effect.
</dd>
<dt id="flag--test_runner_fail_fast"><code><a href="#flag--test_runner_fail_fast">--[no]test_runner_fail_fast</a></code> default: "false"</dt>
<dd>
Forwards fail fast option to the test runner. The test runner should stop execution upon first failure.
</dd>
<dt id="flag--test_sharding_strategy"><code><a href="#flag--test_sharding_strategy">--test_sharding_strategy</a>=&lt;explicit, disabled or forced=k where k is the number of shards to enforce&gt</code> default: "explicit"</dt>
<dd>
Specify strategy for test sharding: &#39;explicit&#39; to only use sharding if the &#39;shard_count&#39; BUILD attribute is present. &#39;disabled&#39; to never use test sharding. &#39;forced=k&#39; to enforce &#39;k&#39; shards for testing regardless of the &#39;shard_count&#39; BUILD attribute.
</dd>
<dt id="flag--tool_java_language_version"><code><a href="#flag--tool_java_language_version">--tool_java_language_version</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The Java language version used to execute the tools that are needed during a build
</dd>
<dt id="flag--tool_java_runtime_version"><code><a href="#flag--tool_java_runtime_version">--tool_java_runtime_version</a>=&lt;a string&gt</code> default: "remotejdk_11"</dt>
<dd>
The Java runtime version used to execute tools during the build
</dd>
<dt id="flag--use_ijars"><code><a href="#flag--use_ijars">--[no]use_ijars</a></code> default: "true"</dt>
<dd>
If enabled, this option causes Java compilation to use interface jars. This will result in faster incremental compilation, but error messages can be different.
</dd>
</dl>

<h2><a name="dump">Dump Options</a></h2>
<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl></dl>
<dl>Options that control the output of the command:
<dt id="flag--action_cache"><code><a href="#flag--action_cache">--[no]action_cache</a></code> default: "false"</dt>
<dd>
Dump action cache content.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--packages"><code><a href="#flag--packages">--[no]packages</a></code> default: "false"</dt>
<dd>
Dump package cache content.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--rule_classes"><code><a href="#flag--rule_classes">--[no]rule_classes</a></code> default: "false"</dt>
<dd>
Dump rule classes.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--rules"><code><a href="#flag--rules">--[no]rules</a></code> default: "false"</dt>
<dd>
Dump rules, including counts and memory usage (if memory is tracked).
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--skyframe"><code><a href="#flag--skyframe">--skyframe</a>=&lt;off, summary, count, deps or rdeps&gt</code> default: "off"</dt>
<dd>
Dump Skyframe graph: &#39;off&#39;, &#39;summary&#39;, &#39;count&#39;, &#39;deps&#39;, or &#39;rdeps&#39;.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--skykey_filter"><code><a href="#flag--skykey_filter">--skykey_filter</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths&gt</code> default: ".*"</dt>
<dd>
Regex filter of SkyKey names to output. Only used with --skyframe=deps, rdeps.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
<dt id="flag--skylark_memory"><code><a href="#flag--skylark_memory">--skylark_memory</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Dumps a pprof-compatible memory profile to the specified path. To learn more please see https://github.com/google/pprof.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
</dl>

<h2><a name="fetch">Fetch Options</a></h2>
<p>Inherits all options from <a href="#test">test</a>.</p>

<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--all"><code><a href="#flag--all">--[no]all</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--keep_going"><code><a href="#flag--keep_going">--[no]keep_going</a></code> [<code>-k</code>] default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--loading_phase_threads"><code><a href="#flag--loading_phase_threads">--loading_phase_threads</a>=&lt;an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> default: "auto"</dt>
<dd>
Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;. &quot;auto&quot; sets a reasonable default based on host resources. Must be at least 1.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
<dt id="flag--incompatible_config_setting_private_default_visibility"><code><a href="#flag--incompatible_config_setting_private_default_visibility">--[no]incompatible_config_setting_private_default_visibility</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enforce_config_setting_visibility"><code><a href="#flag--incompatible_enforce_config_setting_visibility">--[no]incompatible_enforce_config_setting_visibility</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--configure"><code><a href="#flag--configure">--[no]configure</a></code> default: "false"</dt>
<dd>
Only fetches repositories marked as &#39;configure&#39; for system-configuration purpose. Only works when --enable_bzlmod is on.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--force"><code><a href="#flag--force">--[no]force</a></code> default: "false"</dt>
<dd>
Ignore existing repository if any and force fetch the repository again. Only works when --enable_bzlmod is on.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--repo"><code><a href="#flag--repo">--repo</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Only fetches the specified repository, which can be either {@apparent_repo_name} or {@@canonical_repo_name}. Only works when --enable_bzlmod is on.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
<dt id="flag--experimental_repository_resolved_file"><code><a href="#flag--experimental_repository_resolved_file">--experimental_repository_resolved_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty, write a Starlark value with the resolved information of all Starlark repository rules that were executed.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--deleted_packages"><code><a href="#flag--deleted_packages">--deleted_packages</a>=&lt;comma-separated list of package names&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;x/y&#39; of an existing package &#39;x&#39;.  For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label &#39;//x:y/z&#39; if that is still provided by another package_path entry.  Specifying --deleted_packages x/y avoids this problem.
</dd>
<dt id="flag--fetch"><code><a href="#flag--fetch">--[no]fetch</a></code> default: "true"</dt>
<dd>
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.
</dd>
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--package_path"><code><a href="#flag--package_path">--package_path</a>=&lt;colon-separated list of options&gt</code> default: "%workspace%"</dt>
<dd>
A colon-separated list of where to look for packages. Elements beginning with &#39;%workspace%&#39; are relative to the enclosing workspace. If omitted or empty, the default is the output of &#39;bazel info default-package-path&#39;.
</dd>
<dt id="flag--show_loading_progress"><code><a href="#flag--show_loading_progress">--[no]show_loading_progress</a></code> default: "true"</dt>
<dd>
If enabled, causes Bazel to print &quot;Loading package:&quot; messages.
</dd>
</dl>

<dl></dl>
<dl>Options that control build execution:
<dt id="flag--all"><code><a href="#flag--all">--[no]all</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--experimental_inprocess_symlink_creation"><code><a href="#flag--experimental_inprocess_symlink_creation">--[no]experimental_inprocess_symlink_creation</a></code> default: "false"</dt>
<dd>
Whether to make direct file system calls to create symlink trees
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_persistent_aar_extractor"><code><a href="#flag--experimental_persistent_aar_extractor">--[no]experimental_persistent_aar_extractor</a></code> default: "false"</dt>
<dd>
Enable persistent aar extractor by using workers.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_remotable_source_manifests"><code><a href="#flag--experimental_remotable_source_manifests">--[no]experimental_remotable_source_manifests</a></code> default: "false"</dt>
<dd>
Whether to make source manifest actions remotable
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_split_coverage_postprocessing"><code><a href="#flag--experimental_split_coverage_postprocessing">--[no]experimental_split_coverage_postprocessing</a></code> default: "false"</dt>
<dd>
If true, then Bazel will run coverage postprocessing for test in a new spawn.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_strict_fileset_output"><code><a href="#flag--experimental_strict_fileset_output">--[no]experimental_strict_fileset_output</a></code> default: "false"</dt>
<dd>
If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--incompatible_disallow_unsound_directory_outputs"><code><a href="#flag--incompatible_disallow_unsound_directory_outputs">--[no]incompatible_disallow_unsound_directory_outputs</a></code> default: "true"</dt>
<dd>
If set, it is an error for an action to materialize an output file as a directory. Does not affect source directories. See https://github.com/bazelbuild/bazel/issues/18646.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_modify_execution_info_additive"><code><a href="#flag--incompatible_modify_execution_info_additive">--[no]incompatible_modify_execution_info_additive</a></code> default: "false"</dt>
<dd>
When enabled, passing multiple --modify_execution_info flags is additive. When disabled, only the last flag is taken into account.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--keep_going"><code><a href="#flag--keep_going">--[no]keep_going</a></code> [<code>-k</code>] default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--loading_phase_threads"><code><a href="#flag--loading_phase_threads">--loading_phase_threads</a>=&lt;an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> default: "auto"</dt>
<dd>
Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;. &quot;auto&quot; sets a reasonable default based on host resources. Must be at least 1.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--modify_execution_info"><code><a href="#flag--modify_execution_info">--modify_execution_info</a>=&lt;regex=[+-]key,regex=[+-]key,...&gt</code> multiple uses are accumulated</dt>
<dd>
Add or remove keys from an action&#39;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: &quot;regex=[+-]key,regex=[+-]key,...&quot;.

Examples:
  &#39;.*=+x,.*=-y,.*=+z&#39; adds &#39;x&#39; and &#39;z&#39; to, and removes &#39;y&#39; from, the execution info for all actions.
  &#39;Genrule=+requires-x&#39; adds &#39;requires-x&#39; to the execution info for all Genrule actions.
  &#39;(?!Genrule).*=-requires-x&#39; removes &#39;requires-x&#39; from the execution info for all non-Genrule actions.

<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--persistent_android_dex_desugar"><code><a href="#flag--persistent_android_dex_desugar">--persistent_android_dex_desugar</a></code></dt>
<dd>
Enable persistent Android dex and desugar actions by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_android_dex_desugar">--internal_persistent_android_dex_desugar</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=Desugar=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=DexBuilder=worker</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_android_resource_processor"><code><a href="#flag--persistent_android_resource_processor">--persistent_android_resource_processor</a></code></dt>
<dd>
Enable persistent Android resource processor by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_busybox_tools">--internal_persistent_busybox_tools</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AaptPackage=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceParser=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceValidator=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceCompiler=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=RClassGenerator=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceLink=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidAapt2=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidAssetMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidCompiledResourceMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=ManifestMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidManifestMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=Aapt2Optimize=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AARGenerator=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=ProcessDatabinding=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=GenerateDataBindingBaseClasses=worker</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_multiplex_android_dex_desugar"><code><a href="#flag--persistent_multiplex_android_dex_desugar">--persistent_multiplex_android_dex_desugar</a></code></dt>
<dd>
Enable persistent multiplexed Android dex and desugar actions by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_android_dex_desugar">--persistent_android_dex_desugar</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_multiplex_android_dex_desugar">--internal_persistent_multiplex_android_dex_desugar</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_multiplex_android_resource_processor"><code><a href="#flag--persistent_multiplex_android_resource_processor">--persistent_multiplex_android_resource_processor</a></code></dt>
<dd>
Enable persistent multiplexed Android resource processor by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_android_resource_processor">--persistent_android_resource_processor</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AaptPackage=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceParser=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceValidator=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceCompiler=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=RClassGenerator=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceLink=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidAapt2=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidAssetMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidCompiledResourceMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=ManifestMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidManifestMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=Aapt2Optimize=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AARGenerator=+supports-multiplex-workers</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_multiplex_android_tools"><code><a href="#flag--persistent_multiplex_android_tools">--persistent_multiplex_android_tools</a></code></dt>
<dd>
Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_multiplex_busybox_tools">--internal_persistent_multiplex_busybox_tools</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_multiplex_android_resource_processor">--persistent_multiplex_android_resource_processor</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_multiplex_android_dex_desugar">--persistent_multiplex_android_dex_desugar</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--use_target_platform_for_tests"><code><a href="#flag--use_target_platform_for_tests">--[no]use_target_platform_for_tests</a></code> default: "false"</dt>
<dd>
If true, then Bazel will use the target platform for running tests rather than the test exec group.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
</dl>
<dl>Options that configure the toolchain used for action execution:
<dt id="flag--android_compiler"><code><a href="#flag--android_compiler">--android_compiler</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The Android target compiler.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_crosstool_top"><code><a href="#flag--android_crosstool_top">--android_crosstool_top</a>=&lt;a build target label&gt</code> default: "//external:android/crosstool"</dt>
<dd>
The location of the C++ compiler used for Android builds.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_grte_top"><code><a href="#flag--android_grte_top">--android_grte_top</a>=&lt;a label&gt</code> default: see description</dt>
<dd>
The Android target grte_top.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_manifest_merger"><code><a href="#flag--android_manifest_merger">--android_manifest_merger</a>=&lt;legacy, android or force_android&gt</code> default: "android"</dt>
<dd>
Selects the manifest merger to use for android_binary rules. Flag to help thetransition to the Android manifest merger from the legacy merger.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_platforms"><code><a href="#flag--android_platforms">--android_platforms</a>=&lt;a build target label&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_sdk"><code><a href="#flag--android_sdk">--android_sdk</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/android:sdk"</dt>
<dd>
Specifies Android SDK/platform that is used to build Android applications.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--apple_crosstool_top"><code><a href="#flag--apple_crosstool_top">--apple_crosstool_top</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/cpp:toolchain"</dt>
<dd>
The label of the crosstool package to be used in Apple and Objc rules and their dependencies.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--cc_output_directory_tag"><code><a href="#flag--cc_output_directory_tag">--cc_output_directory_tag</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
Specifies a suffix to be added to the configuration directory.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--compiler"><code><a href="#flag--compiler">--compiler</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The C++ compiler to use for compiling the target.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--coverage_output_generator"><code><a href="#flag--coverage_output_generator">--coverage_output_generator</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/test:lcov_merger"</dt>
<dd>
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 &#39;//tools/test:lcov_merger&#39;.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--coverage_report_generator"><code><a href="#flag--coverage_report_generator">--coverage_report_generator</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/test:coverage_report_generator"</dt>
<dd>
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 &#39;//tools/test:coverage_report_generator&#39;.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--coverage_support"><code><a href="#flag--coverage_support">--coverage_support</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/test:coverage_support"</dt>
<dd>
Location of support files that are required on the inputs of every test action that collects code coverage. Defaults to &#39;//tools/test:coverage_support&#39;.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--crosstool_top"><code><a href="#flag--crosstool_top">--crosstool_top</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/cpp:toolchain"</dt>
<dd>
The label of the crosstool package to be used for compiling C++ code.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--custom_malloc"><code><a href="#flag--custom_malloc">--custom_malloc</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies a custom malloc implementation. This setting overrides malloc attributes in build rules.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_add_exec_constraints_to_targets"><code><a href="#flag--experimental_add_exec_constraints_to_targets">--experimental_add_exec_constraints_to_targets</a>=&lt;a &#39;&lt;RegexFilter&gt;=&lt;label1&gt;[,&lt;label2&gt;,...]&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;x86_64&#39; to any target under //demo except for those whose name contains &#39;test&#39;.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_include_xcode_execution_requirements"><code><a href="#flag--experimental_include_xcode_execution_requirements">--[no]experimental_include_xcode_execution_requirements</a></code> default: "false"</dt>
<dd>
If set, add a &quot;requires-xcode:{version}&quot; execution requirement to every Xcode action.  If the xcode version has a hyphenated label,  also add a &quot;requires-xcode-label:{version_label}&quot; execution requirement.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_prefer_mutual_xcode"><code><a href="#flag--experimental_prefer_mutual_xcode">--[no]experimental_prefer_mutual_xcode</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--extra_execution_platforms"><code><a href="#flag--extra_execution_platforms">--extra_execution_platforms</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--extra_toolchains"><code><a href="#flag--extra_toolchains">--extra_toolchains</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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().
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--grte_top"><code><a href="#flag--grte_top">--grte_top</a>=&lt;a label&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_compiler"><code><a href="#flag--host_compiler">--host_compiler</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The C++ compiler to use for host compilation. It is ignored if --host_crosstool_top is not set.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--host_crosstool_top"><code><a href="#flag--host_crosstool_top">--host_crosstool_top</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
By default, the --crosstool_top and --compiler options are also used for the exec configuration. If this flag is provided, Bazel uses the default libc and compiler for the given crosstool_top.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_grte_top"><code><a href="#flag--host_grte_top">--host_grte_top</a>=&lt;a label&gt</code> default: see description</dt>
<dd>
If specified, this setting overrides the libc top-level directory (--grte_top) for the exec configuration.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_platform"><code><a href="#flag--host_platform">--host_platform</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools:host_platform"</dt>
<dd>
The label of a platform rule that describes the host system.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--incompatible_dont_enable_host_nonhost_crosstool_features"><code><a href="#flag--incompatible_dont_enable_host_nonhost_crosstool_features">--[no]incompatible_dont_enable_host_nonhost_crosstool_features</a></code> default: "true"</dt>
<dd>
If true, Bazel will not enable &#39;host&#39; and &#39;nonhost&#39; features in the c++ toolchain (see https://github.com/bazelbuild/bazel/issues/7407 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enable_android_toolchain_resolution"><code><a href="#flag--incompatible_enable_android_toolchain_resolution">--[no]incompatible_enable_android_toolchain_resolution</a></code> default: "true"</dt>
<dd>
Use toolchain resolution to select the Android SDK for android rules (Starlark and native)
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enable_apple_toolchain_resolution"><code><a href="#flag--incompatible_enable_apple_toolchain_resolution">--[no]incompatible_enable_apple_toolchain_resolution</a></code> default: "false"</dt>
<dd>
Use toolchain resolution to select the Apple SDK for apple rules (Starlark and native)
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_make_thinlto_command_lines_standalone"><code><a href="#flag--incompatible_make_thinlto_command_lines_standalone">--[no]incompatible_make_thinlto_command_lines_standalone</a></code> default: "true"</dt>
<dd>
If true, Bazel will not reuse C++ link action command lines for lto indexing command lines (see https://github.com/bazelbuild/bazel/issues/6791 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_remove_legacy_whole_archive"><code><a href="#flag--incompatible_remove_legacy_whole_archive">--[no]incompatible_remove_legacy_whole_archive</a></code> default: "true"</dt>
<dd>
If true, Bazel will not link library dependencies as whole archive by default (see https://github.com/bazelbuild/bazel/issues/7362 for migration instructions).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_require_ctx_in_configure_features"><code><a href="#flag--incompatible_require_ctx_in_configure_features">--[no]incompatible_require_ctx_in_configure_features</a></code> default: "true"</dt>
<dd>
If true, Bazel will require &#39;ctx&#39; parameter in to cc_common.configure_features (see https://github.com/bazelbuild/bazel/issues/7793 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--interface_shared_objects"><code><a href="#flag--interface_shared_objects">--[no]interface_shared_objects</a></code> default: "true"</dt>
<dd>
Use interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ios_sdk_version"><code><a href="#flag--ios_sdk_version">--ios_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the iOS SDK to use to build iOS applications. If unspecified, uses default iOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--macos_sdk_version"><code><a href="#flag--macos_sdk_version">--macos_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the macOS SDK to use to build macOS applications. If unspecified, uses default macOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--minimum_os_version"><code><a href="#flag--minimum_os_version">--minimum_os_version</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The minimum OS version which your compilation targets.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--platform_mappings"><code><a href="#flag--platform_mappings">--platform_mappings</a>=&lt;a relative path&gt</code> default: ""</dt>
<dd>
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 &#39;platform_mappings&#39; (a file directly under the workspace root).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--platforms"><code><a href="#flag--platforms">--platforms</a>=&lt;a build target label&gt</code> default: ""</dt>
<dd>
The labels of the platform rules describing the target platforms for the current command.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--python2_path"><code><a href="#flag--python2_path">--python2_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Deprecated, no-op. Disabled by `--incompatible_use_python_toolchains`.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a>, <a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--python3_path"><code><a href="#flag--python3_path">--python3_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Deprecated, no-op. Disabled by `--incompatible_use_python_toolchains`.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a>, <a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--python_path"><code><a href="#flag--python_path">--python_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The absolute path of the Python interpreter invoked to run Python targets on the target platform. Deprecated; disabled by --incompatible_use_python_toolchains.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--python_top"><code><a href="#flag--python_top">--python_top</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--tvos_sdk_version"><code><a href="#flag--tvos_sdk_version">--tvos_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the tvOS SDK to use to build tvOS applications. If unspecified, uses default tvOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--watchos_sdk_version"><code><a href="#flag--watchos_sdk_version">--watchos_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses default watchOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--xcode_version"><code><a href="#flag--xcode_version">--xcode_version</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
If specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--xcode_version_config"><code><a href="#flag--xcode_version_config">--xcode_version_config</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/cpp:host_xcodes"</dt>
<dd>
The label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that control the output of the command:
<dt id="flag--apple_generate_dsym"><code><a href="#flag--apple_generate_dsym">--[no]apple_generate_dsym</a></code> default: "false"</dt>
<dd>
Whether to generate debug symbol(.dSYM) file(s).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--build_runfile_links"><code><a href="#flag--build_runfile_links">--[no]build_runfile_links</a></code> default: "true"</dt>
<dd>
If true, build runfiles symlink forests for all targets.  If false, write them only when required by a local action, test or run command.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_runfile_manifests"><code><a href="#flag--build_runfile_manifests">--[no]build_runfile_manifests</a></code> default: "true"</dt>
<dd>
If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_test_dwp"><code><a href="#flag--build_test_dwp">--[no]build_test_dwp</a></code> default: "false"</dt>
<dd>
If enabled, when building C++ tests statically and with fission the .dwp file  for the test binary will be automatically built as well.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cc_proto_library_header_suffixes"><code><a href="#flag--cc_proto_library_header_suffixes">--cc_proto_library_header_suffixes</a>=&lt;comma-separated set of options&gt</code> default: ".pb.h"</dt>
<dd>
Sets the suffixes of header files that a cc_proto_library creates.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--cc_proto_library_source_suffixes"><code><a href="#flag--cc_proto_library_source_suffixes">--cc_proto_library_source_suffixes</a>=&lt;comma-separated set of options&gt</code> default: ".pb.cc"</dt>
<dd>
Sets the suffixes of source files that a cc_proto_library creates.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_proto_descriptor_sets_include_source_info"><code><a href="#flag--experimental_proto_descriptor_sets_include_source_info">--[no]experimental_proto_descriptor_sets_include_source_info</a></code> default: "false"</dt>
<dd>
Run extra actions for alternative Java api versions in a proto_library.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_proto_extra_actions"><code><a href="#flag--experimental_proto_extra_actions">--[no]experimental_proto_extra_actions</a></code> default: "false"</dt>
<dd>
Run extra actions for alternative Java api versions in a proto_library.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_save_feature_state"><code><a href="#flag--experimental_save_feature_state">--[no]experimental_save_feature_state</a></code> default: "false"</dt>
<dd>
Save the state of enabled and requested feautres as an output of compilation.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--fission"><code><a href="#flag--fission">--fission</a>=&lt;a set of compilation modes&gt</code> default: "no"</dt>
<dd>
Specifies which compilation modes use fission for C++ compilations and links.  May be any combination of {&#39;fastbuild&#39;, &#39;dbg&#39;, &#39;opt&#39;} or the special values &#39;yes&#39;  to enable all modes and &#39;no&#39; to disable all modes.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--incompatible_always_include_files_in_data"><code><a href="#flag--incompatible_always_include_files_in_data">--[no]incompatible_always_include_files_in_data</a></code> default: "true"</dt>
<dd>
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).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--legacy_external_runfiles"><code><a href="#flag--legacy_external_runfiles">--[no]legacy_external_runfiles</a></code> default: "true"</dt>
<dd>
If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--objc_generate_linkmap"><code><a href="#flag--objc_generate_linkmap">--[no]objc_generate_linkmap</a></code> default: "false"</dt>
<dd>
Specifies whether to generate a linkmap file.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--save_temps"><code><a href="#flag--save_temps">--[no]save_temps</a></code> default: "false"</dt>
<dd>
If set, temporary outputs from gcc will be saved.  These include .s files (assembler code), .i files (preprocessed C) and .ii files (preprocessed C++).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options that let the user configure the intended output, affecting its value, as opposed to its existence:
<dt id="flag--action_env"><code><a href="#flag--action_env">--action_env</a>=&lt;a &#39;name=value&#39; assignment with an optional value part&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--android_cpu"><code><a href="#flag--android_cpu">--android_cpu</a>=&lt;a string&gt</code> default: "armeabi-v7a"</dt>
<dd>
The Android target CPU.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_databinding_use_androidx"><code><a href="#flag--android_databinding_use_androidx">--[no]android_databinding_use_androidx</a></code> default: "true"</dt>
<dd>
Generate AndroidX-compatible data-binding files. This is only used with databinding v2. This flag is a no-op.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--android_databinding_use_v3_4_args"><code><a href="#flag--android_databinding_use_v3_4_args">--[no]android_databinding_use_v3_4_args</a></code> default: "true"</dt>
<dd>
Use android databinding v2 with 3.4.0 argument. This flag is a no-op.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--android_dynamic_mode"><code><a href="#flag--android_dynamic_mode">--android_dynamic_mode</a>=&lt;off, default or fully&gt</code> default: "off"</dt>
<dd>
Determines whether C++ deps of Android rules will be linked dynamically when a cc_binary does not explicitly create a shared library. &#39;default&#39; means bazel will choose whether to link dynamically.  &#39;fully&#39; means all libraries will be linked dynamically. &#39;off&#39; means that all libraries will be linked in mostly static mode.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--android_manifest_merger_order"><code><a href="#flag--android_manifest_merger_order">--android_manifest_merger_order</a>=&lt;alphabetical, alphabetical_by_configuration or dependency&gt</code> default: "alphabetical"</dt>
<dd>
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&#39;s manifest coming before the manifests of its dependencies.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--android_resource_shrinking"><code><a href="#flag--android_resource_shrinking">--[no]android_resource_shrinking</a></code> default: "false"</dt>
<dd>
Enables resource shrinking for android_binary APKs that use ProGuard.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--build_python_zip"><code><a href="#flag--build_python_zip">--[no]build_python_zip</a></code> default: "auto"</dt>
<dd>
Build python executable zip; on on Windows, off on other platforms
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--catalyst_cpus"><code><a href="#flag--catalyst_cpus">--catalyst_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple Catalyst binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--collect_code_coverage"><code><a href="#flag--collect_code_coverage">--[no]collect_code_coverage</a></code> default: "false"</dt>
<dd>
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 - &#39;bazel coverage&#39; command should be used instead.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--compilation_mode"><code><a href="#flag--compilation_mode">--compilation_mode</a>=&lt;fastbuild, dbg or opt&gt</code> [<code>-c</code>] default: "fastbuild"</dt>
<dd>
Specify the mode the binary will be built in. Values: &#39;fastbuild&#39;, &#39;dbg&#39;, &#39;opt&#39;.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--conlyopt"><code><a href="#flag--conlyopt">--conlyopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to gcc when compiling C source files.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--copt"><code><a href="#flag--copt">--copt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to gcc.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cpu"><code><a href="#flag--cpu">--cpu</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The target CPU.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cs_fdo_absolute_path"><code><a href="#flag--cs_fdo_absolute_path">--cs_fdo_absolute_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cs_fdo_instrument"><code><a href="#flag--cs_fdo_instrument">--cs_fdo_instrument</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cs_fdo_profile"><code><a href="#flag--cs_fdo_profile">--cs_fdo_profile</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The cs_fdo_profile representing the context sensitive profile to be used for optimization.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cxxopt"><code><a href="#flag--cxxopt">--cxxopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to gcc when compiling C++ source files.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--define"><code><a href="#flag--define">--define</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
Each --define option specifies an assignment for a build variable.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--dynamic_mode"><code><a href="#flag--dynamic_mode">--dynamic_mode</a>=&lt;off, default or fully&gt</code> default: "default"</dt>
<dd>
Determines whether C++ binaries will be linked dynamically.  &#39;default&#39; means Bazel will choose whether to link dynamically.  &#39;fully&#39; means all libraries will be linked dynamically. &#39;off&#39; means that all libraries will be linked in mostly static mode.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--enable_fdo_profile_absolute_path"><code><a href="#flag--enable_fdo_profile_absolute_path">--[no]enable_fdo_profile_absolute_path</a></code> default: "true"</dt>
<dd>
If set, use of fdo_absolute_profile_path will raise an error.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--enable_runfiles"><code><a href="#flag--enable_runfiles">--[no]enable_runfiles</a></code> default: "auto"</dt>
<dd>
Enable runfiles symlink tree; By default, it&#39;s off on Windows, on on other platforms.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_action_listener"><code><a href="#flag--experimental_action_listener">--experimental_action_listener</a>=&lt;a build target label&gt</code> multiple uses are accumulated</dt>
<dd>
Deprecated in favor of aspects. Use action_listener to attach an extra_action to existing build actions.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_android_compress_java_resources"><code><a href="#flag--experimental_android_compress_java_resources">--[no]experimental_android_compress_java_resources</a></code> default: "false"</dt>
<dd>
Compress Java resources in APKs
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_android_databinding_v2"><code><a href="#flag--experimental_android_databinding_v2">--[no]experimental_android_databinding_v2</a></code> default: "true"</dt>
<dd>
Use android databinding v2. This flag is a no-op.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_android_resource_shrinking"><code><a href="#flag--experimental_android_resource_shrinking">--[no]experimental_android_resource_shrinking</a></code> default: "false"</dt>
<dd>
Enables resource shrinking for android_binary APKs that use ProGuard.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_android_rewrite_dexes_with_rex"><code><a href="#flag--experimental_android_rewrite_dexes_with_rex">--[no]experimental_android_rewrite_dexes_with_rex</a></code> default: "false"</dt>
<dd>
use rex tool to rewrite dex files
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_collect_code_coverage_for_generated_files"><code><a href="#flag--experimental_collect_code_coverage_for_generated_files">--[no]experimental_collect_code_coverage_for_generated_files</a></code> default: "false"</dt>
<dd>
If specified, Bazel will also generate collect coverage information for generated files.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_objc_fastbuild_options"><code><a href="#flag--experimental_objc_fastbuild_options">--experimental_objc_fastbuild_options</a>=&lt;comma-separated list of options&gt</code> default: "-O0,-DDEBUG=1"</dt>
<dd>
Uses these strings as objc fastbuild compiler options.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--experimental_omitfp"><code><a href="#flag--experimental_omitfp">--[no]experimental_omitfp</a></code> default: "false"</dt>
<dd>
If true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_output_paths"><code><a href="#flag--experimental_output_paths">--experimental_output_paths</a>=&lt;off, content or strip&gt</code> default: "off"</dt>
<dd>
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 &#39;supports-path-mapping&#39; to the &#39;execution_requirements&#39; dict.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_override_name_platform_in_output_dir"><code><a href="#flag--experimental_override_name_platform_in_output_dir">--experimental_override_name_platform_in_output_dir</a>=&lt;a &#39;label=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_platform_in_output_dir"><code><a href="#flag--experimental_platform_in_output_dir">--[no]experimental_platform_in_output_dir</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_use_llvm_covmap"><code><a href="#flag--experimental_use_llvm_covmap">--[no]experimental_use_llvm_covmap</a></code> default: "false"</dt>
<dd>
If specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_use_platforms_in_output_dir_legacy_heuristic"><code><a href="#flag--experimental_use_platforms_in_output_dir_legacy_heuristic">--[no]experimental_use_platforms_in_output_dir_legacy_heuristic</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--fat_apk_cpu"><code><a href="#flag--fat_apk_cpu">--fat_apk_cpu</a>=&lt;comma-separated set of options&gt</code> default: "armeabi-v7a"</dt>
<dd>
Setting this option enables fat APKs, which contain native binaries for all specified target architectures, e.g., --fat_apk_cpu=x86,armeabi-v7a. If this flag is specified, then --android_cpu is ignored for dependencies of android_binary rules.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--fat_apk_hwasan"><code><a href="#flag--fat_apk_hwasan">--[no]fat_apk_hwasan</a></code> default: "false"</dt>
<dd>
Whether to create HWASAN splits.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--fdo_instrument"><code><a href="#flag--fdo_instrument">--fdo_instrument</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--fdo_optimize"><code><a href="#flag--fdo_optimize">--fdo_optimize</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--fdo_prefetch_hints"><code><a href="#flag--fdo_prefetch_hints">--fdo_prefetch_hints</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Use cache prefetch hints.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--fdo_profile"><code><a href="#flag--fdo_profile">--fdo_profile</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The fdo_profile representing the profile to be used for optimization.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--features"><code><a href="#flag--features">--features</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--force_pic"><code><a href="#flag--force_pic">--[no]force_pic</a></code> default: "false"</dt>
<dd>
If enabled, all C++ compilations produce position-independent code (&quot;-fPIC&quot;), links prefer PIC pre-built libraries over non-PIC libraries, and links produce position-independent executables (&quot;-pie&quot;).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_action_env"><code><a href="#flag--host_action_env">--host_action_env</a>=&lt;a &#39;name=value&#39; assignment with an optional value part&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--host_compilation_mode"><code><a href="#flag--host_compilation_mode">--host_compilation_mode</a>=&lt;fastbuild, dbg or opt&gt</code> default: "opt"</dt>
<dd>
Specify the mode the tools used during the build will be built in. Values: &#39;fastbuild&#39;, &#39;dbg&#39;, &#39;opt&#39;.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--host_conlyopt"><code><a href="#flag--host_conlyopt">--host_conlyopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_copt"><code><a href="#flag--host_copt">--host_copt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the C compiler for tools built in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_cpu"><code><a href="#flag--host_cpu">--host_cpu</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The host CPU.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_cxxopt"><code><a href="#flag--host_cxxopt">--host_cxxopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to C++ compiler for tools built in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_features"><code><a href="#flag--host_features">--host_features</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_force_python"><code><a href="#flag--host_force_python">--host_force_python</a>=&lt;PY2 or PY3&gt</code> default: see description</dt>
<dd>
Overrides the Python version for the exec configuration. Can be &quot;PY2&quot; or &quot;PY3&quot;.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_linkopt"><code><a href="#flag--host_linkopt">--host_linkopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to linker when linking tools in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_macos_minimum_os"><code><a href="#flag--host_macos_minimum_os">--host_macos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible macOS version for host targets. If unspecified, uses &#39;macos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--host_per_file_copt"><code><a href="#flag--host_per_file_copt">--host_per_file_copt</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths followed by an @ and a comma separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_swiftcopt"><code><a href="#flag--host_swiftcopt">--host_swiftcopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to swiftc for exec tools.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--incompatible_auto_exec_groups"><code><a href="#flag--incompatible_auto_exec_groups">--[no]incompatible_auto_exec_groups</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_merge_genfiles_directory"><code><a href="#flag--incompatible_merge_genfiles_directory">--[no]incompatible_merge_genfiles_directory</a></code> default: "true"</dt>
<dd>
If true, the genfiles directory is folded into the bin directory.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_use_host_features"><code><a href="#flag--incompatible_use_host_features">--[no]incompatible_use_host_features</a></code> default: "true"</dt>
<dd>
If true, use --features only for the target configuration and --host_features for the exec configuration.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--instrument_test_targets"><code><a href="#flag--instrument_test_targets">--[no]instrument_test_targets</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--instrumentation_filter"><code><a href="#flag--instrumentation_filter">--instrumentation_filter</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths&gt</code> default: "-/javatests[/:],-/test/java[/:]"</dt>
<dd>
When coverage is enabled, only rules with names included by the specified regex-based filter will be instrumented. Rules prefixed with &#39;-&#39; are excluded instead. Note that only non-test rules are instrumented unless --instrument_test_targets is enabled.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ios_minimum_os"><code><a href="#flag--ios_minimum_os">--ios_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible iOS version for target simulators and devices. If unspecified, uses &#39;ios_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--ios_multi_cpus"><code><a href="#flag--ios_multi_cpus">--ios_multi_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--legacy_whole_archive"><code><a href="#flag--legacy_whole_archive">--[no]legacy_whole_archive</a></code> default: "true"</dt>
<dd>
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 &#39;-static&#39; in linkopts. This is for backwards compatibility only. A better alternative is to use alwayslink=1 where required.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--linkopt"><code><a href="#flag--linkopt">--linkopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to gcc when linking.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ltobackendopt"><code><a href="#flag--ltobackendopt">--ltobackendopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to the LTO backend step (under --features=thin_lto).
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ltoindexopt"><code><a href="#flag--ltoindexopt">--ltoindexopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to the LTO indexing step (under --features=thin_lto).
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--macos_cpus"><code><a href="#flag--macos_cpus">--macos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple macOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--macos_minimum_os"><code><a href="#flag--macos_minimum_os">--macos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible macOS version for targets. If unspecified, uses &#39;macos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--memprof_profile"><code><a href="#flag--memprof_profile">--memprof_profile</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Use memprof profile.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--objc_debug_with_GLIBCXX"><code><a href="#flag--objc_debug_with_GLIBCXX">--[no]objc_debug_with_GLIBCXX</a></code> default: "false"</dt>
<dd>
If set, and compilation mode is set to &#39;dbg&#39;, define GLIBCXX_DEBUG,  GLIBCXX_DEBUG_PEDANTIC and GLIBCPP_CONCEPT_CHECKS.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--objc_enable_binary_stripping"><code><a href="#flag--objc_enable_binary_stripping">--[no]objc_enable_binary_stripping</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--objccopt"><code><a href="#flag--objccopt">--objccopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to gcc when compiling Objective-C/C++ source files.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--per_file_copt"><code><a href="#flag--per_file_copt">--per_file_copt</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths followed by an @ and a comma separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--per_file_ltobackendopt"><code><a href="#flag--per_file_ltobackendopt">--per_file_ltobackendopt</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths followed by an @ and a comma separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--platform_suffix"><code><a href="#flag--platform_suffix">--platform_suffix</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Specifies a suffix to be added to the configuration directory.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--propeller_optimize"><code><a href="#flag--propeller_optimize">--propeller_optimize</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
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 = &quot;propeller_profile&quot;,    cc_profile = &quot;propeller_cc_profile.txt&quot;,    ld_profile = &quot;propeller_ld_profile.txt&quot;,)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
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--propeller_optimize_absolute_cc_profile"><code><a href="#flag--propeller_optimize_absolute_cc_profile">--propeller_optimize_absolute_cc_profile</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Absolute path name of cc_profile file for Propeller Optimized builds.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--propeller_optimize_absolute_ld_profile"><code><a href="#flag--propeller_optimize_absolute_ld_profile">--propeller_optimize_absolute_ld_profile</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Absolute path name of ld_profile file for Propeller Optimized builds.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--run_under"><code><a href="#flag--run_under">--run_under</a>=&lt;a prefix in front of command&gt</code> default: see description</dt>
<dd>
Prefix to insert before the executables for the &#39;test&#39; and &#39;run&#39; commands. If the value is &#39;foo -bar&#39;, and the execution command line is &#39;test_binary -baz&#39;, then the final command line is &#39;foo -bar test_binary -baz&#39;.This can also be a label to an executable target. Some examples are: &#39;valgrind&#39;, &#39;strace&#39;, &#39;strace -c&#39;, &#39;valgrind --quiet --num-callers=20&#39;, &#39;//package:target&#39;,  &#39;//package:target --options&#39;.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--share_native_deps"><code><a href="#flag--share_native_deps">--[no]share_native_deps</a></code> default: "true"</dt>
<dd>
If true, native libraries that contain identical functionality will be shared among different targets
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--stamp"><code><a href="#flag--stamp">--[no]stamp</a></code> default: "false"</dt>
<dd>
Stamp binaries with the date, username, hostname, workspace information, etc.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--strip"><code><a href="#flag--strip">--strip</a>=&lt;always, sometimes or never&gt</code> default: "sometimes"</dt>
<dd>
Specifies whether to strip binaries and shared libraries  (using &quot;-Wl,--strip-debug&quot;).  The default value of &#39;sometimes&#39; means strip iff --compilation_mode=fastbuild.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--stripopt"><code><a href="#flag--stripopt">--stripopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to strip when generating a &#39;&lt;name&gt;.stripped&#39; binary.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--swiftcopt"><code><a href="#flag--swiftcopt">--swiftcopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to Swift compilation.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--tvos_cpus"><code><a href="#flag--tvos_cpus">--tvos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple tvOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--tvos_minimum_os"><code><a href="#flag--tvos_minimum_os">--tvos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible tvOS version for target simulators and devices. If unspecified, uses &#39;tvos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--visionos_cpus"><code><a href="#flag--visionos_cpus">--visionos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple visionOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--watchos_cpus"><code><a href="#flag--watchos_cpus">--watchos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple watchOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--watchos_minimum_os"><code><a href="#flag--watchos_minimum_os">--watchos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible watchOS version for target simulators and devices. If unspecified, uses &#39;watchos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--xbinary_fdo"><code><a href="#flag--xbinary_fdo">--xbinary_fdo</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options that affect how strictly Bazel enforces valid build inputs (rule definitions,  flag combinations, etc.):
<dt id="flag--auto_cpu_environment_group"><code><a href="#flag--auto_cpu_environment_group">--auto_cpu_environment_group</a>=&lt;a build target label&gt</code> default: ""</dt>
<dd>
Declare the environment_group to use for automatically mapping cpu values to target_environment values.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--check_licenses"><code><a href="#flag--check_licenses">--[no]check_licenses</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--check_visibility"><code><a href="#flag--check_visibility">--[no]check_visibility</a></code> default: "true"</dt>
<dd>
If disabled, visibility errors in target dependencies are demoted to warnings.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--desugar_for_android"><code><a href="#flag--desugar_for_android">--[no]desugar_for_android</a></code> default: "true"</dt>
<dd>
Whether to desugar Java 8 bytecode before dexing.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--desugar_java8_libs"><code><a href="#flag--desugar_java8_libs">--[no]desugar_java8_libs</a></code> default: "false"</dt>
<dd>
Whether to include supported Java 8 libraries in apps for legacy devices.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--enforce_constraints"><code><a href="#flag--enforce_constraints">--[no]enforce_constraints</a></code> default: "true"</dt>
<dd>
Checks the environments each target is compatible with and reports errors if any target has dependencies that don&#39;t support the same environments
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--experimental_check_desugar_deps"><code><a href="#flag--experimental_check_desugar_deps">--[no]experimental_check_desugar_deps</a></code> default: "true"</dt>
<dd>
Whether to double-check correct desugaring at Android binary level.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_import_deps_checking"><code><a href="#flag--experimental_import_deps_checking">--experimental_import_deps_checking</a>=&lt;off, warning or error&gt</code> default: "OFF"</dt>
<dd>
When enabled, check whether the dependencies of an aar_import are complete. This enforcement can break the build, or can just result in warnings.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_one_version_enforcement"><code><a href="#flag--experimental_one_version_enforcement">--experimental_one_version_enforcement</a>=&lt;off, warning or error&gt</code> default: "OFF"</dt>
<dd>
When enabled, enforce that a java_binary rule can&#39;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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_strict_java_deps"><code><a href="#flag--experimental_strict_java_deps">--experimental_strict_java_deps</a>=&lt;off, warn, error, strict or default&gt</code> default: "default"</dt>
<dd>
If true, checks that a Java target explicitly declares all directly used targets as dependencies.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--incompatible_check_testonly_for_output_files"><code><a href="#flag--incompatible_check_testonly_for_output_files">--[no]incompatible_check_testonly_for_output_files</a></code> default: "false"</dt>
<dd>
If enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_check_visibility_for_toolchains"><code><a href="#flag--incompatible_check_visibility_for_toolchains">--[no]incompatible_check_visibility_for_toolchains</a></code> default: "false"</dt>
<dd>
If enabled, visibility checking also applies to toolchain implementations.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disable_native_android_rules"><code><a href="#flag--incompatible_disable_native_android_rules">--[no]incompatible_disable_native_android_rules</a></code> default: "false"</dt>
<dd>
If enabled, direct usage of the native Android rules is disabled. Please use the Starlark Android rules from https://github.com/bazelbuild/rules_android
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disable_native_apple_binary_rule"><code><a href="#flag--incompatible_disable_native_apple_binary_rule">--[no]incompatible_disable_native_apple_binary_rule</a></code> default: "false"</dt>
<dd>
No-op. Kept here for backwards compatibility.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_python_disable_py2"><code><a href="#flag--incompatible_python_disable_py2">--[no]incompatible_python_disable_py2</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_validate_top_level_header_inclusions"><code><a href="#flag--incompatible_validate_top_level_header_inclusions">--[no]incompatible_validate_top_level_header_inclusions</a></code> default: "true"</dt>
<dd>
If true, Bazel will also validate top level directory header inclusions (see https://github.com/bazelbuild/bazel/issues/10047 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--one_version_enforcement_on_java_tests"><code><a href="#flag--one_version_enforcement_on_java_tests">--[no]one_version_enforcement_on_java_tests</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--python_native_rules_allowlist"><code><a href="#flag--python_native_rules_allowlist">--python_native_rules_allowlist</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
An allowlist (package_group target) to use when enforcing --incompatible_python_disallow_native_rules.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--strict_filesets"><code><a href="#flag--strict_filesets">--[no]strict_filesets</a></code> default: "false"</dt>
<dd>
If this option is enabled, filesets crossing package boundaries are reported as errors.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--strict_proto_deps"><code><a href="#flag--strict_proto_deps">--strict_proto_deps</a>=&lt;off, warn, error, strict or default&gt</code> default: "error"</dt>
<dd>
Unless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--strict_public_imports"><code><a href="#flag--strict_public_imports">--strict_public_imports</a>=&lt;off, warn, error, strict or default&gt</code> default: "off"</dt>
<dd>
Unless OFF, checks that a proto_library target explicitly declares all targets used in &#39;import public&#39; as exported.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--strict_system_includes"><code><a href="#flag--strict_system_includes">--[no]strict_system_includes</a></code> default: "false"</dt>
<dd>
If true, headers found through system include paths (-isystem) are also required to be declared.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--target_environment"><code><a href="#flag--target_environment">--target_environment</a>=&lt;a build target label&gt</code> multiple uses are accumulated</dt>
<dd>
Declares this build&#39;s target environment. Must be a label reference to an &quot;environment&quot; rule. If specified, all top-level targets must be compatible with this environment.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Options that affect the signing outputs of a build:
<dt id="flag--apk_signing_method"><code><a href="#flag--apk_signing_method">--apk_signing_method</a>=&lt;v1, v2, v1_v2 or v4&gt</code> default: "v1_v2"</dt>
<dd>
Implementation to use to sign APKs
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--device_debug_entitlements"><code><a href="#flag--device_debug_entitlements">--[no]device_debug_entitlements</a></code> default: "true"</dt>
<dd>
If set, and compilation mode is not &#39;opt&#39;, objc apps will include debug entitlements when signing.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--ios_signing_cert_name"><code><a href="#flag--ios_signing_cert_name">--ios_signing_cert_name</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Certificate name to use for iOS signing. If not set will fall back to provisioning profile. May be the certificate&#39;s keychain identity preference or (substring) of the certificate&#39;s common name, as per codesign&#39;s man page (SIGNING IDENTITIES).
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
</dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--incompatible_config_setting_private_default_visibility"><code><a href="#flag--incompatible_config_setting_private_default_visibility">--[no]incompatible_config_setting_private_default_visibility</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disallow_legacy_py_provider"><code><a href="#flag--incompatible_disallow_legacy_py_provider">--[no]incompatible_disallow_legacy_py_provider</a></code> default: "true"</dt>
<dd>
No-op, will be removed soon.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disallow_sdk_frameworks_attributes"><code><a href="#flag--incompatible_disallow_sdk_frameworks_attributes">--[no]incompatible_disallow_sdk_frameworks_attributes</a></code> default: "false"</dt>
<dd>
If true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library andobjc_import.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enforce_config_setting_visibility"><code><a href="#flag--incompatible_enforce_config_setting_visibility">--[no]incompatible_enforce_config_setting_visibility</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_objc_alwayslink_by_default"><code><a href="#flag--incompatible_objc_alwayslink_by_default">--[no]incompatible_objc_alwayslink_by_default</a></code> default: "false"</dt>
<dd>
If true, make the default value true for alwayslink attributes in objc_library and objc_import.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_python_disallow_native_rules"><code><a href="#flag--incompatible_python_disallow_native_rules">--[no]incompatible_python_disallow_native_rules</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
</dl>
<dl>Options that govern the behavior of the test environment or test runner:
<dt id="flag--allow_analysis_failures"><code><a href="#flag--allow_analysis_failures">--[no]allow_analysis_failures</a></code> default: "false"</dt>
<dd>
If true, an analysis failure of a rule target results in the target&#39;s propagation of an instance of AnalysisFailureInfo containing the error description, instead of resulting in a build failure.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--analysis_testing_deps_limit"><code><a href="#flag--analysis_testing_deps_limit">--analysis_testing_deps_limit</a>=&lt;an integer&gt</code> default: "2000"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--break_build_on_parallel_dex2oat_failure"><code><a href="#flag--break_build_on_parallel_dex2oat_failure">--[no]break_build_on_parallel_dex2oat_failure</a></code> default: "false"</dt>
<dd>
If true dex2oat action failures will cause the build to break instead of executing dex2oat during test runtime.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--default_test_resources"><code><a href="#flag--default_test_resources">--default_test_resources</a>=&lt;a resource name followed by equal and 1 float or 4 float, e.g. memory=10,30,60,100&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_android_use_parallel_dex2oat"><code><a href="#flag--experimental_android_use_parallel_dex2oat">--[no]experimental_android_use_parallel_dex2oat</a></code> default: "false"</dt>
<dd>
Use dex2oat in parallel to possibly speed up android_test.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--ios_memleaks"><code><a href="#flag--ios_memleaks">--[no]ios_memleaks</a></code> default: "false"</dt>
<dd>
Enable checking for memory leaks in ios_test targets.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--ios_simulator_device"><code><a href="#flag--ios_simulator_device">--ios_simulator_device</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The device to simulate when running an iOS application in the simulator, e.g. &#39;iPhone 6&#39;. You can get a list of devices by running &#39;xcrun simctl list devicetypes&#39; on the machine the simulator will be run on.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
<dt id="flag--ios_simulator_version"><code><a href="#flag--ios_simulator_version">--ios_simulator_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
<dt id="flag--runs_per_test"><code><a href="#flag--runs_per_test">--runs_per_test</a>=&lt;a positive integer or test_regex@runs. This flag may be passed more than once&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--test_env"><code><a href="#flag--test_env">--test_env</a>=&lt;a &#39;name=value&#39; assignment with an optional value part&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;bazel test&#39; command.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
<dt id="flag--test_timeout"><code><a href="#flag--test_timeout">--test_timeout</a>=&lt;a single integer or comma-separated list of 4 integers&gt</code> default: "-1"</dt>
<dd>
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.
</dd>
<dt id="flag--zip_undeclared_test_outputs"><code><a href="#flag--zip_undeclared_test_outputs">--[no]zip_undeclared_test_outputs</a></code> default: "true"</dt>
<dd>
If true, undeclared test outputs will be archived in a zip file.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--configure"><code><a href="#flag--configure">--[no]configure</a></code> default: "false"</dt>
<dd>
Only fetches repositories marked as &#39;configure&#39; for system-configuration purpose. Only works when --enable_bzlmod is on.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--force"><code><a href="#flag--force">--[no]force</a></code> default: "false"</dt>
<dd>
Ignore existing repository if any and force fetch the repository again. Only works when --enable_bzlmod is on.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--repo"><code><a href="#flag--repo">--repo</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Only fetches the specified repository, which can be either {@apparent_repo_name} or {@@canonical_repo_name}. Only works when --enable_bzlmod is on.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--experimental_filter_library_jar_with_program_jar"><code><a href="#flag--experimental_filter_library_jar_with_program_jar">--[no]experimental_filter_library_jar_with_program_jar</a></code> default: "false"</dt>
<dd>
Filter the ProGuard ProgramJar to remove any classes also present in the LibraryJar.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--experimental_inmemory_dotd_files"><code><a href="#flag--experimental_inmemory_dotd_files">--[no]experimental_inmemory_dotd_files</a></code> default: "true"</dt>
<dd>
If enabled, C++ .d files will be passed through in memory directly from the remote build nodes instead of being written to disk.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_inmemory_jdeps_files"><code><a href="#flag--experimental_inmemory_jdeps_files">--[no]experimental_inmemory_jdeps_files</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_objc_include_scanning"><code><a href="#flag--experimental_objc_include_scanning">--[no]experimental_objc_include_scanning</a></code> default: "false"</dt>
<dd>
Whether to perform include scanning for objective C/C++.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--experimental_retain_test_configuration_across_testonly"><code><a href="#flag--experimental_retain_test_configuration_across_testonly">--[no]experimental_retain_test_configuration_across_testonly</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--experimental_starlark_cc_import"><code><a href="#flag--experimental_starlark_cc_import">--[no]experimental_starlark_cc_import</a></code> default: "false"</dt>
<dd>
If enabled, the Starlark version of cc_import can be used.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_unsupported_and_brittle_include_scanning"><code><a href="#flag--experimental_unsupported_and_brittle_include_scanning">--[no]experimental_unsupported_and_brittle_include_scanning</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--incremental_dexing"><code><a href="#flag--incremental_dexing">--[no]incremental_dexing</a></code> default: "true"</dt>
<dd>
Does most of the work for dexing separately for each Jar file.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--objc_use_dotd_pruning"><code><a href="#flag--objc_use_dotd_pruning">--[no]objc_use_dotd_pruning</a></code> default: "true"</dt>
<dd>
If set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--process_headers_in_dependencies"><code><a href="#flag--process_headers_in_dependencies">--[no]process_headers_in_dependencies</a></code> default: "false"</dt>
<dd>
When building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--trim_test_configuration"><code><a href="#flag--trim_test_configuration">--[no]trim_test_configuration</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--toolchain_resolution_debug"><code><a href="#flag--toolchain_resolution_debug">--toolchain_resolution_debug</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths&gt</code> default: "-.*"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--flag_alias"><code><a href="#flag--flag_alias">--flag_alias</a>=&lt;a &#39;name=value&#39; flag alias&gt</code> multiple uses are accumulated</dt>
<dd>
Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form &quot;&lt;key&gt;=&lt;value&gt;&quot; as an argument.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--incompatible_default_to_explicit_init_py"><code><a href="#flag--incompatible_default_to_explicit_init_py">--[no]incompatible_default_to_explicit_init_py</a></code> default: "false"</dt>
<dd>
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 &quot;auto&quot; (the default), it is treated as false if and only if this flag is set. See https://github.com/bazelbuild/bazel/issues/10076.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_py2_outputs_are_suffixed"><code><a href="#flag--incompatible_py2_outputs_are_suffixed">--[no]incompatible_py2_outputs_are_suffixed</a></code> default: "true"</dt>
<dd>
If true, targets built in the Python 2 configuration will appear under an output root that includes the suffix &#39;-py2&#39;, 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`.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_py3_is_default"><code><a href="#flag--incompatible_py3_is_default">--[no]incompatible_py3_is_default</a></code> default: "true"</dt>
<dd>
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`.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_use_python_toolchains"><code><a href="#flag--incompatible_use_python_toolchains">--[no]incompatible_use_python_toolchains</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--python_version"><code><a href="#flag--python_version">--python_version</a>=&lt;PY2 or PY3&gt</code> default: see description</dt>
<dd>
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&#39;t explicitly specify a version) so there is usually not much reason to supply this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl></dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--cache_test_results"><code><a href="#flag--cache_test_results">--[no]cache_test_results</a></code> [<code>-t</code>] default: "auto"</dt>
<dd>
If set to &#39;auto&#39;, 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 &#39;yes&#39;, Bazel caches all test results except for tests marked as external. If set to &#39;no&#39;, Bazel does not cache any test results.
</dd>
<dt id="flag--deleted_packages"><code><a href="#flag--deleted_packages">--deleted_packages</a>=&lt;comma-separated list of package names&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;x/y&#39; of an existing package &#39;x&#39;.  For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label &#39;//x:y/z&#39; if that is still provided by another package_path entry.  Specifying --deleted_packages x/y avoids this problem.
</dd>
<dt id="flag--experimental_cancel_concurrent_tests"><code><a href="#flag--experimental_cancel_concurrent_tests">--[no]experimental_cancel_concurrent_tests</a></code> default: "false"</dt>
<dd>
If true, then Blaze will cancel concurrently running tests on the first successful run. This is only useful in combination with --runs_per_test_detects_flakes.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_fetch_all_coverage_outputs"><code><a href="#flag--experimental_fetch_all_coverage_outputs">--[no]experimental_fetch_all_coverage_outputs</a></code> default: "false"</dt>
<dd>
If true, then Bazel fetches the entire coverage data directory for each test during a coverage run.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_generate_llvm_lcov"><code><a href="#flag--experimental_generate_llvm_lcov">--[no]experimental_generate_llvm_lcov</a></code> default: "false"</dt>
<dd>
If true, coverage for clang will generate an LCOV report.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_j2objc_header_map"><code><a href="#flag--experimental_j2objc_header_map">--[no]experimental_j2objc_header_map</a></code> default: "true"</dt>
<dd>
Whether to generate J2ObjC header map in parallel of J2ObjC transpilation.
</dd>
<dt id="flag--experimental_j2objc_shorter_header_path"><code><a href="#flag--experimental_j2objc_shorter_header_path">--[no]experimental_j2objc_shorter_header_path</a></code> default: "false"</dt>
<dd>
Whether to generate with shorter header path (uses &quot;_ios&quot; instead of &quot;_j2objc&quot;).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_java_classpath"><code><a href="#flag--experimental_java_classpath">--experimental_java_classpath</a>=&lt;off, javabuilder or bazel&gt</code> default: "javabuilder"</dt>
<dd>
Enables reduced classpaths for Java compilations.
</dd>
<dt id="flag--experimental_limit_android_lint_to_android_constrained_java"><code><a href="#flag--experimental_limit_android_lint_to_android_constrained_java">--[no]experimental_limit_android_lint_to_android_constrained_java</a></code> default: "false"</dt>
<dd>
Limit --experimental_run_android_lint_on_java_rules to Android-compatible libraries.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_run_android_lint_on_java_rules"><code><a href="#flag--experimental_run_android_lint_on_java_rules">--[no]experimental_run_android_lint_on_java_rules</a></code> default: "false"</dt>
<dd>
Whether to validate java_* sources.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--explicit_java_test_deps"><code><a href="#flag--explicit_java_test_deps">--[no]explicit_java_test_deps</a></code> default: "false"</dt>
<dd>
Explicitly specify a dependency to JUnit or Hamcrest in a java_test instead of  accidentally obtaining from the TestRunner&#39;s deps. Only works for bazel right now.
</dd>
<dt id="flag--fetch"><code><a href="#flag--fetch">--[no]fetch</a></code> default: "true"</dt>
<dd>
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.
</dd>
<dt id="flag--host_java_launcher"><code><a href="#flag--host_java_launcher">--host_java_launcher</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The Java launcher used by tools that are executed during a build.
</dd>
<dt id="flag--host_javacopt"><code><a href="#flag--host_javacopt">--host_javacopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to javac when building tools that are executed during a build.
</dd>
<dt id="flag--host_jvmopt"><code><a href="#flag--host_jvmopt">--host_jvmopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--incompatible_check_sharding_support"><code><a href="#flag--incompatible_check_sharding_support">--[no]incompatible_check_sharding_support</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_exclusive_test_sandboxed"><code><a href="#flag--incompatible_exclusive_test_sandboxed">--[no]incompatible_exclusive_test_sandboxed</a></code> default: "true"</dt>
<dd>
If true, exclusive tests will run with sandboxed strategy. Add &#39;local&#39; tag to force an exclusive test run locally
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_strict_action_env"><code><a href="#flag--incompatible_strict_action_env">--[no]incompatible_strict_action_env</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--j2objc_translation_flags"><code><a href="#flag--j2objc_translation_flags">--j2objc_translation_flags</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the J2ObjC tool.
</dd>
<dt id="flag--java_debug"><code><a href="#flag--java_debug">--java_debug</a></code></dt>
<dd>
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.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--test_arg">--test_arg=--wrapper_script_flag=--debug</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--test_output">--test_output=streamed</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--test_strategy">--test_strategy=exclusive</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--test_timeout">--test_timeout=9999</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--nocache_test_results">--nocache_test_results</a></code><br/>
</dd>
<dt id="flag--java_deps"><code><a href="#flag--java_deps">--[no]java_deps</a></code> default: "true"</dt>
<dd>
Generate dependency information (for now, compile-time classpath) per Java target.
</dd>
<dt id="flag--java_header_compilation"><code><a href="#flag--java_header_compilation">--[no]java_header_compilation</a></code> default: "true"</dt>
<dd>
Compile ijars directly from source.
</dd>
<dt id="flag--java_language_version"><code><a href="#flag--java_language_version">--java_language_version</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The Java language version
</dd>
<dt id="flag--java_launcher"><code><a href="#flag--java_launcher">--java_launcher</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The Java launcher to use when building Java binaries.  If this flag is set to the empty string, the JDK launcher is used. The &quot;launcher&quot; attribute overrides this flag.
</dd>
<dt id="flag--java_runtime_version"><code><a href="#flag--java_runtime_version">--java_runtime_version</a>=&lt;a string&gt</code> default: "local_jdk"</dt>
<dd>
The Java runtime version
</dd>
<dt id="flag--javacopt"><code><a href="#flag--javacopt">--javacopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to javac.
</dd>
<dt id="flag--jvmopt"><code><a href="#flag--jvmopt">--jvmopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the Java VM. These options will get added to the VM startup options of each java_binary target.
</dd>
<dt id="flag--legacy_main_dex_list_generator"><code><a href="#flag--legacy_main_dex_list_generator">--legacy_main_dex_list_generator</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.
</dd>
<dt id="flag--optimizing_dexer"><code><a href="#flag--optimizing_dexer">--optimizing_dexer</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies a binary to use to do dexing without sharding.
</dd>
<dt id="flag--package_path"><code><a href="#flag--package_path">--package_path</a>=&lt;colon-separated list of options&gt</code> default: "%workspace%"</dt>
<dd>
A colon-separated list of where to look for packages. Elements beginning with &#39;%workspace%&#39; are relative to the enclosing workspace. If omitted or empty, the default is the output of &#39;bazel info default-package-path&#39;.
</dd>
<dt id="flag--plugin"><code><a href="#flag--plugin">--plugin</a>=&lt;a build target label&gt</code> multiple uses are accumulated</dt>
<dd>
Plugins to use in the build. Currently works with java_plugin.
</dd>
<dt id="flag--proguard_top"><code><a href="#flag--proguard_top">--proguard_top</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies which version of ProGuard to use for code removal when building a Java binary.
</dd>
<dt id="flag--proto_compiler"><code><a href="#flag--proto_compiler">--proto_compiler</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:protoc"</dt>
<dd>
The label of the proto-compiler.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_cc"><code><a href="#flag--proto_toolchain_for_cc">--proto_toolchain_for_cc</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:cc_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile C++ protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_j2objc"><code><a href="#flag--proto_toolchain_for_j2objc">--proto_toolchain_for_j2objc</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/j2objc:j2objc_proto_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile j2objc protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_java"><code><a href="#flag--proto_toolchain_for_java">--proto_toolchain_for_java</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:java_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile Java protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_javalite"><code><a href="#flag--proto_toolchain_for_javalite">--proto_toolchain_for_javalite</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:javalite_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile JavaLite protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--protocopt"><code><a href="#flag--protocopt">--protocopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the protobuf compiler.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--runs_per_test_detects_flakes"><code><a href="#flag--runs_per_test_detects_flakes">--[no]runs_per_test_detects_flakes</a></code> default: "false"</dt>
<dd>
If true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.
</dd>
<dt id="flag--shell_executable"><code><a href="#flag--shell_executable">--shell_executable</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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:/tools/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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--show_loading_progress"><code><a href="#flag--show_loading_progress">--[no]show_loading_progress</a></code> default: "true"</dt>
<dd>
If enabled, causes Bazel to print &quot;Loading package:&quot; messages.
</dd>
<dt id="flag--test_arg"><code><a href="#flag--test_arg">--test_arg</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;bazel test&#39; command.
</dd>
<dt id="flag--test_filter"><code><a href="#flag--test_filter">--test_filter</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--test_result_expiration"><code><a href="#flag--test_result_expiration">--test_result_expiration</a>=&lt;an integer&gt</code> default: "-1"</dt>
<dd>
This option is deprecated and has no effect.
</dd>
<dt id="flag--test_runner_fail_fast"><code><a href="#flag--test_runner_fail_fast">--[no]test_runner_fail_fast</a></code> default: "false"</dt>
<dd>
Forwards fail fast option to the test runner. The test runner should stop execution upon first failure.
</dd>
<dt id="flag--test_sharding_strategy"><code><a href="#flag--test_sharding_strategy">--test_sharding_strategy</a>=&lt;explicit, disabled or forced=k where k is the number of shards to enforce&gt</code> default: "explicit"</dt>
<dd>
Specify strategy for test sharding: &#39;explicit&#39; to only use sharding if the &#39;shard_count&#39; BUILD attribute is present. &#39;disabled&#39; to never use test sharding. &#39;forced=k&#39; to enforce &#39;k&#39; shards for testing regardless of the &#39;shard_count&#39; BUILD attribute.
</dd>
<dt id="flag--tool_java_language_version"><code><a href="#flag--tool_java_language_version">--tool_java_language_version</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The Java language version used to execute the tools that are needed during a build
</dd>
<dt id="flag--tool_java_runtime_version"><code><a href="#flag--tool_java_runtime_version">--tool_java_runtime_version</a>=&lt;a string&gt</code> default: "remotejdk_11"</dt>
<dd>
The Java runtime version used to execute tools during the build
</dd>
<dt id="flag--use_ijars"><code><a href="#flag--use_ijars">--[no]use_ijars</a></code> default: "true"</dt>
<dd>
If enabled, this option causes Java compilation to use interface jars. This will result in faster incremental compilation, but error messages can be different.
</dd>
</dl>

<h2><a name="help">Help Options</a></h2>
<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
<dt id="flag--help_verbosity"><code><a href="#flag--help_verbosity">--help_verbosity</a>=&lt;long, medium or short&gt</code> default: "medium"</dt>
<dd>
Select the verbosity of the help command.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--long"><code><a href="#flag--long">--long</a></code> [<code>-l</code>]</dt>
<dd>
Show full description of each option, instead of just its name.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--help_verbosity">--help_verbosity=long</a></code><br/>
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--short"><code><a href="#flag--short">--short</a></code></dt>
<dd>
Show only the names of the options, not their types or meanings.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--help_verbosity">--help_verbosity=short</a></code><br/>
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
</dl>

<h2><a name="info">Info Options</a></h2>
<p>Inherits all options from <a href="#build">build</a>.</p>

<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
<dt id="flag--show_make_env"><code><a href="#flag--show_make_env">--[no]show_make_env</a></code> default: "false"</dt>
<dd>
Include the &quot;Make&quot; environment in the output.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
</dl>

<h2><a name="license">License Options</a></h2>
<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
</dl>

<h2><a name="mobile-install">Mobile-install Options</a></h2>
<p>Inherits all options from <a href="#build">build</a>.</p>

<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--mode"><code><a href="#flag--mode">--mode</a>=&lt;classic, classic_internal_test_do_not_use or skylark&gt</code> default: "classic"</dt>
<dd>
Select how to run mobile-install. &quot;classic&quot; runs the current version of mobile-install. &quot;skylark&quot; uses the new Starlark version, which has support for android_test.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
</dl>
<dl>Options that configure the toolchain used for action execution:
<dt id="flag--adb"><code><a href="#flag--adb">--adb</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
adb binary to use for the &#39;mobile-install&#39; command. If unspecified, the one in the Android SDK specified by the --android_sdk command line option (or the default SDK if --android_sdk is not specified) is used.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Options that control the output of the command:
<dt id="flag--incremental"><code><a href="#flag--incremental">--[no]incremental</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--split_apks"><code><a href="#flag--split_apks">--[no]split_apks</a></code> default: "false"</dt>
<dd>
Whether to use split apks to install and update the application on the device. Works only with devices with Marshmallow or later
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options that let the user configure the intended output, affecting its value, as opposed to its existence:
<dt id="flag--adb_arg"><code><a href="#flag--adb_arg">--adb_arg</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Extra arguments to pass to adb. Usually used to designate a device to install to.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--debug_app"><code><a href="#flag--debug_app">--debug_app</a></code></dt>
<dd>
Whether to wait for the debugger before starting the app.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--start">--start=DEBUG</a></code><br/>
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--device"><code><a href="#flag--device">--device</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The adb device serial number. If not specified, the first device will be used.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--start"><code><a href="#flag--start">--start</a>=&lt;no, cold, warm or debug&gt</code> default: "NO"</dt>
<dd>
How the app should be started after installing it. Set to WARM to preserve and restore application state on incremental installs.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--start_app"><code><a href="#flag--start_app">--start_app</a></code></dt>
<dd>
Whether to start the app after installing it.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--start">--start=COLD</a></code><br/>
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
<dt id="flag--incremental_install_verbosity"><code><a href="#flag--incremental_install_verbosity">--incremental_install_verbosity</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The verbosity for incremental install. Set to 1 for debug logging.
<br>Tags:
<a href="#effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></a></dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
</dl>

<h2><a name="mod">Mod Options</a></h2>
<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--keep_going"><code><a href="#flag--keep_going">--[no]keep_going</a></code> [<code>-k</code>] default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--loading_phase_threads"><code><a href="#flag--loading_phase_threads">--loading_phase_threads</a>=&lt;an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> default: "auto"</dt>
<dd>
Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;. &quot;auto&quot; sets a reasonable default based on host resources. Must be at least 1.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
<dt id="flag--incompatible_config_setting_private_default_visibility"><code><a href="#flag--incompatible_config_setting_private_default_visibility">--[no]incompatible_config_setting_private_default_visibility</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enforce_config_setting_visibility"><code><a href="#flag--incompatible_enforce_config_setting_visibility">--[no]incompatible_enforce_config_setting_visibility</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl>Options relating to the output and semantics of the `mod` subcommand:
<dt id="flag--base_module"><code><a href="#flag--base_module">--base_module</a>=&lt;&quot;&lt;root&gt;&quot; for the root module; &lt;module&gt;@&lt;version&gt; for a specific version of a module; &lt;module&gt; for all versions of a module; @&lt;name&gt; for a repo with the given apparent name; or @@&lt;name&gt; for a repo with the given canonical name&gt</code> default: "&lt;root&gt;"</dt>
<dd>
Specify a module relative to which the specified target repos will be interpreted.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--charset"><code><a href="#flag--charset">--charset</a>=&lt;utf8 or ascii&gt</code> default: "utf8"</dt>
<dd>
Chooses the character set to use for the tree. Only affects text output. Valid values are &quot;utf8&quot; or &quot;ascii&quot;. Default is &quot;utf8&quot;
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--cycles"><code><a href="#flag--cycles">--[no]cycles</a></code> default: "false"</dt>
<dd>
Points out dependency cycles inside the displayed tree, which are normally ignored by default.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--depth"><code><a href="#flag--depth">--depth</a>=&lt;an integer&gt</code> default: "-1"</dt>
<dd>
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).

<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--extension_filter"><code><a href="#flag--extension_filter">--extension_filter</a>=&lt;a comma-separated list of &lt;extension&gt;s&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--extension_info"><code><a href="#flag--extension_info">--extension_info</a>=&lt;hidden, usages, repos or all&gt</code> default: "hidden"</dt>
<dd>
Specify how much detail about extension usages to include in the query result. &quot;Usages&quot; will only show the extensions names, &quot;repos&quot; will also include repos imported with use_repo, and &quot;all&quot; will also show the other repositories generated by extensions.

<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--extension_usages"><code><a href="#flag--extension_usages">--extension_usages</a>=&lt;a comma-separated list of &lt;module&gt;s&gt</code> default: ""</dt>
<dd>
Specify modules whose extension usages will be displayed in the show_extension query.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--from"><code><a href="#flag--from">--from</a>=&lt;a comma-separated list of &lt;module&gt;s&gt</code> default: "&lt;root&gt;"</dt>
<dd>
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;.

<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--include_builtin"><code><a href="#flag--include_builtin">--[no]include_builtin</a></code> default: "false"</dt>
<dd>
Include built-in modules in the dependency graph. Disabled by default because it is quite noisy.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--include_unused"><code><a href="#flag--include_unused">--[no]include_unused</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--output"><code><a href="#flag--output">--output</a>=&lt;text, json or graph&gt</code> default: "text"</dt>
<dd>
The format in which the query results should be printed. Allowed values for query are: text, json, graph
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--verbose"><code><a href="#flag--verbose">--[no]verbose</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
</dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--deleted_packages"><code><a href="#flag--deleted_packages">--deleted_packages</a>=&lt;comma-separated list of package names&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;x/y&#39; of an existing package &#39;x&#39;.  For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label &#39;//x:y/z&#39; if that is still provided by another package_path entry.  Specifying --deleted_packages x/y avoids this problem.
</dd>
<dt id="flag--fetch"><code><a href="#flag--fetch">--[no]fetch</a></code> default: "true"</dt>
<dd>
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.
</dd>
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--package_path"><code><a href="#flag--package_path">--package_path</a>=&lt;colon-separated list of options&gt</code> default: "%workspace%"</dt>
<dd>
A colon-separated list of where to look for packages. Elements beginning with &#39;%workspace%&#39; are relative to the enclosing workspace. If omitted or empty, the default is the output of &#39;bazel info default-package-path&#39;.
</dd>
<dt id="flag--show_loading_progress"><code><a href="#flag--show_loading_progress">--[no]show_loading_progress</a></code> default: "true"</dt>
<dd>
If enabled, causes Bazel to print &quot;Loading package:&quot; messages.
</dd>
</dl>

<h2><a name="print_action">Print_action Options</a></h2>
<p>Inherits all options from <a href="#build">build</a>.</p>

<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--print_action_mnemonics"><code><a href="#flag--print_action_mnemonics">--print_action_mnemonics</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Lists which mnemonics to filter print_action data by, no filtering takes place when left empty.
</dd>
</dl>

<h2><a name="query">Query Options</a></h2>
<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--keep_going"><code><a href="#flag--keep_going">--[no]keep_going</a></code> [<code>-k</code>] default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--loading_phase_threads"><code><a href="#flag--loading_phase_threads">--loading_phase_threads</a>=&lt;an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> default: "auto"</dt>
<dd>
Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;. &quot;auto&quot; sets a reasonable default based on host resources. Must be at least 1.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
<dt id="flag--incompatible_config_setting_private_default_visibility"><code><a href="#flag--incompatible_config_setting_private_default_visibility">--[no]incompatible_config_setting_private_default_visibility</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enforce_config_setting_visibility"><code><a href="#flag--incompatible_enforce_config_setting_visibility">--[no]incompatible_enforce_config_setting_visibility</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
</dl>
<dl></dl>
<dl>Options relating to query output and semantics:
<dt id="flag--aspect_deps"><code><a href="#flag--aspect_deps">--aspect_deps</a>=&lt;off, conservative or precise&gt</code> default: "conservative"</dt>
<dd>
How to resolve aspect dependencies when the output format is one of {xml,proto,record}. &#39;off&#39; means no aspect dependencies are resolved, &#39;conservative&#39; (the default) means all declared aspect dependencies are added regardless of whether they are given the rule class of direct dependencies, &#39;precise&#39; 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 &#39;bazel query&#39;.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--consistent_labels"><code><a href="#flag--consistent_labels">--[no]consistent_labels</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--experimental_explicit_aspects"><code><a href="#flag--experimental_explicit_aspects">--[no]experimental_explicit_aspects</a></code> default: "false"</dt>
<dd>
aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--experimental_graphless_query"><code><a href="#flag--experimental_graphless_query">--[no]experimental_graphless_query</a></code> default: "auto"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--graph:conditional_edges_limit"><code><a href="#flag--graph:conditional_edges_limit">--graph:conditional_edges_limit</a>=&lt;an integer&gt</code> default: "4"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--graph:factored"><code><a href="#flag--graph:factored">--[no]graph:factored</a></code> default: "true"</dt>
<dd>
If true, then the graph will be emitted &#39;factored&#39;, i.e. topologically-equivalent nodes will be merged together and their labels concatenated. This option is only applicable to --output=graph.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--graph:node_limit"><code><a href="#flag--graph:node_limit">--graph:node_limit</a>=&lt;an integer&gt</code> default: "512"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--implicit_deps"><code><a href="#flag--implicit_deps">--[no]implicit_deps</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--include_aspects"><code><a href="#flag--include_aspects">--[no]include_aspects</a></code> default: "true"</dt>
<dd>
aquery, cquery: whether to include aspect-generated actions in the output. query: no-op (aspects are always followed).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--incompatible_lexicographical_output"><code><a href="#flag--incompatible_lexicographical_output">--[no]incompatible_lexicographical_output</a></code> default: "true"</dt>
<dd>
If this option is set, sorts --order_output=auto output in lexicographical order.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_package_group_includes_double_slash"><code><a href="#flag--incompatible_package_group_includes_double_slash">--[no]incompatible_package_group_includes_double_slash</a></code> default: "true"</dt>
<dd>
If enabled, when outputting package_group&#39;s `packages` attribute, the leading `//` will not be omitted.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--infer_universe_scope"><code><a href="#flag--infer_universe_scope">--[no]infer_universe_scope</a></code> default: "false"</dt>
<dd>
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&#39;s value is ignored. Note: this option applies only to `query` (i.e. not `cquery`).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--line_terminator_null"><code><a href="#flag--line_terminator_null">--[no]line_terminator_null</a></code> default: "false"</dt>
<dd>
Whether each format is terminated with \0 instead of newline.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--nodep_deps"><code><a href="#flag--nodep_deps">--[no]nodep_deps</a></code> default: "true"</dt>
<dd>
If enabled, deps from &quot;nodep&quot; attributes will be included in the dependency graph over which the query operates. A common example of a &quot;nodep&quot; attribute is &quot;visibility&quot;. Run and parse the output of `info build-language` to learn about all the &quot;nodep&quot; attributes in the build language.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--noorder_results"><code><a href="#flag--noorder_results">--noorder_results</a></code></dt>
<dd>
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.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--order_output">--order_output=no</a></code><br/>
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--null"><code><a href="#flag--null">--null</a></code></dt>
<dd>
Whether each format is terminated with \0 instead of newline.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--line_terminator_null">--line_terminator_null=true</a></code><br/>
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--order_output"><code><a href="#flag--order_output">--order_output</a>=&lt;no, deps, auto or full&gt</code> default: "auto"</dt>
<dd>
Output the results unordered (no), dependency-ordered (deps), or fully ordered (full). The default is &#39;auto&#39;, 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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--order_results"><code><a href="#flag--order_results">--order_results</a></code></dt>
<dd>
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.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--order_output">--order_output=auto</a></code><br/>
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--output"><code><a href="#flag--output">--output</a>=&lt;a string&gt</code> default: "label"</dt>
<dd>
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, textproto, xml.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--output_file"><code><a href="#flag--output_file">--output_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
When specified, query results will be written directly to this file, and nothing will be printed to Bazel&#39;s standard output stream (stdout). In benchmarks, this is generally faster than &lt;code&gt;bazel query &amp;gt; file&lt;/code&gt;.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:default_values"><code><a href="#flag--proto:default_values">--[no]proto:default_values</a></code> default: "true"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:definition_stack"><code><a href="#flag--proto:definition_stack">--[no]proto:definition_stack</a></code> default: "false"</dt>
<dd>
Populate the definition_stack proto field, which records for each rule instance the Starlark call stack at the moment the rule&#39;s class was defined.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:flatten_selects"><code><a href="#flag--proto:flatten_selects">--[no]proto:flatten_selects</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--proto:include_attribute_source_aspects"><code><a href="#flag--proto:include_attribute_source_aspects">--[no]proto:include_attribute_source_aspects</a></code> default: "false"</dt>
<dd>
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).
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:include_synthetic_attribute_hash"><code><a href="#flag--proto:include_synthetic_attribute_hash">--[no]proto:include_synthetic_attribute_hash</a></code> default: "false"</dt>
<dd>
Whether or not to calculate and populate the $internal_attr_hash attribute.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:instantiation_stack"><code><a href="#flag--proto:instantiation_stack">--[no]proto:instantiation_stack</a></code> default: "false"</dt>
<dd>
Populate the instantiation call stack of each rule. Note that this requires the stack to be present
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:locations"><code><a href="#flag--proto:locations">--[no]proto:locations</a></code> default: "true"</dt>
<dd>
Whether to output location information in proto output at all.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:output_rule_attrs"><code><a href="#flag--proto:output_rule_attrs">--proto:output_rule_attrs</a>=&lt;comma-separated list of options&gt</code> default: "all"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--proto:rule_inputs_and_outputs"><code><a href="#flag--proto:rule_inputs_and_outputs">--[no]proto:rule_inputs_and_outputs</a></code> default: "true"</dt>
<dd>
Whether or not to populate the rule_input and rule_output fields.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--query_file"><code><a href="#flag--query_file">--query_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--relative_locations"><code><a href="#flag--relative_locations">--[no]relative_locations</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--strict_test_suite"><code><a href="#flag--strict_test_suite">--[no]strict_test_suite</a></code> default: "false"</dt>
<dd>
If true, the tests() expression gives an error if it encounters a test_suite containing non-test targets.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--tool_deps"><code><a href="#flag--tool_deps">--[no]tool_deps</a></code> default: "true"</dt>
<dd>
Query: If disabled, dependencies on &#39;exec configuration&#39; will not be included in the dependency graph over which the query operates. An &#39;exec configuration&#39; dependency edge, such as the one from any &#39;proto_library&#39; rule to the Protocol Compiler, usually points to a tool executed during the build rather than a part of the same &#39;target&#39; 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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--universe_scope"><code><a href="#flag--universe_scope">--universe_scope</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--xml:default_values"><code><a href="#flag--xml:default_values">--[no]xml:default_values</a></code> default: "false"</dt>
<dd>
If true, rule attributes whose value is not explicitly specified in the BUILD file are printed; otherwise they are omitted.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
<dt id="flag--xml:line_numbers"><code><a href="#flag--xml:line_numbers">--[no]xml:line_numbers</a></code> default: "true"</dt>
<dd>
If true, XML output contains line numbers. Disabling this option may make diffs easier to read.  This option is only applicable to --output=xml.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
</dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
<dt id="flag--experimental_repository_resolved_file"><code><a href="#flag--experimental_repository_resolved_file">--experimental_repository_resolved_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty, write a Starlark value with the resolved information of all Starlark repository rules that were executed.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--deleted_packages"><code><a href="#flag--deleted_packages">--deleted_packages</a>=&lt;comma-separated list of package names&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;x/y&#39; of an existing package &#39;x&#39;.  For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label &#39;//x:y/z&#39; if that is still provided by another package_path entry.  Specifying --deleted_packages x/y avoids this problem.
</dd>
<dt id="flag--fetch"><code><a href="#flag--fetch">--[no]fetch</a></code> default: "true"</dt>
<dd>
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.
</dd>
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--package_path"><code><a href="#flag--package_path">--package_path</a>=&lt;colon-separated list of options&gt</code> default: "%workspace%"</dt>
<dd>
A colon-separated list of where to look for packages. Elements beginning with &#39;%workspace%&#39; are relative to the enclosing workspace. If omitted or empty, the default is the output of &#39;bazel info default-package-path&#39;.
</dd>
<dt id="flag--show_loading_progress"><code><a href="#flag--show_loading_progress">--[no]show_loading_progress</a></code> default: "true"</dt>
<dd>
If enabled, causes Bazel to print &quot;Loading package:&quot; messages.
</dd>
</dl>

<h2><a name="run">Run Options</a></h2>
<p>Inherits all options from <a href="#build">build</a>.</p>

<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--run"><code><a href="#flag--run">--[no]run</a></code> default: "true"</dt>
<dd>
If false, skip running the command line constructed for the built target.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl>Options that let the user configure the intended output, affecting its value, as opposed to its existence:
<dt id="flag--script_path"><code><a href="#flag--script_path">--script_path</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;bazel run --script_path=foo //foo &amp;&amp; ./foo&#39; to invoke target &#39;//foo&#39; This differs from &#39;bazel run //foo&#39; in that the bazel lock is released and the executable is connected to the terminal&#39;s stdin.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
</dl>

<h2><a name="shutdown">Shutdown Options</a></h2>
<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl></dl>
<dl>Options that control the output of the command:
<dt id="flag--iff_heap_size_greater_than"><code><a href="#flag--iff_heap_size_greater_than">--iff_heap_size_greater_than</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
Iff non-zero, then shutdown will only shut down the server if the total memory (in MB) consumed by the JVM exceeds this value.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
</dl>

<h2><a name="sync">Sync Options</a></h2>
<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--configure"><code><a href="#flag--configure">--[no]configure</a></code> default: "False"</dt>
<dd>
Only sync repositories marked as &#39;configure&#39; for system-configuration purpose.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--keep_going"><code><a href="#flag--keep_going">--[no]keep_going</a></code> [<code>-k</code>] default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--loading_phase_threads"><code><a href="#flag--loading_phase_threads">--loading_phase_threads</a>=&lt;an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> default: "auto"</dt>
<dd>
Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;. &quot;auto&quot; sets a reasonable default based on host resources. Must be at least 1.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--only"><code><a href="#flag--only">--only</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
<dt id="flag--incompatible_config_setting_private_default_visibility"><code><a href="#flag--incompatible_config_setting_private_default_visibility">--[no]incompatible_config_setting_private_default_visibility</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enforce_config_setting_visibility"><code><a href="#flag--incompatible_enforce_config_setting_visibility">--[no]incompatible_enforce_config_setting_visibility</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
<dt id="flag--experimental_repository_resolved_file"><code><a href="#flag--experimental_repository_resolved_file">--experimental_repository_resolved_file</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty, write a Starlark value with the resolved information of all Starlark repository rules that were executed.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--deleted_packages"><code><a href="#flag--deleted_packages">--deleted_packages</a>=&lt;comma-separated list of package names&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;x/y&#39; of an existing package &#39;x&#39;.  For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label &#39;//x:y/z&#39; if that is still provided by another package_path entry.  Specifying --deleted_packages x/y avoids this problem.
</dd>
<dt id="flag--fetch"><code><a href="#flag--fetch">--[no]fetch</a></code> default: "true"</dt>
<dd>
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.
</dd>
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--package_path"><code><a href="#flag--package_path">--package_path</a>=&lt;colon-separated list of options&gt</code> default: "%workspace%"</dt>
<dd>
A colon-separated list of where to look for packages. Elements beginning with &#39;%workspace%&#39; are relative to the enclosing workspace. If omitted or empty, the default is the output of &#39;bazel info default-package-path&#39;.
</dd>
<dt id="flag--show_loading_progress"><code><a href="#flag--show_loading_progress">--[no]show_loading_progress</a></code> default: "true"</dt>
<dd>
If enabled, causes Bazel to print &quot;Loading package:&quot; messages.
</dd>
</dl>

<h2><a name="test">Test Options</a></h2>
<p>Inherits all options from <a href="#build">build</a>.</p>

<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
<dt id="flag--print_relative_test_log_paths"><code><a href="#flag--print_relative_test_log_paths">--[no]print_relative_test_log_paths</a></code> default: "false"</dt>
<dd>
If true, when printing the path to a test log, use relative path that makes use of the &#39;testlogs&#39; convenience symlink. N.B. - A subsequent &#39;build&#39;/&#39;test&#39;/etc invocation with a different configuration can cause the target of this symlink to change, making the path printed previously no longer useful.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--test_verbose_timeout_warnings"><code><a href="#flag--test_verbose_timeout_warnings">--[no]test_verbose_timeout_warnings</a></code> default: "false"</dt>
<dd>
If true, print additional warnings when the actual test execution time does not match the timeout defined by the test (whether implied or explicit).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--verbose_test_summary"><code><a href="#flag--verbose_test_summary">--[no]verbose_test_summary</a></code> default: "true"</dt>
<dd>
If true, print additional information (timing, number of failed runs, etc) in the test summary.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
</dl>

<h2><a name="vendor">Vendor Options</a></h2>
<p>Inherits all options from <a href="#test">test</a>.</p>

<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--keep_going"><code><a href="#flag--keep_going">--[no]keep_going</a></code> [<code>-k</code>] default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--loading_phase_threads"><code><a href="#flag--loading_phase_threads">--loading_phase_threads</a>=&lt;an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> default: "auto"</dt>
<dd>
Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;. &quot;auto&quot; sets a reasonable default based on host resources. Must be at least 1.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
<dt id="flag--incompatible_config_setting_private_default_visibility"><code><a href="#flag--incompatible_config_setting_private_default_visibility">--[no]incompatible_config_setting_private_default_visibility</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enforce_config_setting_visibility"><code><a href="#flag--incompatible_enforce_config_setting_visibility">--[no]incompatible_enforce_config_setting_visibility</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--repo"><code><a href="#flag--repo">--repo</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Only vendors the specified repository, which can be either `@apparent_repo_name` or `@@canonical_repo_name`. This option can be set multiple times
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--deleted_packages"><code><a href="#flag--deleted_packages">--deleted_packages</a>=&lt;comma-separated list of package names&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;x/y&#39; of an existing package &#39;x&#39;.  For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label &#39;//x:y/z&#39; if that is still provided by another package_path entry.  Specifying --deleted_packages x/y avoids this problem.
</dd>
<dt id="flag--fetch"><code><a href="#flag--fetch">--[no]fetch</a></code> default: "true"</dt>
<dd>
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.
</dd>
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--package_path"><code><a href="#flag--package_path">--package_path</a>=&lt;colon-separated list of options&gt</code> default: "%workspace%"</dt>
<dd>
A colon-separated list of where to look for packages. Elements beginning with &#39;%workspace%&#39; are relative to the enclosing workspace. If omitted or empty, the default is the output of &#39;bazel info default-package-path&#39;.
</dd>
<dt id="flag--show_loading_progress"><code><a href="#flag--show_loading_progress">--[no]show_loading_progress</a></code> default: "true"</dt>
<dd>
If enabled, causes Bazel to print &quot;Loading package:&quot; messages.
</dd>
</dl>

<dl></dl>
<dl>Options that control build execution:
<dt id="flag--experimental_inprocess_symlink_creation"><code><a href="#flag--experimental_inprocess_symlink_creation">--[no]experimental_inprocess_symlink_creation</a></code> default: "false"</dt>
<dd>
Whether to make direct file system calls to create symlink trees
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_persistent_aar_extractor"><code><a href="#flag--experimental_persistent_aar_extractor">--[no]experimental_persistent_aar_extractor</a></code> default: "false"</dt>
<dd>
Enable persistent aar extractor by using workers.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_remotable_source_manifests"><code><a href="#flag--experimental_remotable_source_manifests">--[no]experimental_remotable_source_manifests</a></code> default: "false"</dt>
<dd>
Whether to make source manifest actions remotable
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_split_coverage_postprocessing"><code><a href="#flag--experimental_split_coverage_postprocessing">--[no]experimental_split_coverage_postprocessing</a></code> default: "false"</dt>
<dd>
If true, then Bazel will run coverage postprocessing for test in a new spawn.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_strict_fileset_output"><code><a href="#flag--experimental_strict_fileset_output">--[no]experimental_strict_fileset_output</a></code> default: "false"</dt>
<dd>
If this option is enabled, filesets will treat all output artifacts as regular files. They will not traverse directories or be sensitive to symlinks.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--incompatible_disallow_unsound_directory_outputs"><code><a href="#flag--incompatible_disallow_unsound_directory_outputs">--[no]incompatible_disallow_unsound_directory_outputs</a></code> default: "true"</dt>
<dd>
If set, it is an error for an action to materialize an output file as a directory. Does not affect source directories. See https://github.com/bazelbuild/bazel/issues/18646.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_modify_execution_info_additive"><code><a href="#flag--incompatible_modify_execution_info_additive">--[no]incompatible_modify_execution_info_additive</a></code> default: "false"</dt>
<dd>
When enabled, passing multiple --modify_execution_info flags is additive. When disabled, only the last flag is taken into account.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--keep_going"><code><a href="#flag--keep_going">--[no]keep_going</a></code> [<code>-k</code>] default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--loading_phase_threads"><code><a href="#flag--loading_phase_threads">--loading_phase_threads</a>=&lt;an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;&gt</code> default: "auto"</dt>
<dd>
Number of parallel threads to use for the loading/analysis phase.Takes an integer, or a keyword (&quot;auto&quot;, &quot;HOST_CPUS&quot;, &quot;HOST_RAM&quot;), optionally followed by an operation ([-|*]&lt;float&gt;) eg. &quot;auto&quot;, &quot;HOST_CPUS*.5&quot;. &quot;auto&quot; sets a reasonable default based on host resources. Must be at least 1.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--modify_execution_info"><code><a href="#flag--modify_execution_info">--modify_execution_info</a>=&lt;regex=[+-]key,regex=[+-]key,...&gt</code> multiple uses are accumulated</dt>
<dd>
Add or remove keys from an action&#39;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: &quot;regex=[+-]key,regex=[+-]key,...&quot;.

Examples:
  &#39;.*=+x,.*=-y,.*=+z&#39; adds &#39;x&#39; and &#39;z&#39; to, and removes &#39;y&#39; from, the execution info for all actions.
  &#39;Genrule=+requires-x&#39; adds &#39;requires-x&#39; to the execution info for all Genrule actions.
  &#39;(?!Genrule).*=-requires-x&#39; removes &#39;requires-x&#39; from the execution info for all non-Genrule actions.

<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--persistent_android_dex_desugar"><code><a href="#flag--persistent_android_dex_desugar">--persistent_android_dex_desugar</a></code></dt>
<dd>
Enable persistent Android dex and desugar actions by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_android_dex_desugar">--internal_persistent_android_dex_desugar</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=Desugar=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=DexBuilder=worker</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_android_resource_processor"><code><a href="#flag--persistent_android_resource_processor">--persistent_android_resource_processor</a></code></dt>
<dd>
Enable persistent Android resource processor by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_busybox_tools">--internal_persistent_busybox_tools</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AaptPackage=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceParser=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceValidator=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceCompiler=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=RClassGenerator=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceLink=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidAapt2=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidAssetMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidResourceMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidCompiledResourceMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=ManifestMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AndroidManifestMerger=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=Aapt2Optimize=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=AARGenerator=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=ProcessDatabinding=worker</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--strategy">--strategy=GenerateDataBindingBaseClasses=worker</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_multiplex_android_dex_desugar"><code><a href="#flag--persistent_multiplex_android_dex_desugar">--persistent_multiplex_android_dex_desugar</a></code></dt>
<dd>
Enable persistent multiplexed Android dex and desugar actions by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_android_dex_desugar">--persistent_android_dex_desugar</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_multiplex_android_dex_desugar">--internal_persistent_multiplex_android_dex_desugar</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_multiplex_android_resource_processor"><code><a href="#flag--persistent_multiplex_android_resource_processor">--persistent_multiplex_android_resource_processor</a></code></dt>
<dd>
Enable persistent multiplexed Android resource processor by using workers.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_android_resource_processor">--persistent_android_resource_processor</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AaptPackage=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceParser=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceValidator=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceCompiler=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=RClassGenerator=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceLink=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidAapt2=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidAssetMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidResourceMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidCompiledResourceMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=ManifestMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AndroidManifestMerger=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=Aapt2Optimize=+supports-multiplex-workers</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--modify_execution_info">--modify_execution_info=AARGenerator=+supports-multiplex-workers</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--persistent_multiplex_android_tools"><code><a href="#flag--persistent_multiplex_android_tools">--persistent_multiplex_android_tools</a></code></dt>
<dd>
Enable persistent and multiplexed Android tools (dexing, desugaring, resource processing).
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--internal_persistent_multiplex_busybox_tools">--internal_persistent_multiplex_busybox_tools</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_multiplex_android_resource_processor">--persistent_multiplex_android_resource_processor</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--persistent_multiplex_android_dex_desugar">--persistent_multiplex_android_dex_desugar</a></code><br/>
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--use_target_platform_for_tests"><code><a href="#flag--use_target_platform_for_tests">--[no]use_target_platform_for_tests</a></code> default: "false"</dt>
<dd>
If true, then Bazel will use the target platform for running tests rather than the test exec group.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
</dl>
<dl>Options that configure the toolchain used for action execution:
<dt id="flag--android_compiler"><code><a href="#flag--android_compiler">--android_compiler</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The Android target compiler.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_crosstool_top"><code><a href="#flag--android_crosstool_top">--android_crosstool_top</a>=&lt;a build target label&gt</code> default: "//external:android/crosstool"</dt>
<dd>
The location of the C++ compiler used for Android builds.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_grte_top"><code><a href="#flag--android_grte_top">--android_grte_top</a>=&lt;a label&gt</code> default: see description</dt>
<dd>
The Android target grte_top.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_manifest_merger"><code><a href="#flag--android_manifest_merger">--android_manifest_merger</a>=&lt;legacy, android or force_android&gt</code> default: "android"</dt>
<dd>
Selects the manifest merger to use for android_binary rules. Flag to help thetransition to the Android manifest merger from the legacy merger.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_platforms"><code><a href="#flag--android_platforms">--android_platforms</a>=&lt;a build target label&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_sdk"><code><a href="#flag--android_sdk">--android_sdk</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/android:sdk"</dt>
<dd>
Specifies Android SDK/platform that is used to build Android applications.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--apple_crosstool_top"><code><a href="#flag--apple_crosstool_top">--apple_crosstool_top</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/cpp:toolchain"</dt>
<dd>
The label of the crosstool package to be used in Apple and Objc rules and their dependencies.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--cc_output_directory_tag"><code><a href="#flag--cc_output_directory_tag">--cc_output_directory_tag</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
Specifies a suffix to be added to the configuration directory.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--compiler"><code><a href="#flag--compiler">--compiler</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The C++ compiler to use for compiling the target.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--coverage_output_generator"><code><a href="#flag--coverage_output_generator">--coverage_output_generator</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/test:lcov_merger"</dt>
<dd>
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 &#39;//tools/test:lcov_merger&#39;.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--coverage_report_generator"><code><a href="#flag--coverage_report_generator">--coverage_report_generator</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/test:coverage_report_generator"</dt>
<dd>
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 &#39;//tools/test:coverage_report_generator&#39;.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--coverage_support"><code><a href="#flag--coverage_support">--coverage_support</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/test:coverage_support"</dt>
<dd>
Location of support files that are required on the inputs of every test action that collects code coverage. Defaults to &#39;//tools/test:coverage_support&#39;.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--crosstool_top"><code><a href="#flag--crosstool_top">--crosstool_top</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/cpp:toolchain"</dt>
<dd>
The label of the crosstool package to be used for compiling C++ code.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--custom_malloc"><code><a href="#flag--custom_malloc">--custom_malloc</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies a custom malloc implementation. This setting overrides malloc attributes in build rules.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_add_exec_constraints_to_targets"><code><a href="#flag--experimental_add_exec_constraints_to_targets">--experimental_add_exec_constraints_to_targets</a>=&lt;a &#39;&lt;RegexFilter&gt;=&lt;label1&gt;[,&lt;label2&gt;,...]&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;x86_64&#39; to any target under //demo except for those whose name contains &#39;test&#39;.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_include_xcode_execution_requirements"><code><a href="#flag--experimental_include_xcode_execution_requirements">--[no]experimental_include_xcode_execution_requirements</a></code> default: "false"</dt>
<dd>
If set, add a &quot;requires-xcode:{version}&quot; execution requirement to every Xcode action.  If the xcode version has a hyphenated label,  also add a &quot;requires-xcode-label:{version_label}&quot; execution requirement.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_prefer_mutual_xcode"><code><a href="#flag--experimental_prefer_mutual_xcode">--[no]experimental_prefer_mutual_xcode</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--extra_execution_platforms"><code><a href="#flag--extra_execution_platforms">--extra_execution_platforms</a>=&lt;comma-separated list of options&gt</code> default: ""</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--extra_toolchains"><code><a href="#flag--extra_toolchains">--extra_toolchains</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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().
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--grte_top"><code><a href="#flag--grte_top">--grte_top</a>=&lt;a label&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_compiler"><code><a href="#flag--host_compiler">--host_compiler</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The C++ compiler to use for host compilation. It is ignored if --host_crosstool_top is not set.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--host_crosstool_top"><code><a href="#flag--host_crosstool_top">--host_crosstool_top</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
By default, the --crosstool_top and --compiler options are also used for the exec configuration. If this flag is provided, Bazel uses the default libc and compiler for the given crosstool_top.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_grte_top"><code><a href="#flag--host_grte_top">--host_grte_top</a>=&lt;a label&gt</code> default: see description</dt>
<dd>
If specified, this setting overrides the libc top-level directory (--grte_top) for the exec configuration.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_platform"><code><a href="#flag--host_platform">--host_platform</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools:host_platform"</dt>
<dd>
The label of a platform rule that describes the host system.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--incompatible_dont_enable_host_nonhost_crosstool_features"><code><a href="#flag--incompatible_dont_enable_host_nonhost_crosstool_features">--[no]incompatible_dont_enable_host_nonhost_crosstool_features</a></code> default: "true"</dt>
<dd>
If true, Bazel will not enable &#39;host&#39; and &#39;nonhost&#39; features in the c++ toolchain (see https://github.com/bazelbuild/bazel/issues/7407 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enable_android_toolchain_resolution"><code><a href="#flag--incompatible_enable_android_toolchain_resolution">--[no]incompatible_enable_android_toolchain_resolution</a></code> default: "true"</dt>
<dd>
Use toolchain resolution to select the Android SDK for android rules (Starlark and native)
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enable_apple_toolchain_resolution"><code><a href="#flag--incompatible_enable_apple_toolchain_resolution">--[no]incompatible_enable_apple_toolchain_resolution</a></code> default: "false"</dt>
<dd>
Use toolchain resolution to select the Apple SDK for apple rules (Starlark and native)
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_make_thinlto_command_lines_standalone"><code><a href="#flag--incompatible_make_thinlto_command_lines_standalone">--[no]incompatible_make_thinlto_command_lines_standalone</a></code> default: "true"</dt>
<dd>
If true, Bazel will not reuse C++ link action command lines for lto indexing command lines (see https://github.com/bazelbuild/bazel/issues/6791 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_remove_legacy_whole_archive"><code><a href="#flag--incompatible_remove_legacy_whole_archive">--[no]incompatible_remove_legacy_whole_archive</a></code> default: "true"</dt>
<dd>
If true, Bazel will not link library dependencies as whole archive by default (see https://github.com/bazelbuild/bazel/issues/7362 for migration instructions).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_require_ctx_in_configure_features"><code><a href="#flag--incompatible_require_ctx_in_configure_features">--[no]incompatible_require_ctx_in_configure_features</a></code> default: "true"</dt>
<dd>
If true, Bazel will require &#39;ctx&#39; parameter in to cc_common.configure_features (see https://github.com/bazelbuild/bazel/issues/7793 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--interface_shared_objects"><code><a href="#flag--interface_shared_objects">--[no]interface_shared_objects</a></code> default: "true"</dt>
<dd>
Use interface shared objects if supported by the toolchain. All ELF toolchains currently support this setting.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ios_sdk_version"><code><a href="#flag--ios_sdk_version">--ios_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the iOS SDK to use to build iOS applications. If unspecified, uses default iOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--macos_sdk_version"><code><a href="#flag--macos_sdk_version">--macos_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the macOS SDK to use to build macOS applications. If unspecified, uses default macOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--minimum_os_version"><code><a href="#flag--minimum_os_version">--minimum_os_version</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The minimum OS version which your compilation targets.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--platform_mappings"><code><a href="#flag--platform_mappings">--platform_mappings</a>=&lt;a relative path&gt</code> default: ""</dt>
<dd>
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 &#39;platform_mappings&#39; (a file directly under the workspace root).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--platforms"><code><a href="#flag--platforms">--platforms</a>=&lt;a build target label&gt</code> default: ""</dt>
<dd>
The labels of the platform rules describing the target platforms for the current command.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--python2_path"><code><a href="#flag--python2_path">--python2_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Deprecated, no-op. Disabled by `--incompatible_use_python_toolchains`.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a>, <a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--python3_path"><code><a href="#flag--python3_path">--python3_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Deprecated, no-op. Disabled by `--incompatible_use_python_toolchains`.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a>, <a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--python_path"><code><a href="#flag--python_path">--python_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The absolute path of the Python interpreter invoked to run Python targets on the target platform. Deprecated; disabled by --incompatible_use_python_toolchains.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--python_top"><code><a href="#flag--python_top">--python_top</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--tvos_sdk_version"><code><a href="#flag--tvos_sdk_version">--tvos_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the tvOS SDK to use to build tvOS applications. If unspecified, uses default tvOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--watchos_sdk_version"><code><a href="#flag--watchos_sdk_version">--watchos_sdk_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Specifies the version of the watchOS SDK to use to build watchOS applications. If unspecified, uses default watchOS SDK version from &#39;xcode_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--xcode_version"><code><a href="#flag--xcode_version">--xcode_version</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
If specified, uses Xcode of the given version for relevant build actions. If unspecified, uses the executor default version of Xcode.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--xcode_version_config"><code><a href="#flag--xcode_version_config">--xcode_version_config</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/cpp:host_xcodes"</dt>
<dd>
The label of the xcode_config rule to be used for selecting the Xcode version in the build configuration.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that control the output of the command:
<dt id="flag--apple_generate_dsym"><code><a href="#flag--apple_generate_dsym">--[no]apple_generate_dsym</a></code> default: "false"</dt>
<dd>
Whether to generate debug symbol(.dSYM) file(s).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--build_runfile_links"><code><a href="#flag--build_runfile_links">--[no]build_runfile_links</a></code> default: "true"</dt>
<dd>
If true, build runfiles symlink forests for all targets.  If false, write them only when required by a local action, test or run command.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_runfile_manifests"><code><a href="#flag--build_runfile_manifests">--[no]build_runfile_manifests</a></code> default: "true"</dt>
<dd>
If true, write runfiles manifests for all targets. If false, omit them. Local tests will fail to run when false.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--build_test_dwp"><code><a href="#flag--build_test_dwp">--[no]build_test_dwp</a></code> default: "false"</dt>
<dd>
If enabled, when building C++ tests statically and with fission the .dwp file  for the test binary will be automatically built as well.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cc_proto_library_header_suffixes"><code><a href="#flag--cc_proto_library_header_suffixes">--cc_proto_library_header_suffixes</a>=&lt;comma-separated set of options&gt</code> default: ".pb.h"</dt>
<dd>
Sets the suffixes of header files that a cc_proto_library creates.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--cc_proto_library_source_suffixes"><code><a href="#flag--cc_proto_library_source_suffixes">--cc_proto_library_source_suffixes</a>=&lt;comma-separated set of options&gt</code> default: ".pb.cc"</dt>
<dd>
Sets the suffixes of source files that a cc_proto_library creates.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_proto_descriptor_sets_include_source_info"><code><a href="#flag--experimental_proto_descriptor_sets_include_source_info">--[no]experimental_proto_descriptor_sets_include_source_info</a></code> default: "false"</dt>
<dd>
Run extra actions for alternative Java api versions in a proto_library.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_proto_extra_actions"><code><a href="#flag--experimental_proto_extra_actions">--[no]experimental_proto_extra_actions</a></code> default: "false"</dt>
<dd>
Run extra actions for alternative Java api versions in a proto_library.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_save_feature_state"><code><a href="#flag--experimental_save_feature_state">--[no]experimental_save_feature_state</a></code> default: "false"</dt>
<dd>
Save the state of enabled and requested feautres as an output of compilation.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--fission"><code><a href="#flag--fission">--fission</a>=&lt;a set of compilation modes&gt</code> default: "no"</dt>
<dd>
Specifies which compilation modes use fission for C++ compilations and links.  May be any combination of {&#39;fastbuild&#39;, &#39;dbg&#39;, &#39;opt&#39;} or the special values &#39;yes&#39;  to enable all modes and &#39;no&#39; to disable all modes.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--incompatible_always_include_files_in_data"><code><a href="#flag--incompatible_always_include_files_in_data">--[no]incompatible_always_include_files_in_data</a></code> default: "true"</dt>
<dd>
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).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--legacy_external_runfiles"><code><a href="#flag--legacy_external_runfiles">--[no]legacy_external_runfiles</a></code> default: "true"</dt>
<dd>
If true, build runfiles symlink forests for external repositories under .runfiles/wsname/external/repo (in addition to .runfiles/repo).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--objc_generate_linkmap"><code><a href="#flag--objc_generate_linkmap">--[no]objc_generate_linkmap</a></code> default: "false"</dt>
<dd>
Specifies whether to generate a linkmap file.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--save_temps"><code><a href="#flag--save_temps">--[no]save_temps</a></code> default: "false"</dt>
<dd>
If set, temporary outputs from gcc will be saved.  These include .s files (assembler code), .i files (preprocessed C) and .ii files (preprocessed C++).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options that let the user configure the intended output, affecting its value, as opposed to its existence:
<dt id="flag--action_env"><code><a href="#flag--action_env">--action_env</a>=&lt;a &#39;name=value&#39; assignment with an optional value part&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--android_cpu"><code><a href="#flag--android_cpu">--android_cpu</a>=&lt;a string&gt</code> default: "armeabi-v7a"</dt>
<dd>
The Android target CPU.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--android_databinding_use_androidx"><code><a href="#flag--android_databinding_use_androidx">--[no]android_databinding_use_androidx</a></code> default: "true"</dt>
<dd>
Generate AndroidX-compatible data-binding files. This is only used with databinding v2. This flag is a no-op.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--android_databinding_use_v3_4_args"><code><a href="#flag--android_databinding_use_v3_4_args">--[no]android_databinding_use_v3_4_args</a></code> default: "true"</dt>
<dd>
Use android databinding v2 with 3.4.0 argument. This flag is a no-op.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--android_dynamic_mode"><code><a href="#flag--android_dynamic_mode">--android_dynamic_mode</a>=&lt;off, default or fully&gt</code> default: "off"</dt>
<dd>
Determines whether C++ deps of Android rules will be linked dynamically when a cc_binary does not explicitly create a shared library. &#39;default&#39; means bazel will choose whether to link dynamically.  &#39;fully&#39; means all libraries will be linked dynamically. &#39;off&#39; means that all libraries will be linked in mostly static mode.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--android_manifest_merger_order"><code><a href="#flag--android_manifest_merger_order">--android_manifest_merger_order</a>=&lt;alphabetical, alphabetical_by_configuration or dependency&gt</code> default: "alphabetical"</dt>
<dd>
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&#39;s manifest coming before the manifests of its dependencies.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--android_resource_shrinking"><code><a href="#flag--android_resource_shrinking">--[no]android_resource_shrinking</a></code> default: "false"</dt>
<dd>
Enables resource shrinking for android_binary APKs that use ProGuard.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--build_python_zip"><code><a href="#flag--build_python_zip">--[no]build_python_zip</a></code> default: "auto"</dt>
<dd>
Build python executable zip; on on Windows, off on other platforms
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--catalyst_cpus"><code><a href="#flag--catalyst_cpus">--catalyst_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple Catalyst binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--collect_code_coverage"><code><a href="#flag--collect_code_coverage">--[no]collect_code_coverage</a></code> default: "false"</dt>
<dd>
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 - &#39;bazel coverage&#39; command should be used instead.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--compilation_mode"><code><a href="#flag--compilation_mode">--compilation_mode</a>=&lt;fastbuild, dbg or opt&gt</code> [<code>-c</code>] default: "fastbuild"</dt>
<dd>
Specify the mode the binary will be built in. Values: &#39;fastbuild&#39;, &#39;dbg&#39;, &#39;opt&#39;.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--conlyopt"><code><a href="#flag--conlyopt">--conlyopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to gcc when compiling C source files.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--copt"><code><a href="#flag--copt">--copt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to gcc.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cpu"><code><a href="#flag--cpu">--cpu</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The target CPU.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cs_fdo_absolute_path"><code><a href="#flag--cs_fdo_absolute_path">--cs_fdo_absolute_path</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cs_fdo_instrument"><code><a href="#flag--cs_fdo_instrument">--cs_fdo_instrument</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cs_fdo_profile"><code><a href="#flag--cs_fdo_profile">--cs_fdo_profile</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The cs_fdo_profile representing the context sensitive profile to be used for optimization.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--cxxopt"><code><a href="#flag--cxxopt">--cxxopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to gcc when compiling C++ source files.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--define"><code><a href="#flag--define">--define</a>=&lt;a &#39;name=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
Each --define option specifies an assignment for a build variable.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--dynamic_mode"><code><a href="#flag--dynamic_mode">--dynamic_mode</a>=&lt;off, default or fully&gt</code> default: "default"</dt>
<dd>
Determines whether C++ binaries will be linked dynamically.  &#39;default&#39; means Bazel will choose whether to link dynamically.  &#39;fully&#39; means all libraries will be linked dynamically. &#39;off&#39; means that all libraries will be linked in mostly static mode.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--enable_fdo_profile_absolute_path"><code><a href="#flag--enable_fdo_profile_absolute_path">--[no]enable_fdo_profile_absolute_path</a></code> default: "true"</dt>
<dd>
If set, use of fdo_absolute_profile_path will raise an error.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--enable_runfiles"><code><a href="#flag--enable_runfiles">--[no]enable_runfiles</a></code> default: "auto"</dt>
<dd>
Enable runfiles symlink tree; By default, it&#39;s off on Windows, on on other platforms.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_action_listener"><code><a href="#flag--experimental_action_listener">--experimental_action_listener</a>=&lt;a build target label&gt</code> multiple uses are accumulated</dt>
<dd>
Deprecated in favor of aspects. Use action_listener to attach an extra_action to existing build actions.
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_android_compress_java_resources"><code><a href="#flag--experimental_android_compress_java_resources">--[no]experimental_android_compress_java_resources</a></code> default: "false"</dt>
<dd>
Compress Java resources in APKs
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_android_databinding_v2"><code><a href="#flag--experimental_android_databinding_v2">--[no]experimental_android_databinding_v2</a></code> default: "true"</dt>
<dd>
Use android databinding v2. This flag is a no-op.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_android_resource_shrinking"><code><a href="#flag--experimental_android_resource_shrinking">--[no]experimental_android_resource_shrinking</a></code> default: "false"</dt>
<dd>
Enables resource shrinking for android_binary APKs that use ProGuard.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_android_rewrite_dexes_with_rex"><code><a href="#flag--experimental_android_rewrite_dexes_with_rex">--[no]experimental_android_rewrite_dexes_with_rex</a></code> default: "false"</dt>
<dd>
use rex tool to rewrite dex files
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_collect_code_coverage_for_generated_files"><code><a href="#flag--experimental_collect_code_coverage_for_generated_files">--[no]experimental_collect_code_coverage_for_generated_files</a></code> default: "false"</dt>
<dd>
If specified, Bazel will also generate collect coverage information for generated files.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_objc_fastbuild_options"><code><a href="#flag--experimental_objc_fastbuild_options">--experimental_objc_fastbuild_options</a>=&lt;comma-separated list of options&gt</code> default: "-O0,-DDEBUG=1"</dt>
<dd>
Uses these strings as objc fastbuild compiler options.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--experimental_omitfp"><code><a href="#flag--experimental_omitfp">--[no]experimental_omitfp</a></code> default: "false"</dt>
<dd>
If true, use libunwind for stack unwinding, and compile with -fomit-frame-pointer and -fasynchronous-unwind-tables.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_output_paths"><code><a href="#flag--experimental_output_paths">--experimental_output_paths</a>=&lt;off, content or strip&gt</code> default: "off"</dt>
<dd>
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 &#39;supports-path-mapping&#39; to the &#39;execution_requirements&#39; dict.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--experimental_override_name_platform_in_output_dir"><code><a href="#flag--experimental_override_name_platform_in_output_dir">--experimental_override_name_platform_in_output_dir</a>=&lt;a &#39;label=value&#39; assignment&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_platform_in_output_dir"><code><a href="#flag--experimental_platform_in_output_dir">--[no]experimental_platform_in_output_dir</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_use_llvm_covmap"><code><a href="#flag--experimental_use_llvm_covmap">--[no]experimental_use_llvm_covmap</a></code> default: "false"</dt>
<dd>
If specified, Bazel will generate llvm-cov coverage map information rather than gcov when collect_code_coverage is enabled.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_use_platforms_in_output_dir_legacy_heuristic"><code><a href="#flag--experimental_use_platforms_in_output_dir_legacy_heuristic">--[no]experimental_use_platforms_in_output_dir_legacy_heuristic</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--fat_apk_cpu"><code><a href="#flag--fat_apk_cpu">--fat_apk_cpu</a>=&lt;comma-separated set of options&gt</code> default: "armeabi-v7a"</dt>
<dd>
Setting this option enables fat APKs, which contain native binaries for all specified target architectures, e.g., --fat_apk_cpu=x86,armeabi-v7a. If this flag is specified, then --android_cpu is ignored for dependencies of android_binary rules.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--fat_apk_hwasan"><code><a href="#flag--fat_apk_hwasan">--[no]fat_apk_hwasan</a></code> default: "false"</dt>
<dd>
Whether to create HWASAN splits.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--fdo_instrument"><code><a href="#flag--fdo_instrument">--fdo_instrument</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--fdo_optimize"><code><a href="#flag--fdo_optimize">--fdo_optimize</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--fdo_prefetch_hints"><code><a href="#flag--fdo_prefetch_hints">--fdo_prefetch_hints</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Use cache prefetch hints.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--fdo_profile"><code><a href="#flag--fdo_profile">--fdo_profile</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The fdo_profile representing the profile to be used for optimization.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--features"><code><a href="#flag--features">--features</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--force_pic"><code><a href="#flag--force_pic">--[no]force_pic</a></code> default: "false"</dt>
<dd>
If enabled, all C++ compilations produce position-independent code (&quot;-fPIC&quot;), links prefer PIC pre-built libraries over non-PIC libraries, and links produce position-independent executables (&quot;-pie&quot;).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_action_env"><code><a href="#flag--host_action_env">--host_action_env</a>=&lt;a &#39;name=value&#39; assignment with an optional value part&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--host_compilation_mode"><code><a href="#flag--host_compilation_mode">--host_compilation_mode</a>=&lt;fastbuild, dbg or opt&gt</code> default: "opt"</dt>
<dd>
Specify the mode the tools used during the build will be built in. Values: &#39;fastbuild&#39;, &#39;dbg&#39;, &#39;opt&#39;.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--host_conlyopt"><code><a href="#flag--host_conlyopt">--host_conlyopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to the C compiler when compiling C (but not C++) source files in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_copt"><code><a href="#flag--host_copt">--host_copt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the C compiler for tools built in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_cpu"><code><a href="#flag--host_cpu">--host_cpu</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The host CPU.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_cxxopt"><code><a href="#flag--host_cxxopt">--host_cxxopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to C++ compiler for tools built in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_features"><code><a href="#flag--host_features">--host_features</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_force_python"><code><a href="#flag--host_force_python">--host_force_python</a>=&lt;PY2 or PY3&gt</code> default: see description</dt>
<dd>
Overrides the Python version for the exec configuration. Can be &quot;PY2&quot; or &quot;PY3&quot;.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_linkopt"><code><a href="#flag--host_linkopt">--host_linkopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to linker when linking tools in the exec configurations.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_macos_minimum_os"><code><a href="#flag--host_macos_minimum_os">--host_macos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible macOS version for host targets. If unspecified, uses &#39;macos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--host_per_file_copt"><code><a href="#flag--host_per_file_copt">--host_per_file_copt</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths followed by an @ and a comma separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--host_swiftcopt"><code><a href="#flag--host_swiftcopt">--host_swiftcopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to swiftc for exec tools.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--incompatible_auto_exec_groups"><code><a href="#flag--incompatible_auto_exec_groups">--[no]incompatible_auto_exec_groups</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_merge_genfiles_directory"><code><a href="#flag--incompatible_merge_genfiles_directory">--[no]incompatible_merge_genfiles_directory</a></code> default: "true"</dt>
<dd>
If true, the genfiles directory is folded into the bin directory.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_use_host_features"><code><a href="#flag--incompatible_use_host_features">--[no]incompatible_use_host_features</a></code> default: "true"</dt>
<dd>
If true, use --features only for the target configuration and --host_features for the exec configuration.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--instrument_test_targets"><code><a href="#flag--instrument_test_targets">--[no]instrument_test_targets</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--instrumentation_filter"><code><a href="#flag--instrumentation_filter">--instrumentation_filter</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths&gt</code> default: "-/javatests[/:],-/test/java[/:]"</dt>
<dd>
When coverage is enabled, only rules with names included by the specified regex-based filter will be instrumented. Rules prefixed with &#39;-&#39; are excluded instead. Note that only non-test rules are instrumented unless --instrument_test_targets is enabled.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ios_minimum_os"><code><a href="#flag--ios_minimum_os">--ios_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible iOS version for target simulators and devices. If unspecified, uses &#39;ios_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--ios_multi_cpus"><code><a href="#flag--ios_multi_cpus">--ios_multi_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures to build an ios_application with. The result is a universal binary containing all specified architectures.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--legacy_whole_archive"><code><a href="#flag--legacy_whole_archive">--[no]legacy_whole_archive</a></code> default: "true"</dt>
<dd>
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 &#39;-static&#39; in linkopts. This is for backwards compatibility only. A better alternative is to use alwayslink=1 where required.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_DEPRECATED"><code>deprecated</code></a></dd>
<dt id="flag--linkopt"><code><a href="#flag--linkopt">--linkopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to gcc when linking.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ltobackendopt"><code><a href="#flag--ltobackendopt">--ltobackendopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to the LTO backend step (under --features=thin_lto).
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--ltoindexopt"><code><a href="#flag--ltoindexopt">--ltoindexopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional option to pass to the LTO indexing step (under --features=thin_lto).
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--macos_cpus"><code><a href="#flag--macos_cpus">--macos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple macOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--macos_minimum_os"><code><a href="#flag--macos_minimum_os">--macos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible macOS version for targets. If unspecified, uses &#39;macos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--memprof_profile"><code><a href="#flag--memprof_profile">--memprof_profile</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Use memprof profile.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--objc_debug_with_GLIBCXX"><code><a href="#flag--objc_debug_with_GLIBCXX">--[no]objc_debug_with_GLIBCXX</a></code> default: "false"</dt>
<dd>
If set, and compilation mode is set to &#39;dbg&#39;, define GLIBCXX_DEBUG,  GLIBCXX_DEBUG_PEDANTIC and GLIBCPP_CONCEPT_CHECKS.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--objc_enable_binary_stripping"><code><a href="#flag--objc_enable_binary_stripping">--[no]objc_enable_binary_stripping</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--objccopt"><code><a href="#flag--objccopt">--objccopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to gcc when compiling Objective-C/C++ source files.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--per_file_copt"><code><a href="#flag--per_file_copt">--per_file_copt</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths followed by an @ and a comma separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--per_file_ltobackendopt"><code><a href="#flag--per_file_ltobackendopt">--per_file_ltobackendopt</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths followed by an @ and a comma separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--platform_suffix"><code><a href="#flag--platform_suffix">--platform_suffix</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Specifies a suffix to be added to the configuration directory.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--propeller_optimize"><code><a href="#flag--propeller_optimize">--propeller_optimize</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
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 = &quot;propeller_profile&quot;,    cc_profile = &quot;propeller_cc_profile.txt&quot;,    ld_profile = &quot;propeller_ld_profile.txt&quot;,)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
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--propeller_optimize_absolute_cc_profile"><code><a href="#flag--propeller_optimize_absolute_cc_profile">--propeller_optimize_absolute_cc_profile</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Absolute path name of cc_profile file for Propeller Optimized builds.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--propeller_optimize_absolute_ld_profile"><code><a href="#flag--propeller_optimize_absolute_ld_profile">--propeller_optimize_absolute_ld_profile</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Absolute path name of ld_profile file for Propeller Optimized builds.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--run_under"><code><a href="#flag--run_under">--run_under</a>=&lt;a prefix in front of command&gt</code> default: see description</dt>
<dd>
Prefix to insert before the executables for the &#39;test&#39; and &#39;run&#39; commands. If the value is &#39;foo -bar&#39;, and the execution command line is &#39;test_binary -baz&#39;, then the final command line is &#39;foo -bar test_binary -baz&#39;.This can also be a label to an executable target. Some examples are: &#39;valgrind&#39;, &#39;strace&#39;, &#39;strace -c&#39;, &#39;valgrind --quiet --num-callers=20&#39;, &#39;//package:target&#39;,  &#39;//package:target --options&#39;.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--share_native_deps"><code><a href="#flag--share_native_deps">--[no]share_native_deps</a></code> default: "true"</dt>
<dd>
If true, native libraries that contain identical functionality will be shared among different targets
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--stamp"><code><a href="#flag--stamp">--[no]stamp</a></code> default: "false"</dt>
<dd>
Stamp binaries with the date, username, hostname, workspace information, etc.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--strip"><code><a href="#flag--strip">--strip</a>=&lt;always, sometimes or never&gt</code> default: "sometimes"</dt>
<dd>
Specifies whether to strip binaries and shared libraries  (using &quot;-Wl,--strip-debug&quot;).  The default value of &#39;sometimes&#39; means strip iff --compilation_mode=fastbuild.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--stripopt"><code><a href="#flag--stripopt">--stripopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to strip when generating a &#39;&lt;name&gt;.stripped&#39; binary.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--swiftcopt"><code><a href="#flag--swiftcopt">--swiftcopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to Swift compilation.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--tvos_cpus"><code><a href="#flag--tvos_cpus">--tvos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple tvOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--tvos_minimum_os"><code><a href="#flag--tvos_minimum_os">--tvos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible tvOS version for target simulators and devices. If unspecified, uses &#39;tvos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--visionos_cpus"><code><a href="#flag--visionos_cpus">--visionos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple visionOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--watchos_cpus"><code><a href="#flag--watchos_cpus">--watchos_cpus</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Comma-separated list of architectures for which to build Apple watchOS binaries.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--watchos_minimum_os"><code><a href="#flag--watchos_minimum_os">--watchos_minimum_os</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
Minimum compatible watchOS version for target simulators and devices. If unspecified, uses &#39;watchos_sdk_version&#39;.
<br>Tags:
<a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--xbinary_fdo"><code><a href="#flag--xbinary_fdo">--xbinary_fdo</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl>Options that affect how strictly Bazel enforces valid build inputs (rule definitions,  flag combinations, etc.):
<dt id="flag--auto_cpu_environment_group"><code><a href="#flag--auto_cpu_environment_group">--auto_cpu_environment_group</a>=&lt;a build target label&gt</code> default: ""</dt>
<dd>
Declare the environment_group to use for automatically mapping cpu values to target_environment values.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--check_licenses"><code><a href="#flag--check_licenses">--[no]check_licenses</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--check_visibility"><code><a href="#flag--check_visibility">--[no]check_visibility</a></code> default: "true"</dt>
<dd>
If disabled, visibility errors in target dependencies are demoted to warnings.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--desugar_for_android"><code><a href="#flag--desugar_for_android">--[no]desugar_for_android</a></code> default: "true"</dt>
<dd>
Whether to desugar Java 8 bytecode before dexing.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--desugar_java8_libs"><code><a href="#flag--desugar_java8_libs">--[no]desugar_java8_libs</a></code> default: "false"</dt>
<dd>
Whether to include supported Java 8 libraries in apps for legacy devices.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--enforce_constraints"><code><a href="#flag--enforce_constraints">--[no]enforce_constraints</a></code> default: "true"</dt>
<dd>
Checks the environments each target is compatible with and reports errors if any target has dependencies that don&#39;t support the same environments
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a></dd>
<dt id="flag--experimental_check_desugar_deps"><code><a href="#flag--experimental_check_desugar_deps">--[no]experimental_check_desugar_deps</a></code> default: "true"</dt>
<dd>
Whether to double-check correct desugaring at Android binary level.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_import_deps_checking"><code><a href="#flag--experimental_import_deps_checking">--experimental_import_deps_checking</a>=&lt;off, warning or error&gt</code> default: "OFF"</dt>
<dd>
When enabled, check whether the dependencies of an aar_import are complete. This enforcement can break the build, or can just result in warnings.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_one_version_enforcement"><code><a href="#flag--experimental_one_version_enforcement">--experimental_one_version_enforcement</a>=&lt;off, warning or error&gt</code> default: "OFF"</dt>
<dd>
When enabled, enforce that a java_binary rule can&#39;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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_strict_java_deps"><code><a href="#flag--experimental_strict_java_deps">--experimental_strict_java_deps</a>=&lt;off, warn, error, strict or default&gt</code> default: "default"</dt>
<dd>
If true, checks that a Java target explicitly declares all directly used targets as dependencies.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--incompatible_check_testonly_for_output_files"><code><a href="#flag--incompatible_check_testonly_for_output_files">--[no]incompatible_check_testonly_for_output_files</a></code> default: "false"</dt>
<dd>
If enabled, check testonly for prerequisite targets that are output files by looking up the testonly of the generating rule. This matches visibility checking.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_check_visibility_for_toolchains"><code><a href="#flag--incompatible_check_visibility_for_toolchains">--[no]incompatible_check_visibility_for_toolchains</a></code> default: "false"</dt>
<dd>
If enabled, visibility checking also applies to toolchain implementations.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disable_native_android_rules"><code><a href="#flag--incompatible_disable_native_android_rules">--[no]incompatible_disable_native_android_rules</a></code> default: "false"</dt>
<dd>
If enabled, direct usage of the native Android rules is disabled. Please use the Starlark Android rules from https://github.com/bazelbuild/rules_android
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disable_native_apple_binary_rule"><code><a href="#flag--incompatible_disable_native_apple_binary_rule">--[no]incompatible_disable_native_apple_binary_rule</a></code> default: "false"</dt>
<dd>
No-op. Kept here for backwards compatibility.
<br>Tags:
<a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_python_disable_py2"><code><a href="#flag--incompatible_python_disable_py2">--[no]incompatible_python_disable_py2</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_validate_top_level_header_inclusions"><code><a href="#flag--incompatible_validate_top_level_header_inclusions">--[no]incompatible_validate_top_level_header_inclusions</a></code> default: "true"</dt>
<dd>
If true, Bazel will also validate top level directory header inclusions (see https://github.com/bazelbuild/bazel/issues/10047 for more information).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--one_version_enforcement_on_java_tests"><code><a href="#flag--one_version_enforcement_on_java_tests">--[no]one_version_enforcement_on_java_tests</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--python_native_rules_allowlist"><code><a href="#flag--python_native_rules_allowlist">--python_native_rules_allowlist</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
An allowlist (package_group target) to use when enforcing --incompatible_python_disallow_native_rules.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--strict_filesets"><code><a href="#flag--strict_filesets">--[no]strict_filesets</a></code> default: "false"</dt>
<dd>
If this option is enabled, filesets crossing package boundaries are reported as errors.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--strict_proto_deps"><code><a href="#flag--strict_proto_deps">--strict_proto_deps</a>=&lt;off, warn, error, strict or default&gt</code> default: "error"</dt>
<dd>
Unless OFF, checks that a proto_library target explicitly declares all directly used targets as dependencies.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--strict_public_imports"><code><a href="#flag--strict_public_imports">--strict_public_imports</a>=&lt;off, warn, error, strict or default&gt</code> default: "off"</dt>
<dd>
Unless OFF, checks that a proto_library target explicitly declares all targets used in &#39;import public&#39; as exported.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--strict_system_includes"><code><a href="#flag--strict_system_includes">--[no]strict_system_includes</a></code> default: "false"</dt>
<dd>
If true, headers found through system include paths (-isystem) are also required to be declared.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></a></dd>
<dt id="flag--target_environment"><code><a href="#flag--target_environment">--target_environment</a>=&lt;a build target label&gt</code> multiple uses are accumulated</dt>
<dd>
Declares this build&#39;s target environment. Must be a label reference to an &quot;environment&quot; rule. If specified, all top-level targets must be compatible with this environment.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Options that affect the signing outputs of a build:
<dt id="flag--apk_signing_method"><code><a href="#flag--apk_signing_method">--apk_signing_method</a>=&lt;v1, v2, v1_v2 or v4&gt</code> default: "v1_v2"</dt>
<dd>
Implementation to use to sign APKs
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--device_debug_entitlements"><code><a href="#flag--device_debug_entitlements">--[no]device_debug_entitlements</a></code> default: "true"</dt>
<dd>
If set, and compilation mode is not &#39;opt&#39;, objc apps will include debug entitlements when signing.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--ios_signing_cert_name"><code><a href="#flag--ios_signing_cert_name">--ios_signing_cert_name</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
Certificate name to use for iOS signing. If not set will fall back to provisioning profile. May be the certificate&#39;s keychain identity preference or (substring) of the certificate&#39;s common name, as per codesign&#39;s man page (SIGNING IDENTITIES).
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
</dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--incompatible_config_setting_private_default_visibility"><code><a href="#flag--incompatible_config_setting_private_default_visibility">--[no]incompatible_config_setting_private_default_visibility</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disallow_legacy_py_provider"><code><a href="#flag--incompatible_disallow_legacy_py_provider">--[no]incompatible_disallow_legacy_py_provider</a></code> default: "true"</dt>
<dd>
No-op, will be removed soon.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_disallow_sdk_frameworks_attributes"><code><a href="#flag--incompatible_disallow_sdk_frameworks_attributes">--[no]incompatible_disallow_sdk_frameworks_attributes</a></code> default: "false"</dt>
<dd>
If true, disallow sdk_frameworks and weak_sdk_frameworks attributes in objc_library andobjc_import.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_enforce_config_setting_visibility"><code><a href="#flag--incompatible_enforce_config_setting_visibility">--[no]incompatible_enforce_config_setting_visibility</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_objc_alwayslink_by_default"><code><a href="#flag--incompatible_objc_alwayslink_by_default">--[no]incompatible_objc_alwayslink_by_default</a></code> default: "false"</dt>
<dd>
If true, make the default value true for alwayslink attributes in objc_library and objc_import.
<br>Tags:
<a href="#effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_python_disallow_native_rules"><code><a href="#flag--incompatible_python_disallow_native_rules">--[no]incompatible_python_disallow_native_rules</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
</dl>
<dl>Options that govern the behavior of the test environment or test runner:
<dt id="flag--allow_analysis_failures"><code><a href="#flag--allow_analysis_failures">--[no]allow_analysis_failures</a></code> default: "false"</dt>
<dd>
If true, an analysis failure of a rule target results in the target&#39;s propagation of an instance of AnalysisFailureInfo containing the error description, instead of resulting in a build failure.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--analysis_testing_deps_limit"><code><a href="#flag--analysis_testing_deps_limit">--analysis_testing_deps_limit</a>=&lt;an integer&gt</code> default: "2000"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--break_build_on_parallel_dex2oat_failure"><code><a href="#flag--break_build_on_parallel_dex2oat_failure">--[no]break_build_on_parallel_dex2oat_failure</a></code> default: "false"</dt>
<dd>
If true dex2oat action failures will cause the build to break instead of executing dex2oat during test runtime.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--default_test_resources"><code><a href="#flag--default_test_resources">--default_test_resources</a>=&lt;a resource name followed by equal and 1 float or 4 float, e.g. memory=10,30,60,100&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_android_use_parallel_dex2oat"><code><a href="#flag--experimental_android_use_parallel_dex2oat">--[no]experimental_android_use_parallel_dex2oat</a></code> default: "false"</dt>
<dd>
Use dex2oat in parallel to possibly speed up android_test.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--ios_memleaks"><code><a href="#flag--ios_memleaks">--[no]ios_memleaks</a></code> default: "false"</dt>
<dd>
Enable checking for memory leaks in ios_test targets.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--ios_simulator_device"><code><a href="#flag--ios_simulator_device">--ios_simulator_device</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
The device to simulate when running an iOS application in the simulator, e.g. &#39;iPhone 6&#39;. You can get a list of devices by running &#39;xcrun simctl list devicetypes&#39; on the machine the simulator will be run on.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
<dt id="flag--ios_simulator_version"><code><a href="#flag--ios_simulator_version">--ios_simulator_version</a>=&lt;a dotted version (for example &#39;2.3&#39; or &#39;3.3alpha2.4&#39;)&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
<dt id="flag--runs_per_test"><code><a href="#flag--runs_per_test">--runs_per_test</a>=&lt;a positive integer or test_regex@runs. This flag may be passed more than once&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--test_env"><code><a href="#flag--test_env">--test_env</a>=&lt;a &#39;name=value&#39; assignment with an optional value part&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;bazel test&#39; command.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
<dt id="flag--test_timeout"><code><a href="#flag--test_timeout">--test_timeout</a>=&lt;a single integer or comma-separated list of 4 integers&gt</code> default: "-1"</dt>
<dd>
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.
</dd>
<dt id="flag--zip_undeclared_test_outputs"><code><a href="#flag--zip_undeclared_test_outputs">--[no]zip_undeclared_test_outputs</a></code> default: "true"</dt>
<dd>
If true, undeclared test outputs will be archived in a zip file.
<br>Tags:
<a href="#effect_tag_TEST_RUNNER"><code>test_runner</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--repo"><code><a href="#flag--repo">--repo</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Only vendors the specified repository, which can be either `@apparent_repo_name` or `@@canonical_repo_name`. This option can be set multiple times
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--experimental_filter_library_jar_with_program_jar"><code><a href="#flag--experimental_filter_library_jar_with_program_jar">--[no]experimental_filter_library_jar_with_program_jar</a></code> default: "false"</dt>
<dd>
Filter the ProGuard ProgramJar to remove any classes also present in the LibraryJar.
<br>Tags:
<a href="#effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></a></dd>
<dt id="flag--experimental_inmemory_dotd_files"><code><a href="#flag--experimental_inmemory_dotd_files">--[no]experimental_inmemory_dotd_files</a></code> default: "true"</dt>
<dd>
If enabled, C++ .d files will be passed through in memory directly from the remote build nodes instead of being written to disk.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_inmemory_jdeps_files"><code><a href="#flag--experimental_inmemory_jdeps_files">--[no]experimental_inmemory_jdeps_files</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_objc_include_scanning"><code><a href="#flag--experimental_objc_include_scanning">--[no]experimental_objc_include_scanning</a></code> default: "false"</dt>
<dd>
Whether to perform include scanning for objective C/C++.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--experimental_retain_test_configuration_across_testonly"><code><a href="#flag--experimental_retain_test_configuration_across_testonly">--[no]experimental_retain_test_configuration_across_testonly</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--experimental_starlark_cc_import"><code><a href="#flag--experimental_starlark_cc_import">--[no]experimental_starlark_cc_import</a></code> default: "false"</dt>
<dd>
If enabled, the Starlark version of cc_import can be used.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_unsupported_and_brittle_include_scanning"><code><a href="#flag--experimental_unsupported_and_brittle_include_scanning">--[no]experimental_unsupported_and_brittle_include_scanning</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a>, <a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--incremental_dexing"><code><a href="#flag--incremental_dexing">--[no]incremental_dexing</a></code> default: "true"</dt>
<dd>
Does most of the work for dexing separately for each Jar file.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
<dt id="flag--objc_use_dotd_pruning"><code><a href="#flag--objc_use_dotd_pruning">--[no]objc_use_dotd_pruning</a></code> default: "true"</dt>
<dd>
If set, .d files emitted by clang will be used to prune the set of inputs passed into objc compiles.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--process_headers_in_dependencies"><code><a href="#flag--process_headers_in_dependencies">--[no]process_headers_in_dependencies</a></code> default: "false"</dt>
<dd>
When building a target //a:a, process headers in all targets that //a:a depends on (if header processing is enabled for the toolchain).
<br>Tags:
<a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
<dt id="flag--trim_test_configuration"><code><a href="#flag--trim_test_configuration">--[no]trim_test_configuration</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--toolchain_resolution_debug"><code><a href="#flag--toolchain_resolution_debug">--toolchain_resolution_debug</a>=&lt;a comma-separated list of regex expressions with prefix &#39;-&#39; specifying excluded paths&gt</code> default: "-.*"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></a></dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--flag_alias"><code><a href="#flag--flag_alias">--flag_alias</a>=&lt;a &#39;name=value&#39; flag alias&gt</code> multiple uses are accumulated</dt>
<dd>
Sets a shorthand name for a Starlark flag. It takes a single key-value pair in the form &quot;&lt;key&gt;=&lt;value&gt;&quot; as an argument.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--incompatible_default_to_explicit_init_py"><code><a href="#flag--incompatible_default_to_explicit_init_py">--[no]incompatible_default_to_explicit_init_py</a></code> default: "false"</dt>
<dd>
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 &quot;auto&quot; (the default), it is treated as false if and only if this flag is set. See https://github.com/bazelbuild/bazel/issues/10076.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_py2_outputs_are_suffixed"><code><a href="#flag--incompatible_py2_outputs_are_suffixed">--[no]incompatible_py2_outputs_are_suffixed</a></code> default: "true"</dt>
<dd>
If true, targets built in the Python 2 configuration will appear under an output root that includes the suffix &#39;-py2&#39;, 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`.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_py3_is_default"><code><a href="#flag--incompatible_py3_is_default">--[no]incompatible_py3_is_default</a></code> default: "true"</dt>
<dd>
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`.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_use_python_toolchains"><code><a href="#flag--incompatible_use_python_toolchains">--[no]incompatible_use_python_toolchains</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--python_version"><code><a href="#flag--python_version">--python_version</a>=&lt;PY2 or PY3&gt</code> default: see description</dt>
<dd>
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&#39;t explicitly specify a version) so there is usually not much reason to supply this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
</dl>
<dl></dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--cache_test_results"><code><a href="#flag--cache_test_results">--[no]cache_test_results</a></code> [<code>-t</code>] default: "auto"</dt>
<dd>
If set to &#39;auto&#39;, 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 &#39;yes&#39;, Bazel caches all test results except for tests marked as external. If set to &#39;no&#39;, Bazel does not cache any test results.
</dd>
<dt id="flag--deleted_packages"><code><a href="#flag--deleted_packages">--deleted_packages</a>=&lt;comma-separated list of package names&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;x/y&#39; of an existing package &#39;x&#39;.  For example, after deleting x/y/BUILD in your client, the build system may complain if it encounters a label &#39;//x:y/z&#39; if that is still provided by another package_path entry.  Specifying --deleted_packages x/y avoids this problem.
</dd>
<dt id="flag--experimental_cancel_concurrent_tests"><code><a href="#flag--experimental_cancel_concurrent_tests">--[no]experimental_cancel_concurrent_tests</a></code> default: "false"</dt>
<dd>
If true, then Blaze will cancel concurrently running tests on the first successful run. This is only useful in combination with --runs_per_test_detects_flakes.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_fetch_all_coverage_outputs"><code><a href="#flag--experimental_fetch_all_coverage_outputs">--[no]experimental_fetch_all_coverage_outputs</a></code> default: "false"</dt>
<dd>
If true, then Bazel fetches the entire coverage data directory for each test during a coverage run.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_generate_llvm_lcov"><code><a href="#flag--experimental_generate_llvm_lcov">--[no]experimental_generate_llvm_lcov</a></code> default: "false"</dt>
<dd>
If true, coverage for clang will generate an LCOV report.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--experimental_j2objc_header_map"><code><a href="#flag--experimental_j2objc_header_map">--[no]experimental_j2objc_header_map</a></code> default: "true"</dt>
<dd>
Whether to generate J2ObjC header map in parallel of J2ObjC transpilation.
</dd>
<dt id="flag--experimental_j2objc_shorter_header_path"><code><a href="#flag--experimental_j2objc_shorter_header_path">--[no]experimental_j2objc_shorter_header_path</a></code> default: "false"</dt>
<dd>
Whether to generate with shorter header path (uses &quot;_ios&quot; instead of &quot;_j2objc&quot;).
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_java_classpath"><code><a href="#flag--experimental_java_classpath">--experimental_java_classpath</a>=&lt;off, javabuilder or bazel&gt</code> default: "javabuilder"</dt>
<dd>
Enables reduced classpaths for Java compilations.
</dd>
<dt id="flag--experimental_limit_android_lint_to_android_constrained_java"><code><a href="#flag--experimental_limit_android_lint_to_android_constrained_java">--[no]experimental_limit_android_lint_to_android_constrained_java</a></code> default: "false"</dt>
<dd>
Limit --experimental_run_android_lint_on_java_rules to Android-compatible libraries.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--experimental_run_android_lint_on_java_rules"><code><a href="#flag--experimental_run_android_lint_on_java_rules">--[no]experimental_run_android_lint_on_java_rules</a></code> default: "false"</dt>
<dd>
Whether to validate java_* sources.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--explicit_java_test_deps"><code><a href="#flag--explicit_java_test_deps">--[no]explicit_java_test_deps</a></code> default: "false"</dt>
<dd>
Explicitly specify a dependency to JUnit or Hamcrest in a java_test instead of  accidentally obtaining from the TestRunner&#39;s deps. Only works for bazel right now.
</dd>
<dt id="flag--fetch"><code><a href="#flag--fetch">--[no]fetch</a></code> default: "true"</dt>
<dd>
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.
</dd>
<dt id="flag--host_java_launcher"><code><a href="#flag--host_java_launcher">--host_java_launcher</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The Java launcher used by tools that are executed during a build.
</dd>
<dt id="flag--host_javacopt"><code><a href="#flag--host_javacopt">--host_javacopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to javac when building tools that are executed during a build.
</dd>
<dt id="flag--host_jvmopt"><code><a href="#flag--host_jvmopt">--host_jvmopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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.
</dd>
<dt id="flag--incompatible_check_sharding_support"><code><a href="#flag--incompatible_check_sharding_support">--[no]incompatible_check_sharding_support</a></code> default: "true"</dt>
<dd>
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.
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_exclusive_test_sandboxed"><code><a href="#flag--incompatible_exclusive_test_sandboxed">--[no]incompatible_exclusive_test_sandboxed</a></code> default: "true"</dt>
<dd>
If true, exclusive tests will run with sandboxed strategy. Add &#39;local&#39; tag to force an exclusive test run locally
<br>Tags:
<a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--incompatible_strict_action_env"><code><a href="#flag--incompatible_strict_action_env">--[no]incompatible_strict_action_env</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a>, <a href="#metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></a></dd>
<dt id="flag--j2objc_translation_flags"><code><a href="#flag--j2objc_translation_flags">--j2objc_translation_flags</a>=&lt;comma-separated list of options&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the J2ObjC tool.
</dd>
<dt id="flag--java_debug"><code><a href="#flag--java_debug">--java_debug</a></code></dt>
<dd>
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.
<br/>
Expands to:<br/>
&nbsp;&nbsp;<code><a href="#flag--test_arg">--test_arg=--wrapper_script_flag=--debug</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--test_output">--test_output=streamed</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--test_strategy">--test_strategy=exclusive</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--test_timeout">--test_timeout=9999</a></code><br/>
&nbsp;&nbsp;<code><a href="#flag--nocache_test_results">--nocache_test_results</a></code><br/>
</dd>
<dt id="flag--java_deps"><code><a href="#flag--java_deps">--[no]java_deps</a></code> default: "true"</dt>
<dd>
Generate dependency information (for now, compile-time classpath) per Java target.
</dd>
<dt id="flag--java_header_compilation"><code><a href="#flag--java_header_compilation">--[no]java_header_compilation</a></code> default: "true"</dt>
<dd>
Compile ijars directly from source.
</dd>
<dt id="flag--java_language_version"><code><a href="#flag--java_language_version">--java_language_version</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The Java language version
</dd>
<dt id="flag--java_launcher"><code><a href="#flag--java_launcher">--java_launcher</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
The Java launcher to use when building Java binaries.  If this flag is set to the empty string, the JDK launcher is used. The &quot;launcher&quot; attribute overrides this flag.
</dd>
<dt id="flag--java_runtime_version"><code><a href="#flag--java_runtime_version">--java_runtime_version</a>=&lt;a string&gt</code> default: "local_jdk"</dt>
<dd>
The Java runtime version
</dd>
<dt id="flag--javacopt"><code><a href="#flag--javacopt">--javacopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to javac.
</dd>
<dt id="flag--jvmopt"><code><a href="#flag--jvmopt">--jvmopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the Java VM. These options will get added to the VM startup options of each java_binary target.
</dd>
<dt id="flag--legacy_main_dex_list_generator"><code><a href="#flag--legacy_main_dex_list_generator">--legacy_main_dex_list_generator</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies a binary to use to generate the list of classes that must be in the main dex when compiling legacy multidex.
</dd>
<dt id="flag--optimizing_dexer"><code><a href="#flag--optimizing_dexer">--optimizing_dexer</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies a binary to use to do dexing without sharding.
</dd>
<dt id="flag--package_path"><code><a href="#flag--package_path">--package_path</a>=&lt;colon-separated list of options&gt</code> default: "%workspace%"</dt>
<dd>
A colon-separated list of where to look for packages. Elements beginning with &#39;%workspace%&#39; are relative to the enclosing workspace. If omitted or empty, the default is the output of &#39;bazel info default-package-path&#39;.
</dd>
<dt id="flag--plugin"><code><a href="#flag--plugin">--plugin</a>=&lt;a build target label&gt</code> multiple uses are accumulated</dt>
<dd>
Plugins to use in the build. Currently works with java_plugin.
</dd>
<dt id="flag--proguard_top"><code><a href="#flag--proguard_top">--proguard_top</a>=&lt;a build target label&gt</code> default: see description</dt>
<dd>
Specifies which version of ProGuard to use for code removal when building a Java binary.
</dd>
<dt id="flag--proto_compiler"><code><a href="#flag--proto_compiler">--proto_compiler</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:protoc"</dt>
<dd>
The label of the proto-compiler.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_cc"><code><a href="#flag--proto_toolchain_for_cc">--proto_toolchain_for_cc</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:cc_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile C++ protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_j2objc"><code><a href="#flag--proto_toolchain_for_j2objc">--proto_toolchain_for_j2objc</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/j2objc:j2objc_proto_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile j2objc protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_java"><code><a href="#flag--proto_toolchain_for_java">--proto_toolchain_for_java</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:java_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile Java protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--proto_toolchain_for_javalite"><code><a href="#flag--proto_toolchain_for_javalite">--proto_toolchain_for_javalite</a>=&lt;a build target label&gt</code> default: "@bazel_tools//tools/proto:javalite_toolchain"</dt>
<dd>
Label of proto_lang_toolchain() which describes how to compile JavaLite protos
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--protocopt"><code><a href="#flag--protocopt">--protocopt</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
Additional options to pass to the protobuf compiler.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a></dd>
<dt id="flag--runs_per_test_detects_flakes"><code><a href="#flag--runs_per_test_detects_flakes">--[no]runs_per_test_detects_flakes</a></code> default: "false"</dt>
<dd>
If true, any shard in which at least one run/attempt passes and at least one run/attempt fails gets a FLAKY status.
</dd>
<dt id="flag--shell_executable"><code><a href="#flag--shell_executable">--shell_executable</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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:/tools/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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--show_loading_progress"><code><a href="#flag--show_loading_progress">--[no]show_loading_progress</a></code> default: "true"</dt>
<dd>
If enabled, causes Bazel to print &quot;Loading package:&quot; messages.
</dd>
<dt id="flag--test_arg"><code><a href="#flag--test_arg">--test_arg</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;bazel test&#39; command.
</dd>
<dt id="flag--test_filter"><code><a href="#flag--test_filter">--test_filter</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--test_result_expiration"><code><a href="#flag--test_result_expiration">--test_result_expiration</a>=&lt;an integer&gt</code> default: "-1"</dt>
<dd>
This option is deprecated and has no effect.
</dd>
<dt id="flag--test_runner_fail_fast"><code><a href="#flag--test_runner_fail_fast">--[no]test_runner_fail_fast</a></code> default: "false"</dt>
<dd>
Forwards fail fast option to the test runner. The test runner should stop execution upon first failure.
</dd>
<dt id="flag--test_sharding_strategy"><code><a href="#flag--test_sharding_strategy">--test_sharding_strategy</a>=&lt;explicit, disabled or forced=k where k is the number of shards to enforce&gt</code> default: "explicit"</dt>
<dd>
Specify strategy for test sharding: &#39;explicit&#39; to only use sharding if the &#39;shard_count&#39; BUILD attribute is present. &#39;disabled&#39; to never use test sharding. &#39;forced=k&#39; to enforce &#39;k&#39; shards for testing regardless of the &#39;shard_count&#39; BUILD attribute.
</dd>
<dt id="flag--tool_java_language_version"><code><a href="#flag--tool_java_language_version">--tool_java_language_version</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
The Java language version used to execute the tools that are needed during a build
</dd>
<dt id="flag--tool_java_runtime_version"><code><a href="#flag--tool_java_runtime_version">--tool_java_runtime_version</a>=&lt;a string&gt</code> default: "remotejdk_11"</dt>
<dd>
The Java runtime version used to execute tools during the build
</dd>
<dt id="flag--use_ijars"><code><a href="#flag--use_ijars">--[no]use_ijars</a></code> default: "true"</dt>
<dd>
If enabled, this option causes Java compilation to use interface jars. This will result in faster incremental compilation, but error messages can be different.
</dd>
</dl>

<h2><a name="version">Version Options</a></h2>
<dl>Options that appear before the command and are parsed by the client:
<dt id="flag--distdir"><code><a href="#flag--distdir">--distdir</a>=&lt;a path&gt</code> multiple uses are accumulated</dt>
<dd>
Additional places to search for archives before accessing the network to download them.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_cache_hardlinks"><code><a href="#flag--experimental_repository_cache_hardlinks">--[no]experimental_repository_cache_hardlinks</a></code> default: "false"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--experimental_repository_downloader_retries"><code><a href="#flag--experimental_repository_downloader_retries">--experimental_repository_downloader_retries</a>=&lt;an integer&gt</code> default: "0"</dt>
<dd>
The maximum number of attempts to retry a download error. If set to 0, retries are disabled.
<br>Tags:
<a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--experimental_scale_timeouts"><code><a href="#flag--experimental_scale_timeouts">--experimental_scale_timeouts</a>=&lt;a double&gt</code> default: "1.0"</dt>
<dd>
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
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a>, <a href="#metadata_tag_EXPERIMENTAL"><code>experimental</code></a></dd>
<dt id="flag--incompatible_disable_native_repo_rules"><code><a href="#flag--incompatible_disable_native_repo_rules">--[no]incompatible_disable_native_repo_rules</a></code> default: "false"</dt>
<dd>
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, local_config_platform, android_sdk_repository, and android_ndk_repository.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_cache"><code><a href="#flag--repository_cache">--repository_cache</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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 &#39;&lt;output_user_root&gt;/cache/repos/v1&#39; is used
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
<dt id="flag--repository_disable_download"><code><a href="#flag--repository_disable_download">--[no]repository_disable_download</a></code> default: "false"</dt>
<dd>
If set, downloading using ctx.download{,_and_extract} is not allowed during repository fetching. Note that network access is not completely disabled; ctx.execute could still run an arbitrary executable that accesses the Internet.
<br>Tags:
<a href="#effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></a></dd>
</dl>
<dl>Options that control build execution:
<dt id="flag--gc_thrashing_threshold"><code><a href="#flag--gc_thrashing_threshold">--gc_thrashing_threshold</a>=&lt;an integer in 0-100 range&gt</code> default: "100"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl>Options that let the user configure the intended output, affecting its value, as opposed to its existence:
<dt id="flag--gnu_format"><code><a href="#flag--gnu_format">--[no]gnu_format</a></code> default: "false"</dt>
<dd>
If set, write the version to stdout using the conventions described in the GNU standards.
<br>Tags:
<a href="#effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></a>, <a href="#effect_tag_EXECUTION"><code>execution</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl>This option affects semantics of the Starlark language or the build API accessible to BUILD files, .bzl files, or WORKSPACE files.:
<dt id="flag--experimental_action_resource_set"><code><a href="#flag--experimental_action_resource_set">--[no]experimental_action_resource_set</a></code> default: "true"</dt>
<dd>
No-op.
<br>Tags:
<a href="#effect_tag_NO_OP"><code>no_op</code></a></dd>
</dl>
<dl></dl>
<dl></dl>
<dl></dl>
<dl>Options relating to Bzlmod output and semantics:
<dt id="flag--allow_yanked_versions"><code><a href="#flag--allow_yanked_versions">--allow_yanked_versions</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;all&#39; (not recommended).
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_bazel_compatibility"><code><a href="#flag--check_bazel_compatibility">--check_bazel_compatibility</a>=&lt;error, warning or off&gt</code> default: "error"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--check_direct_dependencies"><code><a href="#flag--check_direct_dependencies">--check_direct_dependencies</a>=&lt;off, warning or error&gt</code> default: "warning"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--ignore_dev_dependency"><code><a href="#flag--ignore_dev_dependency">--[no]ignore_dev_dependency</a></code> default: "false"</dt>
<dd>
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&#39;s not the root module regardless of the value of this flag.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--lockfile_mode"><code><a href="#flag--lockfile_mode">--lockfile_mode</a>=&lt;off, update, refresh or error&gt</code> default: "update"</dt>
<dd>
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&#39;s not up-to-date, or `off` to neither read from or write to the lockfile.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
<dt id="flag--override_module"><code><a href="#flag--override_module">--override_module</a>=&lt;an equals-separated mapping of module name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
<dt id="flag--registry"><code><a href="#flag--registry">--registry</a>=&lt;a string&gt</code> multiple uses are accumulated</dt>
<dd>
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&#39;re missing from the earlier ones.
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
<dt id="flag--vendor_dir"><code><a href="#flag--vendor_dir">--vendor_dir</a>=&lt;a path&gt</code> default: see description</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></a></dd>
</dl>
<dl>Options that trigger optimizations of the build time:
<dt id="flag--gc_thrashing_limits"><code><a href="#flag--gc_thrashing_limits">--gc_thrashing_limits</a>=&lt;comma separated pairs of &lt;period&gt;:&lt;count&gt;&gt</code> default: "1s:2,20s:3,1m:5"</dt>
<dd>
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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_full_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_full_gc_drops_per_invocation">--skyframe_high_water_mark_full_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_minor_gc_drops_per_invocation"><code><a href="#flag--skyframe_high_water_mark_minor_gc_drops_per_invocation">--skyframe_high_water_mark_minor_gc_drops_per_invocation</a>=&lt;an integer, &gt;= 0&gt</code> default: "2147483647"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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 Integer.MAX_VALUE; effectively unlimited. 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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
<dt id="flag--skyframe_high_water_mark_threshold"><code><a href="#flag--skyframe_high_water_mark_threshold">--skyframe_high_water_mark_threshold</a>=&lt;an integer&gt</code> default: "85"</dt>
<dd>
Flag for advanced configuration of Bazel&#39;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.
<br>Tags:
<a href="#effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></a></dd>
</dl>
<dl>Options that affect the verbosity, format or location of logging:
<dt id="flag--experimental_command_profile"><code><a href="#flag--experimental_command_profile">--experimental_command_profile</a>=&lt;cpu, wall, alloc or lock&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_record_metrics_for_all_mnemonics"><code><a href="#flag--experimental_record_metrics_for_all_mnemonics">--[no]experimental_record_metrics_for_all_mnemonics</a></code> default: "false"</dt>
<dd>
By default the number of action types is limited to the 20 mnemonics with the largest number of executed actions. Setting this option will write statistics for all mnemonics.
</dd>
</dl>
<dl>Options specifying or altering a generic input to a Bazel command that does not fall into other categories.:
<dt id="flag--experimental_resolved_file_instead_of_workspace"><code><a href="#flag--experimental_resolved_file_instead_of_workspace">--experimental_resolved_file_instead_of_workspace</a>=&lt;a string&gt</code> default: ""</dt>
<dd>
If non-empty read the specified resolved file instead of the WORKSPACE file
<br>Tags:
<a href="#effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></a></dd>
</dl>
<dl>Remote caching and execution options:
<dt id="flag--experimental_downloader_config"><code><a href="#flag--experimental_downloader_config">--experimental_downloader_config</a>=&lt;a string&gt</code> default: see description</dt>
<dd>
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.
</dd>
<dt id="flag--experimental_worker_for_repo_fetching"><code><a href="#flag--experimental_worker_for_repo_fetching">--experimental_worker_for_repo_fetching</a>=&lt;off, platform, virtual or auto&gt</code> default: "auto"</dt>
<dd>
The threading mode to use for repo fetching. If set to &#39;off&#39;, no worker thread is used, and the repo fetching is subject to restarts. Otherwise, uses a virtual worker thread.
</dd>
</dl>
<dl>Miscellaneous options, not otherwise categorized.:
<dt id="flag--override_repository"><code><a href="#flag--override_repository">--override_repository</a>=&lt;an equals-separated mapping of repository name to path&gt</code> multiple uses are accumulated</dt>
<dd>
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 &#39;%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.
</dd>
</dl>

<h3>Option Effect Tags</h3>
<table>
<tr>
<td id="effect_tag_UNKNOWN"><code>unknown</code></td>
<td>This option has unknown, or undocumented, effect.</td>
</tr>
<tr>
<td id="effect_tag_NO_OP"><code>no_op</code></td>
<td>This option has literally no effect.</td>
</tr>
<tr>
<td id="effect_tag_LOSES_INCREMENTAL_STATE"><code>loses_incremental_state</code></td>
<td>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.</td>
</tr>
<tr>
<td id="effect_tag_CHANGES_INPUTS"><code>changes_inputs</code></td>
<td>This option actively changes the inputs that bazel considers for the build, such as filesystem restrictions, repository versions, or other options.</td>
</tr>
<tr>
<td id="effect_tag_AFFECTS_OUTPUTS"><code>affects_outputs</code></td>
<td>This option affects bazel&#39;s outputs. This tag is intentionally broad, can include transitive affects, and does not specify the type of output it affects.</td>
</tr>
<tr>
<td id="effect_tag_BUILD_FILE_SEMANTICS"><code>build_file_semantics</code></td>
<td>This option affects the semantics of BUILD or .bzl files.</td>
</tr>
<tr>
<td id="effect_tag_BAZEL_INTERNAL_CONFIGURATION"><code>bazel_internal_configuration</code></td>
<td>This option affects settings of bazel-internal machinery. This tag does not, on its own, mean that build artifacts are affected.</td>
</tr>
<tr>
<td id="effect_tag_LOADING_AND_ANALYSIS"><code>loading_and_analysis</code></td>
<td>This option affects the loading and analysis of dependencies, and the building of the dependency graph.</td>
</tr>
<tr>
<td id="effect_tag_EXECUTION"><code>execution</code></td>
<td>This option affects the execution phase, such as sandboxing or remote execution related options.</td>
</tr>
<tr>
<td id="effect_tag_HOST_MACHINE_RESOURCE_OPTIMIZATIONS"><code>host_machine_resource_optimizations</code></td>
<td>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.</td>
</tr>
<tr>
<td id="effect_tag_EAGERNESS_TO_EXIT"><code>eagerness_to_exit</code></td>
<td>This option changes how eagerly bazel will exit from a failure, where a choice between continuing despite the failure and ending the invocation exists.</td>
</tr>
<tr>
<td id="effect_tag_BAZEL_MONITORING"><code>bazel_monitoring</code></td>
<td>This option is used to monitor bazel&#39;s behavior and performance.</td>
</tr>
<tr>
<td id="effect_tag_TERMINAL_OUTPUT"><code>terminal_output</code></td>
<td>This option affects bazel&#39;s terminal output.</td>
</tr>
<tr>
<td id="effect_tag_ACTION_COMMAND_LINES"><code>action_command_lines</code></td>
<td>This option changes the command line arguments of one or more build actions.</td>
</tr>
<tr>
<td id="effect_tag_TEST_RUNNER"><code>test_runner</code></td>
<td>This option changes the testrunner environment of the build.</td>
</tr>
</table>
<h3>Option Metadata Tags</h3>
<table>
<tr>
<td id="metadata_tag_EXPERIMENTAL"><code>experimental</code></td>
<td>This option triggers an experimental feature with no guarantees of functionality.</td>
</tr>
<tr>
<td id="metadata_tag_INCOMPATIBLE_CHANGE"><code>incompatible_change</code></td>
<td>This option triggers a breaking change. Use this option to test your migration readiness or get early access to the new feature</td>
</tr>
<tr>
<td id="metadata_tag_DEPRECATED"><code>deprecated</code></td>
<td>This option is deprecated. It might be that the feature it affects is deprecated, or that another method of supplying the information is preferred.</td>
</tr>
</table>

<br/><br/><br/><br/>
</body>
</html>
