1# Rules to generate a zip file that contains google emulator images 2# and other files for distribution 3 4ifneq ($(filter sdk_% gcar_%, $(TARGET_PRODUCT)),) 5target_notice_file_txt := $(TARGET_OUT_INTERMEDIATES)/NOTICE.txt 6 7emulator_img_source_prop := $(TARGET_OUT_INTERMEDIATES)/source.properties 8$(emulator_img_source_prop): $(PRODUCT_SDK_ADDON_SYS_IMG_SOURCE_PROP) 9 $(process_prop_template) 10 11ifeq ($(TARGET_ARCH), x86) 12# a 32bit guest on a 64bit kernel 13EMULATOR_KERNEL_DIST_NAME := kernel-ranchu-64 14else 15EMULATOR_KERNEL_DIST_NAME := kernel-ranchu 16endif # x86 17 18INTERNAL_EMULATOR_PACKAGE_FILES := \ 19 $(target_notice_file_txt) \ 20 $(emulator_img_source_prop) \ 21 $(PRODUCT_OUT)/system/build.prop \ 22 $(PRODUCT_OUT)/VerifiedBootParams.textproto \ 23 $(PRODUCT_OUT)/advancedFeatures.ini \ 24 $(PRODUCT_OUT)/$(EMULATOR_KERNEL_DIST_NAME) \ 25 $(PRODUCT_OUT)/kernel_cmdline.txt \ 26 $(PRODUCT_OUT)/encryptionkey.img \ 27 28ifneq ($(filter $(TARGET_PRODUCT), sdk_goog3_x86 sdk_goog3_x86_64 sdk_goog3_x86_arm),) 29INTERNAL_EMULATOR_PACKAGE_FILES += \ 30 $(HOST_OUT_EXECUTABLES)/dex2oat \ 31 $(HOST_OUT_EXECUTABLES)/dex2oatd 32endif 33 34ifneq ($(filter $(PRODUCT_DEVICE), emulator_car64_arm64 emulator_car64_x86_64),) 35INTERNAL_EMULATOR_PACKAGE_FILES += \ 36 hardware/interfaces/automotive/vehicle/aidl/emu_metadata/android.hardware.automotive.vehicle-types-meta.json 37endif 38 39INTERNAL_EMULATOR_PACKAGE_SOURCE := $(PRODUCT_OUT)/emulator 40INTERNAL_EMULATOR_PACKAGE_SOURCE_DST := $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI) 41INTERNAL_EMULATOR_PACKAGE_TARGET := $(PRODUCT_OUT)/sdk-repo-linux-system-images.zip 42 43INSTALLED_QEMU_SYSTEMIMAGE := $(PRODUCT_OUT)/system-qemu.img 44INSTALLED_QEMU_RAMDISKIMAGE := $(PRODUCT_OUT)/ramdisk-qemu.img 45INSTALLED_QEMU_VENDORIMAGE := $(PRODUCT_OUT)/vendor-qemu.img 46 47PRODUCT_OUT_DATA_FILES := $(PRODUCT_OUT)/userdata.img # also builds $(PRODUCT_OUT)/data 48 49INTERNAL_EMULATOR_PACKAGE_TARGET_DEPENDENCIES := \ 50 $(INTERNAL_EMULATOR_PACKAGE_FILES) \ 51 $(INSTALLED_QEMU_SYSTEMIMAGE) \ 52 $(INSTALLED_QEMU_RAMDISKIMAGE) \ 53 $(INSTALLED_QEMU_VENDORIMAGE) \ 54 $(PRODUCT_OUT_DATA_FILES) \ 55 $(ACP) $(SOONG_ZIP) \ 56 57$(INTERNAL_EMULATOR_PACKAGE_TARGET): $(INTERNAL_EMULATOR_PACKAGE_TARGET_DEPENDENCIES) 58 @echo "Package: $@" 59 $(hide) rm -rf $(INTERNAL_EMULATOR_PACKAGE_SOURCE_DST) 60 $(hide) mkdir -p $(INTERNAL_EMULATOR_PACKAGE_SOURCE_DST) 61 $(hide) $(foreach f,$(INTERNAL_EMULATOR_PACKAGE_FILES), $(ACP) $(f) $(INTERNAL_EMULATOR_PACKAGE_SOURCE_DST)/$(notdir $(f));) 62 $(hide) $(ACP) -r $(INSTALLED_QEMU_SYSTEMIMAGE) $(INTERNAL_EMULATOR_PACKAGE_SOURCE_DST)/system.img 63 $(hide) $(ACP) -r $(INSTALLED_QEMU_RAMDISKIMAGE) $(INTERNAL_EMULATOR_PACKAGE_SOURCE_DST)/ramdisk.img 64 $(hide) $(ACP) -r $(INSTALLED_QEMU_VENDORIMAGE) $(INTERNAL_EMULATOR_PACKAGE_SOURCE_DST)/vendor.img 65 $(hide) $(ACP) -r $(PRODUCT_OUT)/data $(INTERNAL_EMULATOR_PACKAGE_SOURCE_DST) 66 $(hide) $(SOONG_ZIP) -o $@ -C $(INTERNAL_EMULATOR_PACKAGE_SOURCE) -D $(INTERNAL_EMULATOR_PACKAGE_SOURCE_DST) 67 68.PHONY: emu_img_zip 69emu_img_zip: $(INTERNAL_EMULATOR_PACKAGE_TARGET) 70 71# TODO(b/361152997): replace goog_emu_imgs with emu_img_zip and retire this target 72.PHONY: goog_emu_imgs 73goog_emu_imgs: emu_img_zip 74 75# The following rules generate emu_extra_imgs package. It is similar to 76# emu_img_zip, but it does not contain system-qemu.img and vendor-qemu.img. It 77# conatins the necessary data to build the qemu images. The package can be 78# mixed with generic system, kernel, and system_dlkm images. 79EMU_EXTRA_FILES := \ 80 $(INTERNAL_EMULATOR_PACKAGE_FILES) \ 81 $(INSTALLED_QEMU_RAMDISKIMAGE) \ 82 $(PRODUCT_OUT)/system-qemu-config.txt \ 83 $(PRODUCT_OUT)/misc_info.txt \ 84 $(PRODUCT_OUT)/vbmeta.img \ 85 $(foreach p,$(BOARD_SUPER_PARTITION_PARTITION_LIST),$(PRODUCT_OUT)/$(p).img) 86 87EMU_EXTRA_TARGET_DEPENDENCIES := \ 88 $(EMU_EXTRA_FILES) \ 89 $(PRODUCT_OUT_DATA_FILES) 90 91EMU_EXTRA_TARGET := $(PRODUCT_OUT)/emu-extra-linux-system-images.zip 92 93$(EMU_EXTRA_TARGET): PRIVATE_PACKAGE_SRC := \ 94 $(call intermediates-dir-for, PACKAGING, emu_extra_target) 95 96$(EMU_EXTRA_TARGET): $(EMU_EXTRA_TARGET_DEPENDENCIES) $(SOONG_ZIP) 97 @echo "Package: $@" 98 $(hide) rm -rf $@ $(PRIVATE_PACKAGE_SRC) 99 $(hide) mkdir -p $(PRIVATE_PACKAGE_SRC)/$(TARGET_ARCH)/system 100 $(hide) $(ACP) $(PRODUCT_OUT)/system/build.prop $(PRIVATE_PACKAGE_SRC)/$(TARGET_ARCH)/system 101 $(hide) $(foreach f,$(EMU_EXTRA_FILES), $(ACP) $(f) $(PRIVATE_PACKAGE_SRC)/$(TARGET_ARCH)/$(notdir $(f)) &&) true 102 $(hide) $(ACP) -r $(PRODUCT_OUT)/data $(PRIVATE_PACKAGE_SRC)/$(TARGET_ARCH) 103 $(SOONG_ZIP) -o $@ -C $(PRIVATE_PACKAGE_SRC) -D $(PRIVATE_PACKAGE_SRC)/$(TARGET_ARCH) 104 105.PHONY: emu_extra_imgs 106emu_extra_imgs: $(EMU_EXTRA_TARGET) 107 108$(call dist-for-goals-with-filenametag, emu_extra_imgs, $(EMU_EXTRA_TARGET)) 109endif 110