xref: /aosp_15_r20/external/uwb/src/Android.bp (revision e0df40009cb5d71e642272d38ba1bb7ffccfce41)
1*e0df4000SAndroid Build Coastguard Workerpackage {
2*e0df4000SAndroid Build Coastguard Worker    default_applicable_licenses: ["external_uwb_license"],
3*e0df4000SAndroid Build Coastguard Worker}
4*e0df4000SAndroid Build Coastguard Worker
5*e0df4000SAndroid Build Coastguard Workerrust_defaults {
6*e0df4000SAndroid Build Coastguard Worker    name: "libuwb_uci_packet_defaults",
7*e0df4000SAndroid Build Coastguard Worker    srcs: [
8*e0df4000SAndroid Build Coastguard Worker        "rust/uwb_uci_packets/src/lib.rs",
9*e0df4000SAndroid Build Coastguard Worker        ":UwbGeneratedPackets_rust",
10*e0df4000SAndroid Build Coastguard Worker    ],
11*e0df4000SAndroid Build Coastguard Worker    edition: "2021",
12*e0df4000SAndroid Build Coastguard Worker    proc_macros: ["libnum_derive"],
13*e0df4000SAndroid Build Coastguard Worker    rustlibs: [
14*e0df4000SAndroid Build Coastguard Worker        "libbytes",
15*e0df4000SAndroid Build Coastguard Worker        "liblog_rust",
16*e0df4000SAndroid Build Coastguard Worker        "libnum_traits",
17*e0df4000SAndroid Build Coastguard Worker        "libpdl_runtime",
18*e0df4000SAndroid Build Coastguard Worker        "libzeroize",
19*e0df4000SAndroid Build Coastguard Worker    ],
20*e0df4000SAndroid Build Coastguard Worker    host_supported: true,
21*e0df4000SAndroid Build Coastguard Worker}
22*e0df4000SAndroid Build Coastguard Worker
23*e0df4000SAndroid Build Coastguard Workerrust_test {
24*e0df4000SAndroid Build Coastguard Worker    name: "libuwb_uci_packet_tests",
25*e0df4000SAndroid Build Coastguard Worker    defaults: ["libuwb_uci_packet_defaults"],
26*e0df4000SAndroid Build Coastguard Worker    target: {
27*e0df4000SAndroid Build Coastguard Worker        android: {
28*e0df4000SAndroid Build Coastguard Worker            test_suites: [
29*e0df4000SAndroid Build Coastguard Worker                "general-tests",
30*e0df4000SAndroid Build Coastguard Worker                "mts-uwb",
31*e0df4000SAndroid Build Coastguard Worker            ],
32*e0df4000SAndroid Build Coastguard Worker            test_config_template: "uwb_rust_test_config_template.xml",
33*e0df4000SAndroid Build Coastguard Worker        },
34*e0df4000SAndroid Build Coastguard Worker        host: {
35*e0df4000SAndroid Build Coastguard Worker            test_suites: [
36*e0df4000SAndroid Build Coastguard Worker                "general-tests",
37*e0df4000SAndroid Build Coastguard Worker            ],
38*e0df4000SAndroid Build Coastguard Worker            // See b/268061150
39*e0df4000SAndroid Build Coastguard Worker            stem: "libuwb_uci_packet_tests_host",
40*e0df4000SAndroid Build Coastguard Worker        },
41*e0df4000SAndroid Build Coastguard Worker    },
42*e0df4000SAndroid Build Coastguard Worker    // Support multilib variants (using different suffix per sub-architecture), which is needed on
43*e0df4000SAndroid Build Coastguard Worker    // build targets with secondary architectures, as the MTS test suite packaging logic flattens
44*e0df4000SAndroid Build Coastguard Worker    // all test artifacts into a single `testcases` directory.
45*e0df4000SAndroid Build Coastguard Worker    compile_multilib: "both",
46*e0df4000SAndroid Build Coastguard Worker    multilib: {
47*e0df4000SAndroid Build Coastguard Worker        lib32: {
48*e0df4000SAndroid Build Coastguard Worker            suffix: "32",
49*e0df4000SAndroid Build Coastguard Worker        },
50*e0df4000SAndroid Build Coastguard Worker        lib64: {
51*e0df4000SAndroid Build Coastguard Worker            suffix: "64",
52*e0df4000SAndroid Build Coastguard Worker        },
53*e0df4000SAndroid Build Coastguard Worker    },
54*e0df4000SAndroid Build Coastguard Worker    auto_gen_config: true,
55*e0df4000SAndroid Build Coastguard Worker    min_sdk_version: "33",
56*e0df4000SAndroid Build Coastguard Worker}
57*e0df4000SAndroid Build Coastguard Worker
58*e0df4000SAndroid Build Coastguard Workerrust_library {
59*e0df4000SAndroid Build Coastguard Worker    name: "libuwb_uci_packets",
60*e0df4000SAndroid Build Coastguard Worker    defaults: ["libuwb_uci_packet_defaults"],
61*e0df4000SAndroid Build Coastguard Worker    crate_name: "uwb_uci_packets",
62*e0df4000SAndroid Build Coastguard Worker    apex_available: [
63*e0df4000SAndroid Build Coastguard Worker        "//apex_available:platform",
64*e0df4000SAndroid Build Coastguard Worker        "com.android.uwb",
65*e0df4000SAndroid Build Coastguard Worker    ],
66*e0df4000SAndroid Build Coastguard Worker    min_sdk_version: "Tiramisu",
67*e0df4000SAndroid Build Coastguard Worker    vendor_available: true,
68*e0df4000SAndroid Build Coastguard Worker}
69*e0df4000SAndroid Build Coastguard Worker
70*e0df4000SAndroid Build Coastguard Workergenrule {
71*e0df4000SAndroid Build Coastguard Worker    name: "UwbGeneratedPackets_rust",
72*e0df4000SAndroid Build Coastguard Worker    defaults: ["pdl_rust_legacy_generator_defaults"],
73*e0df4000SAndroid Build Coastguard Worker    srcs: [
74*e0df4000SAndroid Build Coastguard Worker        "rust/uwb_uci_packets/uci_packets.pdl",
75*e0df4000SAndroid Build Coastguard Worker    ],
76*e0df4000SAndroid Build Coastguard Worker    out: [
77*e0df4000SAndroid Build Coastguard Worker        "rust/uwb_uci_packets/uci_packets.rs",
78*e0df4000SAndroid Build Coastguard Worker    ],
79*e0df4000SAndroid Build Coastguard Worker}
80*e0df4000SAndroid Build Coastguard Worker
81*e0df4000SAndroid Build Coastguard Workerrust_defaults {
82*e0df4000SAndroid Build Coastguard Worker    name: "libuwb_core_defaults",
83*e0df4000SAndroid Build Coastguard Worker    srcs: ["rust/uwb_core/src/lib.rs"],
84*e0df4000SAndroid Build Coastguard Worker    edition: "2021",
85*e0df4000SAndroid Build Coastguard Worker    lints: "android",
86*e0df4000SAndroid Build Coastguard Worker    clippy_lints: "android",
87*e0df4000SAndroid Build Coastguard Worker    rustlibs: [
88*e0df4000SAndroid Build Coastguard Worker        "libbytes",
89*e0df4000SAndroid Build Coastguard Worker        "libnum_traits",
90*e0df4000SAndroid Build Coastguard Worker        "liblog_rust",
91*e0df4000SAndroid Build Coastguard Worker        "libpdl_runtime",
92*e0df4000SAndroid Build Coastguard Worker        "libthiserror",
93*e0df4000SAndroid Build Coastguard Worker        "libtokio",
94*e0df4000SAndroid Build Coastguard Worker        "libuwb_uci_packets",
95*e0df4000SAndroid Build Coastguard Worker        "libzeroize",
96*e0df4000SAndroid Build Coastguard Worker    ],
97*e0df4000SAndroid Build Coastguard Worker    proc_macros: [
98*e0df4000SAndroid Build Coastguard Worker        "libasync_trait",
99*e0df4000SAndroid Build Coastguard Worker        "libnum_derive",
100*e0df4000SAndroid Build Coastguard Worker    ],
101*e0df4000SAndroid Build Coastguard Worker    min_sdk_version: "Tiramisu",
102*e0df4000SAndroid Build Coastguard Worker}
103*e0df4000SAndroid Build Coastguard Worker
104*e0df4000SAndroid Build Coastguard Worker// Build uwb_core library with the production version of Aconfig flags lib.
105*e0df4000SAndroid Build Coastguard Workerrust_library {
106*e0df4000SAndroid Build Coastguard Worker    name: "libuwb_core",
107*e0df4000SAndroid Build Coastguard Worker    defaults: ["libuwb_core_defaults"],
108*e0df4000SAndroid Build Coastguard Worker    crate_name: "uwb_core",
109*e0df4000SAndroid Build Coastguard Worker    apex_available: [
110*e0df4000SAndroid Build Coastguard Worker        "com.android.uwb",
111*e0df4000SAndroid Build Coastguard Worker    ],
112*e0df4000SAndroid Build Coastguard Worker}
113*e0df4000SAndroid Build Coastguard Worker
114*e0df4000SAndroid Build Coastguard Worker// Builds uwb_core library with "mock-utils" enabled.
115*e0df4000SAndroid Build Coastguard Worker// This enables mock methods to be used for testing external crates.
116*e0df4000SAndroid Build Coastguard Workerrust_library {
117*e0df4000SAndroid Build Coastguard Worker    name: "libuwb_core_with_mock",
118*e0df4000SAndroid Build Coastguard Worker    defaults: ["libuwb_core_defaults"],
119*e0df4000SAndroid Build Coastguard Worker    crate_name: "uwb_core",
120*e0df4000SAndroid Build Coastguard Worker    features: ["mock-utils"],
121*e0df4000SAndroid Build Coastguard Worker    host_supported: true,
122*e0df4000SAndroid Build Coastguard Worker    native_coverage: false,
123*e0df4000SAndroid Build Coastguard Worker}
124*e0df4000SAndroid Build Coastguard Worker
125*e0df4000SAndroid Build Coastguard Worker// The test target uses the test version of Aconfig flags lib, as that has
126*e0df4000SAndroid Build Coastguard Worker// support for setting the flag values in unit tests.
127*e0df4000SAndroid Build Coastguard Workerrust_test {
128*e0df4000SAndroid Build Coastguard Worker    name: "libuwb_core_tests",
129*e0df4000SAndroid Build Coastguard Worker    defaults: ["libuwb_core_defaults"],
130*e0df4000SAndroid Build Coastguard Worker    rustlibs: [
131*e0df4000SAndroid Build Coastguard Worker        "libenv_logger",
132*e0df4000SAndroid Build Coastguard Worker        "libtempfile",
133*e0df4000SAndroid Build Coastguard Worker    ],
134*e0df4000SAndroid Build Coastguard Worker    target: {
135*e0df4000SAndroid Build Coastguard Worker        android: {
136*e0df4000SAndroid Build Coastguard Worker            test_suites: [
137*e0df4000SAndroid Build Coastguard Worker                "general-tests",
138*e0df4000SAndroid Build Coastguard Worker                "mts-uwb",
139*e0df4000SAndroid Build Coastguard Worker            ],
140*e0df4000SAndroid Build Coastguard Worker            test_config_template: "uwb_rust_test_config_template.xml",
141*e0df4000SAndroid Build Coastguard Worker        },
142*e0df4000SAndroid Build Coastguard Worker    },
143*e0df4000SAndroid Build Coastguard Worker    // Support multilib variants (using different suffix per sub-architecture), which is needed on
144*e0df4000SAndroid Build Coastguard Worker    // build targets with secondary architectures, as the MTS test suite packaging logic flattens
145*e0df4000SAndroid Build Coastguard Worker    // all test artifacts into a single `testcases` directory.
146*e0df4000SAndroid Build Coastguard Worker    compile_multilib: "both",
147*e0df4000SAndroid Build Coastguard Worker    multilib: {
148*e0df4000SAndroid Build Coastguard Worker        lib32: {
149*e0df4000SAndroid Build Coastguard Worker            suffix: "32",
150*e0df4000SAndroid Build Coastguard Worker        },
151*e0df4000SAndroid Build Coastguard Worker        lib64: {
152*e0df4000SAndroid Build Coastguard Worker            suffix: "64",
153*e0df4000SAndroid Build Coastguard Worker        },
154*e0df4000SAndroid Build Coastguard Worker    },
155*e0df4000SAndroid Build Coastguard Worker    auto_gen_config: true,
156*e0df4000SAndroid Build Coastguard Worker    min_sdk_version: "33",
157*e0df4000SAndroid Build Coastguard Worker}
158*e0df4000SAndroid Build Coastguard Worker
159*e0df4000SAndroid Build Coastguard Workerrust_binary {
160*e0df4000SAndroid Build Coastguard Worker    name: "uwb_core_examples",
161*e0df4000SAndroid Build Coastguard Worker    srcs: ["rust/uwb_core/examples/main.rs"],
162*e0df4000SAndroid Build Coastguard Worker    rustlibs: [
163*e0df4000SAndroid Build Coastguard Worker        "libenv_logger",
164*e0df4000SAndroid Build Coastguard Worker        "liblog_rust",
165*e0df4000SAndroid Build Coastguard Worker        "libtokio",
166*e0df4000SAndroid Build Coastguard Worker        "libuwb_core",
167*e0df4000SAndroid Build Coastguard Worker    ],
168*e0df4000SAndroid Build Coastguard Worker    proc_macros: [
169*e0df4000SAndroid Build Coastguard Worker        "libasync_trait",
170*e0df4000SAndroid Build Coastguard Worker    ],
171*e0df4000SAndroid Build Coastguard Worker
172*e0df4000SAndroid Build Coastguard Worker    lints: "android",
173*e0df4000SAndroid Build Coastguard Worker    clippy_lints: "android",
174*e0df4000SAndroid Build Coastguard Worker    min_sdk_version: "Tiramisu",
175*e0df4000SAndroid Build Coastguard Worker}
176*e0df4000SAndroid Build Coastguard Worker
177*e0df4000SAndroid Build Coastguard Worker// Build the uwb_core library with "proto" feature enabled.
178*e0df4000SAndroid Build Coastguard Worker// It's used for fuzzer test.
179*e0df4000SAndroid Build Coastguard Workerrust_library {
180*e0df4000SAndroid Build Coastguard Worker    name: "libuwb_core_with_proto",
181*e0df4000SAndroid Build Coastguard Worker    defaults: ["libuwb_core_defaults"],
182*e0df4000SAndroid Build Coastguard Worker    crate_name: "uwb_core",
183*e0df4000SAndroid Build Coastguard Worker    srcs: [
184*e0df4000SAndroid Build Coastguard Worker        // Generate the protobuf bindings.
185*e0df4000SAndroid Build Coastguard Worker        // These genrule follows the logic of rust/uwb_core/build.rs.
186*e0df4000SAndroid Build Coastguard Worker        ":gen_uwb_core_proto",
187*e0df4000SAndroid Build Coastguard Worker        ":include_uwb_core_proto",
188*e0df4000SAndroid Build Coastguard Worker    ],
189*e0df4000SAndroid Build Coastguard Worker    rustlibs: [
190*e0df4000SAndroid Build Coastguard Worker        "libprotobuf",
191*e0df4000SAndroid Build Coastguard Worker    ],
192*e0df4000SAndroid Build Coastguard Worker    flags: [
193*e0df4000SAndroid Build Coastguard Worker        // Required due to the protoc-gen-rust tool emitting invalid
194*e0df4000SAndroid Build Coastguard Worker        // annotations.  This can be removed when we upgrade to protobuf-4,
195*e0df4000SAndroid Build Coastguard Worker        // if we patch  protobuf-3 to no longer emit `#![allow(box_pointers)]`,
196*e0df4000SAndroid Build Coastguard Worker        // or switch to using a `rust_protobuf` rule instead of a `genrule`.
197*e0df4000SAndroid Build Coastguard Worker        "-A renamed_and_removed_lints",
198*e0df4000SAndroid Build Coastguard Worker    ],
199*e0df4000SAndroid Build Coastguard Worker    features: ["proto"],
200*e0df4000SAndroid Build Coastguard Worker    host_supported: true,
201*e0df4000SAndroid Build Coastguard Worker    native_coverage: false,
202*e0df4000SAndroid Build Coastguard Worker}
203*e0df4000SAndroid Build Coastguard Worker
204*e0df4000SAndroid Build Coastguard Workergenrule {
205*e0df4000SAndroid Build Coastguard Worker    name: "gen_uwb_core_proto",
206*e0df4000SAndroid Build Coastguard Worker    tools: [
207*e0df4000SAndroid Build Coastguard Worker        "aprotoc",
208*e0df4000SAndroid Build Coastguard Worker        "protoc-gen-rust",
209*e0df4000SAndroid Build Coastguard Worker    ],
210*e0df4000SAndroid Build Coastguard Worker    cmd: "$(location aprotoc)" +
211*e0df4000SAndroid Build Coastguard Worker        " --proto_path=`dirname $(in)`" +
212*e0df4000SAndroid Build Coastguard Worker        " --plugin=protoc-gen-rust=$(location protoc-gen-rust)" +
213*e0df4000SAndroid Build Coastguard Worker        " --rust_out=$(genDir) $(in)",
214*e0df4000SAndroid Build Coastguard Worker    srcs: [
215*e0df4000SAndroid Build Coastguard Worker        "rust/uwb_core/protos/uwb_service.proto",
216*e0df4000SAndroid Build Coastguard Worker    ],
217*e0df4000SAndroid Build Coastguard Worker    out: [
218*e0df4000SAndroid Build Coastguard Worker        "uwb_service.rs",
219*e0df4000SAndroid Build Coastguard Worker    ],
220*e0df4000SAndroid Build Coastguard Worker}
221*e0df4000SAndroid Build Coastguard Worker
222*e0df4000SAndroid Build Coastguard Workergenrule {
223*e0df4000SAndroid Build Coastguard Worker    name: "include_uwb_core_proto",
224*e0df4000SAndroid Build Coastguard Worker    cmd: "echo '#[path = \"uwb_service.rs\"]' > $(out);" +
225*e0df4000SAndroid Build Coastguard Worker        "echo 'pub mod bindings;' >> $(out);",
226*e0df4000SAndroid Build Coastguard Worker    out: [
227*e0df4000SAndroid Build Coastguard Worker        "proto_bindings.rs",
228*e0df4000SAndroid Build Coastguard Worker    ],
229*e0df4000SAndroid Build Coastguard Worker}
230*e0df4000SAndroid Build Coastguard Worker
231*e0df4000SAndroid Build Coastguard Workerrust_fuzz {
232*e0df4000SAndroid Build Coastguard Worker    name: "uwb_core_fuzzer",
233*e0df4000SAndroid Build Coastguard Worker    srcs: [
234*e0df4000SAndroid Build Coastguard Worker        "rust/uwb_core/fuzz/proto_uwb_service_fuzzer.rs",
235*e0df4000SAndroid Build Coastguard Worker    ],
236*e0df4000SAndroid Build Coastguard Worker    rustlibs: [
237*e0df4000SAndroid Build Coastguard Worker        "libarbitrary",
238*e0df4000SAndroid Build Coastguard Worker        "libuwb_core_with_proto",
239*e0df4000SAndroid Build Coastguard Worker    ],
240*e0df4000SAndroid Build Coastguard Worker    fuzz_config: {
241*e0df4000SAndroid Build Coastguard Worker        cc: [
242*e0df4000SAndroid Build Coastguard Worker            "[email protected]",
243*e0df4000SAndroid Build Coastguard Worker        ],
244*e0df4000SAndroid Build Coastguard Worker        componentid: 1042770,
245*e0df4000SAndroid Build Coastguard Worker        fuzz_on_haiku_device: false,
246*e0df4000SAndroid Build Coastguard Worker        fuzz_on_haiku_host: false,
247*e0df4000SAndroid Build Coastguard Worker    },
248*e0df4000SAndroid Build Coastguard Worker
249*e0df4000SAndroid Build Coastguard Worker}
250*e0df4000SAndroid Build Coastguard Worker
251*e0df4000SAndroid Build Coastguard Workerrust_defaults {
252*e0df4000SAndroid Build Coastguard Worker    name: "libuci_hal_android_defaults",
253*e0df4000SAndroid Build Coastguard Worker    crate_name: "uci_hal_android",
254*e0df4000SAndroid Build Coastguard Worker    lints: "android",
255*e0df4000SAndroid Build Coastguard Worker    clippy_lints: "android",
256*e0df4000SAndroid Build Coastguard Worker    rustlibs: [
257*e0df4000SAndroid Build Coastguard Worker        "android.hardware.uwb-V1-rust",
258*e0df4000SAndroid Build Coastguard Worker        "libanyhow",
259*e0df4000SAndroid Build Coastguard Worker        "libbinder_rs",
260*e0df4000SAndroid Build Coastguard Worker        "libbinder_tokio_rs",
261*e0df4000SAndroid Build Coastguard Worker        "libbytes",
262*e0df4000SAndroid Build Coastguard Worker        "libjni_legacy",
263*e0df4000SAndroid Build Coastguard Worker        "liblog_rust",
264*e0df4000SAndroid Build Coastguard Worker        "libpdl_runtime",
265*e0df4000SAndroid Build Coastguard Worker        "libthiserror",
266*e0df4000SAndroid Build Coastguard Worker        "libtokio",
267*e0df4000SAndroid Build Coastguard Worker        "libuwb_uci_packets",
268*e0df4000SAndroid Build Coastguard Worker    ],
269*e0df4000SAndroid Build Coastguard Worker    target: {
270*e0df4000SAndroid Build Coastguard Worker        android: {
271*e0df4000SAndroid Build Coastguard Worker            rustlibs: [
272*e0df4000SAndroid Build Coastguard Worker                "librustutils",
273*e0df4000SAndroid Build Coastguard Worker            ],
274*e0df4000SAndroid Build Coastguard Worker        },
275*e0df4000SAndroid Build Coastguard Worker    },
276*e0df4000SAndroid Build Coastguard Worker    proc_macros: [
277*e0df4000SAndroid Build Coastguard Worker        "libasync_trait",
278*e0df4000SAndroid Build Coastguard Worker    ],
279*e0df4000SAndroid Build Coastguard Worker    apex_available: [
280*e0df4000SAndroid Build Coastguard Worker        "com.android.uwb",
281*e0df4000SAndroid Build Coastguard Worker    ],
282*e0df4000SAndroid Build Coastguard Worker    min_sdk_version: "Tiramisu",
283*e0df4000SAndroid Build Coastguard Worker    srcs: [
284*e0df4000SAndroid Build Coastguard Worker        "rust/uci_hal_android/lib.rs",
285*e0df4000SAndroid Build Coastguard Worker    ],
286*e0df4000SAndroid Build Coastguard Worker}
287*e0df4000SAndroid Build Coastguard Worker
288*e0df4000SAndroid Build Coastguard Workerrust_library {
289*e0df4000SAndroid Build Coastguard Worker    name: "libuci_hal_android",
290*e0df4000SAndroid Build Coastguard Worker    defaults: ["libuci_hal_android_defaults"],
291*e0df4000SAndroid Build Coastguard Worker    rustlibs: [
292*e0df4000SAndroid Build Coastguard Worker        "libuwb_core",
293*e0df4000SAndroid Build Coastguard Worker    ],
294*e0df4000SAndroid Build Coastguard Worker}
295*e0df4000SAndroid Build Coastguard Worker
296*e0df4000SAndroid Build Coastguard Worker// uci_hal_android built with uwb_core_with_mock.
297*e0df4000SAndroid Build Coastguard Worker// Used to replace uci_hal_android in place where mock version of uwb_core is
298*e0df4000SAndroid Build Coastguard Worker// used.
299*e0df4000SAndroid Build Coastguard Workerrust_library {
300*e0df4000SAndroid Build Coastguard Worker    name: "libuci_hal_android_with_mock",
301*e0df4000SAndroid Build Coastguard Worker    defaults: ["libuci_hal_android_defaults"],
302*e0df4000SAndroid Build Coastguard Worker    rustlibs: [
303*e0df4000SAndroid Build Coastguard Worker        "libuwb_core_with_mock",
304*e0df4000SAndroid Build Coastguard Worker    ],
305*e0df4000SAndroid Build Coastguard Worker    native_coverage: false,
306*e0df4000SAndroid Build Coastguard Worker}
307*e0df4000SAndroid Build Coastguard Worker
308*e0df4000SAndroid Build Coastguard Workerrust_test {
309*e0df4000SAndroid Build Coastguard Worker    name: "libuci_hal_android_tests",
310*e0df4000SAndroid Build Coastguard Worker    defaults: ["libuci_hal_android_defaults"],
311*e0df4000SAndroid Build Coastguard Worker    rustlibs: [
312*e0df4000SAndroid Build Coastguard Worker        "libenv_logger",
313*e0df4000SAndroid Build Coastguard Worker        "libtempfile",
314*e0df4000SAndroid Build Coastguard Worker        "libuwb_core",
315*e0df4000SAndroid Build Coastguard Worker    ],
316*e0df4000SAndroid Build Coastguard Worker    target: {
317*e0df4000SAndroid Build Coastguard Worker        android: {
318*e0df4000SAndroid Build Coastguard Worker            test_suites: [
319*e0df4000SAndroid Build Coastguard Worker                "general-tests",
320*e0df4000SAndroid Build Coastguard Worker                "mts-uwb",
321*e0df4000SAndroid Build Coastguard Worker            ],
322*e0df4000SAndroid Build Coastguard Worker            test_config_template: "uwb_rust_test_config_template.xml",
323*e0df4000SAndroid Build Coastguard Worker        },
324*e0df4000SAndroid Build Coastguard Worker    },
325*e0df4000SAndroid Build Coastguard Worker    // Support multilib variants (using different suffix per sub-architecture), which is needed on
326*e0df4000SAndroid Build Coastguard Worker    // build targets with secondary architectures, as the MTS test suite packaging logic flattens
327*e0df4000SAndroid Build Coastguard Worker    // all test artifacts into a single `testcases` directory.
328*e0df4000SAndroid Build Coastguard Worker    compile_multilib: "both",
329*e0df4000SAndroid Build Coastguard Worker    multilib: {
330*e0df4000SAndroid Build Coastguard Worker        lib32: {
331*e0df4000SAndroid Build Coastguard Worker            suffix: "32",
332*e0df4000SAndroid Build Coastguard Worker        },
333*e0df4000SAndroid Build Coastguard Worker        lib64: {
334*e0df4000SAndroid Build Coastguard Worker            suffix: "64",
335*e0df4000SAndroid Build Coastguard Worker        },
336*e0df4000SAndroid Build Coastguard Worker    },
337*e0df4000SAndroid Build Coastguard Worker    auto_gen_config: true,
338*e0df4000SAndroid Build Coastguard Worker    min_sdk_version: "33",
339*e0df4000SAndroid Build Coastguard Worker}
340*e0df4000SAndroid Build Coastguard Worker
341*e0df4000SAndroid Build Coastguard Worker// Generate the artifacts zip for uwb_core library and its dependencies.
342*e0df4000SAndroid Build Coastguard Workergenrule {
343*e0df4000SAndroid Build Coastguard Worker    name: "uwb_core_artifacts",
344*e0df4000SAndroid Build Coastguard Worker    tools: [
345*e0df4000SAndroid Build Coastguard Worker        "pdlc",
346*e0df4000SAndroid Build Coastguard Worker        "soong_zip",
347*e0df4000SAndroid Build Coastguard Worker    ],
348*e0df4000SAndroid Build Coastguard Worker    srcs: [
349*e0df4000SAndroid Build Coastguard Worker        "rust/uwb_core/**/*",
350*e0df4000SAndroid Build Coastguard Worker        "rust/uwb_uci_packets/**/*",
351*e0df4000SAndroid Build Coastguard Worker        "rust/Cargo.toml",
352*e0df4000SAndroid Build Coastguard Worker    ],
353*e0df4000SAndroid Build Coastguard Worker    cmd: "mkdir $(genDir)/artifacts && " + // Create a artifacts directory and copy the source code into it.
354*e0df4000SAndroid Build Coastguard Worker        "cp -r external/uwb/src/rust/uwb_core " +
355*e0df4000SAndroid Build Coastguard Worker        "      external/uwb/src/rust/uwb_uci_packets " +
356*e0df4000SAndroid Build Coastguard Worker        "      external/uwb/src/rust/Cargo.toml " +
357*e0df4000SAndroid Build Coastguard Worker        "      $(genDir)/artifacts && " +
358*e0df4000SAndroid Build Coastguard Worker
359*e0df4000SAndroid Build Coastguard Worker        // Generate uci_packets.rs at $(genDir)/artifacts/uwb_uci_packets/.
360*e0df4000SAndroid Build Coastguard Worker        "$(location pdlc) --output-format rust " +
361*e0df4000SAndroid Build Coastguard Worker        "      external/uwb/src/rust/uwb_uci_packets/uci_packets.pdl " +
362*e0df4000SAndroid Build Coastguard Worker        "      > $(genDir)/artifacts/uwb_uci_packets/uci_packets.rs && " +
363*e0df4000SAndroid Build Coastguard Worker
364*e0df4000SAndroid Build Coastguard Worker        // Pack the artifacts directory and clean up the directory.
365*e0df4000SAndroid Build Coastguard Worker        "$(location soong_zip) -o $(out) " +
366*e0df4000SAndroid Build Coastguard Worker        "                      -C $(genDir)/artifacts " +
367*e0df4000SAndroid Build Coastguard Worker        "                      -D $(genDir)/artifacts && " +
368*e0df4000SAndroid Build Coastguard Worker        "rm -rf $(genDir)/artifacts",
369*e0df4000SAndroid Build Coastguard Worker    out: [
370*e0df4000SAndroid Build Coastguard Worker        "uwb_core_artifacts.zip",
371*e0df4000SAndroid Build Coastguard Worker    ],
372*e0df4000SAndroid Build Coastguard Worker}
373*e0df4000SAndroid Build Coastguard Worker
374*e0df4000SAndroid Build Coastguard Worker// Verify if the uwb_core library can be built via cargo system.
375*e0df4000SAndroid Build Coastguard Workersh_test_host {
376*e0df4000SAndroid Build Coastguard Worker    name: "libuwb_core_cargo_test",
377*e0df4000SAndroid Build Coastguard Worker    src: "tests/libuwb_core_cargo_test.sh",
378*e0df4000SAndroid Build Coastguard Worker    test_config: "tests/libuwb_core_cargo_test.xml",
379*e0df4000SAndroid Build Coastguard Worker    test_suites: ["general-tests"],
380*e0df4000SAndroid Build Coastguard Worker    data: [":uwb_core_artifacts"],
381*e0df4000SAndroid Build Coastguard Worker    test_options: {
382*e0df4000SAndroid Build Coastguard Worker        unit_test: false,
383*e0df4000SAndroid Build Coastguard Worker    },
384*e0df4000SAndroid Build Coastguard Worker}
385