blob: 898a82ffdac94e88a7a2c69559d23fe3cacb1376 [file] [log] [blame]
load("@rules_cc//cc:defs.bzl", "cc_binary")
load("//rust:defs.bzl", "rust_library", "rust_proc_macro", "rust_test")
# 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 = "2018",
deps = [
":import_internal",
"//util/import/3rdparty/crates:syn",
],
)
rust_library(
name = "import_internal",
srcs = [
"import_internal.rs",
],
edition = "2018",
deps = [
"//util/import/3rdparty/crates:aho-corasick",
"//util/import/3rdparty/crates:lazy_static",
"//util/import/3rdparty/crates:proc-macro2",
"//util/import/3rdparty/crates:quote",
"//util/import/3rdparty/crates:syn",
"//util/label",
],
)
rust_test(
name = "import_internal_test",
crate = ":import_internal",
edition = "2018",
deps = [
"//util/import/3rdparty/crates:quickcheck",
],
)
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"],
)