1package {
2    default_applicable_licenses: ["Android-Apache-2.0"],
3}
4
5rust_defaults {
6    name: "aconfig_storage_write_api.defaults",
7    edition: "2021",
8    lints: "none",
9    srcs: ["src/lib.rs"],
10    rustlibs: [
11        "libanyhow",
12        "libtempfile",
13        "libmemmap2",
14        "libcxx",
15        "libthiserror",
16        "libaconfig_storage_file",
17        "libaconfig_storage_read_api",
18    ],
19    min_sdk_version: "34",
20    apex_available: [
21        "//apex_available:anyapex",
22        "//apex_available:platform",
23    ],
24}
25
26rust_library {
27    name: "libaconfig_storage_write_api",
28    crate_name: "aconfig_storage_write_api",
29    host_supported: true,
30    defaults: ["aconfig_storage_write_api.defaults"],
31}
32
33rust_test_host {
34    name: "aconfig_storage_write_api.test",
35    test_suites: ["general-tests"],
36    defaults: ["aconfig_storage_write_api.defaults"],
37    data: [
38        "tests/flag.val",
39        "tests/flag.info",
40    ],
41    rustlibs: [
42        "libaconfig_storage_read_api",
43    ],
44}
45
46// cxx source codegen from rust api
47genrule {
48    name: "libcxx_aconfig_storage_write_api_bridge_code",
49    tools: ["cxxbridge"],
50    cmd: "$(location cxxbridge) $(in) > $(out)",
51    srcs: ["src/lib.rs"],
52    out: ["aconfig_storage/lib.rs.cc"],
53}
54
55// cxx header codegen from rust api
56genrule {
57    name: "libcxx_aconfig_storage_write_api_bridge_header",
58    tools: ["cxxbridge"],
59    cmd: "$(location cxxbridge) $(in) --header > $(out)",
60    srcs: ["src/lib.rs"],
61    out: ["aconfig_storage/lib.rs.h"],
62}
63
64// a static cc lib based on generated code
65rust_ffi_static {
66    name: "libaconfig_storage_write_api_cxx_bridge",
67    crate_name: "aconfig_storage_write_api_cxx_bridge",
68    host_supported: true,
69    defaults: ["aconfig_storage_write_api.defaults"],
70}
71
72// flag write api cc interface
73cc_library_static {
74    name: "libaconfig_storage_write_api_cc",
75    srcs: ["aconfig_storage_write_api.cpp"],
76    generated_headers: [
77        "cxx-bridge-header",
78        "libcxx_aconfig_storage_write_api_bridge_header",
79    ],
80    generated_sources: ["libcxx_aconfig_storage_write_api_bridge_code"],
81    whole_static_libs: ["libaconfig_storage_write_api_cxx_bridge"],
82    export_include_dirs: ["include"],
83    static_libs: [
84        "libaconfig_storage_read_api_cc",
85        "libprotobuf-cpp-lite",
86        "libbase",
87    ],
88}
89