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