summaryrefslogtreecommitdiff
path: root/common/factory.mk (plain)
blob: 7c1595611f5f5d911ee3bf640001275e62293e3f
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 odm.img
23endif
24
25ifdef KERNEL_DEVICETREE
26DTBTOOL := vendor/amlogic/tools/dtbTool
27
28ifdef KERNEL_DEVICETREE_CUSTOMER_DIR
29KERNEL_DEVICETREE_DIR := $(KERNEL_DEVICETREE_CUSTOMER_DIR)
30else
31KERNEL_DEVICETREE_DIR := arch/$(KERNEL_ARCH)/boot/dts/amlogic/
32endif
33
34KERNEL_DEVICETREE_SRC := $(addprefix $(KERNEL_ROOTDIR)/$(KERNEL_DEVICETREE_DIR), $(KERNEL_DEVICETREE) )
35KERNEL_DEVICETREE_SRC := $(wildcard $(addsuffix .dtd, $(KERNEL_DEVICETREE_SRC)) $(addsuffix .dts, $(KERNEL_DEVICETREE_SRC)))
36
37KERNEL_DEVICETREE_BIN := $(addprefix $(KERNEL_OUT)/$(KERNEL_DEVICETREE_DIR), $(KERNEL_DEVICETREE))
38KERNEL_DEVICETREE_BIN := $(addsuffix .dtb, $(KERNEL_DEVICETREE_BIN))
39
40INSTALLED_BOARDDTB_TARGET := $(PRODUCT_OUT)/dtb.img
41ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
42 INSTALLED_BOARDDTB_TARGET := $(INSTALLED_BOARDDTB_TARGET).encrypt
43endif# ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
44
45$(INSTALLED_BOARDDTB_TARGET) : $(KERNEL_DEVICETREE_SRC) $(KERNEL_OUT) $(KERNEL_CONFIG)
46ifeq ($(AB_OTA_UPDATER),true)
47 $(foreach aDts, $(KERNEL_DEVICETREE), \
48 sed -i 's/^#include \"partition_.*/#include \"$(TARGET_PARTITION_DTSI)\"/' $(KERNEL_ROOTDIR)/$(KERNEL_DEVICETREE_DIR)/$(strip $(aDts)).dts; \
49 if [ -f "$(KERNEL_ROOTDIR)/$(KERNEL_DEVICETREE_DIR)/$(aDts).dtd" ]; then \
50 $(MAKE) -C $(KERNEL_ROOTDIR) O=../$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(PREFIX_CROSS_COMPILE) $(strip $(aDts)).dtd; \
51 fi;\
52 $(MAKE) -C $(KERNEL_ROOTDIR) O=../$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(PREFIX_CROSS_COMPILE) $(strip $(aDts)).dtb; \
53 )
54else
55 $(foreach aDts, $(KERNEL_DEVICETREE), \
56 if [ -f "$(KERNEL_ROOTDIR)/$(KERNEL_DEVICETREE_DIR)/$(aDts).dtd" ]; then \
57 $(MAKE) -C $(KERNEL_ROOTDIR) O=../$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(PREFIX_CROSS_COMPILE) $(strip $(aDts)).dtd; \
58 fi;\
59 $(MAKE) -C $(KERNEL_ROOTDIR) O=../$(KERNEL_OUT) ARCH=$(KERNEL_ARCH) CROSS_COMPILE=$(PREFIX_CROSS_COMPILE) $(strip $(aDts)).dtb; \
60 )
61endif
62ifneq ($(strip $(word 2, $(KERNEL_DEVICETREE)) ),)
63 $(hide) $(DTBTOOL) -o $@ -p $(KERNEL_OUT)/scripts/dtc/ $(KERNEL_OUT)/$(KERNEL_DEVICETREE_DIR)
64else# elif dts num == 1
65 cp -f $(KERNEL_DEVICETREE_BIN) $@
66endif
67 $(hide) $(call aml-secureboot-sign-bin, $@)
68 @echo "Instaled $@"
69
70.PHONY: dtbimage
71dtbimage: $(INSTALLED_BOARDDTB_TARGET)
72
73else #KERNEL_DEVICETREE undefined in Kernel.mk
74INSTALLED_BOARDDTB_TARGET :=
75endif # ifdef KERNEL_DEVICETREE
76
77
78UPGRADE_FILES := \
79 aml_sdc_burn.ini \
80 ddr_init.bin \
81 u-boot.bin.sd.bin u-boot.bin.usb.bl2 u-boot.bin.usb.tpl \
82 u-boot-comp.bin
83
84ifneq ($(TARGET_USE_SECURITY_MODE),true)
85UPGRADE_FILES += \
86 platform.conf
87else # secureboot mode
88UPGRADE_FILES += \
89 u-boot-usb.bin.aml \
90 platform_enc.conf
91endif
92
93UPGRADE_FILES := $(addprefix $(TARGET_DEVICE_DIR)/upgrade/,$(UPGRADE_FILES))
94UPGRADE_FILES := $(wildcard $(UPGRADE_FILES)) #extract only existing files for burnning
95
96PACKAGE_CONFIG_FILE := aml_upgrade_package
97ifeq ($(AB_OTA_UPDATER),true)
98 PACKAGE_CONFIG_FILE := $(PACKAGE_CONFIG_FILE)_AB
99endif # ifeq ($(AB_OTA_UPDATER),true)
100ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
101 PACKAGE_CONFIG_FILE := $(PACKAGE_CONFIG_FILE)_enc
102endif # ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
103PACKAGE_CONFIG_FILE := $(TARGET_DEVICE_DIR)/upgrade/$(PACKAGE_CONFIG_FILE).conf
104
105ifeq ($(wildcard $(PACKAGE_CONFIG_FILE)),)
106ifeq ($(BOARD_OLD_PARTITION),true)
107 PACKAGE_CONFIG_FILE := $(PRODUCT_COMMON_DIR)/upgrade_3.14/$(notdir $(PACKAGE_CONFIG_FILE))
108else
109 PACKAGE_CONFIG_FILE := $(PRODUCT_COMMON_DIR)/upgrade_4.9/$(notdir $(PACKAGE_CONFIG_FILE))
110endif
111endif ## ifeq ($(wildcard $(TARGET_DEVICE_DIR)/upgrade/$(PACKAGE_CONFIG_FILE)))
112UPGRADE_FILES += $(PACKAGE_CONFIG_FILE)
113
114ifneq ($(TARGET_AMLOGIC_RES_PACKAGE),)
115INSTALLED_AML_LOGO := $(PRODUCT_UPGRADE_OUT)/logo.img
116$(INSTALLED_AML_LOGO): $(IMGPACK) $(wildcard $(TARGET_AMLOGIC_RES_PACKAGE)/*)
117 @echo "generate $(INSTALLED_AML_LOGO)"
118 $(hide) mkdir -p $(PRODUCT_UPGRADE_OUT)/logo
119 $(hide) rm -rf $(PRODUCT_UPGRADE_OUT)/logo/*
120 @cp -rf $(TARGET_AMLOGIC_RES_PACKAGE)/* $(PRODUCT_UPGRADE_OUT)/logo
121 $(hide) $(IMGPACK) -r $(PRODUCT_UPGRADE_OUT)/logo $@
122 @echo "Installed $@"
123else
124INSTALLED_AML_LOGO :=
125endif
126
127.PHONY: logoimg
128logoimg: $(INSTALLED_AML_LOGO)
129
130ifneq ($(BOARD_AUTO_COLLECT_MANIFEST),false)
131BUILD_TIME := $(shell date +%Y-%m-%d--%H-%M)
132INSTALLED_MANIFEST_XML := $(PRODUCT_OUT)/manifests/manifest-$(BUILD_TIME).xml
133$(INSTALLED_MANIFEST_XML):
134 $(hide) mkdir -p $(PRODUCT_OUT)/manifests
135 $(hide) mkdir -p $(PRODUCT_OUT)/upgrade
136 repo manifest -r -o $(INSTALLED_MANIFEST_XML)
137 $(hide) cp $(INSTALLED_MANIFEST_XML) $(PRODUCT_OUT)/upgrade/manifest.xml
138
139.PHONY:build_manifest
140build_manifest:$(INSTALLED_MANIFEST_XML)
141else
142INSTALLED_MANIFEST_XML :=
143endif
144
145INSTALLED_AML_USER_IMAGES :=
146ifeq ($(TARGET_BUILD_USER_PARTS),true)
147define aml-mk-user-img-template
148INSTALLED_AML_USER_IMAGES += $(2)
149$(eval tempUserSrcDir := $$($(strip $(1))_PART_DIR))
150$(2): $(call intermediates-dir-for,ETC,file_contexts.bin)/file_contexts.bin $(MAKE_EXT4FS) $(shell find $(tempUserSrcDir) -type f)
151 @echo $(MAKE_EXT4FS) -s -S $$< -l $$($(strip $(1))_PART_SIZE) -a $(1) $$@ $(tempUserSrcDir) && \
152 $(MAKE_EXT4FS) -s -S $$< -l $$($(strip $(1))_PART_SIZE) -a $(1) $$@ $(tempUserSrcDir)
153endef
154.PHONY:contexts_add
155contexts_add:$(TARGET_ROOT_OUT)/file_contexts
156 $(foreach userPartName, $(BOARD_USER_PARTS_NAME), \
157 $(shell sed -i "/\/$(strip $(userPartName))/d" $< && \
158 echo -e "/$(strip $(userPartName))(/.*)? u:object_r:system_file:s0" >> $<))
159$(foreach userPartName, $(BOARD_USER_PARTS_NAME), \
160 $(eval $(call aml-mk-user-img-template, $(userPartName),$(PRODUCT_OUT)/$(userPartName).img)))
161
162define aml-user-img-update-pkg
163 ln -sf $(ANDROID_BUILD_TOP)/$(PRODUCT_OUT)/$(1).img $(PRODUCT_UPGRADE_OUT)/$(1).img && \
164 sed -i "/file=\"$(1)\.img\"/d" $(2) && \
165 echo -e "file=\"$(1).img\"\t\tmain_type=\"PARTITION\"\t\tsub_type=\"$(1)\"" >> $(2) ;
166endef
167
168.PHONY: aml_usrimg
169aml_usrimg :$(INSTALLED_AML_USER_IMAGES)
170endif # ifeq ($(TARGET_BUILD_USER_PARTS),true)
171
172INSTALLED_AMLOGIC_BOOTLOADER_TARGET := $(PRODUCT_OUT)/u-boot.bin
173ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
174 INSTALLED_AMLOGIC_BOOTLOADER_TARGET := $(INSTALLED_AMLOGIC_BOOTLOADER_TARGET).encrypt
175endif# ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
176
177$(INSTALLED_AMLOGIC_BOOTLOADER_TARGET) : $(TARGET_DEVICE_DIR)/u-boot.bin
178 $(hide) cp $< $(PRODUCT_OUT)/u-boot.bin
179 $(hide) $(call aml-secureboot-sign-bootloader, $@)
180 @echo "make $@: bootloader installed end"
181
182ifeq ($(TARGET_SUPPORT_USB_BURNING_V2),true)
183INSTALLED_AML_UPGRADE_PACKAGE_TARGET := $(PRODUCT_OUT)/aml_upgrade_package.img
184
185PACKAGE_CONFIG_FILE := $(PRODUCT_UPGRADE_OUT)/$(notdir $(PACKAGE_CONFIG_FILE))
186
187ifeq ($(TARGET_USE_SECURITY_DM_VERITY_MODE_WITH_TOOL),true)
188 SYSTEMIMG_INTERMEDIATES := $(PRODUCT_OUT)/obj/PACKAGING/systemimage_intermediates/system.img.
189 SYSTEMIMG_INTERMEDIATES := $(SYSTEMIMG_INTERMEDIATES)verity_table.bin $(SYSTEMIMG_INTERMEDIATES)verity.img
190 define security_dm_verity_conf
191 @echo "copy verity.img and verity_table.bin"
192 @sed -i "/verity_table.bin/d" $(PACKAGE_CONFIG_FILE)
193 @sed -i "/verity.img/d" $(PACKAGE_CONFIG_FILE)
194 $(hide) \
195 sed -i "/aml_sdc_burn\.ini/ s/.*/&\nfile=\"system.img.verity.img\"\t\tmain_type=\"img\"\t\tsub_type=\"verity\"/" $(PACKAGE_CONFIG_FILE); \
196 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);
197 cp $(SYSTEMIMG_INTERMEDIATES) $(PRODUCT_UPGRADE_OUT)/
198 endef #define security_dm_verity_conf
199endif # ifeq ($(TARGET_USE_SECURITY_DM_VERITY_MODE_WITH_TOOL),true)
200
201ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
202define aml-secureboot-sign-bootloader
203 @echo -----aml-secureboot-sign-bootloader ------
204 $(hide) $(PRODUCT_AML_SECUREBOOT_SIGNBOOTLOADER) --input $(basename $(1)) --output $(1)
205 @echo ----- Made aml secure-boot singed bootloader: $(1) --------
206endef #define aml-secureboot-sign-bootloader
207define aml-secureboot-sign-kernel
208 @echo -----aml-secureboot-sign-kernel ------
209 $(hide) mv -f $(1) $(basename $(1))
210 $(hide) $(PRODUCT_AML_SECUREBOOT_SIGNIMAGE) --input $(basename $(1)) --output $(1)
211 @echo ----- Made aml secure-boot singed bootloader: $(1) --------
212endef #define aml-secureboot-sign-kernel
213define aml-secureboot-sign-bin
214 @echo -----aml-secureboot-sign-bin------
215 $(hide) mv -f $(1) $(basename $(1))
216 $(hide) $(PRODUCT_AML_SECUREBOOT_SIGBIN) --input $(basename $(1)) --output $(1)
217 @echo ----- Made aml secure-boot singed bin: $(1) --------
218endef #define aml-secureboot-sign-bin
219endif# ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
220
221.PHONY:aml_upgrade
222aml_upgrade:$(INSTALLED_AML_UPGRADE_PACKAGE_TARGET)
223$(INSTALLED_AML_UPGRADE_PACKAGE_TARGET): \
224 $(addprefix $(PRODUCT_OUT)/,$(BUILT_IMAGES)) \
225 $(UPGRADE_FILES) \
226 $(INSTALLED_AML_USER_IMAGES) \
227 $(INSTALLED_AML_LOGO) \
228 $(INSTALLED_MANIFEST_XML) \
229 $(TARGET_USB_BURNING_V2_DEPEND_MODULES)
230 mkdir -p $(PRODUCT_UPGRADE_OUT)
231 $(hide) $(foreach file,$(UPGRADE_FILES), \
232 echo cp $(file) $(PRODUCT_UPGRADE_OUT)/$(notdir $(file)); \
233 cp -f $(file) $(PRODUCT_UPGRADE_OUT)/$(notdir $(file)); \
234 )
235 $(hide) $(foreach file,$(BUILT_IMAGES), \
236 echo ln -sf $(PRODUCT_OUT)/$(file) $(PRODUCT_UPGRADE_OUT)/$(file); \
237 ln -sf $(ANDROID_BUILD_TOP)/$(PRODUCT_OUT)/$(file) $(PRODUCT_UPGRADE_OUT)/$(file); \
238 )
239ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
240 $(hide) rm -f $(PRODUCT_UPGRADE_OUT)/u-boot.bin.encrypt.*
241 $(hide) $(ACP) $(PRODUCT_OUT)/u-boot.bin.encrypt.* $(PRODUCT_UPGRADE_OUT)/
242 ln -sf $(ANDROID_BUILD_TOP)/$(PRODUCT_OUT)/dtb.img $(PRODUCT_UPGRADE_OUT)/dtb.img
243 ln -sf $(ANDROID_BUILD_TOP)/$(PRODUCT_OUT)/u-boot.bin.encrypt.efuse $(PRODUCT_UPGRADE_OUT)/SECURE_BOOT_SET
244endif# ifeq ($(PRODUCT_BUILD_SECURE_BOOT_IMAGE_DIRECTLY),true)
245 $(security_dm_verity_conf)
246 $(update-aml_upgrade-conf)
247 $(hide) $(foreach userPartName, $(BOARD_USER_PARTS_NAME), \
248 $(call aml-user-img-update-pkg,$(userPartName),$(PACKAGE_CONFIG_FILE)))
249 @echo "Package: $@"
250 @echo ./vendor/amlogic/tools/aml_upgrade/aml_image_v2_packer -r \
251 $(PACKAGE_CONFIG_FILE) $(PRODUCT_UPGRADE_OUT)/ $@
252 ./vendor/amlogic/tools/aml_upgrade/aml_image_v2_packer -r \
253 $(PACKAGE_CONFIG_FILE) $(PRODUCT_UPGRADE_OUT)/ $@
254 @echo " $@ installed"
255else
256#none
257INSTALLED_AML_UPGRADE_PACKAGE_TARGET :=
258endif
259
260droidcore: $(INSTALLED_AML_UPGRADE_PACKAGE_TARGET) $(INSTALLED_MANIFEST_XML)
261otapackage: $(INSTALLED_AML_UPGRADE_PACKAGE_TARGET) $(INSTALLED_MANIFEST_XML)
262
263