1package {
2    default_applicable_licenses: ["Android-Apache-2.0"],
3}
4
5rust_defaults {
6    name: "aconfig_storage_read_api.defaults",
7    edition: "2021",
8    lints: "none",
9    srcs: ["src/lib.rs"],
10    rustlibs: [
11        "libanyhow",
12        "libmemmap2",
13        "libcxx",
14        "libthiserror",
15        "libaconfig_storage_file",
16    ],
17}
18
19rust_library {
20    name: "libaconfig_storage_read_api",
21    crate_name: "aconfig_storage_read_api",
22    host_supported: true,
23    defaults: ["aconfig_storage_read_api.defaults"],
24    apex_available: [
25        "//apex_available:platform",
26        "//apex_available:anyapex",
27    ],
28    min_sdk_version: "29",
29}
30
31rust_test_host {
32    name: "aconfig_storage_read_api.test",
33    test_suites: ["general-tests"],
34    defaults: ["aconfig_storage_read_api.defaults"],
35    rustlibs: [
36        "librand",
37    ],
38    data: [
39        "tests/data/v1/package_v1.map",
40        "tests/data/v1/flag_v1.map",
41        "tests/data/v1/flag_v1.val",
42        "tests/data/v1/flag_v1.info",
43    ],
44}
45
46// cxx source codegen from rust api
47genrule {
48    name: "libcxx_aconfig_storage_read_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_read_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_read_api_cxx_bridge",
67    crate_name: "aconfig_storage_read_api_cxx_bridge",
68    host_supported: true,
69    vendor_available: true,
70    product_available: true,
71    defaults: ["aconfig_storage_read_api.defaults"],
72    apex_available: [
73        "//apex_available:platform",
74        "//apex_available:anyapex",
75    ],
76    min_sdk_version: "29",
77}
78
79// flag read api cc interface
80cc_library {
81    name: "libaconfig_storage_read_api_cc",
82    srcs: ["aconfig_storage_read_api.cpp"],
83    generated_headers: [
84        "cxx-bridge-header",
85        "libcxx_aconfig_storage_read_api_bridge_header",
86    ],
87    generated_sources: ["libcxx_aconfig_storage_read_api_bridge_code"],
88    whole_static_libs: ["libaconfig_storage_read_api_cxx_bridge"],
89    export_include_dirs: ["include"],
90    static_libs: [
91        "libbase",
92    ],
93    host_supported: true,
94    vendor_available: true,
95    product_available: true,
96    apex_available: [
97        "//apex_available:platform",
98        "//apex_available:anyapex",
99    ],
100    min_sdk_version: "29",
101    target: {
102        linux: {
103            version_script: "libaconfig_storage_read_api_cc.map",
104        },
105    },
106    double_loadable: true,
107    afdo: true,
108}
109
110cc_defaults {
111    name: "aconfig_lib_cc_shared_link.defaults",
112    shared_libs: select(release_flag("RELEASE_READ_FROM_NEW_STORAGE"), {
113        true: ["libaconfig_storage_read_api_cc"],
114        default: [],
115    }),
116}
117
118cc_defaults {
119    name: "aconfig_lib_cc_static_link.defaults",
120    shared_libs: [
121        "libaconfig_storage_read_api_cc",
122        "liblog",
123    ],
124}
125
126rust_ffi_shared {
127    name: "libaconfig_storage_read_api_rust_jni",
128    crate_name: "aconfig_storage_read_api_rust_jni",
129    srcs: ["srcs/lib.rs"],
130    rustlibs: [
131        "libaconfig_storage_file",
132        "libaconfig_storage_read_api",
133        "libanyhow",
134        "libjni",
135    ],
136    prefer_rlib: true,
137}
138
139java_library {
140    name: "libaconfig_storage_read_api_java",
141    srcs: [
142        "srcs/android/aconfig/storage/AconfigStorageReadAPI.java",
143        "srcs/android/aconfig/storage/FlagReadContext.java",
144        "srcs/android/aconfig/storage/PackageReadContext.java",
145    ],
146    required: ["libaconfig_storage_read_api_rust_jni"],
147    min_sdk_version: "UpsideDownCake",
148    apex_available: [
149        "//apex_available:anyapex",
150        "//apex_available:platform",
151    ],
152}
153
154java_library {
155    name: "aconfig_storage_reader_java",
156    srcs: [
157        "srcs/android/aconfig/storage/StorageInternalReader.java",
158        "srcs/android/os/flagging/PlatformAconfigPackageInternal.java",
159    ],
160    libs: [
161        "unsupportedappusage",
162        "strict_mode_stub",
163        "aconfig_storage_stub",
164    ],
165    static_libs: [
166        "aconfig_storage_file_java",
167    ],
168    sdk_version: "core_current",
169    host_supported: true,
170    visibility: [
171        "//frameworks/base",
172        "//build/make/tools/aconfig/aconfig_storage_read_api/tests",
173    ],
174}
175