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