| 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", |
| ) |