• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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