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