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