blob: 71b9e767be6459b94ab4a82cb3619e3debe3cf7c [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",
Alan Stokes6472ccd2022-08-31 13:41:28 +010018 edition: "2021",
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000019 prefer_rlib: true,
David Brazdil30a7f082022-07-07 15:30:14 +010020 host_supported: false,
21 enabled: false,
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000022 no_stdlibs: true,
23 stdlibs: [
24 "libcompiler_builtins.rust_sysroot",
25 "libcore.rust_sysroot",
26 ],
David Brazdil30a7f082022-07-07 15:30:14 +010027 target: {
28 android_arm64: {
29 enabled: true,
30 },
31 },
32}
33
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000034// Used by the "top-level" rust_ffi_static of vmbase-based binaries.
David Brazdil30a7f082022-07-07 15:30:14 +010035rust_defaults {
36 name: "vmbase_ffi_defaults",
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000037 defaults: ["vmbase_rlib_defaults"],
David Brazdil30a7f082022-07-07 15:30:14 +010038}
39
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000040// Used by extra cc_library_static linked into the final ELF.
David Brazdil30a7f082022-07-07 15:30:14 +010041cc_defaults {
42 name: "vmbase_cc_defaults",
43 nocrt: true,
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000044 no_libcrt: true,
David Brazdil30a7f082022-07-07 15:30:14 +010045 system_shared_libs: [],
46 stl: "none",
47 installable: false,
48 enabled: false,
49 target: {
50 android_arm64: {
51 enabled: true,
52 },
53 },
54 sanitize: {
55 hwaddress: false,
56 },
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000057 native_coverage: false,
David Brazdil30a7f082022-07-07 15:30:14 +010058}
59
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000060// Used by cc_binary when producing the ELF of a vmbase-based binary.
David Brazdil30a7f082022-07-07 15:30:14 +010061cc_defaults {
62 name: "vmbase_elf_defaults",
63 defaults: ["vmbase_cc_defaults"],
David Brazdil30a7f082022-07-07 15:30:14 +010064 static_executable: true,
65 static_libs: [
66 "libvmbase_entry",
67 ],
68}
69
Andrew Walbrandd74b902022-04-14 16:12:50 +000070rust_library_rlib {
71 name: "libvmbase",
Pierre-Clément Tosi4894b432023-06-27 14:02:26 +000072 defaults: ["vmbase_rlib_defaults"],
Andrew Walbrandd74b902022-04-14 16:12:50 +000073 crate_name: "vmbase",
74 srcs: ["src/lib.rs"],
Andrew Walbrandd74b902022-04-14 16:12:50 +000075 rustlibs: [
Pierre-Clément Tosi3d4c5c32023-05-31 16:57:06 +000076 "libaarch64_paging",
Alice Wangf47b2342023-06-02 11:51:57 +000077 "libbuddy_system_allocator",
Alice Wangeade1672023-06-08 14:56:20 +000078 "libfdtpci",
Alice Wangf47b2342023-06-02 11:51:57 +000079 "libhyp",
Alice Wanga3971062023-06-13 11:48:53 +000080 "liblibfdt",
David Brazdil8b557772022-07-05 12:22:20 +010081 "liblog_rust_nostd",
Alice Wang93ee98a2023-06-08 08:20:39 +000082 "libonce_cell_nostd",
Andrew Walbranf44f1602023-05-30 14:59:19 +000083 "libsmccc",
Andrew Walbrandd74b902022-04-14 16:12:50 +000084 "libspin_nostd",
Alice Wang93ee98a2023-06-08 08:20:39 +000085 "libtinyvec_nostd",
Alice Wangeade1672023-06-08 14:56:20 +000086 "libvirtio_drivers",
Pierre-Clément Tosi9320e0e2023-07-11 15:51:55 +000087 "libzerocopy_nostd",
Alice Wang3fa9b802023-06-06 07:52:31 +000088 "libzeroize_nostd",
Andrew Walbrandd74b902022-04-14 16:12:50 +000089 ],
Pierre-Clément Tosi50939ad2022-12-09 17:57:37 +000090 whole_static_libs: [
Pierre-Clément Tosi9f2f4462022-12-09 19:13:29 +000091 "librust_baremetal",
Pierre-Clément Tosi50939ad2022-12-09 17:57:37 +000092 ],
Alice Wang4dd20932023-05-26 13:47:16 +000093 features: [
94 "cpu_feat_hafdbs",
95 ],
Andrew Walbrandd74b902022-04-14 16:12:50 +000096}
Andrew Walbranf71e6ee2022-04-22 14:04:27 +000097
98cc_library_static {
99 name: "libvmbase_entry",
David Brazdil30a7f082022-07-07 15:30:14 +0100100 defaults: ["vmbase_cc_defaults"],
Andrew Walbranf71e6ee2022-04-22 14:04:27 +0000101 srcs: [
102 "entry.S",
103 "exceptions.S",
Pierre-Clément Tosid40ff912022-06-30 16:11:33 +0100104 "exceptions_panic.S",
Andrew Walbranf71e6ee2022-04-22 14:04:27 +0000105 ],
Andrew Walbranf71e6ee2022-04-22 14:04:27 +0000106}
Andrew Walbrana5b7af52022-07-06 15:06:20 +0000107
108filegroup {
109 name: "vmbase_sections",
110 srcs: ["sections.ld"],
111}