summaryrefslogtreecommitdiff
path: root/factory.mk (plain)
blob: 92a420527a594fce017d79dd656e8aa6ff3dadb9
1IMGPACK := $(BUILD_OUT_EXECUTABLES)/logo_img_packer$(BUILD_EXECUTABLE_SUFFIX)
2PRODUCT_UPGRADE_OUT := $(PRODUCT_OUT)/upgrade
3AML_EMMC_BIN_GENERATOR := vendor/amlogic/tools/aml_upgrade/amlogic_emmc_bin_maker.sh
4PRODUCT_COMMON_DIR := device/amlogic/common/products/$(PRODUCT_TYPE)
5
6ifeq ($(TARGET_NO_RECOVERY),true)
7BUILT_IMAGES := boot.img u-boot.bin dtb.img
8else
9BUILT_IMAGES := boot.img recovery.img u-boot.bin dtb.img
10endif
11ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
12 BUILT_IMAGES := $(addsuffix .encrypt, $(BUILT_IMAGES))
13endif#ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
14
15BUILT_IMAGES += system.img userdata.img
16
17ifneq ($(AB_OTA_UPDATER),true)
18BUILT_IMAGES += cache.img
19endif
20
21ifneq ($(BOARD_OLD_PARTITION),true)
22BUILT_IMAGES += vendor.img
23ifeq ($(BOARD_USES_ODMIMAGE),true)
24BUILT_IMAGES += odm.img
25endif
26endif
27
28# -----------------------------------------------------------------
29# odm partition image
30ifdef BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
31INTERNAL_ODMIMAGE_FILES := \
32 $(filter $(TARGET_OUT_ODM)/%,$(ALL_DEFAULT_INSTALLED_MODULES))
33
34odmimage_intermediates := \
35 $(call intermediates-dir-for,PACKAGING,odm)
36BUILT_ODMIMAGE_TARGET := $(PRODUCT_OUT)/odm.img
37# We just build this directly to the install location.
38INSTALLED_ODMIMAGE_TARGET := $(BUILT_ODMIMAGE_TARGET)
39
40$(INSTALLED_ODMIMAGE_TARGET) : $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_ODMIMAGE_FILES) $(PRODUCT_OUT)/system.img
41 $(call pretty,"Target odm fs image: $(INSTALLED_ODMIMAGE_TARGET)")
42 @mkdir -p $(TARGET_OUT_ODM)
43 @mkdir -p $(odmimage_intermediates) && rm -rf $(odmimage_intermediates)/odm_image_info.txt
44 $(call generate-userimage-prop-dictionary, $(odmimage_intermediates)/odm_image_info.txt, skip_fsck=true)
45 mkuserimg.sh -s $(PRODUCT_OUT)/odm $(INSTALLED_ODMIMAGE_TARGET) $(BOARD_ODMIMAGE_FILE_SYSTEM_TYPE) odm $(BOARD_ODMIMAGE_PARTITION_SIZE) -D $(PRODUCT_OUT)/system -L odm $(PRODUCT_OUT)/obj/ETC/file_contexts.bin_intermediates/file_contexts.bin
46 make_ext4fs -s -T -1 -S $(PRODUCT_OUT)/obj/ETC/file_contexts.bin_intermediates/file_contexts.bin -L odm -l $(BOARD_ODMIMAGE_PARTITION_SIZE) -a odm $(INSTALLED_ODMIMAGE_TARGET) $(PRODUCT_OUT)/odm $(PRODUCT_OUT)/system
47 $(hide) $(call assert-max-image-size,$(INSTALLED_ODMIMAGE_TARGET),$(BOARD_ODMIMAGE_PARTITION_SIZE))
48
49.PHONY: odm_image
50odm_image : $(INSTALLED_ODMIMAGE_TARGET)
51$(call dist-for-goals, odm_image, $(INSTALLED_ODMIMAGE_TARGET))
52
53endif
54
55ifdef KERNEL_DEVICETREE
56DTBTOOL := vendor/amlogic/tools/dtbTool
57
58ifdef KERNEL_DEVICETREE_CUSTOMER_DIR
59KERNEL_DEVICETREE_DIR := $(KERNEL_DEVICETREE_CUSTOMER_DIR)
60else
61KERNEL_DEVICETREE_DIR := arch/$(KERNEL_ARCH)/boot/dts/amlogic/
62endif
63
64KERNEL_DEVICETREE_SRC := $(addprefix $(KERNEL_ROOTDIR)/$(KERNEL_DEVICETREE_DIR), $(KERNEL_DEVICETREE) )
65KERNEL_DEVICETREE_SRC := $(wildcard $(addsuffix .dtd, $(KERNEL_DEVICETREE_SRC)) $(addsuffix .dts, $(KERNEL_DEVICETREE_SRC)))
66
67KERNEL_DEVICETREE_BIN := $(addprefix $(KERNEL_OUT)/$(KERNEL_DEVICETREE_DIR), $(KERNEL_DEVICETREE))
68KERNEL_DEVICETREE_BIN := $(addsuffix .dtb, $(KERNEL_DEVICETREE_BIN))
69
70INSTALLED_BOARDDTB_TARGET := $(PRODUCT_OUT)/dtb.img
71ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
72 INSTALLED_BOARDDTB_TARGET := $(INSTALLED_BOARDDTB_TARGET).encrypt
73endif# ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
74
75$(INSTALLED_BOARDDTB_TARGET) : $(KERNEL_DEVICETREE_SRC) $(KERNEL_OUT) $(KERNEL_CONFIG)
76 $(foreach aDts, $(KERNEL_DEVICETREE), \
77 sed -i 's/^#include \"partition_.*/#include \"$(TARGET_PARTITION_DTSI)\"/' $(KERNEL_ROOTDIR)/$(KERNEL_DEVICETREE_DIR)/$(strip $(aDts)).dts; \
78 if [ -f "$(KERNEL_ROOTDIR)/$(KERNEL_DEVICETREE_DIR)/$(aDts).dtd" ]; then \
79 $(MAKE) -C $(KERNEL_ROOTDIR) O=../$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(PREFIX_CROSS_COMPILE) $(strip $(aDts)).dtd; \
80 fi;\
81 $(MAKE) -C $(KERNEL_ROOTDIR) O=../$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(PREFIX_CROSS_COMPILE) $(strip $(aDts)).dtb; \
82 )
83ifneq ($(strip $(word 2, $(KERNEL_DEVICETREE)) ),)
84 $(hide) $(DTBTOOL) -o $@ -p $(KERNEL_OUT)/scripts/dtc/ $(KERNEL_OUT)/$(KERNEL_DEVICETREE_DIR)
85else# elif dts num == 1
86 cp -f $(KERNEL_DEVICETREE_BIN) $@
87endif
88 $(hide) $(call aml-secureboot-sign-bin, $@)
89 @echo "Instaled $@"
90
91.PHONY: dtbimage
92dtbimage: $(INSTALLED_BOARDDTB_TARGET)
93
94else #KERNEL_DEVICETREE undefined in Kernel.mk
95INSTALLED_BOARDDTB_TARGET :=
96endif # ifdef KERNEL_DEVICETREE
97
98
99UPGRADE_FILES := \
100 aml_sdc_burn.ini \
101 ddr_init.bin \
102 u-boot.bin.sd.bin u-boot.bin.usb.bl2 u-boot.bin.usb.tpl \
103 u-boot-comp.bin
104
105ifneq ($(TARGET_USE_SECURITY_MODE),true)
106UPGRADE_FILES += \
107 platform.conf
108else # secureboot mode
109UPGRADE_FILES += \
110 u-boot-usb.bin.aml \
111 platform_enc.conf
112endif
113
114UPGRADE_FILES := $(addprefix $(TARGET_DEVICE_DIR)/upgrade/,$(UPGRADE_FILES))
115UPGRADE_FILES := $(wildcard $(UPGRADE_FILES)) #extract only existing files for burnning
116
117PACKAGE_CONFIG_FILE := aml_upgrade_package
118ifeq ($(AB_OTA_UPDATER),true)
119 PACKAGE_CONFIG_FILE := $(PACKAGE_CONFIG_FILE)_AB
120endif # ifeq ($(AB_OTA_UPDATER),true)
121ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
122 PACKAGE_CONFIG_FILE := $(PACKAGE_CONFIG_FILE)_enc
123endif # ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
124PACKAGE_CONFIG_FILE := $(TARGET_DEVICE_DIR)/upgrade/$(PACKAGE_CONFIG_FILE).conf
125
126ifeq ($(wildcard $(PACKAGE_CONFIG_FILE)),)
127ifeq ($(BOARD_OLD_PARTITION),true)
128 PACKAGE_CONFIG_FILE := $(PRODUCT_COMMON_DIR)/upgrade_3.14/$(notdir $(PACKAGE_CONFIG_FILE))
129else
130 PACKAGE_CONFIG_FILE := $(PRODUCT_COMMON_DIR)/upgrade_4.9/$(notdir $(PACKAGE_CONFIG_FILE))
131endif
132endif ## ifeq ($(wildcard $(TARGET_DEVICE_DIR)/upgrade/$(PACKAGE_CONFIG_FILE)))
133UPGRADE_FILES += $(PACKAGE_CONFIG_FILE)
134
135ifneq ($(TARGET_AMLOGIC_RES_PACKAGE),)
136INSTALLED_AML_LOGO := $(PRODUCT_UPGRADE_OUT)/logo.img
137$(INSTALLED_AML_LOGO): $(IMGPACK) $(wildcard $(TARGET_AMLOGIC_RES_PACKAGE)/*)
138 @echo "generate $(INSTALLED_AML_LOGO)"
139 $(hide) mkdir -p $(PRODUCT_UPGRADE_OUT)/logo
140 $(hide) rm -rf $(PRODUCT_UPGRADE_OUT)/logo/*
141 @cp -rf $(TARGET_AMLOGIC_RES_PACKAGE)/* $(PRODUCT_UPGRADE_OUT)/logo
142 $(hide) $(IMGPACK) -r $(PRODUCT_UPGRADE_OUT)/logo $@
143 @echo "Installed $@"
144else
145INSTALLED_AML_LOGO :=
146endif
147
148.PHONY: logoimg
149logoimg: $(INSTALLED_AML_LOGO)
150
151ifneq ($(BOARD_AUTO_COLLECT_MANIFEST),false)
152BUILD_TIME := $(shell date +%Y-%m-%d--%H-%M)
153INSTALLED_MANIFEST_XML := $(PRODUCT_OUT)/manifests/manifest-$(BUILD_TIME).xml
154$(INSTALLED_MANIFEST_XML):
155 $(hide) mkdir -p $(PRODUCT_OUT)/manifests
156 $(hide) mkdir -p $(PRODUCT_OUT)/upgrade
157 repo manifest -r -o $(INSTALLED_MANIFEST_XML)
158 $(hide) cp $(INSTALLED_MANIFEST_XML) $(PRODUCT_OUT)/upgrade/manifest.xml
159
160.PHONY:build_manifest
161build_manifest:$(INSTALLED_MANIFEST_XML)
162else
163INSTALLED_MANIFEST_XML :=
164endif
165
166INSTALLED_AML_USER_IMAGES :=
167ifeq ($(TARGET_BUILD_USER_PARTS),true)
168define aml-mk-user-img-template
169INSTALLED_AML_USER_IMAGES += $(2)
170$(eval tempUserSrcDir := $$($(strip $(1))_PART_DIR))
171$(2): $(call intermediates-dir-for,ETC,file_contexts.bin)/file_contexts.bin $(MAKE_EXT4FS) $(shell find $(tempUserSrcDir) -type f)
172 @echo $(MAKE_EXT4FS) -s -S $$< -l $$($(strip $(1))_PART_SIZE) -a $(1) $$@ $(tempUserSrcDir) && \
173 $(MAKE_EXT4FS) -s -S $$< -l $$($(strip $(1))_PART_SIZE) -a $(1) $$@ $(tempUserSrcDir)
174endef
175.PHONY:contexts_add
176contexts_add:$(TARGET_ROOT_OUT)/file_contexts
177 $(foreach userPartName, $(BOARD_USER_PARTS_NAME), \
178 $(shell sed -i "/\/$(strip $(userPartName))/d" $< && \
179 echo -e "/$(strip $(userPartName))(/.*)? u:object_r:system_file:s0" >> $<))
180$(foreach userPartName, $(BOARD_USER_PARTS_NAME), \
181 $(eval $(call aml-mk-user-img-template, $(userPartName),$(PRODUCT_OUT)/$(userPartName).img)))
182
183define aml-user-img-update-pkg
184 ln -sf $(ANDROID_BUILD_TOP)/$(PRODUCT_OUT)/$(1).img $(PRODUCT_UPGRADE_OUT)/$(1).img && \
185 sed -i "/file=\"$(1)\.img\"/d" $(2) && \
186 echo -e "file=\"$(1).img\"\t\tmain_type=\"PARTITION\"\t\tsub_type=\"$(1)\"" >> $(2) ;
187endef
188
189.PHONY: aml_usrimg
190aml_usrimg :$(INSTALLED_AML_USER_IMAGES)
191endif # ifeq ($(TARGET_BUILD_USER_PARTS),true)
192
193INSTALLED_AMLOGIC_BOOTLOADER_TARGET := $(PRODUCT_OUT)/u-boot.bin
194ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
195 INSTALLED_AMLOGIC_BOOTLOADER_TARGET := $(INSTALLED_AMLOGIC_BOOTLOADER_TARGET).encrypt
196endif# ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
197
198$(INSTALLED_AMLOGIC_BOOTLOADER_TARGET) : $(TARGET_DEVICE_DIR)/u-boot.bin
199 $(hide) cp $< $(PRODUCT_OUT)/u-boot.bin
200 $(hide) $(call aml-secureboot-sign-bootloader, $@)
201 @echo "make $@: bootloader installed end"
202
203ifeq ($(TARGET_SUPPORT_USB_BURNING_V2),true)
204INSTALLED_AML_UPGRADE_PACKAGE_TARGET := $(PRODUCT_OUT)/aml_upgrade_package.img
205
206PACKAGE_CONFIG_FILE := $(PRODUCT_UPGRADE_OUT)/$(notdir $(PACKAGE_CONFIG_FILE))
207
208ifeq ($(TARGET_USE_SECURITY_DM_VERITY_MODE_WITH_TOOL),true)
209 SYSTEMIMG_INTERMEDIATES := $(PRODUCT_OUT)/obj/PACKAGING/systemimage_intermediates/system.img.
210 SYSTEMIMG_INTERMEDIATES := $(SYSTEMIMG_INTERMEDIATES)verity_table.bin $(SYSTEMIMG_INTERMEDIATES)verity.img
211 define security_dm_verity_conf
212 @echo "copy verity.img and verity_table.bin"
213 @sed -i "/verity_table.bin/d" $(PACKAGE_CONFIG_FILE)
214 @sed -i "/verity.img/d" $(PACKAGE_CONFIG_FILE)
215 $(hide) \
216 sed -i "/aml_sdc_burn\.ini/ s/.*/&\nfile=\"system.img.verity.img\"\t\tmain_type=\"img\"\t\tsub_type=\"verity\"/" $(PACKAGE_CONFIG_FILE); \
217 sed -i "/aml_sdc_burn\.ini/ s/.*/&\nfile=\"system.img.verity_table.bin\"\t\tmain_type=\"bin\"\t\tsub_type=\"verity_table\"/" $(PACKAGE_CONFIG_FILE);
218 cp $(SYSTEMIMG_INTERMEDIATES) $(PRODUCT_UPGRADE_OUT)/
219 endef #define security_dm_verity_conf
220endif # ifeq ($(TARGET_USE_SECURITY_DM_VERITY_MODE_WITH_TOOL),true)
221
222ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
223define aml-secureboot-sign-bootloader
224 @echo -----aml-secureboot-sign-bootloader ------
225 $(hide) $(PRODUCT_AML_SECUREBOOT_SIGNBOOTLOADER) --input $(basename $(1)) --output $(1)
226 @echo ----- Made aml secure-boot singed bootloader: $(1) --------
227endef #define aml-secureboot-sign-bootloader
228define aml-secureboot-sign-kernel
229 @echo -----aml-secureboot-sign-kernel ------
230 $(hide) mv -f $(1) $(basename $(1))
231 $(hide) $(PRODUCT_AML_SECUREBOOT_SIGNIMAGE) --input $(basename $(1)) --output $(1)
232 @echo ----- Made aml secure-boot singed bootloader: $(1) --------
233endef #define aml-secureboot-sign-kernel
234define aml-secureboot-sign-bin
235 @echo -----aml-secureboot-sign-bin------
236 $(hide) mv -f $(1) $(basename $(1))
237 $(hide) $(PRODUCT_AML_SECUREBOOT_SIGBIN) --input $(basename $(1)) --output $(1)
238 @echo ----- Made aml secure-boot singed bin: $(1) --------
239endef #define aml-secureboot-sign-bin
240endif# ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
241
242.PHONY:aml_upgrade
243aml_upgrade:$(INSTALLED_AML_UPGRADE_PACKAGE_TARGET)
244$(INSTALLED_AML_UPGRADE_PACKAGE_TARGET): \
245 $(addprefix $(PRODUCT_OUT)/,$(BUILT_IMAGES)) \
246 $(UPGRADE_FILES) \
247 $(INSTALLED_AML_USER_IMAGES) \
248 $(INSTALLED_AML_LOGO) \
249 $(INSTALLED_MANIFEST_XML) \
250 $(TARGET_USB_BURNING_V2_DEPEND_MODULES)
251 mkdir -p $(PRODUCT_UPGRADE_OUT)
252 $(hide) $(foreach file,$(UPGRADE_FILES), \
253 echo cp $(file) $(PRODUCT_UPGRADE_OUT)/$(notdir $(file)); \
254 cp -f $(file) $(PRODUCT_UPGRADE_OUT)/$(notdir $(file)); \
255 )
256 $(hide) $(foreach file,$(BUILT_IMAGES), \
257 echo ln -sf $(PRODUCT_OUT)/$(file) $(PRODUCT_UPGRADE_OUT)/$(file); \
258 ln -sf $(ANDROID_BUILD_TOP)/$(PRODUCT_OUT)/$(file) $(PRODUCT_UPGRADE_OUT)/$(file); \
259 )
260ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
261 $(hide) rm -f $(PRODUCT_UPGRADE_OUT)/u-boot.bin.encrypt.*
262 $(hide) $(ACP) $(PRODUCT_OUT)/u-boot.bin.encrypt.* $(PRODUCT_UPGRADE_OUT)/
263 ln -sf $(ANDROID_BUILD_TOP)/$(PRODUCT_OUT)/dtb.img $(PRODUCT_UPGRADE_OUT)/dtb.img
264 ln -sf $(ANDROID_BUILD_TOP)/$(PRODUCT_OUT)/u-boot.bin.encrypt.efuse $(PRODUCT_UPGRADE_OUT)/SECURE_BOOT_SET
265endif# ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
266 $(security_dm_verity_conf)
267 $(update-aml_upgrade-conf)
268 $(hide) $(foreach userPartName, $(BOARD_USER_PARTS_NAME), \
269 $(call aml-user-img-update-pkg,$(userPartName),$(PACKAGE_CONFIG_FILE)))
270 @echo "Package: $@"
271 @echo ./vendor/amlogic/tools/aml_upgrade/aml_image_v2_packer -r \
272 $(PACKAGE_CONFIG_FILE) $(PRODUCT_UPGRADE_OUT)/ $@
273 ./vendor/amlogic/tools/aml_upgrade/aml_image_v2_packer -r \
274 $(PACKAGE_CONFIG_FILE) $(PRODUCT_UPGRADE_OUT)/ $@
275 @echo " $@ installed"
276else
277#none
278INSTALLED_AML_UPGRADE_PACKAGE_TARGET :=
279endif
280
281INSTALLED_AML_FASTBOOT_ZIP := $(PRODUCT_OUT)/$(TARGET_PRODUCT)-fastboot-$(BUILD_NUMBER).zip
282
283FASTBOOT_IMAGES := android-info.txt system.img
284
285ifeq ($(TARGET_NO_RECOVERY),true)
286FASTBOOT_IMAGES += boot.img
287else
288FASTBOOT_IMAGES += boot.img recovery.img
289endif
290
291ifneq ($(BOARD_OLD_PARTITION),true)
292FASTBOOT_IMAGES += vendor.img
293ifeq ($(BOARD_USES_ODMIMAGE),true)
294FASTBOOT_IMAGES += odm.img
295endif
296endif
297
298.PHONY:aml_fastboot_zip
299aml_fastboot_zip:$(INSTALLED_AML_FASTBOOT_ZIP)
300$(INSTALLED_AML_FASTBOOT_ZIP): $(addprefix $(PRODUCT_OUT)/,$(FASTBOOT_IMAGES))
301 echo "install $@"
302 cd $(PRODUCT_OUT); zip -r $(TARGET_PRODUCT)-fastboot-$(BUILD_NUMBER).zip $(FASTBOOT_IMAGES)
303
304droidcore: $(INSTALLED_AML_UPGRADE_PACKAGE_TARGET) $(INSTALLED_MANIFEST_XML) $(INSTALLED_AML_FASTBOOT_ZIP)
305otapackage: $(INSTALLED_AML_UPGRADE_PACKAGE_TARGET) $(INSTALLED_MANIFEST_XML) $(INSTALLED_AML_FASTBOOT_ZIP)
306
307