blob: ee12e8572680587d3ea5fe2ad1af2dc362eb2dc2 [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 Tosi1bf532b2023-11-13 11:06:20 +000082 "libcstr",
Alice Wangeade1672023-06-08 14:56:20 +000083 "libfdtpci",
Alice Wanga3971062023-06-13 11:48:53 +000084 "liblibfdt",
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",
Alice Wang93ee98a2023-06-08 08:20:39 +000090 "libtinyvec_nostd",
Pierre-Clément Tosia9b345f2024-04-27 01:01:42 +010091 "libuuid_nostd",
Alice Wangeade1672023-06-08 14:56:20 +000092 "libvirtio_drivers",
Pierre-Clément Tosi9320e0e2023-07-11 15:51:55 +000093 "libzerocopy_nostd",
Alice Wang3fa9b802023-06-06 07:52:31 +000094 "libzeroize_nostd",
Andrew Walbrandd74b902022-04-14 16:12:50 +000095 ],
Pierre-Clément Tosi50939ad2022-12-09 17:57:37 +000096 whole_static_libs: [
Pierre-Clément Tosi9f2f4462022-12-09 19:13:29 +000097 "librust_baremetal",
Pierre-Clément Tosi50939ad2022-12-09 17:57:37 +000098 ],
Pierre-Clément Tosi06c57022024-04-28 22:19:11 +010099 // TODO(b/277859415, b/277860860): Drop "compat_android_13".
Alice Wang4dd20932023-05-26 13:47:16 +0000100 features: [
Pierre-Clément Tosi06c57022024-04-28 22:19:11 +0100101 "compat_android_13",
Alice Wang4dd20932023-05-26 13:47:16 +0000102 "cpu_feat_hafdbs",
103 ],
Andrew Walbrandd74b902022-04-14 16:12:50 +0000104}
Andrew Walbranf71e6ee2022-04-22 14:04:27 +0000105
106cc_library_static {
107 name: "libvmbase_entry",
David Brazdil30a7f082022-07-07 15:30:14 +0100108 defaults: ["vmbase_cc_defaults"],
Andrew Walbranf71e6ee2022-04-22 14:04:27 +0000109 srcs: [
110 "entry.S",
111 "exceptions.S",
Pierre-Clément Tosid40ff912022-06-30 16:11:33 +0100112 "exceptions_panic.S",
Andrew Walbranf71e6ee2022-04-22 14:04:27 +0000113 ],
Andrew Walbranf71e6ee2022-04-22 14:04:27 +0000114}
Andrew Walbrana5b7af52022-07-06 15:06:20 +0000115
116filegroup {
117 name: "vmbase_sections",
118 srcs: ["sections.ld"],
119}