blob: 782b0005be1e6cbdbb6e46b55869162c9d2e2e1d [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/**/*.bzl",
"src/**/*.j2",
"src/**/*.rs",
]) + [
"Cargo.toml",
"Cargo.lock",
"defs.bzl",
"docs_bzlmod.bzl",
"docs_workspace.bzl",
],
visibility = ["//visibility:public"],
)
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_data",
srcs = glob([
"src/**/*.bzl",
"src/**/*.j2",
"src/**/*.sh",
"src/**/*.bat",
]),
)
filegroup(
name = "rust_srcs",
srcs = glob([
"src/**/*.rs",
]) + [
":rust_data",
],
visibility = ["//crate_universe:__subpackages__"],
)
rust_library(
name = "cargo_bazel",
srcs = glob(
include = ["src/**/*.rs"],
exclude = ["src/main.rs"],
),
aliases = aliases(),
compile_data = [":rust_data"],
edition = "2021",
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 = "2021",
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/**"]) + [
"//crate_universe/test_data/serialized_configs",
"@rules_rust//rust/toolchain:current_cargo_files",
"@rules_rust//rust/toolchain:current_rustc_files",
],
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,
),
)
# Integration tests which invoke cargo and/or rustc as subprocesses.
rust_test(
name = "cargo_integration_test",
timeout = "long",
srcs = ["tests/cargo_integration_test.rs"],
aliases = aliases(),
data = glob(["test_data/**"]) + [
"//crate_universe/test_data/serialized_configs",
"@rules_rust//rust/toolchain:current_cargo_files",
"@rules_rust//rust/toolchain:current_rustc_files",
],
edition = "2021",
env = {
"CARGO": "$(rlocationpath @rules_rust//rust/toolchain:current_cargo_files)",
"RUSTC": "$(rlocationpath @rules_rust//rust/toolchain:current_rustc_files)",
},
proc_macro_deps = all_crate_deps(
proc_macro_dev = True,
),
tags = ["requires-network"],
deps = [
":cargo_bazel",
"@rules_rust//tools/runfiles",
] + all_crate_deps(
normal = True,
),
)
rust_test(
name = "versions_test",
srcs = ["tests/version_test.rs"],
data = [
"Cargo.toml",
"version.bzl",
],
edition = "2021",
rustc_env = {
"CARGO_TOML": "$(rootpath :Cargo.toml)",
"VERSION_BZL": "$(rootpath :version.bzl)",
},
)
rust_doc(
name = "rustdoc",
crate = ":cargo_bazel",
rustdoc_flags = [
"--cap-lints=warn",
"--document-private-items",
"--allow=rustdoc::private_intra_doc_links",
],
visibility = ["//visibility:public"],
)
rust_doc_test(
name = "rustdoc_test",
crate = ":cargo_bazel",
)