xref: /aosp_15_r20/external/skia/third_party/vello/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    "select_multi",
6    "skia_cc_library",
7)
8
9# C++ sources
10skia_cc_library(
11    name = "cpp",
12    hdrs = [
13        "cpp/path_iterator.h",
14    ],
15)
16
17# Generated C++ cxxbridge output
18rust_cxx_bridge(
19    name = "ffi_gen",
20    src = "src/lib.rs",
21    crate_features = select_multi(
22        {
23            "@vello//:msl_shaders": ["msl"],
24            "@vello//:wgsl_shaders": ["wgsl"],
25        },
26    ),
27    deps = [":cpp"],
28)
29
30# Linked rust code
31rust_static_library(
32    name = "vello_rust",
33    srcs = [
34        "src/encoding.rs",
35        "src/lib.rs",
36        "src/shaders.rs",
37    ],
38    crate_features = select_multi(
39        {
40            "@vello//:msl_shaders": ["msl"],
41            "@vello//:wgsl_shaders": ["wgsl"],
42        },
43    ),
44    deps = [
45        "@cxx",
46        "@vello//:vello_encoding",
47        "@vello//:vello_shaders",
48        "@vello_deps//:bytemuck",
49        "@vello_deps//:peniko",
50    ],
51)
52
53# Linked C++ bridge code
54cc_library(
55    name = "vello_ffi",
56    srcs = [":ffi_gen/filegroup"],
57    defines = select_multi(
58        {
59            "@vello//:msl_shaders": ["VELLO_MSL_SHADERS=true"],
60            "@vello//:wgsl_shaders": ["VELLO_WGSL_SHADERS=true"],
61        },
62    ),
63    visibility = ["//visibility:public"],
64    deps = [
65        ":cpp",
66        ":ffi_gen/include",
67        ":vello_rust",
68    ],
69)
70