| ############################################################################### |
| ## Bazel Configuration Flags |
| ## |
| ## `.bazelrc` is a Bazel configuration file. |
| ## https://bazel.build/docs/best-practices#bazelrc-file |
| ############################################################################### |
| |
| # https://bazel.build/reference/command-line-reference#flag--enable_platform_specific_config |
| common --enable_platform_specific_config |
| |
| # https://bazel.build/docs/windows#symlink |
| startup --windows_enable_symlinks |
| build:windows --enable_runfiles |
| |
| # Enable the only currently supported report type |
| # https://bazel.build/reference/command-line-reference#flag--combined_report |
| coverage --combined_report=lcov |
| |
| # Avoid fully cached builds reporting no coverage and failing CI |
| # https://bazel.build/reference/command-line-reference#flag--experimental_fetch_all_coverage_outputs |
| coverage --experimental_fetch_all_coverage_outputs |
| |
| # Required for some of the tests |
| # https://bazel.build/reference/command-line-reference#flag--experimental_cc_shared_library |
| common --experimental_cc_shared_library |
| |
| ############################################################################### |
| ## Unique configuration groups |
| ############################################################################### |
| |
| # Enable use of the nightly toolchains. |
| build:nightly --//rust/toolchain/channel=nightly |
| |
| # Enable rustfmt for all targets in the workspace |
| build:rustfmt --aspects=//rust:defs.bzl%rustfmt_aspect |
| build:rustfmt --output_groups=+rustfmt_checks |
| |
| # Enable clippy for all targets in the workspace |
| build:clippy --aspects=//rust:defs.bzl%rust_clippy_aspect |
| build:clippy --output_groups=+clippy_checks |
| |
| # Enable unpretty for all targets in the workspace |
| build:unpretty --aspects=//rust:defs.bzl%rust_unpretty_aspect |
| build:unpretty --output_groups=+rust_unpretty |
| |
| # `unpretty` requires the nightly toolchain. See tracking issue: |
| # https://github.com/rust-lang/rust/issues/43364 |
| build:unpretty --config=nightly |
| |
| ############################################################################### |
| ## Incompatibility flags |
| ############################################################################### |
| |
| # https://github.com/bazelbuild/bazel/issues/8195 |
| build --incompatible_disallow_empty_glob=true |
| |
| # https://github.com/bazelbuild/bazel/issues/12821 |
| build --nolegacy_external_runfiles |
| |
| # Required for cargo_build_script support before Bazel 7 |
| build --incompatible_merge_fixed_and_default_shell_env |
| |
| ############################################################################### |
| ## Bzlmod |
| ############################################################################### |
| |
| # TODO: migrate all dependencies from WORKSPACE to MODULE.bazel |
| # https://github.com/bazelbuild/rules_rust/issues/2181 |
| common --noenable_bzlmod --enable_workspace |
| |
| # Disable the bzlmod lockfile, so we don't accidentally commit MODULE.bazel.lock |
| common --lockfile_mode=off |
| |
| ############################################################################### |
| ## Custom user flags |
| ## |
| ## This should always be the last thing in the `.bazelrc` file to ensure |
| ## consistent behavior when setting flags in that file as `.bazelrc` files are |
| ## evaluated top to bottom. |
| ############################################################################### |
| |
| try-import %workspace%/user.bazelrc |