blob: ec448b83a68cdad1ac1b60927b64687ecb5da90f [file] [log] [blame]
Bharathd27ca202022-10-05 09:11:30 +05301# This makefile is used to generate extra images for QCOM targets
2# persist, device tree & NAND images required for different QCOM targets.
3
4# These variables are required to make sure that the required
5# files/targets are available before generating NAND images.
6# This file is included from device/qcom/<TARGET>/AndroidBoard.mk
7# and gets parsed before build/core/Makefile, which has these
8# variables defined. build/core/Makefile will overwrite these
9# variables again.
10ifneq ($(strip $(TARGET_NO_KERNEL)),true)
11
12ifneq ($(strip $(BOARD_KERNEL_BINARIES)),)
13 BUILT_BOOTIMAGE_TARGET := $(foreach k,$(subst kernel,boot,$(BOARD_KERNEL_BINARIES)), $(PRODUCT_OUT)/$(k).img)
14else
15 BUILT_BOOTIMAGE_TARGET := $(PRODUCT_OUT)/boot.img
16endif
17
18INSTALLED_BOOTIMAGE_TARGET := $(BUILT_BOOTIMAGE_TARGET)
19
20ifeq ($(PRODUCT_BUILD_RAMDISK_IMAGE),true)
21INSTALLED_RAMDISK_TARGET := $(PRODUCT_OUT)/ramdisk.img
22endif
23ifeq ($(PRODUCT_BUILD_SYSTEM_IMAGE),true)
24INSTALLED_SYSTEMIMAGE := $(PRODUCT_OUT)/system.img
25endif
26ifeq ($(PRODUCT_BUILD_USERDATA_IMAGE),true)
27INSTALLED_USERDATAIMAGE_TARGET := $(PRODUCT_OUT)/userdata.img
28endif
29ifneq ($(TARGET_NO_RECOVERY), true)
30INSTALLED_RECOVERYIMAGE_TARGET := $(PRODUCT_OUT)/recovery.img
31else
32INSTALLED_RECOVERYIMAGE_TARGET :=
33endif
34recovery_ramdisk := $(PRODUCT_OUT)/ramdisk-recovery.img
35INSTALLED_USBIMAGE_TARGET := $(PRODUCT_OUT)/usbdisk.img
36endif
37
38#----------------------------------------------------------------------
39# Generate persist image (persist.img)
40#----------------------------------------------------------------------
41ifneq ($(strip $(BOARD_PERSISTIMAGE_PARTITION_SIZE)),)
42ifneq ($(strip $(TARGET_NO_KERNEL)),true)
43
44TARGET_OUT_PERSIST := $(PRODUCT_OUT)/persist
45
46INTERNAL_PERSISTIMAGE_FILES := \
47 $(filter $(TARGET_OUT_PERSIST)/%,$(ALL_DEFAULT_INSTALLED_MODULES))
48
49INSTALLED_PERSISTIMAGE_TARGET := $(PRODUCT_OUT)/persist.img
50
51define build-persistimage-target
52 $(call pretty,"Target persist fs image: $(INSTALLED_PERSISTIMAGE_TARGET)")
53 @mkdir -p $(TARGET_OUT_PERSIST)
54 $(hide) PATH=$(HOST_OUT_EXECUTABLES):$${PATH} $(MKEXTUSERIMG) $(TARGET_OUT_PERSIST) $@ ext4 persist $(BOARD_PERSISTIMAGE_PARTITION_SIZE)
55 $(hide) chmod a+r $@
56 $(hide) $(call assert-max-image-size,$@,$(BOARD_PERSISTIMAGE_PARTITION_SIZE))
57endef
58
Bharathfd204502022-10-05 09:12:11 +053059ifneq ($(strip $(FP3_SKIP_PERSIST_IMG)),true)
Bharathd27ca202022-10-05 09:11:30 +053060$(INSTALLED_PERSISTIMAGE_TARGET): $(MKEXTUSERIMG) $(MAKE_EXT4FS) $(INTERNAL_PERSISTIMAGE_FILES)
61 $(build-persistimage-target)
62
63ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_PERSISTIMAGE_TARGET)
64ALL_MODULES.$(LOCAL_MODULE).INSTALLED += $(INSTALLED_PERSISTIMAGE_TARGET)
65droidcore: $(INSTALLED_PERSISTIMAGE_TARGET)
66
67.PHONY: persistimage
68persistimage: $(INSTALLED_PERSISTIMAGE_TARGET)
69
Bharathfd204502022-10-05 09:12:11 +053070endif #end of FP3_SKIP_PERSIST_IMG
Bharathd27ca202022-10-05 09:11:30 +053071endif
72endif
73
74#----------------------------------------------------------------------
75# Generate metadata image (metadata.img)
76# As of now this in empty at build and data is runtime generated only,
77# so create an empty fs
78#----------------------------------------------------------------------
79ifneq ($(strip $(BOARD_METADATAIMAGE_PARTITION_SIZE)),)
80
81TARGET_OUT_METADATA := $(PRODUCT_OUT)/metadata
82
83INSTALLED_METADATAIMAGE_TARGET := $(PRODUCT_OUT)/metadata.img
84
85define build-metadataimage-target
86 $(call pretty,"Target metadata fs image: $(INSTALLED_METADATAIMAGE_TARGET)")
87 @mkdir -p $(TARGET_OUT_METADATA)
88 $(hide)PATH=$(HOST_OUT_EXECUTABLES):$${PATH} $(MKEXTUSERIMG) -s $(TARGET_OUT_METADATA) $@ ext4 metadata $(BOARD_METADATAIMAGE_PARTITION_SIZE)
89 $(hide) chmod a+r $@
90endef
91
92$(INSTALLED_METADATAIMAGE_TARGET): $(MKEXTUSERIMG) $(MAKE_EXT4FS)
93 $(build-metadataimage-target)
94
95ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_METADATAIMAGE_TARGET)
96ALL_MODULES.$(LOCAL_MODULE).INSTALLED += $(INSTALLED_METADATAIMAGE_TARGET)
97droidcore: $(INSTALLED_METADATAIMAGE_TARGET)
98
99.PHONY: metadataimage
100metadataimage: $(INSTALLED_METADATAIMAGE_TARGET)
101
102endif
103
104#----------------------------------------------------------------------
105# Generate device tree overlay image (dtbo.img)
106#----------------------------------------------------------------------
107ifneq ($(strip $(TARGET_NO_KERNEL)),true)
108ifeq ($(strip $(BOARD_KERNEL_SEPARATED_DTBO)),true)
109
110MKDTIMG := $(HOST_OUT_EXECUTABLES)/mkdtimg$(HOST_EXECUTABLE_SUFFIX)
111
112# Most specific paths must come first in possible_dtbo_dirs
113possible_dtbo_dirs = $(KERNEL_OUT)/arch/$(TARGET_KERNEL_ARCH)/boot/dts $(KERNEL_OUT)/arch/arm/boot/dts
114$(shell mkdir -p $(possible_dtbo_dirs))
115dtbo_dir = $(firstword $(wildcard $(possible_dtbo_dirs)))
116dtbo_objs = $(shell find $(dtbo_dir) -name \*.dtbo)
117
118define build-dtboimage-target
119 $(call pretty,"Target dtbo image: $(BOARD_PREBUILT_DTBOIMAGE)")
120 $(hide) $(MKDTIMG) create $@ --page_size=$(BOARD_KERNEL_PAGESIZE) $(dtbo_objs)
121 $(hide) chmod a+r $@
122endef
123
124# Definition of BOARD_PREBUILT_DTBOIMAGE is in AndroidBoardCommon.mk
125# so as to ensure it is defined well in time to set the dependencies on
126# BOARD_PREBUILT_DTBOIMAGE
127$(BOARD_PREBUILT_DTBOIMAGE): $(MKDTIMG) $(INSTALLED_KERNEL_TARGET)
128 $(build-dtboimage-target)
129
130endif
131endif
132
133#----------------------------------------------------------------------
134# Generate device tree image (dt.img)
135#----------------------------------------------------------------------
136ifneq ($(strip $(TARGET_NO_KERNEL)),true)
137ifeq ($(strip $(BOARD_KERNEL_SEPARATED_DT)),true)
138ifeq ($(strip $(BUILD_TINY_ANDROID)),true)
139include device/qcom/common/dtbtool/Android.mk
140endif
141
142DTBTOOL := $(HOST_OUT_EXECUTABLES)/dtbTool$(HOST_EXECUTABLE_SUFFIX)
143
144INSTALLED_DTIMAGE_TARGET := $(PRODUCT_OUT)/dt.img
145
146# Most specific paths must come first in possible_dtb_dirs
147possible_dtb_dirs = $(KERNEL_OUT)/arch/$(TARGET_KERNEL_ARCH)/boot/dts/qcom/ $(KERNEL_OUT)/arch/arm/boot/dts/qcom/ $(KERNEL_OUT)/arch/$(TARGET_KERNEL_ARCH)/boot/dts/ $(KERNEL_OUT)/arch/arm/boot/dts/ $(KERNEL_OUT)/arch/arm/boot/
148dtb_dir = $(firstword $(wildcard $(possible_dtb_dirs)))
149
150define build-dtimage-target
151 $(call pretty,"Target dt image: $(INSTALLED_DTIMAGE_TARGET)")
152 $(hide) $(DTBTOOL) -o $@ -s $(BOARD_KERNEL_PAGESIZE) -p $(KERNEL_OUT)/scripts/dtc/ $(dtb_dir)
153 $(hide) chmod a+r $@
154endef
155
156$(INSTALLED_DTIMAGE_TARGET): $(DTBTOOL) $(INSTALLED_KERNEL_TARGET)
157 $(build-dtimage-target)
158
159ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_DTIMAGE_TARGET)
160ALL_MODULES.$(LOCAL_MODULE).INSTALLED += $(INSTALLED_DTIMAGE_TARGET)
161endif
162endif
163
164#---------------------------------------------------------------------
165# Generate usbdisk.img FAT32 image
166# Please NOTICE: the valid max size of usbdisk.bin is 10GB
167#---------------------------------------------------------------------
168ifneq ($(strip $(BOARD_USBIMAGE_PARTITION_SIZE_KB)),)
169define build-usbimage-target
170 $(hide) mkfs.vfat -n "Internal SD" -F 32 -C $(PRODUCT_OUT)/usbdisk.tmp $(BOARD_USBIMAGE_PARTITION_SIZE_KB)
171 $(hide) dd if=$(PRODUCT_OUT)/usbdisk.tmp of=$(INSTALLED_USBIMAGE_TARGET) bs=1024 count=20480
172 $(hide) rm -f $(PRODUCT_OUT)/usbdisk.tmp
173endef
174
175$(INSTALLED_USBIMAGE_TARGET):
176 $(build-usbimage-target)
177ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_USBIMAGE_TARGET)
178ALL_MODULES.$(LOCAL_MODULE).INSTALLED += $(INSTALLED_DTIMAGE_TARGET)
179endif
180
181#####################################################################################################
182# support for small user data image
183
184ifneq ($(strip $(BOARD_SMALL_USERDATAIMAGE_PARTITION_SIZE)),)
185# Don't build userdata.img if it's extfs but no partition size
186skip_userdata.img :=
187ifdef INTERNAL_USERIMAGES_EXT_VARIANT
188ifndef BOARD_USERDATAIMAGE_PARTITION_SIZE
189skip_userdata.img := true
190endif
191endif
192
193ifneq ($(skip_userdata.img),true)
194
195INSTALLED_SMALL_USERDATAIMAGE_TARGET := $(PRODUCT_OUT)/userdata_small.img
196
197define build-small-userdataimage
198 @echo "target small userdata image"
199 $(hide) mkdir -p $(1)
200 $(hide) $(MKEXTUSERIMG) -s $(TARGET_OUT_DATA) $(2) ext4 data $(BOARD_SMALL_USERDATAIMAGE_PARTITION_SIZE)
201 $(hide) chmod a+r $@
202 $(hide) $(call assert-max-image-size,$@,$(BOARD_SMALL_USERDATAIMAGE_PARTITION_SIZE))
203endef
204
205
206$(INSTALLED_SMALL_USERDATAIMAGE_TARGET): $(MKEXTUSERIMG) $(MAKE_EXT4FS) $(INSTALLED_USERDATAIMAGE_TARGET)
207 $(hide) $(call build-small-userdataimage,$(PRODUCT_OUT),$(INSTALLED_SMALL_USERDATAIMAGE_TARGET))
208
209ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_SMALL_USERDATAIMAGE_TARGET)
210ALL_MODULES.$(LOCAL_MODULE).INSTALLED += $(INSTALLED_SMALL_USERDATAIMAGE_TARGET)
211
212endif
213
214endif
215
216###################################################################################################
217
Bharathd27ca202022-10-05 09:11:30 +0530218.PHONY: kernel
219kernel: $(INSTALLED_BOOTIMAGE_TARGET) $(INSTALLED_DTBOIMAGE_TARGET)
220
221.PHONY: dtboimage
222dtboimage: $(INSTALLED_DTBOIMAGE_TARGET)
223
224.PHONY: recoveryimage
225recoveryimage: $(INSTALLED_RECOVERYIMAGE_TARGET)
226
227.PHONY: kernelclean
228kernelclean:
229 $(hide) make -C $(TARGET_KERNEL_SOURCE) O=$(KERNEL_TO_BUILD_ROOT_OFFSET)$(PRODUCT_OUT)/obj/KERNEL_OBJ/ ARCH=$(TARGET_ARCH) CROSS_COMPILE=arm-eabi- clean
230 $(hide) make -C $(TARGET_KERNEL_SOURCE) O=$(KERNEL_TO_BUILD_ROOT_OFFSET)$(PRODUCT_OUT)/obj/KERNEL_OBJ/ ARCH=$(TARGET_ARCH) CROSS_COMPILE=arm-eabi- mrproper
231 $(hide) make -C $(TARGET_KERNEL_SOURCE) O=$(KERNEL_TO_BUILD_ROOT_OFFSET)$(PRODUCT_OUT)/obj/KERNEL_OBJ/ ARCH=$(TARGET_ARCH) CROSS_COMPILE=arm-eabi- distclean
232 $(hide) if [ -f "$(INSTALLED_BOOTIMAGE_TARGET)" ]; then rm $(INSTALLED_BOOTIMAGE_TARGET); fi
233 $(hide) if [ -f "$(INSTALLED_BOOTIMAGE_TARGET).nonsecure" ]; then rm $(INSTALLED_BOOTIMAGE_TARGET).nonsecure; fi
234 $(hide) if [ -f "$(PRODUCT_OUT)/kernel" ]; then rm $(PRODUCT_OUT)/kernel; fi
235 @echo "kernel cleanup done"
236
Bharathd27ca202022-10-05 09:11:30 +0530237define board-vendorkernel-ota
238 $(call pretty,"Processing following kernel modules for vendor: $(BOARD_VENDOR_KERNEL_MODULES)")
239 $(if $(BOARD_VENDOR_KERNEL_MODULES), \
240 $(call build-image-kernel-modules,$(BOARD_VENDOR_KERNEL_MODULES),$(TARGET_OUT_VENDOR),vendor/,$(call intermediates-dir-for,PACKAGING,depmod_vendor)))
241endef
242
243# Adding support for vendor module for OTA
244ifeq ($(ENABLE_VENDOR_IMAGE), false)
245.PHONY: otavendormod
246otavendormod: $(BOARD_VENDOR_KERNEL_MODULES)
247 $(board-vendorkernel-ota)
248
249.PHONY: otavendormod-nodeps
250otavendormod-nodeps:
251 @echo "make board-vendorkernel-ota: ignoring dependencies"
252 $(board-vendorkernel-ota)
253
254$(BUILT_SYSTEMIMAGE): otavendormod
255
256endif