aboutsummaryrefslogtreecommitdiff
path: root/rust/settings/BUILD.bazel
blob: 1160e97559a8df4eaafc1774ab21be3162fbf3db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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 = False,
)

# 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 make `rust_test.crate` and `rust_test.srcs` mutually exclusive.
incompatible_flag(
    name = "incompatible_test_attr_crate_and_srcs_mutually_exclusive",
    build_setting_default = True,
    issue = "https://github.com/bazelbuild/rules_rust/issues/2324",
)

# A flag to control whether to link libstd dynamically.
bool_flag(
    name = "experimental_link_std_dylib",
    build_setting_default = False,
)

# A flag to remove the SYSROOT environment variable from `Rustc` actions.
incompatible_flag(
    name = "incompatible_no_rustc_sysroot_env",
    build_setting_default = True,
    issue = "https://github.com/bazelbuild/rules_rust/issues/2429",
)