blob: 77dbb6b35f07a83e908e8010021a03d4da17ee35 [file] [log] [blame]
Alice Wangfb46ee12022-09-30 13:08:52 +00001package {
2 default_applicable_licenses: ["Android-Apache-2.0"],
3}
4
Alan Stokesbcc2ec22022-10-31 17:02:50 +00005// The Rust implementation of the C API.
6rust_ffi_static {
7 name: "libvm_payload_impl",
Alice Wangfb46ee12022-09-30 13:08:52 +00008 crate_name: "vm_payload",
Alan Stokesbcc2ec22022-10-31 17:02:50 +00009 visibility: ["//visibility:private"],
Alice Wangfb46ee12022-09-30 13:08:52 +000010 srcs: ["src/*.rs"],
11 include_dirs: ["include"],
12 prefer_rlib: true,
Alan Stokesa0e42962023-04-14 17:59:50 +010013 // Require unsafe blocks for inside unsafe functions.
14 flags: ["-Dunsafe_op_in_unsafe_fn"],
Alice Wangfb46ee12022-09-30 13:08:52 +000015 rustlibs: [
Alice Wang59a9e562022-10-04 15:24:10 +000016 "android.system.virtualization.payload-rust",
Alice Wangfb46ee12022-09-30 13:08:52 +000017 "libandroid_logger",
18 "libanyhow",
19 "libbinder_rs",
Alice Wang6bbb6da2022-10-26 12:44:06 +000020 "liblazy_static",
David Brazdil451cc962022-10-14 14:08:12 +010021 "liblibc",
Alice Wangfb46ee12022-09-30 13:08:52 +000022 "liblog_rust",
Alice Wang2be64f32022-10-13 14:37:35 +000023 "librpcbinder_rs",
David Brazdil73988ea2022-11-11 15:10:32 +000024 "libvsock",
Alice Wangfb46ee12022-09-30 13:08:52 +000025 ],
Alice Wang5ef60e62022-11-03 08:19:02 +000026 // The sanitize section below fixes the fuzzer build in b/256166339.
27 // TODO(b/250854486): Remove the sanitize section once the bug is fixed.
Alice Wang8d7e1072022-11-02 17:42:52 +000028 sanitize: {
29 address: false,
30 },
Alice Wangfb46ee12022-09-30 13:08:52 +000031}
Alice Wangbd569a02022-10-06 15:23:24 +000032
Alan Stokesbcc2ec22022-10-31 17:02:50 +000033// Rust wrappers round the C API for Rust clients.
34// (Yes, this involves going Rust -> C -> Rust.)
Alice Wangbd569a02022-10-06 15:23:24 +000035rust_bindgen {
36 name: "libvm_payload_bindgen",
Alan Stokesd4ea5a82022-11-10 12:17:42 +000037 wrapper_src: "include-restricted/vm_payload_restricted.h",
Alice Wangbd569a02022-10-06 15:23:24 +000038 crate_name: "vm_payload_bindgen",
39 source_stem: "bindings",
40 apex_available: ["com.android.compos"],
Alice Wangc2fec932023-02-23 16:24:02 +000041 visibility: [
42 "//packages/modules/Virtualization/compos",
43 "//packages/modules/Virtualization/service_vm/client_apk",
44 ],
Alice Wangbd569a02022-10-06 15:23:24 +000045 shared_libs: [
Alan Stokesbcc2ec22022-10-31 17:02:50 +000046 "libvm_payload#current",
Alice Wangbd569a02022-10-06 15:23:24 +000047 ],
48}
Alan Stokes52d3c722022-10-04 17:27:13 +010049
Alan Stokesbcc2ec22022-10-31 17:02:50 +000050// Shared library for clients to link against.
51cc_library_shared {
52 name: "libvm_payload",
53 shared_libs: [
54 "libbinder_ndk",
55 "libbinder_rpc_unstable",
56 "liblog",
57 ],
58 whole_static_libs: ["libvm_payload_impl"],
59 export_static_lib_headers: ["libvm_payload_impl"],
60 installable: false,
61 version_script: "libvm_payload.map.txt",
62 stubs: {
63 symbol_file: "libvm_payload.map.txt",
64 // Implementation is available inside a Microdroid VM.
65 implementation_installable: false,
66 },
67}
68
69// Just the headers. Mostly useful for clients that only want the
70// declaration of AVmPayload_main().
Alan Stokes52d3c722022-10-04 17:27:13 +010071cc_library_headers {
72 name: "vm_payload_headers",
Alan Stokesd4ea5a82022-11-10 12:17:42 +000073 apex_available: ["com.android.compos"],
Alan Stokes52d3c722022-10-04 17:27:13 +010074 export_include_dirs: ["include"],
75}
Alan Stokesd4ea5a82022-11-10 12:17:42 +000076
Alan Stokesbcc2ec22022-10-31 17:02:50 +000077// Restricted headers for use by internal clients & associated tests.
Alan Stokesd4ea5a82022-11-10 12:17:42 +000078cc_library_headers {
79 name: "vm_payload_restricted_headers",
80 header_libs: ["vm_payload_headers"],
81 export_header_lib_headers: ["vm_payload_headers"],
82 export_include_dirs: ["include-restricted"],
83 apex_available: ["com.android.compos"],
84 visibility: ["//packages/modules/Virtualization:__subpackages__"],
85}