1package {
2    default_applicable_licenses: ["external_rust_crabbyavif_license"],
3}
4
5license {
6    name: "external_rust_crabbyavif_license",
7    visibility: [":__subpackages__"],
8    license_kinds: [
9        "SPDX-license-identifier-Apache-2.0",
10    ],
11}
12
13rust_bindgen {
14    name: "libcrabbyavif_mediaimage2_bindgen",
15    crate_name: "crabbyavif_mediaimage2_bindgen",
16    wrapper_src: "sys/ndk-sys/mediaimage2_wrapper.hpp",
17    source_stem: "mediaimage2_bindgen",
18    header_libs: [
19        "media_plugin_headers",
20    ],
21    bindgen_flags: [
22        "--allowlist-item=android::MediaImage2?",
23        "--no-recursive-allowlist",
24        "--no-layout-tests",
25        "--no-doc-comments",
26    ],
27}
28
29rust_bindgen {
30    name: "libcrabbyavif_ndk_bindgen",
31    crate_name: "crabbyavif_ndk_bindgen",
32    wrapper_src: "sys/ndk-sys/wrapper.h",
33    source_stem: "ndk_media_bindgen",
34    header_libs: [
35        "libmediandk",
36    ],
37    bindgen_flags: [
38        "--with-derive-default",
39    ],
40}
41
42rust_library {
43    name: "libndk_sys",
44    crate_name: "ndk_sys",
45    cargo_env_compat: true,
46    cargo_pkg_version: "0.1.0",
47    cfgs: ["android_soong"],
48    srcs: [
49        "sys/ndk-sys/src/lib.rs",
50        ":libcrabbyavif_ndk_bindgen",
51    ],
52    shared_libs: [
53        "libmediandk",
54    ],
55}
56
57rust_bindgen {
58    name: "libcrabbyavif_yuv_bindgen",
59    crate_name: "crabbyavif_yuv_bindgen",
60    wrapper_src: "sys/libyuv-sys/wrapper.h",
61    source_stem: "libyuv_bindgen",
62    product_available: true,
63    vendor_available: true,
64    header_libs: [
65        "libyuv",
66    ],
67}
68
69rust_library {
70    name: "liblibyuv_sys",
71    crate_name: "libyuv_sys",
72    cargo_env_compat: true,
73    cargo_pkg_version: "0.1.0",
74    cfgs: ["android_soong"],
75    srcs: [
76        "sys/libyuv-sys/src/lib.rs",
77        ":libcrabbyavif_yuv_bindgen",
78    ],
79    whole_static_libs: [
80        "libyuv",
81    ],
82}
83
84rust_ffi_static {
85    name: "libcrabbyavif_ffi",
86    crate_name: "crabbyavif",
87    cargo_env_compat: true,
88    cargo_pkg_version: "0.1.0",
89    srcs: [
90        "src/lib.rs",
91        ":libcrabbyavif_mediaimage2_bindgen",
92    ],
93    cfgs: ["android_soong"],
94    edition: "2021",
95    features: [
96        "android_mediacodec",
97        "libyuv",
98        "capi",
99        "heic",
100    ],
101    rustlibs: [
102        "liblibyuv_sys",
103        "libndk_sys",
104        "librustutils",
105    ],
106    shared_libs: [
107        "libmediandk",
108    ],
109    include_dirs: ["include"],
110    apex_available: [
111        "//apex_available:platform",
112        "//apex_available:anyapex",
113    ],
114}
115