blob: b2b1549e56010933aefdee6af0ff1be8ccbaf13a [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",
44 nocrt: true,
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000045 no_libcrt: true,
David Brazdil30a7f082022-07-07 15:30:14 +010046 system_shared_libs: [],
47 stl: "none",
48 installable: false,
49 enabled: false,
50 target: {
51 android_arm64: {
52 enabled: true,
53 },
54 },
55 sanitize: {
56 hwaddress: false,
57 },
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000058 native_coverage: false,
David Brazdil30a7f082022-07-07 15:30:14 +010059}
60
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000061// Used by cc_binary when producing the ELF of a vmbase-based binary.
David Brazdil30a7f082022-07-07 15:30:14 +010062cc_defaults {
63 name: "vmbase_elf_defaults",
64 defaults: ["vmbase_cc_defaults"],
David Brazdil30a7f082022-07-07 15:30:14 +010065 static_executable: true,
66 static_libs: [
67 "libvmbase_entry",
68 ],
69}
70
Andrew Walbrandd74b902022-04-14 16:12:50 +000071rust_library_rlib {
72 name: "libvmbase",
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000073 defaults: ["vmbase_rlib_defaults"],
Andrew Walbrandd74b902022-04-14 16:12:50 +000074 crate_name: "vmbase",
75 srcs: ["src/lib.rs"],
Andrew Walbrandd74b902022-04-14 16:12:50 +000076 rustlibs: [
Pierre-Clément Tosi3d4c5c32023-05-31 16:57:06 +000077 "libaarch64_paging",
Alice Wangf47b2342023-06-02 11:51:57 +000078 "libbuddy_system_allocator",
Alice Wangeade1672023-06-08 14:56:20 +000079 "libfdtpci",
Alice Wangf47b2342023-06-02 11:51:57 +000080 "libhyp",
Alice Wanga3971062023-06-13 11:48:53 +000081 "liblibfdt",
David Brazdil8b557772022-07-05 12:22:20 +010082 "liblog_rust_nostd",
Alice Wang93ee98a2023-06-08 08:20:39 +000083 "libonce_cell_nostd",
Andrew Walbranf44f1602023-05-30 14:59:19 +000084 "libsmccc",
Andrew Walbrandd74b902022-04-14 16:12:50 +000085 "libspin_nostd",
Alice Wang93ee98a2023-06-08 08:20:39 +000086 "libtinyvec_nostd",
Alice Wangeade1672023-06-08 14:56:20 +000087 "libvirtio_drivers",
Pierre-Clément Tosi9320e0e2023-07-11 15:51:55 +000088 "libzerocopy_nostd",
Alice Wang3fa9b802023-06-06 07:52:31 +000089 "libzeroize_nostd",
Andrew Walbrandd74b902022-04-14 16:12:50 +000090 ],
Pierre-Clément Tosi50939ad2022-12-09 17:57:37 +000091 whole_static_libs: [
Pierre-Clément Tosi9f2f4462022-12-09 19:13:29 +000092 "librust_baremetal",
Pierre-Clément Tosi50939ad2022-12-09 17:57:37 +000093 ],
Alice Wang4dd20932023-05-26 13:47:16 +000094 features: [
95 "cpu_feat_hafdbs",
96 ],
Andrew Walbrandd74b902022-04-14 16:12:50 +000097}
Andrew Walbranf71e6ee2022-04-22 14:04:27 +000098
99cc_library_static {
100 name: "libvmbase_entry",
David Brazdil30a7f082022-07-07 15:30:14 +0100101 defaults: ["vmbase_cc_defaults"],
Andrew Walbranf71e6ee2022-04-22 14:04:27 +0000102 srcs: [
103 "entry.S",
104 "exceptions.S",
Pierre-Clément Tosid40ff912022-06-30 16:11:33 +0100105 "exceptions_panic.S",
Andrew Walbranf71e6ee2022-04-22 14:04:27 +0000106 ],
Andrew Walbranf71e6ee2022-04-22 14:04:27 +0000107}
Andrew Walbrana5b7af52022-07-06 15:06:20 +0000108
109filegroup {
110 name: "vmbase_sections",
111 srcs: ["sections.ld"],
112}