aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrashanth Swaminathan <prashanthsw@google.com>2024-04-23 15:01:36 -0700
committerPrashanth Swaminathan <prashanthsw@google.com>2024-04-23 15:01:36 -0700
commitb6f0e4a58042e1f98323e98b805a49c25d38af1c (patch)
tree41aaf1dafaec3d4dd75a1f07b78a7d84b44f4110
parenta91652ebe9312dd9199b42e03a9f9a7bf46bd4b1 (diff)
downloadcuttlefish_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.bp130
-rw-r--r--gen_android_bp.py73
2 files changed, 165 insertions, 38 deletions
diff --git a/Android.bp b/Android.bp
index 115b7a5..6cd38f3 100644
--- a/Android.bp
+++ b/Android.bp
@@ -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):