1# Rules to generate a zip file that contains google emulator images 2# and other files for distribution 3 4ifeq ($(filter $(TARGET_PRODUCT), qemu_trusty_arm64),) 5ifeq ($(filter $(MAKECMDGOALS), sdk win_sdk sdk_repo goog_emu_imgs),) 6emulator_img_source_prop := $(TARGET_OUT_INTERMEDIATES)/source.properties 7target_notice_file_txt := $(TARGET_OUT_INTERMEDIATES)/NOTICE.txt 8$(emulator_img_source_prop): $(PRODUCT_SDK_ADDON_SYS_IMG_SOURCE_PROP) 9 @echo Generate $@ 10 $(hide) mkdir -p $(dir $@) 11 $(hide) sed \ 12 -e 's/$${PLATFORM_VERSION}/$(PLATFORM_VERSION)/' \ 13 -e 's/$${PLATFORM_SDK_VERSION}/$(PLATFORM_SDK_VERSION)/' \ 14 -e 's/$${PLATFORM_VERSION_CODENAME}/$(subst REL,,$(PLATFORM_VERSION_CODENAME))/' \ 15 -e 's/$${TARGET_ARCH}/$(TARGET_ARCH)/' \ 16 -e 's/$${TARGET_CPU_ABI}/$(TARGET_CPU_ABI)/' \ 17 -e 's/$${SYSTEM_IMAGE_TAG_ID}/$(SYSTEM_IMAGE_TAG_ID)/' \ 18 -e 's/$${SYSTEM_IMAGE_TAG_DISPLAY}/$(SYSTEM_IMAGE_TAG_DISPLAY)/' \ 19 $< > $@ && sed -i -e '/^AndroidVersion.CodeName=\s*$$/d' $@ 20 21INTERNAL_EMULATOR_PACKAGE_FILES := \ 22 $(target_notice_file_txt) \ 23 $(emulator_img_source_prop) \ 24 $(PRODUCT_OUT)/system/build.prop \ 25 26ifneq ($(filter $(TARGET_PRODUCT), sdk_goog3_x86 sdk_goog3_x86_64 sdk_goog3_x86_arm),) 27 INTERNAL_EMULATOR_PACKAGE_FILES += \ 28 $(HOST_OUT_EXECUTABLES)/dex2oats \ 29 $(HOST_OUT_EXECUTABLES)/dex2oatds 30endif 31 32ifeq ($(BUILD_QEMU_IMAGES),true) 33ifeq ($(BOARD_AVB_ENABLE),true) 34INTERNAL_EMULATOR_PACKAGE_FILES += \ 35 $(PRODUCT_OUT)/VerifiedBootParams.textproto 36endif 37endif 38 39INTERNAL_EMULATOR_PACKAGE_SOURCE := $(PRODUCT_OUT)/emulator 40 41INSTALLED_QEMU_SYSTEMIMAGE := $(PRODUCT_OUT)/system-qemu.img 42FINAL_INSTALLED_QEMU_SYSTEMIMAGE := $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI)/system.img 43$(eval $(call copy-one-file,$(INSTALLED_QEMU_SYSTEMIMAGE),$(FINAL_INSTALLED_QEMU_SYSTEMIMAGE))) 44 45INSTALLED_QEMU_RAMDISKIMAGE := $(PRODUCT_OUT)/ramdisk-qemu.img 46FINAL_INSTALLED_QEMU_RAMDISKIMAGE := $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI)/ramdisk.img 47$(eval $(call copy-one-file,$(INSTALLED_QEMU_RAMDISKIMAGE),$(FINAL_INSTALLED_QEMU_RAMDISKIMAGE))) 48 49INSTALLED_QEMU_VENDORIMAGE := $(PRODUCT_OUT)/vendor-qemu.img 50FINAL_INSTALLED_QEMU_VENDORIMAGE := $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI)/vendor.img 51$(eval $(call copy-one-file,$(INSTALLED_QEMU_VENDORIMAGE),$(FINAL_INSTALLED_QEMU_VENDORIMAGE))) 52 53 54INTERNAL_EMULATOR_PACKAGE_FILES += device/generic/goldfish/data/etc/encryptionkey.img 55INTERNAL_EMULATOR_PACKAGE_FILES += device/generic/goldfish/data/etc/userdata.img 56 57INTERNAL_EMULATOR_FEATURE_DIR := . 58ifneq ($(filter sdk_phone64_% sdk_gphone64_%, $(TARGET_PRODUCT)),) 59INTERNAL_EMULATOR_FEATURE_DIR := 64bit 60endif 61 62ifeq ($(TARGET_BUILD_VARIANT),user) 63INTERNAL_EMULATOR_PACKAGE_FILES += device/generic/goldfish/data/etc/google/$(INTERNAL_EMULATOR_FEATURE_DIR)/user/advancedFeatures.ini 64ifeq ($(TARGET_ARCH),arm64) 65INTERNAL_EMULATOR_PACKAGE_FILES += device/generic/goldfish/data/etc/google/$(INTERNAL_EMULATOR_FEATURE_DIR)/user/arm64/advancedFeatures.ini 66endif 67else 68INTERNAL_EMULATOR_PACKAGE_FILES += device/generic/goldfish/data/etc/google/$(INTERNAL_EMULATOR_FEATURE_DIR)/userdebug/advancedFeatures.ini 69ifeq ($(TARGET_ARCH),arm64) 70INTERNAL_EMULATOR_PACKAGE_FILES += device/generic/goldfish/data/etc/google/$(INTERNAL_EMULATOR_FEATURE_DIR)/userdebug/arm64/advancedFeatures.ini 71endif 72endif 73 74 75 76name := sdk-repo-linux-system-images-$(FILE_NAME_TAG) 77 78 79INTERNAL_EMULATOR_PACKAGE_TARGET := $(PRODUCT_OUT)/$(name).zip 80 81ifeq ($(TARGET_ARCH), x86) 82EMULATOR_KERNEL_ARCH := x86_64 83EMULATOR_KERNEL_DIST_NAME := kernel-ranchu-64 84else 85ifeq ($(TARGET_ARCH), x86_64) 86EMULATOR_KERNEL_ARCH := $(TARGET_ARCH) 87EMULATOR_KERNEL_DIST_NAME := kernel-ranchu 88else 89ifeq ($(TARGET_ARCH), arm64) 90EMULATOR_KERNEL_ARCH := $(TARGET_ARCH) 91EMULATOR_KERNEL_DIST_NAME := kernel-ranchu 92else 93ifeq ($(TARGET_ARCH), arm) 94EMULATOR_KERNEL_ARCH := $(TARGET_ARCH) 95EMULATOR_KERNEL_DIST_NAME := kernel-ranchu 96EMULATOR_KERNEL_VERSION := 3.18 97EMULATOR_KERNEL_FILE := prebuilts/qemu-kernel/$(EMULATOR_KERNEL_ARCH)/$(EMULATOR_KERNEL_VERSION)/kernel-qemu2 98else 99$(error unsupported arch: $(TARGET_ARCH)) 100endif # arm 101endif # arm64 102endif # x86_64 103endif # x86 104 105$(INTERNAL_EMULATOR_PACKAGE_TARGET): $(INTERNAL_EMULATOR_PACKAGE_FILES) $(FINAL_INSTALLED_QEMU_SYSTEMIMAGE) $(FINAL_INSTALLED_QEMU_RAMDISKIMAGE) $(FINAL_INSTALLED_QEMU_VENDORIMAGE) $(EMULATOR_KERNEL_FILE) 106 @echo "Package: $@" 107 $(hide) mkdir -p $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI) 108 $(hide) $(foreach f,$(INTERNAL_EMULATOR_PACKAGE_FILES), $(ACP) $(f) $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI)/$(notdir $(f));) 109 $(hide) ($(ACP) $(EMULATOR_KERNEL_FILE) $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI)/${EMULATOR_KERNEL_DIST_NAME}) 110 $(hide) $(ACP) -r $(PRODUCT_OUT)/data $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI) 111 $(hide) $(SOONG_ZIP) -o $@ -C $(INTERNAL_EMULATOR_PACKAGE_SOURCE) -D $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI) 112 113.PHONY: emu_img_zip 114emu_img_zip: $(INTERNAL_EMULATOR_PACKAGE_TARGET) 115 116INTERNAL_EMULATOR_KERNEL_TARGET := $(PRODUCT_OUT)/emu-gki-$(TARGET_KERNEL_USE)-$(FILE_NAME_TAG).zip 117INTERNAL_GKI_SOURCE := $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/GKI-$(TARGET_KERNEL_USE) 118$(INTERNAL_EMULATOR_KERNEL_TARGET): $(INSTALLED_QEMU_RAMDISKIMAGE) $(EMULATOR_KERNEL_FILE) 119 @echo "Package: $@" 120 $(hide) mkdir -p $(INTERNAL_GKI_SOURCE) 121 $(hide) ($(ACP) $(EMULATOR_KERNEL_FILE) $(INTERNAL_GKI_SOURCE)/${EMULATOR_KERNEL_DIST_NAME}) 122 $(hide) ($(ACP) $(INSTALLED_QEMU_RAMDISKIMAGE) $(INTERNAL_GKI_SOURCE)/ramdisk.img) 123 $(hide) $(SOONG_ZIP) -o $@ -C $(INTERNAL_GKI_SOURCE) -D $(INTERNAL_GKI_SOURCE) 124 125.PHONY: emu_kernel_zip 126emu_kernel_zip: $(INTERNAL_EMULATOR_KERNEL_TARGET) 127 128$(call dist-for-goals, emu_kernel_zip, $(INTERNAL_EMULATOR_KERNEL_TARGET)) 129endif 130endif 131