| load("@bazel_skylib//:bzl_library.bzl", "bzl_library") |
| load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "string_flag") |
| load( |
| "//rust:defs.bzl", |
| "capture_clippy_output", |
| "clippy_flag", |
| "clippy_flags", |
| "error_format", |
| "extra_exec_rustc_flag", |
| "extra_exec_rustc_flags", |
| "extra_rustc_flag", |
| "extra_rustc_flags", |
| "no_std", |
| "per_crate_rustc_flag", |
| "rustc_output_diagnostics", |
| ) |
| load("//rust/private:unpretty.bzl", "rust_unpretty_flag") |
| load(":incompatible.bzl", "incompatible_flag") |
| |
| exports_files([ |
| ".clippy.toml", |
| ".rustfmt.toml", |
| ]) |
| |
| bzl_library( |
| name = "bzl_lib", |
| srcs = glob(["**/*.bzl"]), |
| visibility = ["//visibility:public"], |
| ) |
| |
| 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", |
| ], |
| visibility = ["//visibility:public"], |
| ) |
| |
| # 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, |
| visibility = ["//visibility:public"], |
| ) |
| |
| # 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", |
| visibility = ["//visibility:public"], |
| ) |
| |
| # 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, |
| visibility = ["//visibility:public"], |
| ) |
| |
| # 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, |
| visibility = ["//visibility:public"], |
| ) |
| |
| # 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, |
| visibility = ["//visibility:public"], |
| ) |
| |
| # 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, |
| visibility = ["//visibility:public"], |
| ) |
| |
| # 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, |
| visibility = ["//visibility:public"], |
| ) |
| |
| # A flag to set rustc --sysroot flag to the sysroot generated by rust_toolchain. |
| bool_flag( |
| name = "toolchain_generated_sysroot", |
| build_setting_default = True, |
| visibility = ["//visibility:public"], |
| ) |
| |
| # A flag to put rust_test compilation outputs in the same directory as the rust_library compilation outputs. |
| incompatible_flag( |
| name = "incompatible_change_rust_test_compilation_output_directory", |
| build_setting_default = False, |
| issue = "https://github.com/bazelbuild/rules_rust/issues/2827", |
| visibility = ["//visibility:public"], |
| ) |
| |
| # A flag to control whether to link libstd dynamically. |
| bool_flag( |
| name = "experimental_link_std_dylib", |
| build_setting_default = False, |
| visibility = ["//visibility:public"], |
| ) |
| |
| # 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, |
| visibility = ["//visibility:public"], |
| ) |
| |
| # This setting is used by the clippy rules. See https://bazelbuild.github.io/rules_rust/rust_clippy.html |
| label_flag( |
| name = "clippy.toml", |
| build_setting_default = ".clippy.toml", |
| visibility = ["//visibility:public"], |
| ) |
| |
| # This setting is used by the rustfmt rules. See https://bazelbuild.github.io/rules_rust/rust_fmt.html |
| label_flag( |
| name = "rustfmt.toml", |
| build_setting_default = ".rustfmt.toml", |
| visibility = ["//visibility:public"], |
| ) |
| |
| capture_clippy_output( |
| name = "capture_clippy_output", |
| build_setting_default = False, |
| visibility = ["//visibility:public"], |
| ) |
| |
| # This setting may be used to enable builds without the standard library. |
| # Currently only no_std + alloc is supported, which can be enabled with setting the value to "alloc". |
| # In the future we could add support for additional modes, e.g "core", "alloc,collections". |
| string_flag( |
| name = "no_std", |
| build_setting_default = "off", |
| values = [ |
| "alloc", |
| "off", |
| ], |
| visibility = ["//visibility:public"], |
| ) |
| |
| # A hack target to allow as to only apply the no_std mode in target config. |
| no_std( |
| name = "build_target_in_no_std", |
| ) |
| |
| # A config setting for setting conditional `cargo_features`, `deps`, based on the `:no_std` value. |
| config_setting( |
| name = "is_no_std", |
| flag_values = { |
| ":build_target_in_no_std": "alloc", |
| }, |
| visibility = ["//visibility:public"], |
| ) |
| |
| # This setting may be changed from the command line to generate machine readable errors. |
| error_format( |
| name = "error_format", |
| build_setting_default = "human", |
| visibility = ["//visibility:public"], |
| ) |
| |
| # This setting may be changed from the command line to generate rustc diagnostics. |
| rustc_output_diagnostics( |
| name = "rustc_output_diagnostics", |
| build_setting_default = False, |
| visibility = ["//visibility:public"], |
| ) |
| |
| # This setting may be used to pass extra options to clippy from the command line. |
| # It applies across all targets. |
| clippy_flags( |
| name = "clippy_flags", |
| build_setting_default = [], |
| visibility = ["//visibility:public"], |
| ) |
| |
| clippy_flag( |
| name = "clippy_flag", |
| build_setting_default = "", |
| visibility = ["//visibility:public"], |
| ) |
| |
| # This setting may be used to pass extra options to rustc from the command line |
| # in non-exec configuration. |
| # It applies across all targets whereas the rustc_flags option on targets applies only |
| # to that target. This can be useful for passing build-wide options such as LTO. |
| extra_rustc_flags( |
| name = "extra_rustc_flags", |
| build_setting_default = [], |
| visibility = ["//visibility:public"], |
| ) |
| |
| extra_rustc_flag( |
| name = "extra_rustc_flag", |
| build_setting_default = "", |
| visibility = ["//visibility:public"], |
| ) |
| |
| # This setting may be used to pass extra options to rustc from the command line |
| # in exec configuration. |
| # It applies across all targets whereas the rustc_flags option on targets applies only |
| # to that target. This can be useful for passing build-wide options such as LTO. |
| extra_exec_rustc_flags( |
| name = "extra_exec_rustc_flags", |
| build_setting_default = [], |
| visibility = ["//visibility:public"], |
| ) |
| |
| extra_exec_rustc_flag( |
| name = "extra_exec_rustc_flag", |
| build_setting_default = "", |
| visibility = ["//visibility:public"], |
| ) |
| |
| per_crate_rustc_flag( |
| name = "experimental_per_crate_rustc_flag", |
| build_setting_default = "", |
| visibility = ["//visibility:public"], |
| ) |