xref: /aosp_15_r20/external/bazelbuild-rules_rust/util/import/BUILD.bazel (revision d4726bddaa87cc4778e7472feed243fa4b6c267f)
1load("@rules_cc//cc:defs.bzl", "cc_binary")
2load("//rust:defs.bzl", "rust_proc_macro")
3
4# buildifier: disable=bzl-visibility
5load("//rust/private:transitions.bzl", "alias_with_import_macro_bootstrapping_mode")
6
7alias_with_import_macro_bootstrapping_mode(
8    name = "import_macro",
9    actual = ":import_macro_impl",
10)
11
12rust_proc_macro(
13    name = "import_macro_impl",
14    srcs = [
15        "import.rs",
16    ],
17    crate_name = "import",
18    edition = "2021",
19)
20
21alias(
22    name = "import",
23    actual = select({
24        ":use_fake_import_macro": ":fake_import_macro_impl",
25        "//conditions:default": ":import_macro_label",
26    }),
27    visibility = ["//visibility:public"],
28)
29
30# This is there to cut the loading-time dependency on the import macro dependencies
31# (so users who don't use the macro don't need to add those deps to their WORKSPACE
32# file). Bazel in the loading phase doesn't "see" through `label_flag`.
33label_flag(
34    name = "import_macro_label",
35    build_setting_default = "import_macro",
36)
37
38config_setting(
39    name = "use_fake_import_macro",
40    flag_values = {
41        "@rules_rust//rust/settings:use_real_import_macro": "False",
42    },
43)
44
45cc_binary(
46    name = "fake_import_macro_impl",
47    srcs = ["fake_import_macro_impl.cc"],
48)
49