xref: /aosp_15_r20/external/skia/experimental/rust_png/ffi/BUILD.bazel (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1load("@rules_rust//rust:defs.bzl", "rust_static_library")
2load("//bazel:rust_cxx_bridge.bzl", "rust_cxx_bridge")
3load(
4    "//bazel:skia_rules.bzl",
5    "skia_cc_library",
6    "skia_filegroup",
7)
8
9skia_filegroup(
10    name = "rs_srcs",
11    srcs = ["FFI.rs"],
12)
13
14skia_filegroup(
15    name = "cxx_bridge_srcs",
16    srcs = ["FFI.rs"],
17)
18
19# Note: the `hdrs` of the `utils` target are included in *two* `.gni` lists
20# (`skia_codec_rust_png` and `skia_encode_rust_png_srcs`) - this works only
21# because this is a header-only library.  If `utils` needs `srcs` in the
22# future, then a separate `.gni` list may be required.
23skia_cc_library(
24    name = "utils",
25    hdrs = ["UtilsForFFI.h"],
26    features = ["layering_check"],
27    visibility = ["//experimental/rust_png:__subpackages__"],
28    deps = ["//:core"],
29)
30
31skia_cc_library(
32    name = "ffi_cpp",
33    hdrs = ["FFI.h"],
34    features = ["layering_check"],
35    visibility = [
36        "//experimental/rust_png:__subpackages__",
37    ],
38)
39
40rust_cxx_bridge(
41    name = "cxx_bridge",
42    src = "FFI.rs",
43    visibility = [
44        "//experimental/rust_png:__subpackages__",
45    ],
46    deps = [":ffi_cpp"],
47)
48
49rust_static_library(
50    name = "ffi_rs",
51    srcs = [":rs_srcs"],
52    visibility = [
53        "//experimental/rust_png:__subpackages__",
54    ],
55    deps = [
56        ":ffi_cpp",
57        "@cxx",
58        "@rust_png//:png",
59    ],
60)
61