xref: /aosp_15_r20/external/bazelbuild-rules_rust/examples/ffi/rust_calling_c/BUILD.bazel (revision d4726bddaa87cc4778e7472feed243fa4b6c267f)
1load("@rules_rust//rust:defs.bzl", "rust_doc", "rust_library", "rust_test")
2
3package(default_visibility = ["//ffi/rust_calling_c:__subpackages__"])
4
5rust_library(
6    name = "matrix",
7    srcs = [
8        "src/ffi.rs",
9        "src/matrix.rs",
10    ],
11    deps = [
12        "//ffi/rust_calling_c/c:native_matrix",
13        "@libc",
14    ],
15)
16
17rust_test(
18    name = "matrix_test",
19    crate = ":matrix",
20)
21
22rust_doc(
23    name = "matrix_doc",
24    crate = ":matrix",
25)
26
27## Do the same as above, but with a dynamic c library.
28
29rust_library(
30    name = "matrix_dynamically_linked",
31    srcs = [
32        "src/ffi.rs",
33        "src/matrix.rs",
34    ],
35    crate_root = "src/matrix.rs",
36    target_compatible_with = select({
37        # TODO: Make this work on windows
38        "@platforms//os:windows": ["@platforms//:incompatible"],
39        "//conditions:default": [],
40    }),
41    deps = [
42        "//ffi/rust_calling_c/c:native_matrix_so",
43        "@libc",
44    ],
45)
46
47rust_test(
48    name = "matrix_dylib_test",
49    crate = ":matrix_dynamically_linked",
50    target_compatible_with = select({
51        # TODO: This test requires --incompatible_macos_set_install_name and Bazel 4.2.0+
52        "@platforms//os:macos": ["@platforms//:incompatible"],
53        # TODO: Make this work on windows
54        "@platforms//os:windows": ["@platforms//:incompatible"],
55        "//conditions:default": [],
56    }),
57)
58
59rust_doc(
60    name = "matrix_dylib_doc",
61    crate = ":matrix_dynamically_linked",
62)
63