blob: 203a4d2fd8ef6e2992e232be39ccc6dd31fa7958 [file] [log] [blame]
load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
load("@cui//:defs.bzl", "aliases", "all_crate_deps")
load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_doc", "rust_doc_test", "rust_library", "rust_test")
load("//crate_universe:version.bzl", "VERSION")
exports_files(
glob(["src/**"]) + [
"Cargo.toml",
"Cargo.lock",
"defs.bzl",
"docs.bzl",
],
visibility = ["//visibility:public"],
)
filegroup(
name = "distro",
srcs = glob(["*.bzl"]) + [
":rust_srcs",
"//crate_universe/3rdparty:distro",
"//crate_universe/private:distro",
"//crate_universe/tools:distro",
"BUILD.bazel",
"Cargo.lock",
"Cargo.toml",
"README.md",
],
visibility = ["//:__subpackages__"],
)
filegroup(
name = "bzl_srcs",
srcs = glob(["*.bzl"]) + [
"//crate_universe/3rdparty:bzl_srcs",
"//crate_universe/private:bzl_srcs",
"//crate_universe/tools:bzl_srcs",
],
visibility = ["//visibility:public"],
)
bzl_library(
name = "bzl_lib",
srcs = [":bzl_srcs"],
visibility = ["//visibility:public"],
deps = ["//rust:bzl_lib"],
)
filegroup(
name = "rust_srcs",
srcs = glob([
"src/**/*.rs",
"src/**/*.j2",
]),
visibility = ["//:__subpackages__"],
)
rust_library(
name = "cargo_bazel",
srcs = glob(
include = ["src/**/*.rs"],
exclude = ["src/main.rs"],
),
aliases = aliases(),
compile_data = glob(
include = ["src/**"],
exclude = ["src/**/*.rs"],
),
edition = "2018",
proc_macro_deps = all_crate_deps(proc_macro = True),
# This target embeds additional, stamping related information (see
# https://docs.bazel.build/versions/main/user-manual.html#workspace_status
# for more information). Set stamp = -1 to indicate that it should respect
# the value of the --stamp comandline flag.
stamp = -1,
version = VERSION,
visibility = ["//visibility:public"],
deps = all_crate_deps(normal = True),
)
rust_binary(
name = "cargo_bazel_bin",
srcs = ["src/main.rs"],
edition = "2018",
version = VERSION,
visibility = ["//visibility:public"],
deps = [":cargo_bazel"],
)
alias(
name = "bin",
actual = ":cargo_bazel_bin",
visibility = ["//visibility:public"],
)
rust_test(
name = "unit_test",
aliases = aliases(),
crate = ":cargo_bazel",
data = glob(["test_data/**"]) + [
"@rules_rust//rust/toolchain:current_cargo_files",
"@rules_rust//rust/toolchain:current_rustc_files",
"//crate_universe/test_data/serialized_configs",
],
proc_macro_deps = all_crate_deps(
proc_macro_dev = True,
),
rustc_env = {
"CARGO": "$(rootpath @rules_rust//rust/toolchain:current_cargo_files)",
"RUSTC": "$(rootpath @rules_rust//rust/toolchain:current_rustc_files)",
},
deps = [
"@rules_rust//tools/runfiles",
] + all_crate_deps(
normal_dev = True,
),
)
rust_doc(
name = "rustdoc",
crate = ":cargo_bazel",
visibility = ["//visibility:public"],
)
rust_doc_test(
name = "rustdoc_test",
crate = ":cargo_bazel",
# TODO: This target fails on some platforms with the error tracked in:
# https://github.com/bazelbuild/rules_rust/issues/1233
target_compatible_with = select({
"@platforms//os:macos": ["@platforms//:incompatible"],
"@platforms//os:windows": ["@platforms//:incompatible"],
"//conditions:default": [],
}),
)