xref: /aosp_15_r20/external/bazelbuild-rules_rust/crate_universe/BUILD.bazel (revision d4726bddaa87cc4778e7472feed243fa4b6c267f)
1load("@bazel_skylib//:bzl_library.bzl", "bzl_library")
2load("@cui//:defs.bzl", "aliases", "all_crate_deps")
3load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_doc", "rust_doc_test", "rust_library", "rust_test")
4load("//crate_universe:version.bzl", "VERSION")
5
6exports_files(
7    glob([
8        "src/**/*.bzl",
9        "src/**/*.j2",
10        "src/**/*.rs",
11    ]) + [
12        "Cargo.toml",
13        "Cargo.lock",
14        "defs.bzl",
15        "docs_bzlmod.bzl",
16        "docs_workspace.bzl",
17    ],
18    visibility = ["//visibility:public"],
19)
20
21filegroup(
22    name = "bzl_srcs",
23    srcs = glob(["*.bzl"]) + [
24        "//crate_universe/3rdparty:bzl_srcs",
25        "//crate_universe/private:bzl_srcs",
26        "//crate_universe/tools:bzl_srcs",
27    ],
28    visibility = ["//visibility:public"],
29)
30
31bzl_library(
32    name = "bzl_lib",
33    srcs = [":bzl_srcs"],
34    visibility = ["//visibility:public"],
35    deps = ["//rust:bzl_lib"],
36)
37
38filegroup(
39    name = "rust_srcs",
40    srcs = glob([
41        "src/**/*.bzl",
42        "src/**/*.j2",
43        "src/**/*.rs",
44    ]),
45    visibility = ["//:__subpackages__"],
46)
47
48rust_library(
49    name = "cargo_bazel",
50    srcs = glob(
51        include = ["src/**/*.rs"],
52        exclude = ["src/main.rs"],
53    ),
54    aliases = aliases(),
55    compile_data = glob(
56        include = ["src/**"],
57        exclude = ["src/**/*.rs"],
58    ),
59    edition = "2021",
60    proc_macro_deps = all_crate_deps(proc_macro = True),
61    # This target embeds additional, stamping related information (see
62    # https://docs.bazel.build/versions/main/user-manual.html#workspace_status
63    # for more information). Set stamp = -1 to indicate that it should respect
64    # the value of the --stamp comandline flag.
65    stamp = -1,
66    version = VERSION,
67    visibility = ["//visibility:public"],
68    deps = all_crate_deps(normal = True),
69)
70
71rust_binary(
72    name = "cargo_bazel_bin",
73    srcs = ["src/main.rs"],
74    edition = "2021",
75    version = VERSION,
76    visibility = ["//visibility:public"],
77    deps = [":cargo_bazel"],
78)
79
80alias(
81    name = "bin",
82    actual = ":cargo_bazel_bin",
83    visibility = ["//visibility:public"],
84)
85
86rust_test(
87    name = "unit_test",
88    aliases = aliases(),
89    crate = ":cargo_bazel",
90    data = glob(["test_data/**"]) + [
91        "//crate_universe/test_data/serialized_configs",
92        "@rules_rust//rust/toolchain:current_cargo_files",
93        "@rules_rust//rust/toolchain:current_rustc_files",
94    ],
95    proc_macro_deps = all_crate_deps(
96        proc_macro_dev = True,
97    ),
98    rustc_env = {
99        "CARGO": "$(rootpath @rules_rust//rust/toolchain:current_cargo_files)",
100        "RUSTC": "$(rootpath @rules_rust//rust/toolchain:current_rustc_files)",
101    },
102    deps = [
103        "@rules_rust//tools/runfiles",
104    ] + all_crate_deps(
105        normal_dev = True,
106    ),
107)
108
109# Integration tests which invoke cargo and/or rustc as subprocesses.
110rust_test(
111    name = "cargo_integration_test",
112    timeout = "long",
113    srcs = ["tests/cargo_integration_test.rs"],
114    aliases = aliases(),
115    data = glob(["test_data/**"]) + [
116        "//crate_universe/test_data/serialized_configs",
117        "@rules_rust//rust/toolchain:current_cargo_files",
118        "@rules_rust//rust/toolchain:current_rustc_files",
119    ],
120    edition = "2021",
121    env = {
122        "CARGO": "$(rootpath @rules_rust//rust/toolchain:current_cargo_files)",
123        "RUSTC": "$(rootpath @rules_rust//rust/toolchain:current_rustc_files)",
124    },
125    proc_macro_deps = all_crate_deps(
126        proc_macro_dev = True,
127    ),
128    rustc_env = {
129        "CARGO": "$(rootpath @rules_rust//rust/toolchain:current_cargo_files)",
130        "RUSTC": "$(rootpath @rules_rust//rust/toolchain:current_rustc_files)",
131    },
132    tags = ["requires-network"],
133    deps = [
134        ":cargo_bazel",
135        "@rules_rust//tools/runfiles",
136    ] + all_crate_deps(
137        normal = True,
138    ),
139)
140
141rust_test(
142    name = "versions_test",
143    srcs = ["tests/version_test.rs"],
144    data = [
145        "Cargo.toml",
146        "version.bzl",
147    ],
148    edition = "2021",
149    rustc_env = {
150        "CARGO_TOML": "$(rootpath :Cargo.toml)",
151        "VERSION_BZL": "$(rootpath :version.bzl)",
152    },
153)
154
155rust_doc(
156    name = "rustdoc",
157    crate = ":cargo_bazel",
158    rustdoc_flags = [
159        "--cap-lints=warn",
160        "--document-private-items",
161        "--allow=rustdoc::private_intra_doc_links",
162    ],
163    visibility = ["//visibility:public"],
164)
165
166rust_doc_test(
167    name = "rustdoc_test",
168    crate = ":cargo_bazel",
169)
170