1load("//tools/buck:build_mode.bzl", "build_mode")
2load("//tools/buck:rust_cxx_bridge.bzl", "rust_cxx_bridge")
3
4build_mode(
5    name = "build_mode",
6    cell = native.get_cell_name(),
7)
8
9rust_test(
10    name = "test",
11    srcs = ["test.rs"],
12    edition = "2021",
13    remote_execution_action_key_providers = ":build_mode",
14    deps = [
15        ":ffi",
16        "//:cxx",
17    ],
18)
19
20rust_library(
21    name = "ffi",
22    srcs = [
23        "ffi/cast.rs",
24        "ffi/lib.rs",
25        "ffi/module.rs",
26    ],
27    crate = "cxx_test_suite",
28    edition = "2021",
29    deps = [
30        ":impl",
31        "//:cxx",
32    ],
33)
34
35cxx_library(
36    name = "impl",
37    srcs = [
38        "ffi/tests.cc",
39        ":bridge/source",
40        ":module/source",
41    ],
42    exported_deps = ["//:core"],
43    exported_headers = [
44        ":bridge/header",
45        ":module/header",
46        "ffi/tests.h",
47    ],
48    preferred_linkage = "static",
49)
50
51rust_cxx_bridge(
52    name = "bridge",
53    src = "ffi/lib.rs",
54    deps = [
55        ":impl",
56    ],
57)
58
59rust_cxx_bridge(
60    name = "module",
61    src = "ffi/module.rs",
62    deps = [
63        ":impl",
64    ],
65)
66