1#
2# Copyright 2019 The Android Open-Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17ifneq ($(filter emulator_% emulator64_% emu64%, $(TARGET_DEVICE)),)
18LOCAL_PATH:= $(call my-dir)
19
20include $(CLEAR_VARS)
21EMU_EXTRA_FILES := \
22        $(PRODUCT_OUT)/system-qemu-config.txt \
23        $(PRODUCT_OUT)/ramdisk-qemu.img \
24        $(PRODUCT_OUT)/misc_info.txt \
25        $(PRODUCT_OUT)/vbmeta.img \
26        $(PRODUCT_OUT)/VerifiedBootParams.textproto \
27        $(foreach p,$(BOARD_SUPER_PARTITION_PARTITION_LIST),$(PRODUCT_OUT)/$(p).img)
28
29ADVANCED_FEATURES_FILENAME := advancedFeatures.ini
30ifneq ($(filter %_minigbm, $(TARGET_PRODUCT)),)
31ADVANCED_FEATURES_FILENAME := advancedFeatures.ini.minigbm
32ADVANCED_FEATURES_FILES :=
33
34endif
35ifeq ($(filter sdk_gphone_%, $(TARGET_PRODUCT)),)
36ifeq ($(TARGET_BUILD_VARIANT),user)
37ADVANCED_FEATURES_FILES += device/generic/goldfish/data/etc/user/$(ADVANCED_FEATURES_FILENAME)
38else
39ADVANCED_FEATURES_FILES += device/generic/goldfish/data/etc/$(ADVANCED_FEATURES_FILENAME)
40endif
41else
42ifeq ($(TARGET_BUILD_VARIANT),user)
43ADVANCED_FEATURES_FILES += device/generic/goldfish/data/etc/google/user/$(ADVANCED_FEATURES_FILENAME)
44else
45ADVANCED_FEATURES_FILES += device/generic/goldfish/data/etc/google/userdebug/$(ADVANCED_FEATURES_FILENAME)
46endif
47endif
48
49EMU_EXTRA_FILES += device/generic/goldfish/data/etc/config.ini
50EMU_EXTRA_FILES += device/generic/goldfish/data/etc/encryptionkey.img
51
52name := emu-extra-linux-system-images
53
54EMU_EXTRA_TARGET := $(PRODUCT_OUT)/$(name).zip
55
56ifeq ($(TARGET_ARCH), arm)
57# This is wrong and should be retired.
58EMULATOR_KERNEL_FILE := prebuilts/qemu-kernel/arm/3.18/kernel-qemu2
59EMULATOR_KERNEL_DIST_NAME := kernel-ranchu
60else
61ifeq ($(TARGET_ARCH), x86)
62# Use 64-bit kernel even for 32-bit Android
63EMULATOR_KERNEL_DIST_NAME := kernel-ranchu-64
64else
65# All other arches are 64-bit
66EMULATOR_KERNEL_DIST_NAME := kernel-ranchu
67endif # x86
68endif # arm
69
70$(EMU_EXTRA_TARGET): PRIVATE_PACKAGE_SRC := \
71        $(call intermediates-dir-for, PACKAGING, emu_extra_target)
72
73$(EMU_EXTRA_TARGET): $(EMU_EXTRA_FILES) $(ADVANCED_FEATURES_FILES) $(EMULATOR_KERNEL_FILE) $(SOONG_ZIP)
74	@echo "Package: $@"
75	rm -rf $@ $(PRIVATE_PACKAGE_SRC)
76	mkdir -p $(PRIVATE_PACKAGE_SRC)/$(TARGET_ARCH)/system
77	$(foreach f,$(EMU_EXTRA_FILES), cp $(f) $(PRIVATE_PACKAGE_SRC)/$(TARGET_ARCH)/$(notdir $(f)) &&) true
78	$(foreach f,$(ADVANCED_FEATURES_FILES), cp $(f) $(PRIVATE_PACKAGE_SRC)/$(TARGET_ARCH)/advancedFeatures.ini &&) true
79	cp $(EMULATOR_KERNEL_FILE) $(PRIVATE_PACKAGE_SRC)/$(TARGET_ARCH)/${EMULATOR_KERNEL_DIST_NAME}
80	cp -r $(PRODUCT_OUT)/data $(PRIVATE_PACKAGE_SRC)/$(TARGET_ARCH)
81	cp $(PRODUCT_OUT)/system/build.prop $(PRIVATE_PACKAGE_SRC)/$(TARGET_ARCH)/system
82	$(SOONG_ZIP) -o $@ -C $(PRIVATE_PACKAGE_SRC) -D $(PRIVATE_PACKAGE_SRC)/$(TARGET_ARCH)
83
84.PHONY: emu_extra_imgs
85emu_extra_imgs: $(EMU_EXTRA_TARGET)
86
87$(call dist-for-goals-with-filenametag, emu_extra_imgs, $(EMU_EXTRA_TARGET))
88
89include $(call all-makefiles-under,$(LOCAL_PATH))
90endif
91