• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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    ],
18}
19
20rust_library {
21    name: "libaconfig_storage_file",
22    crate_name: "aconfig_storage_file",
23    host_supported: true,
24    defaults: ["aconfig_storage_file.defaults"],
25    srcs: ["src/lib.rs"],
26    apex_available: [
27        "//apex_available:platform",
28        "//apex_available:anyapex",
29    ],
30    min_sdk_version: "29",
31    vendor_available: true,
32    product_available: true,
33}
34
35rust_binary_host {
36    name: "aconfig-storage",
37    defaults: ["aconfig_storage_file.defaults"],
38    srcs: ["src/main.rs"],
39    rustlibs: ["libaconfig_storage_file"],
40}
41
42rust_test_host {
43    name: "aconfig_storage_file.test",
44    test_suites: ["general-tests"],
45    defaults: ["aconfig_storage_file.defaults"],
46    srcs: ["src/lib.rs"],
47}
48
49rust_protobuf {
50    name: "libaconfig_storage_protos",
51    protos: ["protos/aconfig_storage_metadata.proto"],
52    crate_name: "aconfig_storage_protos",
53    source_stem: "aconfig_storage_protos",
54    host_supported: true,
55    apex_available: [
56        "//apex_available:platform",
57        "//apex_available:anyapex",
58    ],
59    min_sdk_version: "29",
60    vendor_available: true,
61    product_available: true,
62}
63
64cc_library {
65    name: "libaconfig_storage_protos_cc",
66    proto: {
67        export_proto_headers: true,
68        type: "lite",
69    },
70    srcs: ["protos/aconfig_storage_metadata.proto"],
71    apex_available: [
72        "//apex_available:platform",
73        "//apex_available:anyapex",
74    ],
75    host_supported: true,
76    min_sdk_version: "29",
77    vendor_available: true,
78    product_available: true,
79    double_loadable: true,
80}
81
82// cxx source codegen from rust api
83genrule {
84    name: "libcxx_aconfig_storage_file_bridge_code",
85    tools: ["cxxbridge"],
86    cmd: "$(location cxxbridge) $(in) > $(out)",
87    srcs: ["src/lib.rs"],
88    out: ["aconfig_storage/lib.rs.cc"],
89}
90
91// cxx header codegen from rust api
92genrule {
93    name: "libcxx_aconfig_storage_file_bridge_header",
94    tools: ["cxxbridge"],
95    cmd: "$(location cxxbridge) $(in) --header > $(out)",
96    srcs: ["src/lib.rs"],
97    out: ["aconfig_storage/lib.rs.h"],
98}
99
100// a static cc lib based on generated code
101rust_ffi_static {
102    name: "libaconfig_storage_file_cxx_bridge",
103    crate_name: "aconfig_storage_file_cxx_bridge",
104    host_supported: true,
105    vendor_available: true,
106    product_available: true,
107    srcs: ["src/lib.rs"],
108    defaults: ["aconfig_storage_file.defaults"],
109    apex_available: [
110        "//apex_available:platform",
111        "//apex_available:anyapex",
112    ],
113    min_sdk_version: "29",
114}
115
116// storage file parse api cc interface
117cc_library {
118    name: "libaconfig_storage_file_cc",
119    srcs: ["aconfig_storage_file.cpp"],
120    generated_headers: [
121        "cxx-bridge-header",
122        "libcxx_aconfig_storage_file_bridge_header",
123    ],
124    generated_sources: ["libcxx_aconfig_storage_file_bridge_code"],
125    whole_static_libs: ["libaconfig_storage_file_cxx_bridge"],
126    export_include_dirs: ["include"],
127    host_supported: true,
128    vendor_available: true,
129    product_available: true,
130    shared_libs: [
131        "libbase",
132    ],
133    apex_available: [
134        "//apex_available:platform",
135        "//apex_available:anyapex",
136    ],
137    min_sdk_version: "29",
138    double_loadable: true,
139}
140