blob: ee12e8572680587d3ea5fe2ad1af2dc362eb2dc2 [file] [log] [blame]
package {
default_applicable_licenses: ["Android-Apache-2.0"],
}
// The hierarchy of Soong modules to produce a vmbase-based binary is
//
// 0. rlibs may be used to provide high-level code (see "vmbase_rlib_defaults");
// 1. rust_ffi_static packages low-level Rust code and any rlib into a static
// library (see "vmbase_ffi_defaults") that cc_binary supports;
// 2. cc_library_static may be used for extra C code (see "vmbase_cc_defaults");
// 3. cc_binary produces an ELF from the (single) Rust-wrapping static library,
// optional extra C libraries, and linker script (see "vmbase_elf_defaults");
// 4. raw_binary strips the ELF into an image that can be loaded to memory;
// Used by intermediate rust_library_rlib for vmbase-based binaries.
rust_defaults {
name: "vmbase_rlib_defaults",
defaults: ["avf_build_flags_rust"],
edition: "2021",
prefer_rlib: true,
host_supported: false,
enabled: false,
no_stdlibs: true,
stdlibs: [
"libcompiler_builtins.rust_sysroot",
"libcore.rust_sysroot",
],
target: {
android_arm64: {
enabled: true,
},
},
}
// Used by the "top-level" rust_ffi_static of vmbase-based binaries.
rust_defaults {
name: "vmbase_ffi_defaults",
defaults: ["vmbase_rlib_defaults"],
}
// Used by extra cc_library_static linked into the final ELF.
cc_defaults {
name: "vmbase_cc_defaults",
defaults: ["avf_build_flags_cc"],
nocrt: true,
no_libcrt: true,
system_shared_libs: [],
stl: "none",
installable: false,
enabled: false,
target: {
android_arm64: {
enabled: true,
},
},
sanitize: {
hwaddress: false,
},
native_coverage: false,
// TODO(b/346974429): Workaround pvmfw failure when enabling full LTO
lto_O0: true,
}
// Used by cc_binary when producing the ELF of a vmbase-based binary.
cc_defaults {
name: "vmbase_elf_defaults",
defaults: ["vmbase_cc_defaults"],
static_executable: true,
static_libs: [
"libvmbase_entry",
],
}
rust_library_rlib {
name: "libvmbase",
defaults: ["vmbase_rlib_defaults"],
crate_name: "vmbase",
srcs: ["src/lib.rs"],
rustlibs: [
"libaarch64_paging",
"libbuddy_system_allocator",
"libcstr",
"libfdtpci",
"liblibfdt",
"liblog_rust_nostd",
"libonce_cell_nostd",
"libsmccc",
"libspin_nostd",
"libstatic_assertions",
"libtinyvec_nostd",
"libuuid_nostd",
"libvirtio_drivers",
"libzerocopy_nostd",
"libzeroize_nostd",
],
whole_static_libs: [
"librust_baremetal",
],
// TODO(b/277859415, b/277860860): Drop "compat_android_13".
features: [
"compat_android_13",
"cpu_feat_hafdbs",
],
}
cc_library_static {
name: "libvmbase_entry",
defaults: ["vmbase_cc_defaults"],
srcs: [
"entry.S",
"exceptions.S",
"exceptions_panic.S",
],
}
filegroup {
name: "vmbase_sections",
srcs: ["sections.ld"],
}