load("@rules_cc//cc:defs.bzl", "cc_binary") load("//rust:defs.bzl", "rust_proc_macro") # buildifier: disable=bzl-visibility load("//rust/private:transitions.bzl", "alias_with_import_macro_bootstrapping_mode") alias_with_import_macro_bootstrapping_mode( name = "import_macro", actual = ":import_macro_impl", ) rust_proc_macro( name = "import_macro_impl", srcs = [ "import.rs", ], crate_name = "import", edition = "2021", ) alias( name = "import", actual = select({ ":use_fake_import_macro": ":fake_import_macro_impl", "//conditions:default": ":import_macro_label", }), visibility = ["//visibility:public"], ) # This is there to cut the loading-time dependency on the import macro dependencies # (so users who don't use the macro don't need to add those deps to their WORKSPACE # file). Bazel in the loading phase doesn't "see" through `label_flag`. label_flag( name = "import_macro_label", build_setting_default = "import_macro", ) config_setting( name = "use_fake_import_macro", flag_values = { "@rules_rust//rust/settings:use_real_import_macro": "False", }, ) cc_binary( name = "fake_import_macro_impl", srcs = ["fake_import_macro_impl.cc"], )