| load("@rules_rust//rust:defs.bzl", "rust_static_library", "rust_test") |
| load("//bazel:rust_cxx_bridge.bzl", "rust_cxx_bridge") |
| load( |
| "//bazel:skia_rules.bzl", |
| "RUST_COMPATIBILITY", |
| "skia_cc_library", |
| "skia_filegroup", |
| ) |
| |
| package( |
| default_applicable_licenses = ["//:license"], |
| ) |
| |
| licenses(["notice"]) |
| |
| skia_filegroup( |
| name = "rs_srcs", |
| srcs = [ |
| "FFI.rs", |
| "exif_parse.rs", |
| ], |
| ) |
| |
| skia_filegroup( |
| name = "cxx_bridge_srcs", |
| srcs = ["FFI.rs"], |
| ) |
| |
| skia_filegroup( |
| name = "ffi_hdrs", |
| srcs = ["FFI.h"], |
| ) |
| |
| skia_filegroup( |
| name = "ffi_cpp", |
| srcs = ["FFI.cpp"], |
| ) |
| |
| # Header-only library so cxx_bridge can depend on it without a circular dep. |
| skia_cc_library( |
| name = "ffi_hdrs_lib", |
| hdrs = [":ffi_hdrs"], |
| compatible_with = RUST_COMPATIBILITY, |
| ) |
| |
| skia_cc_library( |
| name = "ffi_cpp_lib", |
| srcs = [":ffi_cpp"], |
| hdrs = [":ffi_hdrs"], |
| compatible_with = RUST_COMPATIBILITY, |
| features = ["layering_check"], |
| visibility = [ |
| "//src/codec:__pkg__", |
| "//tests:__pkg__", |
| ], |
| deps = [ |
| ":cxx_bridge", |
| # Provides SkExif.h and SkEncodedOrigin.h (and their transitive deps). |
| "//src/codec:codec_support_priv", |
| ], |
| ) |
| |
| rust_cxx_bridge( |
| name = "cxx_bridge", |
| src = "FFI.rs", |
| visibility = [ |
| "//src/codec:__pkg__", |
| "//tests:__pkg__", |
| ], |
| deps = [":ffi_hdrs_lib"], |
| ) |
| |
| rust_static_library( |
| name = "ffi_rs", |
| srcs = [":rs_srcs"], |
| crate_root = "FFI.rs", |
| rustc_flags = [ |
| "-Dwarnings", |
| "--cfg=cxxbridge1", |
| ], |
| visibility = [ |
| "//src/codec:__pkg__", |
| "//tests:__pkg__", |
| ], |
| deps = [ |
| ":cxx_bridge", |
| ":ffi_cpp_lib", |
| "@crates//:cxx", |
| ], |
| ) |
| |
| rust_test( |
| name = "ffi_rs_test", |
| crate = ":ffi_rs", |
| ) |