• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1load("@bazel_skylib//lib:selects.bzl", "selects")
2load("@bazel_skylib//rules:native_binary.bzl", "native_binary")
3load("//rust:defs.bzl", "rust_test")
4
5# buildifier: disable=bzl-visibility
6load("//rust/private:rust.bzl", "rust_binary_without_process_wrapper")
7
8config_setting(
9    name = "compilation_mode_opt",
10    values = {"compilation_mode": "opt"},
11)
12
13selects.config_setting_group(
14    name = "opt_linux",
15    match_all = [
16        ":compilation_mode_opt",
17        "@platforms//os:linux",
18    ],
19    visibility = ["@rules_rust_tinyjson//:__pkg__"],
20)
21
22selects.config_setting_group(
23    name = "opt_macos",
24    match_all = [
25        ":compilation_mode_opt",
26        "@platforms//os:macos",
27    ],
28    visibility = ["@rules_rust_tinyjson//:__pkg__"],
29)
30
31rust_binary_without_process_wrapper(
32    name = "process_wrapper",
33    srcs = glob(["*.rs"]),
34    edition = "2018",
35    # To ensure the process wrapper is produced deterministically
36    # debug info, which is known to sometimes have host specific
37    # paths embedded in this section, is stripped out.
38    rustc_flags = select({
39        ":opt_linux": ["-Cstrip=debuginfo"],
40        ":opt_macos": ["-Cstrip=debuginfo"],
41        "//conditions:default": [],
42    }),
43    visibility = ["//visibility:public"],
44    deps = [
45        "@rules_rust_tinyjson//:tinyjson",
46    ],
47)
48
49rust_test(
50    name = "process_wrapper_test",
51    crate = ":process_wrapper",
52    edition = "2018",
53)
54
55native_binary(
56    name = "bootstrap_process_wrapper",
57    src = select({
58        "@platforms//os:windows": "process_wrapper.bat",
59        "//conditions:default": "process_wrapper.sh",
60    }),
61    out = select({
62        "@platforms//os:windows": "process_wrapper.bat",
63        "//conditions:default": "process_wrapper.sh",
64    }),
65    visibility = ["//visibility:public"],
66)
67