11bd4fe43Sopenharmony_ci# Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED. 21bd4fe43Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 31bd4fe43Sopenharmony_ci# you may not use this file except in compliance with the License. 41bd4fe43Sopenharmony_ci# You may obtain a copy of the License at 51bd4fe43Sopenharmony_ci# 61bd4fe43Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 71bd4fe43Sopenharmony_ci# 81bd4fe43Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software 91bd4fe43Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 101bd4fe43Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 111bd4fe43Sopenharmony_ci# See the License for the specific language governing permissions and 121bd4fe43Sopenharmony_ci# limitations under the License. 131bd4fe43Sopenharmony_ci# 141bd4fe43Sopenharmony_ci# ֱ��ʹ��make���б����ʹ�÷��� 151bd4fe43Sopenharmony_ci# make �� make all : ɾ�����н����������±�������ģ�� 161bd4fe43Sopenharmony_ci# make clean : ɾ�����н����� 171bd4fe43Sopenharmony_ci# make link : ���� 181bd4fe43Sopenharmony_ciMAIN_TOPDIR = $(shell pwd) 191bd4fe43Sopenharmony_ciTHIRD_DIR = $(MAIN_TOPDIR)/third_party 201bd4fe43Sopenharmony_ciU_BOOT_DIR = $(MAIN_TOPDIR)/third_party/u-boot-v2019.07 211bd4fe43Sopenharmony_ci 221bd4fe43Sopenharmony_ciinclude $(MAIN_TOPDIR)/build/make_scripts/config.mk 231bd4fe43Sopenharmony_ciinclude $(MAIN_TOPDIR)/build/make_scripts/config_lib_factory.mk 241bd4fe43Sopenharmony_ciexport MAIN_TOPDIR 251bd4fe43Sopenharmony_ci 261bd4fe43Sopenharmony_ciGCC_PATH := $(dir $(shell which $(CC))) 271bd4fe43Sopenharmony_ciGCC_LIBPATH := -L$(GCC_PATH)../lib/gcc/riscv32-unknown-elf/$(GCC_VER_NUM) 281bd4fe43Sopenharmony_ciLIBPATH += $(addprefix -Lbuild/build_tmp/libs/, $(foreach module, $(COMPILE_MODULE), $($(module)_dir))) 291bd4fe43Sopenharmony_ciifneq ($(USR_LIBS),) 301bd4fe43Sopenharmony_ci LIBPATH := $(foreach path, $(LIBPATH), $(patsubst -L%, -L$(MAIN_TOPDIR)/%, $(path))) 311bd4fe43Sopenharmony_ciendif 321bd4fe43Sopenharmony_ciCOMPILE_MODULE += boot loaderboot 331bd4fe43Sopenharmony_ciSIGN_CFG = A B 341bd4fe43Sopenharmony_ciA_SIGN = 0x0040d3c0 351bd4fe43Sopenharmony_ciB_SIGN = 0x004f13c0 361bd4fe43Sopenharmony_ciFACTORY_SIGN = 0x0054d3c0 371bd4fe43Sopenharmony_ciLIBS := $(filter-out -lboot -lloaderboot, $(LIBS)) 381bd4fe43Sopenharmony_ci 391bd4fe43Sopenharmony_ciCCFLAGS += -DCONFIG_FACTORY_TEST_MODE 401bd4fe43Sopenharmony_ci 411bd4fe43Sopenharmony_ciFIRM_WARE_VER := $(shell if [ $(CONFIG_TARGET_KERNEL_VER) -gt -1 ] && [ $(CONFIG_TARGET_KERNEL_VER) -lt 49 ];then echo $(CONFIG_TARGET_KERNEL_VER);fi;) 421bd4fe43Sopenharmony_ciifneq ($(FIRM_WARE_VER), $(CONFIG_TARGET_KERNEL_VER)) 431bd4fe43Sopenharmony_ci$(error [ERROR]:FIRM_WARE_VER=$(FIRM_WARE_VER) Ranges From 0 To 48) 441bd4fe43Sopenharmony_ciendif 451bd4fe43Sopenharmony_ci 461bd4fe43Sopenharmony_ciBOOT_VER = $(shell if [ $(CONFIG_TARGET_BOOT_VER) -gt -1 ] && [ $(CONFIG_TARGET_BOOT_VER) -lt 17 ];then echo $(CONFIG_TARGET_BOOT_VER);fi;) 471bd4fe43Sopenharmony_ciifneq ($(BOOT_VER), $(CONFIG_TARGET_BOOT_VER)) 481bd4fe43Sopenharmony_ci$(error [ERROR]:BOOT_VER Ranges From 0 To 16) 491bd4fe43Sopenharmony_ciendif 501bd4fe43Sopenharmony_ci 511bd4fe43Sopenharmony_ciifeq ($(CONFIG_TARGET_SIG_RSA_V15), y) 521bd4fe43Sopenharmony_ci SIGN_ALG = 0x0 531bd4fe43Sopenharmony_cielse ifeq ($(CONFIG_TARGET_SIG_RSA_PSS), y) 541bd4fe43Sopenharmony_ci SIGN_ALG = 0x1 551bd4fe43Sopenharmony_cielse ifeq ($(CONFIG_TARGET_SIG_ECC), y) 561bd4fe43Sopenharmony_ci SIGN_ALG = 0x10 571bd4fe43Sopenharmony_cielse ifeq ($(CONFIG_TARGET_SIG_SHA256), y) 581bd4fe43Sopenharmony_ci SIGN_ALG = 0x3F 591bd4fe43Sopenharmony_ciendif 601bd4fe43Sopenharmony_ci 611bd4fe43Sopenharmony_ciOUT_DIRS = $(MAIN_TOPDIR)/$(LOG_PATH) $(MAIN_TOPDIR)/$(CACHE_PATH) $(MAIN_TOPDIR)/$(LINK_PATH) $(MAIN_TOPDIR)/$(NV_PATH) $(MAIN_TOPDIR)/$(BIN_PATH) 621bd4fe43Sopenharmony_ciall:prepare build_libs_factory nv link_factory check_factory ota_factory 631bd4fe43Sopenharmony_ci $(Q)echo "< ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >" 641bd4fe43Sopenharmony_ci $(Q)echo " FACTORY BIN BUILD SUCCESS " 651bd4fe43Sopenharmony_ci $(Q)echo "< ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >" 661bd4fe43Sopenharmony_ci 671bd4fe43Sopenharmony_cibuild_libs_factory: 681bd4fe43Sopenharmony_ci $(Q)$(foreach module, $(COMPILE_MODULE), \ 691bd4fe43Sopenharmony_ci $(foreach lib, $($(module)_libs), \ 701bd4fe43Sopenharmony_ci $(MAKE) -C $(MAIN_TOPDIR)/$($(module)_dir) MODULE_DIR=$($(module)_dir) LIB=$(lib) FACTORY_MODE=y all;)) 711bd4fe43Sopenharmony_ci 721bd4fe43Sopenharmony_cinv: 731bd4fe43Sopenharmony_ci $(NV_TOOL) $(MAIN_TOPDIR)/$(NV_PATH) $(TARGET_NAME) $(NV_CFG_NAME) 741bd4fe43Sopenharmony_ci 751bd4fe43Sopenharmony_cilink_factory: 761bd4fe43Sopenharmony_ci $(CC) $(LINK_SCRIPTS_FLAG) -E $(MAIN_TOPDIR)/build/link/system_config.ld.S -o $(MAIN_TOPDIR)/$(LINK_PATH)/system_config.ld -P 771bd4fe43Sopenharmony_ci $(CC) $(LINK_SCRIPTS_FLAG) -DFLASH_FIRM_START=$(FACTORY_SIGN) -E $(MAIN_TOPDIR)/build/link/link.ld.S -o $(MAIN_TOPDIR)/$(LINK_PATH)/link_factory.lds -P; 781bd4fe43Sopenharmony_ci $(LINK) $(LINKFLAGS) $(GCC_LIBPATH) $(sort $(LIBPATH)) -T$(MAIN_TOPDIR)/$(LINK_PATH)/link_factory.lds -Map=$(MAIN_TOPDIR)/$(BIN_PATH)/$(TARGET_NAME)_factory.map -o $(MAIN_TOPDIR)/$(BIN_PATH)/$(TARGET_NAME)_factory.out --start-group $(LIBS) --end-group; 791bd4fe43Sopenharmony_ci $(OBJCOPY) -O binary $(MAIN_TOPDIR)/$(BIN_PATH)/$(TARGET_NAME)_factory.out $(MAIN_TOPDIR)/$(CACHE_PATH)/$(TARGET_NAME)_factory.bin; 801bd4fe43Sopenharmony_ci $(OBJDUMP) -d $(MAIN_TOPDIR)/$(BIN_PATH)/$(TARGET_NAME)_factory.out >$(MAIN_TOPDIR)/$(BIN_PATH)/$(TARGET_NAME)_factory.asm; 811bd4fe43Sopenharmony_ci dd if=$(MAIN_TOPDIR)/$(CACHE_PATH)/$(TARGET_NAME)_factory.bin of=$(MAIN_TOPDIR)/$(CACHE_PATH)/$(TARGET_NAME)_base_factory.bin seek=0 count=278 bs=1K; 821bd4fe43Sopenharmony_ci dd if=$(MAIN_TOPDIR)/$(CACHE_PATH)/$(TARGET_NAME)_factory.bin of=$(MAIN_TOPDIR)/$(CACHE_PATH)/$(TARGET_NAME)_kernel_factory.bin skip=278 bs=1K 831bd4fe43Sopenharmony_ci 841bd4fe43Sopenharmony_ciota_factory: 851bd4fe43Sopenharmony_ci $(OTA_TOOL) factory_bin $(TARGET_NAME) $(SIGN_ALG) $(FIRM_WARE_VER) $(BOOT_VER) $(MAIN_TOPDIR)/$(BIN_PATH)/$(TARGET_NAME)_factory.bin usr_output=$(USR_OUTPUT_DIR) $(MAIN_TOPDIR)/$(CACHE_PATH)/$(TARGET_NAME)_kernel_factory.bin A 861bd4fe43Sopenharmony_ci cp -rf $(MAIN_TOPDIR)/$(BIN_PATH)/ $(MAIN_TOPDIR)/build/libs/factory_bin/ 871bd4fe43Sopenharmony_ci 881bd4fe43Sopenharmony_cicheck_factory: link_factory 891bd4fe43Sopenharmony_ci TARGET_SUM=$(shell sha256sum $(MAIN_TOPDIR)/$(CACHE_PATH)/$(TARGET_NAME)_base_factory.bin | cut -d ' ' -f1) && \ 901bd4fe43Sopenharmony_ci if [ "$$TARGET_SUM" == '$(BASE_NUM)' ]; \ 911bd4fe43Sopenharmony_ci then echo "#########BASE BIN IS SAME WITH FIRST COMPILE!#########"; \ 921bd4fe43Sopenharmony_ci else echo "\033[32m#########BASE BIN IS DIFFERENT WITH FIRST COMPILE!#########\033[0m"; exit 1; fi; 931bd4fe43Sopenharmony_ci 941bd4fe43Sopenharmony_ciprepare: 951bd4fe43Sopenharmony_ci $(Q)$(foreach x, $(OUT_DIRS),\ 961bd4fe43Sopenharmony_ci if [ ! -d $x ]; \ 971bd4fe43Sopenharmony_ci then \ 981bd4fe43Sopenharmony_ci mkdir -p $x; \ 991bd4fe43Sopenharmony_ci echo create dir $(x) success; \ 1001bd4fe43Sopenharmony_ci fi;) 1011bd4fe43Sopenharmony_ci if [ ! -d $(MAIN_TOPDIR)/third_party/u-boot-v2019.07/u-boot-v2019.07/ ]; \ 1021bd4fe43Sopenharmony_ci then \ 1031bd4fe43Sopenharmony_ci cd $(THIRD_DIR)/u-boot-v2019.07; \ 1041bd4fe43Sopenharmony_ci tar -xvf u-boot-v2019.07.tar.gz; \ 1051bd4fe43Sopenharmony_ci cd $(U_BOOT_DIR)/u-boot-v2019.07; \ 1061bd4fe43Sopenharmony_ci patch -p1 < ./../patch/CVE-2019-13103.patch; \ 1071bd4fe43Sopenharmony_ci patch -p1 < ./../patch/CVE-2019-13104.patch; \ 1081bd4fe43Sopenharmony_ci patch -p1 < ./../patch/CVE-2019-13105.patch; \ 1091bd4fe43Sopenharmony_ci patch -p1 < ./../patch/CVE-2019-13106.patch; \ 1101bd4fe43Sopenharmony_ci patch -p1 < ./../patch/CVE-2019-14192-14193-14199.patch; \ 1111bd4fe43Sopenharmony_ci patch -p1 < ./../patch/CVE-2019-14194-14198.patch; \ 1121bd4fe43Sopenharmony_ci patch -p1 < ./../patch/CVE-2019-14195.patch; \ 1131bd4fe43Sopenharmony_ci patch -p1 < ./../patch/CVE-2019-14196.patch; \ 1141bd4fe43Sopenharmony_ci patch -p1 < ./../patch/CVE-2019-14197-14200-14201-14202-14203-14204.patch; \ 1151bd4fe43Sopenharmony_ci patch -p1 < ./../hisilicon_patch/hisilicon-u-boot-v2019.07.patch ; \ 1161bd4fe43Sopenharmony_ci cd $(MAIN_TOPDIR); \ 1171bd4fe43Sopenharmony_ci fi; 1181bd4fe43Sopenharmony_ci 1191bd4fe43Sopenharmony_ciclean: 1201bd4fe43Sopenharmony_ci $(Q)$(foreach x, $(OUT_DIRS),\ 1211bd4fe43Sopenharmony_ci if [ -d $(dir $x) ]; \ 1221bd4fe43Sopenharmony_ci then \ 1231bd4fe43Sopenharmony_ci $(RM) $(dir $x); \ 1241bd4fe43Sopenharmony_ci echo clean dir $(dir $x) success; \ 1251bd4fe43Sopenharmony_ci fi;) 1261bd4fe43Sopenharmony_ci $(RM) $(MAIN_TOPDIR)/build/scripts/__pycache__/ 1271bd4fe43Sopenharmony_ci $(RM) $(MAIN_TOPDIR)/third_party/u-boot-v2019.07/u-boot-v2019.07 1281bd4fe43Sopenharmony_ci 1291bd4fe43Sopenharmony_ci 1301bd4fe43Sopenharmony_ci 131