diff options
author | Prashanth Swaminathan <prashanthsw@google.com> | 2024-04-23 15:01:36 -0700 |
---|---|---|
committer | Prashanth Swaminathan <prashanthsw@google.com> | 2024-04-23 15:01:36 -0700 |
commit | b6f0e4a58042e1f98323e98b805a49c25d38af1c (patch) | |
tree | 41aaf1dafaec3d4dd75a1f07b78a7d84b44f4110 | |
parent | a91652ebe9312dd9199b42e03a9f9a7bf46bd4b1 (diff) | |
download | cuttlefish_vmm-b6f0e4a58042e1f98323e98b805a49c25d38af1c.tar.gz |
Adds aarch64 QEMU build to output artifacts
* QEMU 9.x build for aarch64-linux-gnu.
* Adds gen_android_bp.py changes to support both architectures.
Bug: 331635690
Test: Verified build of cvd-host-package.
Change-Id: I02e404988eeb323e7090df59b6117c5a4d096bb1
-rw-r--r-- | Android.bp | 130 | ||||
-rw-r--r-- | gen_android_bp.py | 73 |
2 files changed, 165 insertions, 38 deletions
@@ -17,6 +17,18 @@ // NOTE: Using cc_prebuilt_binary because cc_prebuilt_library will add // unwanted .so file extensions when installing shared libraries +prebuilt_usr_share_host { + name: "aarch64_efi-virtio.rom_resource_for_qemu", + src: "qemu/aarch64-linux-gnu/usr/share/qemu/efi-virtio.rom", + filename: "efi-virtio.rom", + sub_dir: "qemu/aarch64-linux-gnu", +} +prebuilt_usr_share_host { + name: "aarch64_en-us_resource_for_qemu", + src: "qemu/aarch64-linux-gnu/usr/share/qemu/keymaps/en-us", + filename: "en-us", + sub_dir: "qemu/aarch64-linux-gnu/keymaps", +} cc_prebuilt_binary { name: "aarch64_linux_gnu_crosvm", srcs: ["aarch64-linux-gnu/bin/crosvm"], @@ -34,6 +46,22 @@ cc_prebuilt_binary { check_elf_files: false, } cc_prebuilt_binary { + name: "aarch64_linux_gnu_libc++.so.1_binary_for_qemu", + srcs: ["qemu/aarch64-linux-gnu/bin/libc++.so.1"], + stem: "libc++.so.1", + relative_install_path: "aarch64-linux-gnu/qemu", + defaults: ["cuttlefish_host"], + check_elf_files: false, +} +cc_prebuilt_binary { + name: "aarch64_linux_gnu_libc++abi.so.1_binary_for_qemu", + srcs: ["qemu/aarch64-linux-gnu/bin/libc++abi.so.1"], + stem: "libc++abi.so.1", + relative_install_path: "aarch64-linux-gnu/qemu", + defaults: ["cuttlefish_host"], + check_elf_files: false, +} +cc_prebuilt_binary { name: "aarch64_linux_gnu_libdrm.so.2_for_crosvm", srcs: ["aarch64-linux-gnu/bin/libdrm.so.2"], stem: "libdrm.so.2", @@ -42,6 +70,14 @@ cc_prebuilt_binary { check_elf_files: false, } cc_prebuilt_binary { + name: "aarch64_linux_gnu_libepoxy.so.0_binary_for_qemu", + srcs: ["qemu/aarch64-linux-gnu/bin/libepoxy.so.0"], + stem: "libepoxy.so.0", + relative_install_path: "aarch64-linux-gnu/qemu", + defaults: ["cuttlefish_host"], + check_elf_files: false, +} +cc_prebuilt_binary { name: "aarch64_linux_gnu_libepoxy.so.0_for_crosvm", srcs: ["aarch64-linux-gnu/bin/libepoxy.so.0"], stem: "libepoxy.so.0", @@ -58,6 +94,14 @@ cc_prebuilt_binary { check_elf_files: false, } cc_prebuilt_binary { + name: "aarch64_linux_gnu_libgbm.so.1_binary_for_qemu", + srcs: ["qemu/aarch64-linux-gnu/bin/libgbm.so.1"], + stem: "libgbm.so.1", + relative_install_path: "aarch64-linux-gnu/qemu", + defaults: ["cuttlefish_host"], + check_elf_files: false, +} +cc_prebuilt_binary { name: "aarch64_linux_gnu_libgbm.so.1_for_crosvm", srcs: ["aarch64-linux-gnu/bin/libgbm.so.1"], stem: "libgbm.so.1", @@ -66,6 +110,14 @@ cc_prebuilt_binary { check_elf_files: false, } cc_prebuilt_binary { + name: "aarch64_linux_gnu_libgfxstream_backend.so.0_binary_for_qemu", + srcs: ["qemu/aarch64-linux-gnu/bin/libgfxstream_backend.so.0"], + stem: "libgfxstream_backend.so.0", + relative_install_path: "aarch64-linux-gnu/qemu", + defaults: ["cuttlefish_host"], + check_elf_files: false, +} +cc_prebuilt_binary { name: "aarch64_linux_gnu_libgfxstream_backend.so_for_crosvm", srcs: ["aarch64-linux-gnu/bin/libgfxstream_backend.so"], stem: "libgfxstream_backend.so", @@ -82,6 +134,30 @@ cc_prebuilt_binary { check_elf_files: false, } cc_prebuilt_binary { + name: "aarch64_linux_gnu_librutabaga_gfx_ffi.so.0_binary_for_qemu", + srcs: ["qemu/aarch64-linux-gnu/bin/librutabaga_gfx_ffi.so.0"], + stem: "librutabaga_gfx_ffi.so.0", + relative_install_path: "aarch64-linux-gnu/qemu", + defaults: ["cuttlefish_host"], + check_elf_files: false, +} +cc_prebuilt_binary { + name: "aarch64_linux_gnu_libunwind.so.1_binary_for_qemu", + srcs: ["qemu/aarch64-linux-gnu/bin/libunwind.so.1"], + stem: "libunwind.so.1", + relative_install_path: "aarch64-linux-gnu/qemu", + defaults: ["cuttlefish_host"], + check_elf_files: false, +} +cc_prebuilt_binary { + name: "aarch64_linux_gnu_libvirglrenderer.so.1_binary_for_qemu", + srcs: ["qemu/aarch64-linux-gnu/bin/libvirglrenderer.so.1"], + stem: "libvirglrenderer.so.1", + relative_install_path: "aarch64-linux-gnu/qemu", + defaults: ["cuttlefish_host"], + check_elf_files: false, +} +cc_prebuilt_binary { name: "aarch64_linux_gnu_libvirglrenderer.so.1_for_crosvm", srcs: ["aarch64-linux-gnu/bin/libvirglrenderer.so.1"], stem: "libvirglrenderer.so.1", @@ -97,17 +173,55 @@ cc_prebuilt_binary { defaults: ["cuttlefish_host"], check_elf_files: false, } +cc_prebuilt_binary { + name: "aarch64_linux_gnu_libz.so.1_binary_for_qemu", + srcs: ["qemu/aarch64-linux-gnu/bin/libz.so.1"], + stem: "libz.so.1", + relative_install_path: "aarch64-linux-gnu/qemu", + defaults: ["cuttlefish_host"], + check_elf_files: false, +} +cc_prebuilt_binary { + name: "aarch64_linux_gnu_qemu-system-aarch64_binary_for_qemu", + srcs: ["qemu/aarch64-linux-gnu/bin/qemu-system-aarch64"], + stem: "qemu-system-aarch64", + relative_install_path: "aarch64-linux-gnu/qemu", + defaults: ["cuttlefish_host"], + check_elf_files: false, +} +cc_prebuilt_binary { + name: "aarch64_linux_gnu_qemu-system-riscv64_binary_for_qemu", + srcs: ["qemu/aarch64-linux-gnu/bin/qemu-system-riscv64"], + stem: "qemu-system-riscv64", + relative_install_path: "aarch64-linux-gnu/qemu", + defaults: ["cuttlefish_host"], + check_elf_files: false, +} +cc_prebuilt_binary { + name: "aarch64_linux_gnu_qemu-system-x86_64_binary_for_qemu", + srcs: ["qemu/aarch64-linux-gnu/bin/qemu-system-x86_64"], + stem: "qemu-system-x86_64", + relative_install_path: "aarch64-linux-gnu/qemu", + defaults: ["cuttlefish_host"], + check_elf_files: false, +} +prebuilt_usr_share_host { + name: "aarch64_opensbi-riscv64-generic-fw_dynamic.bin_resource_for_qemu", + src: "qemu/aarch64-linux-gnu/usr/share/qemu/opensbi-riscv64-generic-fw_dynamic.bin", + filename: "opensbi-riscv64-generic-fw_dynamic.bin", + sub_dir: "qemu/aarch64-linux-gnu", +} prebuilt_usr_share_host { name: "x86_64_efi-virtio.rom_resource_for_qemu", src: "qemu/x86_64-linux-gnu/usr/share/qemu/efi-virtio.rom", filename: "efi-virtio.rom", - sub_dir: "qemu", + sub_dir: "qemu/x86_64-linux-gnu", } prebuilt_usr_share_host { name: "x86_64_en-us_resource_for_qemu", src: "qemu/x86_64-linux-gnu/usr/share/qemu/keymaps/en-us", filename: "en-us", - sub_dir: "qemu/keymaps", + sub_dir: "qemu/x86_64-linux-gnu/keymaps", } // Note: This is commented out to avoid a conflict with the binary built // from external/crosvm. This should be uncommented out when backporting to @@ -133,6 +247,7 @@ cc_prebuilt_binary { name: "x86_64_linux_gnu_libc++.so.1_binary_for_qemu", srcs: ["qemu/x86_64-linux-gnu/bin/libc++.so.1"], stem: "libc++.so.1", + relative_install_path: "x86_64-linux-gnu/qemu", defaults: ["cuttlefish_host"], check_elf_files: false, } @@ -148,6 +263,7 @@ cc_prebuilt_binary { name: "x86_64_linux_gnu_libepoxy.so.0_binary_for_qemu", srcs: ["qemu/x86_64-linux-gnu/bin/libepoxy.so.0"], stem: "libepoxy.so.0", + relative_install_path: "x86_64-linux-gnu/qemu", defaults: ["cuttlefish_host"], check_elf_files: false, } @@ -171,6 +287,7 @@ cc_prebuilt_binary { name: "x86_64_linux_gnu_libgbm.so.1_binary_for_qemu", srcs: ["qemu/x86_64-linux-gnu/bin/libgbm.so.1"], stem: "libgbm.so.1", + relative_install_path: "x86_64-linux-gnu/qemu", defaults: ["cuttlefish_host"], check_elf_files: false, } @@ -186,6 +303,7 @@ cc_prebuilt_binary { name: "x86_64_linux_gnu_libgfxstream_backend.so.0_binary_for_qemu", srcs: ["qemu/x86_64-linux-gnu/bin/libgfxstream_backend.so.0"], stem: "libgfxstream_backend.so.0", + relative_install_path: "x86_64-linux-gnu/qemu", defaults: ["cuttlefish_host"], check_elf_files: false, } @@ -209,6 +327,7 @@ cc_prebuilt_binary { name: "x86_64_linux_gnu_librutabaga_gfx_ffi.so.0_binary_for_qemu", srcs: ["qemu/x86_64-linux-gnu/bin/librutabaga_gfx_ffi.so.0"], stem: "librutabaga_gfx_ffi.so.0", + relative_install_path: "x86_64-linux-gnu/qemu", defaults: ["cuttlefish_host"], check_elf_files: false, } @@ -216,6 +335,7 @@ cc_prebuilt_binary { name: "x86_64_linux_gnu_libvirglrenderer.so.1_binary_for_qemu", srcs: ["qemu/x86_64-linux-gnu/bin/libvirglrenderer.so.1"], stem: "libvirglrenderer.so.1", + relative_install_path: "x86_64-linux-gnu/qemu", defaults: ["cuttlefish_host"], check_elf_files: false, } @@ -239,6 +359,7 @@ cc_prebuilt_binary { name: "x86_64_linux_gnu_libz.so.1_binary_for_qemu", srcs: ["qemu/x86_64-linux-gnu/bin/libz.so.1"], stem: "libz.so.1", + relative_install_path: "x86_64-linux-gnu/qemu", defaults: ["cuttlefish_host"], check_elf_files: false, } @@ -246,6 +367,7 @@ cc_prebuilt_binary { name: "x86_64_linux_gnu_qemu-system-aarch64_binary_for_qemu", srcs: ["qemu/x86_64-linux-gnu/bin/qemu-system-aarch64"], stem: "qemu-system-aarch64", + relative_install_path: "x86_64-linux-gnu/qemu", defaults: ["cuttlefish_host"], check_elf_files: false, } @@ -253,6 +375,7 @@ cc_prebuilt_binary { name: "x86_64_linux_gnu_qemu-system-riscv64_binary_for_qemu", srcs: ["qemu/x86_64-linux-gnu/bin/qemu-system-riscv64"], stem: "qemu-system-riscv64", + relative_install_path: "x86_64-linux-gnu/qemu", defaults: ["cuttlefish_host"], check_elf_files: false, } @@ -260,6 +383,7 @@ cc_prebuilt_binary { name: "x86_64_linux_gnu_qemu-system-x86_64_binary_for_qemu", srcs: ["qemu/x86_64-linux-gnu/bin/qemu-system-x86_64"], stem: "qemu-system-x86_64", + relative_install_path: "x86_64-linux-gnu/qemu", defaults: ["cuttlefish_host"], check_elf_files: false, } @@ -267,5 +391,5 @@ prebuilt_usr_share_host { name: "x86_64_opensbi-riscv64-generic-fw_dynamic.bin_resource_for_qemu", src: "qemu/x86_64-linux-gnu/usr/share/qemu/opensbi-riscv64-generic-fw_dynamic.bin", filename: "opensbi-riscv64-generic-fw_dynamic.bin", - sub_dir: "qemu", + sub_dir: "qemu/x86_64-linux-gnu", } diff --git a/gen_android_bp.py b/gen_android_bp.py index 7c02aec..57979b7 100644 --- a/gen_android_bp.py +++ b/gen_android_bp.py @@ -46,8 +46,8 @@ def tool_name() -> str: class Architecture(Enum): """Host instruction set architectures.""" - AARCH64 = auto() - X86_64 = auto() + AARCH64 = 'aarch64' + X86_64 = 'x86_64' def dir(self) -> Path: "Returns the relative directory path to the specified architecture." @@ -195,7 +195,7 @@ def crosvm_binaries(arch: Architecture) -> Iterator[Path]: def qemu_binaries(arch: Architecture) -> Iterator[Path]: """Lists qemu binary paths.""" - dir = Path("qemu/x86_64-linux-gnu/bin") + dir = Path(f"qemu/{arch.value}-linux-gnu/bin") yield from dir.glob("*.so.?") yield from dir.glob("qemu-system*") @@ -220,37 +220,39 @@ def gen_main_android_bp_modules() -> Iterator[Module]: ), ) - for binary_path in qemu_binaries(Architecture.X86_64): - yield Module( - "cc_prebuilt_binary", - dict( - name=f"x86_64_linux_gnu_{binary_path.name}_binary_for_qemu", - srcs=[binary_path], - stem=binary_path.name, - defaults=["cuttlefish_host"], - check_elf_files=False, - ), - ) + for arch in list(Architecture): + for binary_path in qemu_binaries(arch): + yield Module( + "cc_prebuilt_binary", + dict( + name=f"{arch.value}_linux_gnu_{binary_path.name}_binary_for_qemu", + srcs=[binary_path], + stem=binary_path.name, + relative_install_path=arch.dir() / "qemu", + defaults=["cuttlefish_host"], + check_elf_files=False, + ), + ) resource_paths = [ - Path("qemu/efi-virtio.rom"), - Path("qemu/keymaps/en-us"), - Path("qemu/opensbi-riscv64-generic-fw_dynamic.bin"), + Path(f"efi-virtio.rom"), + Path(f"keymaps/en-us"), + Path(f"opensbi-riscv64-generic-fw_dynamic.bin"), ] - for resource_path in resource_paths: - base_name = resource_path.name - arch = "x86_64" - sub_dir = resource_path.parent - yield Module( - "prebuilt_usr_share_host", - dict( - name=f"{arch}_{base_name}_resource_for_qemu", - src=f"qemu/x86_64-linux-gnu/usr/share/{resource_path}", - filename=base_name, - sub_dir=sub_dir, - ), - ) + for arch in list(Architecture): + for resource_path in resource_paths: + base_name = resource_path.name + subdir = f"qemu/{arch.value}-linux-gnu" / resource_path.parents[0] + yield Module( + "prebuilt_usr_share_host", + dict( + name=f"{arch.value}_{base_name}_resource_for_qemu", + src=f"qemu/{arch.value}-linux-gnu/usr/share/qemu/{resource_path}", + filename=base_name, + sub_dir=subdir, + ), + ) def gen_main_android_bp_file(android_bp_path: Path, modules: List[Module]): @@ -288,16 +290,17 @@ def gen_main_android_bp_file(android_bp_path: Path, modules: List[Module]): def generate_all_cuttlefish_host_package_android_bp(path: Path, modules: list[Module]): """Updates the list of module in 'device/google/cuttlefish/Android.bp'.""" - qemu_binaries = [m for m in modules if m.name.endswith("_binary_for_qemu")] - qemu_resources = [m for m in modules if m.name.endswith("_resource_for_qemu")] - def update_list(list_name: str, modules:list[Module]): names = sorted(m.parameters["name"] for m in modules) text = f"{list_name} = {value_to_bp(names)}\n" update_generated_section(path, list_name, text) - update_list("qemu_x86_64_linux_gnu_binary", qemu_binaries) - update_list("qemu_x86_64_linux_gnu_resource", qemu_resources) + for arch in list(Architecture): + qemu_binaries = [m for m in modules if m.name.endswith("_binary_for_qemu") and m.name.startswith(arch.value)] + qemu_resources = [m for m in modules if m.name.endswith("_resource_for_qemu") and m.name.startswith(arch.value)] + + update_list(f"qemu_{arch.value}_linux_gnu_binary", qemu_binaries) + update_list(f"qemu_{arch.value}_linux_gnu_resource", qemu_resources) def main(argv): |