blob: 74655080feb5aa12b004ca3b0734ab70f7e901c2 [file] [log] [blame]
Bob Badour47dac8e2022-05-05 07:11:36 -07001package {
2 default_applicable_licenses: ["Android-Apache-2.0"],
3}
4
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +00005// The hierarchy of Soong modules to produce a vmbase-based binary is
6//
7// 0. rlibs may be used to provide high-level code (see "vmbase_rlib_defaults");
8// 1. rust_ffi_static packages low-level Rust code and any rlib into a static
9// library (see "vmbase_ffi_defaults") that cc_binary supports;
10// 2. cc_library_static may be used for extra C code (see "vmbase_cc_defaults");
11// 3. cc_binary produces an ELF from the (single) Rust-wrapping static library,
12// optional extra C libraries, and linker script (see "vmbase_elf_defaults");
13// 4. raw_binary strips the ELF into an image that can be loaded to memory;
14
15// Used by intermediate rust_library_rlib for vmbase-based binaries.
David Brazdil30a7f082022-07-07 15:30:14 +010016rust_defaults {
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000017 name: "vmbase_rlib_defaults",
Nikita Ioffeda1b2732023-09-04 13:46:56 +010018 defaults: ["avf_build_flags_rust"],
Alan Stokes6472ccd2022-08-31 13:41:28 +010019 edition: "2021",
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000020 prefer_rlib: true,
David Brazdil30a7f082022-07-07 15:30:14 +010021 host_supported: false,
22 enabled: false,
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000023 no_stdlibs: true,
24 stdlibs: [
25 "libcompiler_builtins.rust_sysroot",
26 "libcore.rust_sysroot",
27 ],
David Brazdil30a7f082022-07-07 15:30:14 +010028 target: {
29 android_arm64: {
30 enabled: true,
31 },
32 },
33}
34
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000035// Used by the "top-level" rust_ffi_static of vmbase-based binaries.
David Brazdil30a7f082022-07-07 15:30:14 +010036rust_defaults {
37 name: "vmbase_ffi_defaults",
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000038 defaults: ["vmbase_rlib_defaults"],
David Brazdil30a7f082022-07-07 15:30:14 +010039}
40
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000041// Used by extra cc_library_static linked into the final ELF.
David Brazdil30a7f082022-07-07 15:30:14 +010042cc_defaults {
43 name: "vmbase_cc_defaults",
Nikita Ioffe38b9e712024-02-08 15:55:07 +000044 defaults: ["avf_build_flags_cc"],
David Brazdil30a7f082022-07-07 15:30:14 +010045 nocrt: true,
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000046 no_libcrt: true,
David Brazdil30a7f082022-07-07 15:30:14 +010047 system_shared_libs: [],
48 stl: "none",
49 installable: false,
50 enabled: false,
51 target: {
52 android_arm64: {
53 enabled: true,
54 },
55 },
56 sanitize: {
57 hwaddress: false,
58 },
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000059 native_coverage: false,
Alice Wangd1d63e42024-06-13 13:26:32 +000060 // TODO(b/346974429): Workaround pvmfw failure when enabling full LTO
61 lto_O0: true,
David Brazdil30a7f082022-07-07 15:30:14 +010062}
63
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000064// Used by cc_binary when producing the ELF of a vmbase-based binary.
David Brazdil30a7f082022-07-07 15:30:14 +010065cc_defaults {
66 name: "vmbase_elf_defaults",
67 defaults: ["vmbase_cc_defaults"],
David Brazdil30a7f082022-07-07 15:30:14 +010068 static_executable: true,
69 static_libs: [
70 "libvmbase_entry",
71 ],
72}
73
Andrew Walbrandd74b902022-04-14 16:12:50 +000074rust_library_rlib {
75 name: "libvmbase",
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000076 defaults: ["vmbase_rlib_defaults"],
Andrew Walbrandd74b902022-04-14 16:12:50 +000077 crate_name: "vmbase",
78 srcs: ["src/lib.rs"],
Andrew Walbrandd74b902022-04-14 16:12:50 +000079 rustlibs: [
Pierre-Clément Tosi3d4c5c32023-05-31 16:57:06 +000080 "libaarch64_paging",
Alice Wangf47b2342023-06-02 11:51:57 +000081 "libbuddy_system_allocator",
Pierre-Clément Tosi043dfb72024-10-30 21:17:10 +000082 "libcfg_if",
Per Larsen7ec45d32024-11-02 00:56:46 +000083 "libhypervisor_backends",
Pierre-Clément Tosi992c2bb2024-10-02 10:37:42 +010084 "liblibfdt_nostd",
David Brazdil8b557772022-07-05 12:22:20 +010085 "liblog_rust_nostd",
Alice Wang93ee98a2023-06-08 08:20:39 +000086 "libonce_cell_nostd",
Andrew Walbranf44f1602023-05-30 14:59:19 +000087 "libsmccc",
Andrew Walbrandd74b902022-04-14 16:12:50 +000088 "libspin_nostd",
Pierre-Clément Tosi6b867532024-04-29 02:29:42 +010089 "libstatic_assertions",
Andrew Walbran387f2fc2024-12-17 14:59:21 +000090 "libthiserror_nostd",
Alice Wang93ee98a2023-06-08 08:20:39 +000091 "libtinyvec_nostd",
Pierre-Clément Tosia9b345f2024-04-27 01:01:42 +010092 "libuuid_nostd",
Alice Wangeade1672023-06-08 14:56:20 +000093 "libvirtio_drivers",
Andrew Walbran47d316e2024-11-28 18:41:09 +000094 "libzerocopy_nostd",
Alice Wang3fa9b802023-06-06 07:52:31 +000095 "libzeroize_nostd",
Andrew Walbrandd74b902022-04-14 16:12:50 +000096 ],
Pierre-Clément Tosi50939ad2022-12-09 17:57:37 +000097 whole_static_libs: [
Pierre-Clément Tosi9f2f4462022-12-09 19:13:29 +000098 "librust_baremetal",
Pierre-Clément Tosi50939ad2022-12-09 17:57:37 +000099 ],
Pierre-Clément Tosi06c57022024-04-28 22:19:11 +0100100 // TODO(b/277859415, b/277860860): Drop "compat_android_13".
Alice Wang4dd20932023-05-26 13:47:16 +0000101 features: [
Pierre-Clément Tosi06c57022024-04-28 22:19:11 +0100102 "compat_android_13",
Alice Wang4dd20932023-05-26 13:47:16 +0000103 "cpu_feat_hafdbs",
104 ],
Andrew Walbrandd74b902022-04-14 16:12:50 +0000105}
Andrew Walbranf71e6ee2022-04-22 14:04:27 +0000106
107cc_library_static {
108 name: "libvmbase_entry",
David Brazdil30a7f082022-07-07 15:30:14 +0100109 defaults: ["vmbase_cc_defaults"],
Andrew Walbranf71e6ee2022-04-22 14:04:27 +0000110 srcs: [
111 "entry.S",
112 "exceptions.S",
Pierre-Clément Tosid40ff912022-06-30 16:11:33 +0100113 "exceptions_panic.S",
Andrew Walbranf71e6ee2022-04-22 14:04:27 +0000114 ],
Andrew Walbranf71e6ee2022-04-22 14:04:27 +0000115}
Andrew Walbrana5b7af52022-07-06 15:06:20 +0000116
117filegroup {
118 name: "vmbase_sections",
119 srcs: ["sections.ld"],
120}