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	$(process_prop_template)
10
11INTERNAL_EMULATOR_PACKAGE_FILES := \
12        $(target_notice_file_txt) \
13        $(emulator_img_source_prop) \
14        $(PRODUCT_OUT)/system/build.prop \
15
16ifneq ($(filter $(TARGET_PRODUCT), sdk_goog3_x86 sdk_goog3_x86_64 sdk_goog3_x86_arm),)
17    INTERNAL_EMULATOR_PACKAGE_FILES += \
18        $(HOST_OUT_EXECUTABLES)/dex2oat \
19        $(HOST_OUT_EXECUTABLES)/dex2oatd
20endif
21
22ifeq ($(BUILD_QEMU_IMAGES),true)
23ifeq ($(BOARD_AVB_ENABLE),true)
24INTERNAL_EMULATOR_PACKAGE_FILES += \
25        $(PRODUCT_OUT)/VerifiedBootParams.textproto
26endif
27endif
28
29INTERNAL_EMULATOR_PACKAGE_SOURCE := $(PRODUCT_OUT)/emulator
30
31INSTALLED_QEMU_SYSTEMIMAGE := $(PRODUCT_OUT)/system-qemu.img
32FINAL_INSTALLED_QEMU_SYSTEMIMAGE := $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI)/system.img
33$(eval $(call copy-one-file,$(INSTALLED_QEMU_SYSTEMIMAGE),$(FINAL_INSTALLED_QEMU_SYSTEMIMAGE)))
34
35INSTALLED_QEMU_RAMDISKIMAGE := $(PRODUCT_OUT)/ramdisk-qemu.img
36FINAL_INSTALLED_QEMU_RAMDISKIMAGE := $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI)/ramdisk.img
37$(eval $(call copy-one-file,$(INSTALLED_QEMU_RAMDISKIMAGE),$(FINAL_INSTALLED_QEMU_RAMDISKIMAGE)))
38
39INSTALLED_QEMU_VENDORIMAGE := $(PRODUCT_OUT)/vendor-qemu.img
40FINAL_INSTALLED_QEMU_VENDORIMAGE := $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI)/vendor.img
41$(eval $(call copy-one-file,$(INSTALLED_QEMU_VENDORIMAGE),$(FINAL_INSTALLED_QEMU_VENDORIMAGE)))
42
43
44INTERNAL_EMULATOR_PACKAGE_FILES += device/generic/goldfish/data/etc/encryptionkey.img
45
46ADVANCED_FEATURES_FILENAME := advancedFeatures.ini
47ifneq ($(filter %_minigbm, $(TARGET_PRODUCT)),)
48ADVANCED_FEATURES_FILENAME := advancedFeatures.ini.minigbm
49endif
50
51# Experimental Feature (Uwb | b/237088064)
52ifneq ($(filter %_uwb, $(TARGET_PRODUCT)),)
53ADVANCED_FEATURES_FILENAME := advancedFeatures.ini.uwb
54endif
55
56ifneq ($(filter sdk_tablet% sdk_gtablet%, $(TARGET_PRODUCT)),)
57ADVANCED_FEATURES_FILENAME := advancedFeatures.ini.tablet
58endif
59
60ADVANCED_FEATURES_FILES :=
61ifeq ($(TARGET_BUILD_VARIANT),user)
62ADVANCED_FEATURES_FILES += device/generic/goldfish/data/etc/google/user/$(ADVANCED_FEATURES_FILENAME)
63else
64ADVANCED_FEATURES_FILES += device/generic/goldfish/data/etc/google/userdebug/$(ADVANCED_FEATURES_FILENAME)
65endif
66
67ifneq ($(filter $(PRODUCT_DEVICE), emulator_car64_arm64 emulator_car64_x86_64),)
68INTERNAL_EMULATOR_PACKAGE_FILES += hardware/interfaces/automotive/vehicle/aidl/emu_metadata/android.hardware.automotive.vehicle-types-meta.json
69endif
70
71name := sdk-repo-linux-system-images
72
73
74INTERNAL_EMULATOR_PACKAGE_TARGET := $(PRODUCT_OUT)/$(name).zip
75
76ifeq ($(TARGET_ARCH), arm)
77# This is wrong and should be retired.
78EMULATOR_KERNEL_FILE := prebuilts/qemu-kernel/arm/3.18/kernel-qemu2
79EMULATOR_KERNEL_DIST_NAME := kernel-ranchu
80else
81ifeq ($(TARGET_ARCH), x86)
82# Use 64-bit kernel even for 32-bit Android
83EMULATOR_KERNEL_DIST_NAME := kernel-ranchu-64
84else
85# All other arches are 64-bit
86EMULATOR_KERNEL_DIST_NAME := kernel-ranchu
87endif # x86
88endif # arm
89
90$(INTERNAL_EMULATOR_PACKAGE_TARGET): $(INTERNAL_EMULATOR_PACKAGE_FILES) $(FINAL_INSTALLED_QEMU_SYSTEMIMAGE) $(FINAL_INSTALLED_QEMU_RAMDISKIMAGE) $(FINAL_INSTALLED_QEMU_VENDORIMAGE) $(EMULATOR_KERNEL_FILE) $(ADVANCED_FEATURES_FILES)
91	@echo "Package: $@"
92	$(hide) mkdir -p $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI)
93	$(hide) $(foreach f,$(INTERNAL_EMULATOR_PACKAGE_FILES), $(ACP) $(f) $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI)/$(notdir $(f));)
94	$(hide) $(foreach f,$(ADVANCED_FEATURES_FILES), $(ACP) $(f) $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI)/advancedFeatures.ini;)
95	$(hide) ($(ACP) $(EMULATOR_KERNEL_FILE) $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI)/${EMULATOR_KERNEL_DIST_NAME})
96	$(hide) $(ACP) -r $(PRODUCT_OUT)/data $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI)
97	$(hide) $(SOONG_ZIP) -o $@ -C $(INTERNAL_EMULATOR_PACKAGE_SOURCE) -D $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/$(TARGET_CPU_ABI)
98
99.PHONY: emu_img_zip
100emu_img_zip: $(INTERNAL_EMULATOR_PACKAGE_TARGET)
101
102INTERNAL_EMULATOR_KERNEL_TARGET := $(PRODUCT_OUT)/emu-gki-$(TARGET_KERNEL_USE).zip
103INTERNAL_GKI_SOURCE := $(INTERNAL_EMULATOR_PACKAGE_SOURCE)/GKI-$(TARGET_KERNEL_USE)
104$(INTERNAL_EMULATOR_KERNEL_TARGET): $(INSTALLED_QEMU_RAMDISKIMAGE) $(EMULATOR_KERNEL_FILE)
105	@echo "Package: $@"
106	$(hide) mkdir -p $(INTERNAL_GKI_SOURCE)
107	$(hide) ($(ACP) $(EMULATOR_KERNEL_FILE) $(INTERNAL_GKI_SOURCE)/${EMULATOR_KERNEL_DIST_NAME})
108	$(hide) ($(ACP) $(INSTALLED_QEMU_RAMDISKIMAGE) $(INTERNAL_GKI_SOURCE)/ramdisk.img)
109	$(hide) $(SOONG_ZIP) -o $@ -C $(INTERNAL_GKI_SOURCE) -D $(INTERNAL_GKI_SOURCE)
110
111.PHONY: emu_kernel_zip
112emu_kernel_zip: $(INTERNAL_EMULATOR_KERNEL_TARGET)
113
114$(call dist-for-goals-with-filenametag, emu_kernel_zip, $(INTERNAL_EMULATOR_KERNEL_TARGET))
115endif
116endif
117