1package {
2    default_applicable_licenses: ["Android-Apache-2.0"],
3}
4
5rust_defaults {
6    name: "aconfig_storage_file.defaults",
7    edition: "2021",
8    lints: "none",
9    rustlibs: [
10        "libanyhow",
11        "libthiserror",
12        "libtempfile",
13        "libprotobuf",
14        "libclap",
15        "libcxx",
16        "libaconfig_storage_protos",
17        "libserde",
18    ],
19}
20
21rust_library {
22    name: "libaconfig_storage_file",
23    crate_name: "aconfig_storage_file",
24    host_supported: true,
25    defaults: ["aconfig_storage_file.defaults"],
26    srcs: ["src/lib.rs"],
27    apex_available: [
28        "//apex_available:platform",
29        "//apex_available:anyapex",
30    ],
31    min_sdk_version: "29",
32    vendor_available: true,
33    product_available: true,
34}
35
36rust_binary_host {
37    name: "aconfig-storage",
38    defaults: ["aconfig_storage_file.defaults"],
39    srcs: ["src/main.rs"],
40    rustlibs: [
41        "libaconfig_storage_file",
42        "libserde_json",
43    ],
44}
45
46rust_test_host {
47    name: "aconfig_storage_file.test",
48    test_suites: ["general-tests"],
49    defaults: ["aconfig_storage_file.defaults"],
50    srcs: ["src/lib.rs"],
51}
52
53rust_protobuf {
54    name: "libaconfig_storage_protos",
55    protos: ["protos/aconfig_storage_metadata.proto"],
56    crate_name: "aconfig_storage_protos",
57    source_stem: "aconfig_storage_protos",
58    host_supported: true,
59    apex_available: [
60        "//apex_available:platform",
61        "//apex_available:anyapex",
62    ],
63    min_sdk_version: "29",
64    vendor_available: true,
65    product_available: true,
66}
67
68cc_library {
69    name: "libaconfig_storage_protos_cc",
70    proto: {
71        export_proto_headers: true,
72        type: "lite",
73    },
74    srcs: ["protos/aconfig_storage_metadata.proto"],
75    apex_available: [
76        "//apex_available:platform",
77        "//apex_available:anyapex",
78    ],
79    host_supported: true,
80    min_sdk_version: "29",
81    vendor_available: true,
82    product_available: true,
83    double_loadable: true,
84}
85
86// cxx source codegen from rust api
87genrule {
88    name: "libcxx_aconfig_storage_file_bridge_code",
89    tools: ["cxxbridge"],
90    cmd: "$(location cxxbridge) $(in) > $(out)",
91    srcs: ["src/lib.rs"],
92    out: ["aconfig_storage/lib.rs.cc"],
93}
94
95// cxx header codegen from rust api
96genrule {
97    name: "libcxx_aconfig_storage_file_bridge_header",
98    tools: ["cxxbridge"],
99    cmd: "$(location cxxbridge) $(in) --header > $(out)",
100    srcs: ["src/lib.rs"],
101    out: ["aconfig_storage/lib.rs.h"],
102}
103
104// a static cc lib based on generated code
105rust_ffi_static {
106    name: "libaconfig_storage_file_cxx_bridge",
107    crate_name: "aconfig_storage_file_cxx_bridge",
108    host_supported: true,
109    vendor_available: true,
110    product_available: true,
111    srcs: ["src/lib.rs"],
112    defaults: ["aconfig_storage_file.defaults"],
113    apex_available: [
114        "//apex_available:platform",
115        "//apex_available:anyapex",
116    ],
117    min_sdk_version: "29",
118}
119
120// storage file parse api cc interface
121cc_library {
122    name: "libaconfig_storage_file_cc",
123    srcs: ["aconfig_storage_file.cpp"],
124    generated_headers: [
125        "cxx-bridge-header",
126        "libcxx_aconfig_storage_file_bridge_header",
127    ],
128    generated_sources: ["libcxx_aconfig_storage_file_bridge_code"],
129    whole_static_libs: ["libaconfig_storage_file_cxx_bridge"],
130    export_include_dirs: ["include"],
131    host_supported: true,
132    vendor_available: true,
133    product_available: true,
134    shared_libs: [
135        "libbase",
136    ],
137    apex_available: [
138        "//apex_available:platform",
139        "//apex_available:anyapex",
140    ],
141    min_sdk_version: "29",
142    double_loadable: true,
143}
144
145// storage file parse api java library
146java_library {
147    name: "aconfig_storage_file_java",
148    srcs: [
149        "srcs/**/*.java",
150    ],
151    sdk_version: "core_current",
152    min_sdk_version: "29",
153    host_supported: true,
154    apex_available: [
155        "//apex_available:platform",
156        "//apex_available:anyapex",
157    ],
158}
159
160// storage file parse api java library for core library
161java_library {
162    name: "aconfig_storage_file_java_none",
163    srcs: [
164        "srcs/**/*.java",
165    ],
166    sdk_version: "none",
167    system_modules: "core-all-system-modules",
168    host_supported: true,
169}
170