| load("@bazel_skylib//:bzl_library.bzl", "bzl_library") |
| load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "string_flag") |
| load("//rust/private:unpretty.bzl", "rust_unpretty_flag") |
| load(":incompatible.bzl", "incompatible_flag") |
| |
| package(default_visibility = ["//visibility:public"]) |
| |
| bzl_library( |
| name = "bzl_lib", |
| srcs = glob(["**/*.bzl"]), |
| ) |
| |
| rust_unpretty_flag( |
| name = "unpretty", |
| build_setting_default = [ |
| "ast-tree,expanded", |
| "ast-tree", |
| "expanded,hygiene", |
| "expanded,identified", |
| "expanded", |
| "hir-tree", |
| "hir,identified", |
| "hir,typed", |
| "hir", |
| "identified", |
| "mir-cfg", |
| "mir", |
| "normal", |
| ], |
| ) |
| |
| # A flag controlling whether to rename first-party crates such that their names |
| # encode the Bazel package and target name, instead of just the target name. |
| # |
| # First-party vs. third-party crates are identified using the value of |
| # //settings:third_party_dir. |
| bool_flag( |
| name = "rename_first_party_crates", |
| build_setting_default = False, |
| ) |
| |
| # A flag specifying the location of vendored third-party rust crates within this |
| # repository that must not be renamed when `rename_first_party_crates` is enabled. |
| # |
| # Must be specified as a Bazel package, e.g. "//some/location/in/repo". |
| string_flag( |
| name = "third_party_dir", |
| build_setting_default = "//third_party/rust", |
| ) |
| |
| # A flag to control whether rust_library and rust_binary targets should |
| # implicitly depend on the *real* import macro, or on a no-op target. |
| bool_flag( |
| name = "use_real_import_macro", |
| build_setting_default = False, |
| ) |
| |
| # When set, this flag causes rustc to emit .rmeta files and use them for rlib -> rlib dependencies. |
| # While this involves one extra (short) rustc invocation to build the rmeta file, |
| # it allows library dependencies to be unlocked much sooner, increasing parallelism during compilation. |
| bool_flag( |
| name = "pipelined_compilation", |
| build_setting_default = False, |
| ) |
| |
| # A flag to control whether to link rust_binary and rust_test targets using |
| # cc_common.link instead of rustc. |
| bool_flag( |
| name = "experimental_use_cc_common_link", |
| build_setting_default = False, |
| ) |
| |
| # A flag to indicate that a global allocator is in use when using --@rules_rust//rust/settings:experimental_use_cc_common_link |
| # Users need to specify this flag because rustc generates different set of symbols at link time when a global allocator is in use. |
| # When the linking is not done by rustc, the `rust_toolchain` itself provides the appropriate set of symbols. |
| bool_flag( |
| name = "experimental_use_global_allocator", |
| build_setting_default = False, |
| ) |
| |
| # A flag to have coverage tooling added as `coverage_common.instrumented_files_info.metadata_files` instead of |
| # reporting tools like `llvm-cov` and `llvm-profdata` as runfiles to each test. |
| bool_flag( |
| name = "experimental_use_coverage_metadata_files", |
| build_setting_default = True, |
| ) |
| |
| # A flag to set rustc --sysroot flag to the sysroot generated by rust_toolchain |
| incompatible_flag( |
| name = "experimental_toolchain_generated_sysroot", |
| build_setting_default = True, |
| issue = "https://github.com/bazelbuild/rules_rust/issues/2039", |
| ) |
| |
| # A flag to control whether to link libstd dynamically. |
| bool_flag( |
| name = "experimental_link_std_dylib", |
| build_setting_default = False, |
| ) |
| |
| # A flag to control whether the shell path from a shell toolchain (`@bazel_tools//tools/sh:toolchain_type`) |
| # is embedded into the bootstrap process wrapper for the `.sh` file. |
| bool_flag( |
| name = "experimental_use_sh_toolchain_for_bootstrap_process_wrapper", |
| build_setting_default = False, |
| ) |