blob: 5a6e29dd108aef86a54f5857ff4afd60f33c912f [file]
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",
)