| prebuilt(QT5) |
| prebuilt(MESA) |
| prebuilt(VIRTUALSCENE) |
| prebuilt(E2FSPROGS) |
| prebuilt(MACROS) |
| prebuilt(MSVC) |
| set(WINDOWS_ICON ../images/emulator_icon.rc) |
| android_add_executable( |
| TARGET emulator INSTALL . LICENSE Apache-2.0 |
| SRC # cmake-format: sortable |
| ${WINDOWS_ICON} main-emulator.cpp) |
| target_link_libraries(emulator PRIVATE android-emu) |
| target_compile_definitions( |
| emulator |
| PRIVATE "-DCRASHUPLOAD=${OPTION_CRASHUPLOAD}" |
| "-DANDROID_SDK_TOOLS_REVISION=${OPTION_SDK_TOOLS_REVISION}" |
| "-DANDROID_SDK_TOOLS_BUILD_NUMBER=${OPTION_SDK_TOOLS_BUILD_NUMBER}") |
| |
| # Make sure we have the qemu dependencies available |
| if(BUILDING_FOR_AARCH64) |
| add_dependencies(emulator qemu-system-aarch64 qemu-system-aarch64-headless) |
| elseif(OPTION_MINBUILD) |
| add_dependencies(emulator qemu-system-x86_64 qemu-system-aarch64 |
| qemu-system-x86_64-headless qemu-system-aarch64-headless) |
| else() |
| add_dependencies( |
| emulator |
| qemu-system-i386 |
| qemu-system-x86_64 |
| qemu-system-armel |
| qemu-system-aarch64 |
| qemu-system-armel-headless |
| qemu-system-x86_64-headless |
| qemu-system-aarch64-headless |
| emulator-crash-service) |
| endif() |
| |
| if(WEBRTC) |
| add_dependencies(emulator goldfish-webrtc-bridge) |
| endif() |
| |
| set(PC_BIOS "${ANDROID_QEMU2_TOP_DIR}/pc-bios") |
| set(EMULATOR_BIOS_DEPENDENCIES |
| "${PC_BIOS}/bios.bin>lib/pc-bios/bios.bin" |
| "${PC_BIOS}/vgabios-cirrus.bin>lib/pc-bios/vgabios-cirrus.bin" |
| "${PC_BIOS}/vgabios-stdvga.bin>lib/pc-bios/vgabios-stdvga.bin" |
| "${PC_BIOS}/vgabios-virtio.bin>lib/pc-bios/vgabios-virtio.bin" |
| "${PC_BIOS}/bios-256k.bin>lib/pc-bios/bios-256k.bin" |
| "${PC_BIOS}/efi-virtio.rom>lib/pc-bios/efi-virtio.rom" |
| "${PC_BIOS}/efi-e1000.rom>lib/pc-bios/efi-e1000.rom" |
| "${PC_BIOS}/efi-e1000e.rom>lib/pc-bios/efi-e1000e.rom" |
| "${PC_BIOS}/kvmvapic.bin>lib/pc-bios/kvmvapic.bin" |
| "${PC_BIOS}/linuxboot.bin>lib/pc-bios/linuxboot.bin" |
| "${PC_BIOS}/multiboot.bin>lib/pc-bios/multiboot.bin" |
| "${PC_BIOS}/linuxboot_dma.bin>lib/pc-bios/linuxboot_dma.bin") |
| android_license( |
| TARGET EMULATOR_BIOS_DEPENDENCIES |
| LIBNAME bios |
| URL "https://android.googlesource.com/platform/external/qemu-pc-bios/+/refs/heads/master/" |
| SPDX "LGPL-2.0-or-later" |
| LICENSE |
| "https://android.googlesource.com/platform/external/qemu-pc-bios/+/refs/heads/master/README" |
| LOCAL "${ANDROID_QEMU2_TOP_DIR}/LICENSES/LICENSE.BIOS") |
| |
| set(EMULATOR_KEYMAP_DEPENDENCIES |
| "${ANDROID_QEMU2_TOP_DIR}/pc-bios/keymaps/*>>lib/pc-bios/keymaps") |
| set(CERT_DEPEPENDENCIES |
| "${ANDROID_QEMU2_TOP_DIR}/android/data/ca-bundle.pem>lib/ca-bundle.pem") |
| set(EMULATOR_HW_DEPENDENCIES |
| "${ANDROID_QEMU2_TOP_DIR}/android/android-emu/android/avd/hardware-properties.ini>lib/hardware-properties.ini" |
| ) |
| |
| # Install all the depencies in the right place during build |
| android_target_dependency(emulator all QT5_SHARED_DEPENDENCIES) |
| if(NOT OPTION_MINBUILD) |
| android_target_dependency(emulator all MESA_DEPENDENCIES) |
| endif() |
| android_target_dependency(emulator all EMULATOR_FEATURE_DEPENDENCIES) |
| android_target_dependency(emulator all EMULATOR_KEYMAP_DEPENDENCIES) |
| android_target_dependency(emulator all EMULATOR_BIOS_DEPENDENCIES) |
| android_target_dependency(emulator all SWIFTSHADER_DEPENDENCIES) |
| if(NOT LINUX_AARCH64) |
| android_target_dependency(emulator all ANGLE_DEPENDENCIES) |
| endif() |
| android_target_dependency(emulator all RUNTIME_OS_DEPENDENCIES) |
| android_target_dependency(emulator all E2FSPROGS_DEPENDENCIES) |
| android_target_dependency(emulator all CERT_DEPEPENDENCIES) |
| android_target_dependency(emulator all EMULATOR_HW_DEPENDENCIES) |
| android_target_dependency(emulator all VIRTUAL_SCENE_DEPENDENCIES) |
| android_target_dependency(emulator all EMULATOR_MACROS_DEPENDENCIES) |
| android_target_dependency(emulator all VULKAN_DEPENDENCIES) |
| android_target_dependency(emulator linux TCMALLOC_OS_DEPENDENCIES) |
| android_target_dependency(emulator windows_msvc-x86_64 |
| GLIB2_WINDOWS_DEPENDENCIES) |
| android_target_dependency(emulator windows_msvc-x86_64 |
| ANGLE_RENDERER_DEPENDENCIES) |
| android_target_dependency(emulator darwin-x86_64 |
| ANGLE_RENDERER_DEPENDENCIES) |
| android_target_dependency(emulator windows_msvc-x86_64 MSVC_DEPENDENCIES) |
| # And install them for a release. |
| # TODO(b/141205876): prebuilt executables are losing their execute permission on |
| # installation. Once this issue is fixed, remove all of these |
| # "android_install_dependency_force_exec()" calls. |
| android_install_dependency_force_exec(all QT5_SHARED_DEPENDENCIES) |
| if(NOT OPTION_MINBUILD) |
| android_install_dependency(all MESA_DEPENDENCIES) |
| endif() |
| android_install_dependency(all EMULATOR_FEATURE_DEPENDENCIES) |
| android_install_dependency(all EMULATOR_KEYMAP_DEPENDENCIES) |
| android_install_dependency(all EMULATOR_BIOS_DEPENDENCIES) |
| android_install_dependency(all SWIFTSHADER_DEPENDENCIES) |
| if (NOT LINUX_AARCH64) |
| android_install_dependency(all ANGLE_DEPENDENCIES) |
| endif() |
| # TODO: add DARWIN_AARCH64 support |
| if (DARWIN_X86_64) |
| android_install_dependency(all ANGLE_RENDERER_DEPENDENCIES) |
| endif() |
| |
| android_install_dependency(all RUNTIME_OS_DEPENDENCIES) |
| android_install_dependency_force_exec(all E2FSPROGS_DEPENDENCIES) |
| android_install_dependency(all CERT_DEPEPENDENCIES) |
| android_install_dependency(all EMULATOR_HW_DEPENDENCIES) |
| android_install_dependency(all VIRTUAL_SCENE_DEPENDENCIES) |
| android_install_dependency(all EMULATOR_MACROS_DEPENDENCIES) |
| android_install_dependency(all VULKAN_DEPENDENCIES) |
| android_install_dependency(linux TCMALLOC_OS_DEPENDENCIES) |
| android_install_dependency(windows_msvc-x86_64 GLIB2_WINDOWS_DEPENDENCIES) |
| android_install_dependency(windows_msvc-x86_64 ANGLE_RENDERER_DEPENDENCIES) |
| android_install_dependency(windows_msvc-x86_64 MSVC_DEPENDENCIES) |
| |
| # Text files have no licenses. |
| android_license(TARGET "EMULATOR_KEYMAP_DEPENDENCIES" LIBNAME None SPDX None |
| LICENSE None LOCAL None) |
| android_license(TARGET "CERT_DEPEPENDENCIES" LIBNAME None SPDX None LICENSE None |
| LOCAL None) |
| android_license(TARGET "EMULATOR_HW_DEPENDENCIES" LIBNAME None SPDX None |
| LICENSE None LOCAL None) |
| android_license(TARGET "EMULATOR_FEATURE_DEPENDENCIES" LIBNAME None SPDX None |
| LICENSE None LOCAL None) |
| |
| # Bug b/148548657 android_target_dependency(emulator linux-x86_64 |
| # DARWINN_DEPENDENCIES) android_install_dependency(linux-x86_64 |
| # DARWINN_DEPENDENCIES) These are usually nops, but some code generators will |
| # not automatically binplace these (Xcode!) |
| android_copy_shared_lib(emulator OpenglRender OpenglRender) |
| |
| # And set the os specific properties |
| android_target_properties(emulator all "${RUNTIME_OS_PROPERTIES}") |
| |
| # Install files we need. |
| install(FILES ${ANDROID_QEMU2_TOP_DIR}/android-info.txt DESTINATION .) |
| install(FILES ${ANDROID_QEMU2_TOP_DIR}/LICENSES/LICENSE.APACHE2 DESTINATION . |
| RENAME LICENSE) |