blob: 30a75fede9afeed239616bbcbf91056d277b67e9 [file] [log] [blame]
Satya Durga Srinivasu Prabhalad88e8882012-07-13 02:40:24 +05301# This makefile is used to generate extra images for QCOM targets
David Ng14d83582012-07-31 16:53:06 -07002# persist, device tree & NAND images required for different QCOM targets.
Satya Durga Srinivasu Prabhalad88e8882012-07-13 02:40:24 +05303
Satya Durga Srinivasu Prabhala154c9152012-08-15 23:16:23 +05304# 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.
Sreedhar1f89a582013-10-07 00:13:58 +053010ifneq ($(strip $(TARGET_NO_KERNEL)),true)
Roopesh Natarajafcd0cdb2020-06-02 14:35:30 -070011
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
Vinayak Soni5c76fc12019-05-13 16:34:29 -070020ifeq ($(PRODUCT_BUILD_RAMDISK_IMAGE),true)
Satya Durga Srinivasu Prabhala154c9152012-08-15 23:16:23 +053021INSTALLED_RAMDISK_TARGET := $(PRODUCT_OUT)/ramdisk.img
Vinayak Soni5c76fc12019-05-13 16:34:29 -070022endif
23ifeq ($(PRODUCT_BUILD_SYSTEM_IMAGE),true)
Satya Durga Srinivasu Prabhala154c9152012-08-15 23:16:23 +053024INSTALLED_SYSTEMIMAGE := $(PRODUCT_OUT)/system.img
Vinayak Soni5c76fc12019-05-13 16:34:29 -070025endif
26ifeq ($(PRODUCT_BUILD_USERDATA_IMAGE),true)
Satya Durga Srinivasu Prabhala154c9152012-08-15 23:16:23 +053027INSTALLED_USERDATAIMAGE_TARGET := $(PRODUCT_OUT)/userdata.img
Vinayak Soni5c76fc12019-05-13 16:34:29 -070028endif
Ameya Thakur64368e52016-04-12 15:38:40 -070029ifneq ($(TARGET_NO_RECOVERY), true)
Satya Durga Srinivasu Prabhala154c9152012-08-15 23:16:23 +053030INSTALLED_RECOVERYIMAGE_TARGET := $(PRODUCT_OUT)/recovery.img
Ameya Thakur64368e52016-04-12 15:38:40 -070031else
32INSTALLED_RECOVERYIMAGE_TARGET :=
33endif
Satya Durga Srinivasu Prabhala154c9152012-08-15 23:16:23 +053034recovery_ramdisk := $(PRODUCT_OUT)/ramdisk-recovery.img
Mayank Rana3a15cf42013-09-05 12:49:58 +053035INSTALLED_USBIMAGE_TARGET := $(PRODUCT_OUT)/usbdisk.img
Sreedhar1f89a582013-10-07 00:13:58 +053036endif
Satya Durga Srinivasu Prabhala154c9152012-08-15 23:16:23 +053037
David Ng14d83582012-07-31 16:53:06 -070038#----------------------------------------------------------------------
39# Generate persist image (persist.img)
40#----------------------------------------------------------------------
Vinayak Sonie178cc92019-04-22 15:35:40 -070041ifneq ($(strip $(BOARD_PERSISTIMAGE_PARTITION_SIZE)),)
Sreedhar1f89a582013-10-07 00:13:58 +053042ifneq ($(strip $(TARGET_NO_KERNEL)),true)
43
Satya Durga Srinivasu Prabhalad88e8882012-07-13 02:40:24 +053044TARGET_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)
mraja2ac679b2018-10-01 13:17:22 +053054 $(hide) PATH=$(HOST_OUT_EXECUTABLES):$${PATH} $(MKEXTUSERIMG) $(TARGET_OUT_PERSIST) $@ ext4 persist $(BOARD_PERSISTIMAGE_PARTITION_SIZE)
Satya Durga Srinivasu Prabhalad88e8882012-07-13 02:40:24 +053055 $(hide) chmod a+r $@
David Ng3f99ed52018-08-08 14:35:48 -070056 $(hide) $(call assert-max-image-size,$@,$(BOARD_PERSISTIMAGE_PARTITION_SIZE))
Satya Durga Srinivasu Prabhalad88e8882012-07-13 02:40:24 +053057endef
58
59$(INSTALLED_PERSISTIMAGE_TARGET): $(MKEXTUSERIMG) $(MAKE_EXT4FS) $(INTERNAL_PERSISTIMAGE_FILES)
60 $(build-persistimage-target)
61
62ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_PERSISTIMAGE_TARGET)
63ALL_MODULES.$(LOCAL_MODULE).INSTALLED += $(INSTALLED_PERSISTIMAGE_TARGET)
padarshr07be5542019-04-24 14:53:11 +053064droidcore: $(INSTALLED_PERSISTIMAGE_TARGET)
Satya Durga Srinivasu Prabhalad88e8882012-07-13 02:40:24 +053065
David Ng3f99ed52018-08-08 14:35:48 -070066.PHONY: persistimage
67persistimage: $(INSTALLED_PERSISTIMAGE_TARGET)
68
69endif
Vinayak Sonie178cc92019-04-22 15:35:40 -070070endif
David Ng3f99ed52018-08-08 14:35:48 -070071
72#----------------------------------------------------------------------
73# Generate metadata image (metadata.img)
74# As of now this in empty at build and data is runtime generated only,
75# so create an empty fs
76#----------------------------------------------------------------------
77ifneq ($(strip $(BOARD_METADATAIMAGE_PARTITION_SIZE)),)
78
79TARGET_OUT_METADATA := $(PRODUCT_OUT)/metadata
80
81INSTALLED_METADATAIMAGE_TARGET := $(PRODUCT_OUT)/metadata.img
82
83define build-metadataimage-target
84 $(call pretty,"Target metadata fs image: $(INSTALLED_METADATAIMAGE_TARGET)")
85 @mkdir -p $(TARGET_OUT_METADATA)
Divya Sharma1fe84512018-10-24 09:30:20 -070086 $(hide)PATH=$(HOST_OUT_EXECUTABLES):$${PATH} $(MKEXTUSERIMG) -s $(TARGET_OUT_METADATA) $@ ext4 metadata $(BOARD_METADATAIMAGE_PARTITION_SIZE)
David Ng3f99ed52018-08-08 14:35:48 -070087 $(hide) chmod a+r $@
88endef
89
90$(INSTALLED_METADATAIMAGE_TARGET): $(MKEXTUSERIMG) $(MAKE_EXT4FS)
91 $(build-metadataimage-target)
92
93ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_METADATAIMAGE_TARGET)
94ALL_MODULES.$(LOCAL_MODULE).INSTALLED += $(INSTALLED_METADATAIMAGE_TARGET)
padarshr07be5542019-04-24 14:53:11 +053095droidcore: $(INSTALLED_METADATAIMAGE_TARGET)
David Ng3f99ed52018-08-08 14:35:48 -070096
97.PHONY: metadataimage
98metadataimage: $(INSTALLED_METADATAIMAGE_TARGET)
99
Sreedhar1f89a582013-10-07 00:13:58 +0530100endif
David Ng14d83582012-07-31 16:53:06 -0700101
102#----------------------------------------------------------------------
Shashank Mittal95167092017-03-20 13:03:32 -0700103# Generate device tree overlay image (dtbo.img)
104#----------------------------------------------------------------------
105ifneq ($(strip $(TARGET_NO_KERNEL)),true)
106ifeq ($(strip $(BOARD_KERNEL_SEPARATED_DTBO)),true)
107
108MKDTIMG := $(HOST_OUT_EXECUTABLES)/mkdtimg$(HOST_EXECUTABLE_SUFFIX)
109
Shashank Mittal95167092017-03-20 13:03:32 -0700110# Most specific paths must come first in possible_dtbo_dirs
111possible_dtbo_dirs = $(KERNEL_OUT)/arch/$(TARGET_KERNEL_ARCH)/boot/dts $(KERNEL_OUT)/arch/arm/boot/dts
Puja Gupta86fd9c92017-05-22 13:50:59 -0700112$(shell mkdir -p $(possible_dtbo_dirs))
Shashank Mittal95167092017-03-20 13:03:32 -0700113dtbo_dir = $(firstword $(wildcard $(possible_dtbo_dirs)))
114dtbo_objs = $(shell find $(dtbo_dir) -name \*.dtbo)
115
116define build-dtboimage-target
padarshr3514a882017-11-24 14:29:32 +0530117 $(call pretty,"Target dtbo image: $(BOARD_PREBUILT_DTBOIMAGE)")
Shashank Mittal95167092017-03-20 13:03:32 -0700118 $(hide) $(MKDTIMG) create $@ --page_size=$(BOARD_KERNEL_PAGESIZE) $(dtbo_objs)
119 $(hide) chmod a+r $@
120endef
121
Vinayak Soni6975cc42019-09-10 16:02:31 +0530122# Definition of BOARD_PREBUILT_DTBOIMAGE is in AndroidBoardCommon.mk
123# so as to ensure it is defined well in time to set the dependencies on
124# BOARD_PREBUILT_DTBOIMAGE
padarshr3514a882017-11-24 14:29:32 +0530125$(BOARD_PREBUILT_DTBOIMAGE): $(MKDTIMG) $(INSTALLED_KERNEL_TARGET)
Shashank Mittal95167092017-03-20 13:03:32 -0700126 $(build-dtboimage-target)
127
Shashank Mittal95167092017-03-20 13:03:32 -0700128endif
129endif
130
131#----------------------------------------------------------------------
David Ng14d83582012-07-31 16:53:06 -0700132# Generate device tree image (dt.img)
133#----------------------------------------------------------------------
Ajay Dudani41828282014-01-06 12:33:23 -0800134ifneq ($(strip $(TARGET_NO_KERNEL)),true)
David Ng14d83582012-07-31 16:53:06 -0700135ifeq ($(strip $(BOARD_KERNEL_SEPARATED_DT)),true)
David Ng0ef50032012-08-09 14:35:19 -0700136ifeq ($(strip $(BUILD_TINY_ANDROID)),true)
137include device/qcom/common/dtbtool/Android.mk
138endif
139
David Ng14d83582012-07-31 16:53:06 -0700140DTBTOOL := $(HOST_OUT_EXECUTABLES)/dtbTool$(HOST_EXECUTABLE_SUFFIX)
141
142INSTALLED_DTIMAGE_TARGET := $(PRODUCT_OUT)/dt.img
143
Matt Wagantall4c134972015-08-29 23:25:31 -0700144# Most specific paths must come first in possible_dtb_dirs
145possible_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/
Stephen Boydb9906fe2013-08-21 17:05:26 -0700146dtb_dir = $(firstword $(wildcard $(possible_dtb_dirs)))
147
David Ng14d83582012-07-31 16:53:06 -0700148define build-dtimage-target
149 $(call pretty,"Target dt image: $(INSTALLED_DTIMAGE_TARGET)")
Stephen Boydb9906fe2013-08-21 17:05:26 -0700150 $(hide) $(DTBTOOL) -o $@ -s $(BOARD_KERNEL_PAGESIZE) -p $(KERNEL_OUT)/scripts/dtc/ $(dtb_dir)
David Ng14d83582012-07-31 16:53:06 -0700151 $(hide) chmod a+r $@
152endef
153
154$(INSTALLED_DTIMAGE_TARGET): $(DTBTOOL) $(INSTALLED_KERNEL_TARGET)
155 $(build-dtimage-target)
156
157ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_DTIMAGE_TARGET)
158ALL_MODULES.$(LOCAL_MODULE).INSTALLED += $(INSTALLED_DTIMAGE_TARGET)
159endif
Ajay Dudani41828282014-01-06 12:33:23 -0800160endif
David Ng14d83582012-07-31 16:53:06 -0700161
Mayank Rana3a15cf42013-09-05 12:49:58 +0530162#---------------------------------------------------------------------
163# Generate usbdisk.img FAT32 image
164# Please NOTICE: the valid max size of usbdisk.bin is 10GB
165#---------------------------------------------------------------------
166ifneq ($(strip $(BOARD_USBIMAGE_PARTITION_SIZE_KB)),)
167define build-usbimage-target
168 $(hide) mkfs.vfat -n "Internal SD" -F 32 -C $(PRODUCT_OUT)/usbdisk.tmp $(BOARD_USBIMAGE_PARTITION_SIZE_KB)
169 $(hide) dd if=$(PRODUCT_OUT)/usbdisk.tmp of=$(INSTALLED_USBIMAGE_TARGET) bs=1024 count=20480
170 $(hide) rm -f $(PRODUCT_OUT)/usbdisk.tmp
171endef
172
173$(INSTALLED_USBIMAGE_TARGET):
174 $(build-usbimage-target)
175ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_USBIMAGE_TARGET)
176ALL_MODULES.$(LOCAL_MODULE).INSTALLED += $(INSTALLED_DTIMAGE_TARGET)
177endif
178
Sreedharf38d6302014-03-05 14:42:24 +0530179#####################################################################################################
180# support for small user data image
181
182ifneq ($(strip $(BOARD_SMALL_USERDATAIMAGE_PARTITION_SIZE)),)
183# Don't build userdata.img if it's extfs but no partition size
184skip_userdata.img :=
185ifdef INTERNAL_USERIMAGES_EXT_VARIANT
186ifndef BOARD_USERDATAIMAGE_PARTITION_SIZE
187skip_userdata.img := true
188endif
189endif
190
191ifneq ($(skip_userdata.img),true)
192
193INSTALLED_SMALL_USERDATAIMAGE_TARGET := $(PRODUCT_OUT)/userdata_small.img
194
195define build-small-userdataimage
196 @echo "target small userdata image"
197 $(hide) mkdir -p $(1)
198 $(hide) $(MKEXTUSERIMG) -s $(TARGET_OUT_DATA) $(2) ext4 data $(BOARD_SMALL_USERDATAIMAGE_PARTITION_SIZE)
199 $(hide) chmod a+r $@
David Ng3f99ed52018-08-08 14:35:48 -0700200 $(hide) $(call assert-max-image-size,$@,$(BOARD_SMALL_USERDATAIMAGE_PARTITION_SIZE))
Sreedharf38d6302014-03-05 14:42:24 +0530201endef
202
203
204$(INSTALLED_SMALL_USERDATAIMAGE_TARGET): $(MKEXTUSERIMG) $(MAKE_EXT4FS) $(INSTALLED_USERDATAIMAGE_TARGET)
205 $(hide) $(call build-small-userdataimage,$(PRODUCT_OUT),$(INSTALLED_SMALL_USERDATAIMAGE_TARGET))
206
207ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_SMALL_USERDATAIMAGE_TARGET)
208ALL_MODULES.$(LOCAL_MODULE).INSTALLED += $(INSTALLED_SMALL_USERDATAIMAGE_TARGET)
209
210endif
211
212endif
213
214###################################################################################################
215
Channagoud Kadabi27614e22012-08-07 17:58:03 +0530216.PHONY: aboot
Abhishek Ranjana139a932015-06-29 18:48:56 +0530217ifeq ($(USESECIMAGETOOL), true)
Jeevan Shriram8a2a6fc2019-12-18 10:36:06 -0800218aboot: $(TARGET_SIGNED_BOOTLOADER) gensecimage_install
Abhishek Ranjana139a932015-06-29 18:48:56 +0530219else
Channagoud Kadabi27614e22012-08-07 17:58:03 +0530220aboot: $(INSTALLED_BOOTLOADER_MODULE)
Abhishek Ranjana139a932015-06-29 18:48:56 +0530221endif
Channagoud Kadabi27614e22012-08-07 17:58:03 +0530222
Satya Durga Srinivasu Prabhala154c9152012-08-15 23:16:23 +0530223.PHONY: kernel
Roopesh Natarajafcd0cdb2020-06-02 14:35:30 -0700224kernel: $(INSTALLED_BOOTIMAGE_TARGET) $(INSTALLED_DTBOIMAGE_TARGET)
Shashank Mittal95167092017-03-20 13:03:32 -0700225
226.PHONY: dtboimage
227dtboimage: $(INSTALLED_DTBOIMAGE_TARGET)
Channagoud Kadabib5e7dba2012-09-06 18:21:35 +0530228
229.PHONY: recoveryimage
Roopesh Natarajafcd0cdb2020-06-02 14:35:30 -0700230recoveryimage: $(INSTALLED_RECOVERYIMAGE_TARGET)
SREEDHAR La3027c22013-05-30 00:02:14 +0530231
232.PHONY: kernelclean
233kernelclean:
Ameya Thakur16e5fd82016-03-09 17:35:18 -0800234 $(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
235 $(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
236 $(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
SREEDHAR La3027c22013-05-30 00:02:14 +0530237 $(hide) if [ -f "$(INSTALLED_BOOTIMAGE_TARGET)" ]; then rm $(INSTALLED_BOOTIMAGE_TARGET); fi
SREEDHAR La3027c22013-05-30 00:02:14 +0530238 $(hide) if [ -f "$(INSTALLED_BOOTIMAGE_TARGET).nonsecure" ]; then rm $(INSTALLED_BOOTIMAGE_TARGET).nonsecure; fi
239 $(hide) if [ -f "$(PRODUCT_OUT)/kernel" ]; then rm $(PRODUCT_OUT)/kernel; fi
SREEDHAR La3027c22013-05-30 00:02:14 +0530240 @echo "kernel cleanup done"
Shashank Mittal79eb3892017-03-29 16:48:01 -0700241
242# Set correct dependency for kernel modules
243ifneq ($(BOARD_VENDOR_KERNEL_MODULES),)
244$(BOARD_VENDOR_KERNEL_MODULES): $(INSTALLED_BOOTIMAGE_TARGET)
245endif
246ifneq ($(BOARD_RECOVERY_KERNEL_MODULES),)
247$(BOARD_RECOVERY_KERNEL_MODULES): $(INSTALLED_BOOTIMAGE_TARGET)
248endif
Naveen Kumarc30a3b92017-08-28 07:49:42 +0530249
250define board-vendorkernel-ota
251 $(call pretty,"Processing following kernel modules for vendor: $(BOARD_VENDOR_KERNEL_MODULES)")
252 $(if $(BOARD_VENDOR_KERNEL_MODULES), \
253 $(call build-image-kernel-modules,$(BOARD_VENDOR_KERNEL_MODULES),$(TARGET_OUT_VENDOR),vendor/,$(call intermediates-dir-for,PACKAGING,depmod_vendor)))
254endef
255
256# Adding support for vendor module for OTA
257ifeq ($(ENABLE_VENDOR_IMAGE), false)
258.PHONY: otavendormod
259otavendormod: $(BOARD_VENDOR_KERNEL_MODULES)
260 $(board-vendorkernel-ota)
261
262.PHONY: otavendormod-nodeps
263otavendormod-nodeps:
264 @echo "make board-vendorkernel-ota: ignoring dependencies"
265 $(board-vendorkernel-ota)
266
267$(BUILT_SYSTEMIMAGE): otavendormod
David Ng3f99ed52018-08-08 14:35:48 -0700268
Naveen Kumarc30a3b92017-08-28 07:49:42 +0530269endif
AUDITYA BHATTARAM58ceb962019-05-15 04:16:22 +0530270
271#Print PRODUCT_PACKAGES & PRODUCT_PACKAGES_DEBUG to output log
272$(call dump-products)