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