| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687 |
- # Copyright Statement:
- #
- # This software/firmware and related documentation ("MediaTek Software") are
- # protected under relevant copyright laws. The information contained herein
- # is confidential and proprietary to MediaTek Inc. and/or its licensors.
- # Without the prior written permission of MediaTek inc. and/or its licensors,
- # any reproduction, modification, use or disclosure of MediaTek Software,
- # and information contained herein, in whole or in part, shall be strictly prohibited.
- #
- # MediaTek Inc. (C) 2011. All rights reserved.
- #
- # BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
- # THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
- # RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON
- # AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
- # NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
- # SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
- # SUPPLIED WITH THE MEDIATEK SOFTWARE, AND RECEIVER AGREES TO LOOK ONLY TO SUCH
- # THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
- # THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES
- # CONTAINED IN MEDIATEK SOFTWARE. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK
- # SOFTWARE RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
- # STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND
- # CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
- # AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
- # OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY RECEIVER TO
- # MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
- #
- # The following software/firmware and/or related documentation ("MediaTek Software")
- # have been modified by MediaTek Inc. All revisions are subject to any receiver's
- # applicable license agreements with MediaTek Inc.
- # Compatible with Ubuntu 12.04
- SHELL := /bin/bash
- .DELETE_ON_ERROR:
- all:
- HOST_OS ?= $(shell uname | tr '[A-Z]' '[a-z]')
- ##############################################################
- # Including Neccesary Files
- #
- ifndef PRELOADER_OUT
- PRELOADER_OUT := .
- endif
- ifndef MTK_PROJECT
- $(error MTK_PROJECT is not defined)
- else
- export MTK_PROJECT
- endif
- ##############################################################
- # Secure Library Building Control
- #
- export CREATE_SEC_LIB := FALSE
- export STANDALONE_SEC_DEVINFO := TRUE
- export CREATE_DEVINFO_LIB := FALSE
- ##############################################################
- # Variable Initialization
- #
- export D_ROOT := $(CURDIR)
- export MTK_ROOT_OUT := $(CURDIR)
- export PWD := $(CURDIR)
- ALL ?= show_title show_internal_feature show_feature
- ALL_PREGEN_FILE :=
- export MTK_ROOT_CUSTOM := $(D_ROOT)/custom
- PROJECT_CONFIGS := $(MTK_ROOT_CUSTOM)/$(MTK_PROJECT)/$(MTK_PROJECT).mk
- include $(PROJECT_CONFIGS)
- ifndef TARGET
- $(error TARGET is not defined)
- else
- export TARGET
- endif
- export MTK_PATH_CUSTOM := $(MTK_ROOT_CUSTOM)/$(TARGET)
- ifndef MTK_PLATFORM
- $(error MTK_PLATFORM is not defined)
- else
- export MTK_PLATFORM
- PLATFORM := $(shell echo $(MTK_PLATFORM) | tr A-Z a-z)
- endif
- export MTK_PATH_PLATFORM := $(D_ROOT)/platform/$(PLATFORM)
- export MTK_PATH_COMMON := $(D_ROOT)/platform/common
- export MTK_PATH_PAL := $(D_ROOT)/platform/pal
- export INCLUDE_FILE_COMMON := -I$(MTK_PATH_COMMON)/inc \
- -I$(MTK_PATH_COMMON)/geniezone/inc \
- -I$(MTK_PATH_PAL)/inc \
- -I$(PRELOADER_OUT)/inc \
- -I$(MTK_PATH_PLATFORM)/src/init/inc \
- -I$(MTK_PATH_PLATFORM)/src/core/inc \
- -I$(MTK_PATH_PLATFORM)/src/drivers/inc \
- -I$(MTK_PATH_PLATFORM)/src/security/inc \
- -I$(MTK_PATH_PLATFORM)/src/security/trustzone/inc \
- -I$(MTK_ROOT_CUSTOM)/$(PLATFORM)/drdi
- #
- # Image Auth
- #
- CUSTOM_PATH := $(MTK_PATH_CUSTOM)/security
- IMAGE_AUTH_CFG_FILE := ${PRELOADER_OUT}/inc/KEY_IMAGE_AUTH.h
- #IMAGE_AUTH_CONFIG_PATH := ${CUSTOM_PATH}/image_auth
- IMAGE_AUTH_CONFIG_PATH := ${CUSTOM_PATH}/image_auth
- IMAGE_AUTH_KEY := ${IMAGE_AUTH_CONFIG_PATH}/IMG_AUTH_KEY.ini
- IMAGE_AUTH_CFG := ${IMAGE_AUTH_CONFIG_PATH}/IMG_AUTH_CFG.ini
- IMAGE_AUTH_KEY_EXIST := $(if $(wildcard $(IMAGE_AUTH_KEY)),TRUE,FALSE)
- ifeq ("$(IMAGE_AUTH_KEY_EXIST)","TRUE")
- ALL += img_auth_info
- ALL_PREGEN_FILE += $(IMAGE_AUTH_CFG_FILE)
- endif
- CHIP_CONFIG_PATH := $(CUSTOM_PATH)/chip_config
- GFH_PATH := $(CHIP_CONFIG_PATH)/s/gfh
- CONFIG_PATH := $(CHIP_CONFIG_PATH)/s/cfg
- KEY_PATH := $(CHIP_CONFIG_PATH)/s/key
- ifneq ($(wildcard $(CONFIG_PATH)/PADDING_TYPE.ini),)
- PADDING_TYPE := $(shell cat $(CONFIG_PATH)/PADDING_TYPE.ini)
- endif
- #
- # preloader extension
- #
- PRELOADER_EXT_BIN := $(MTK_ROOT_CUSTOM)/$(PLATFORM)/preloader/preloader_ext.bin
- PRELOADER_EXT_BIN_EXIST := $(if $(wildcard $(PRELOADER_EXT_BIN)),TRUE,FALSE)
- #
- # Tool
- #
- EFUSE_PY_FILE := tools/efuse/efuse_bingen_v2.py
- EFUSE_PY_DEF := tools/efuse/$(MTK_PLATFORM)/efuse_definition.xml
- EFUSE_INPUT_FILE := $(D_ROOT)/../../../../../../vendor/mediatek/proprietary/custom/$(TARGET)/security/efuse/input.xml
- EFUSE_IMAGE_NAME := efuse_$(MTK_PROJECT).img
- TOOL_PATH ?= $(D_ROOT)/../../../../../../device/mediatek/build/build/tools
- ifeq ($(HOST_OS),darwin)
- SIGN_TOOL := tools/signtool/SignTool_PL.darwin
- CIPHER_TOOL := tools/ciphertool/CipherTool.darwin
- else
- SIGN_TOOL := tools/signtool/SignTool_PL
- CIPHER_TOOL := tools/ciphertool/CipherTool
- endif
- ifdef PL_MODE
- PL_IMAGE_NAME := preloader_$(MTK_PROJECT)_$(PL_MODE)
- else
- PL_IMAGE_NAME := preloader_$(MTK_PROJECT)
- endif
- SEC_LIB := $(MTK_PATH_PLATFORM)/lib/libsec.a
- SEC_PLAT_LIB := $(MTK_PATH_PLATFORM)/lib/libsecplat.a
- CRYPTO_LIB := $(MTK_PATH_PLATFORM)/lib/libcrypto.a
- DEVINFO_LIB := $(MTK_PATH_PLATFORM)/lib/libdevinfo.a
- DEVINFO_DEBUG_LIB := $(MTK_PATH_PLATFORM)/lib/libdevinfo_debug.a
- HW_CRYPTO_LIB := $(MTK_PATH_PLATFORM)/src/HwCryptoLib.a
- PICACHU_LIB := $(MTK_PATH_PLATFORM)/src/PicachuLib.a
- ALL += build_info project_info
- ALL_PREGEN_FILE += $(PRELOADER_OUT)/inc/preloader.h $(PRELOADER_OUT)/inc/proj_cfg.h
- COMMON_DIR_MK := $(D_ROOT)/build/common-dir.mak
- COMMON_FILE_MK := $(D_ROOT)/build/common.mak
- export COMMON_DIR_MK COMMON_FILE_MK
- SUBDIRS := $(MTK_PATH_PLATFORM)/src/ $(MTK_PATH_CUSTOM)/ $(MTK_PATH_COMMON)/ $(MTK_PATH_PAL)/
- ifeq ($(CREATE_SEC_LIB),TRUE)
- ALL += $(SEC_LIB) $(CRYPTO_LIB) $(SEC_PLAT_LIB)
- ifeq ($(STANDALONE_SEC_DEVINFO),TRUE)
- ALL += $(DEVINFO_LIB) $(DEVINFO_DEBUG_LIB)
- endif
- endif
- ifeq ($(CREATE_DEVINFO_LIB),TRUE)
- ALL += $(DEVINFO_LIB) $(DEVINFO_DEBUG_LIB)
- endif
- ALL += preloader_bin
- ALL += dump_build_info
- include build/debug.in build/setting.in
- include $(MTK_PATH_PLATFORM)/makefile.mak
- export EMIGEN_OUT := $(PRELOADER_OUT)
- export DRVGEN_OUT := $(PRELOADER_OUT)
- export PTGEN_OUT := $(PRELOADER_OUT)
- include tools/emigen/emigen.mk
- include tools/drvgen/drvgen.mk
- -include tools/ptgen/$(MTK_PLATFORM)/ptgen.mk
- ALL_PREGEN_FILE += $(EMIGEN_FILE_LIST)
- ALL_PREGEN_FILE += $(DRVGEN_FILE_LIST)
- ALL_PREGEN_FILE += $(PTGEN_FILE_LIST)
- export ALL_DEPENDENCY_FILE := $(foreach m,$(MAKEFILE_LIST),$(if $(filter /% ~%,$(m)),$(m),$(D_ROOT)/$(m)))
- .PHONY: clean
- .PHONY: $(ALL)
- all: $(ALL)
- #########
- # recursive
- #
- # $(1): subdir
- # $(2): target flag
- # $(3): dependency
- define build-topdirs
- $(2): $(3) FORCE
- @mkdir -p $$(dir $$@)
- $$(MAKE) -C $(1) --no-print-directory
- endef
- .PHONY: FORCE
- FORCE:
- SUBDIRS_FLAGS :=
- $(foreach d,$(SUBDIRS),\
- $(eval r := $(patsubst $(D_ROOT)/%,%,$(patsubst %/,%,$(if $(filter /%,$(d)),,$(CURDIR)/)$(d))))\
- $(eval t := $(PRELOADER_OUT)/obj/$(subst /,_,$(r)).flag)\
- $(eval $(call build-topdirs,$(d),$(t),$(ALL_PREGEN_FILE)))\
- $(eval SUBDIRS_FLAGS += $(t))\
- )
- ##############################################################
- # ELF Generation
- #
- CFG_PRELOADER_EXT_COMMON_BUILD := 0
- ifeq ($(CFG_PRELOADER_EXTENSION), 1)
- ifeq ($(CREATE_SEC_LIB),FALSE)
- CFG_PRELOADER_EXT_COMMON_BUILD := 1
- endif
- endif
- ifeq ($(CFG_PRELOADER_EXT_COMMON_BUILD), 1)
- SECLIB2OBJ_TOOL := tools/efuse/seclib2obj_convertor.py
- SECLIB_OBJ_LIST_FILE := $(PRELOADER_OUT)/seclib_obj_list.txt
- DEVINFO_OBJ_DIR := $(PRELOADER_OUT)/obj/libdevinfo_obj
- else
- SECLIB2OBJ_TOOL :=
- SECLIB_OBJ_LIST_FILE :=
- DEVINFO_OBJ_DIR :=
- endif
- ifeq ($(CFG_PRELOADER_DRAM_USE), 1)
- PL_IMG_SECOND_PARTION_SECTION :=.pl_dram.text .pl_dram.data .pl_dram.rodata .pl_dram.start
- OBJONCHIP_FLAG := $(addprefix -R , $(PL_IMG_SECOND_PARTION_SECTION))
- OBJSECOND_FLAG := $(addprefix -j , $(PL_IMG_SECOND_PARTION_SECTION))
- PL_DRAM_IMAGE_NAME := $(PL_IMAGE_NAME)_dram
- PL_DRAM_HDRBIN_PATH := $(D_BIN)/hd_$(PL_DRAM_IMAGE_NAME).bin
- LDSCRIPT := $(D_BIN)/$(MTK_PROJECT)_gen.ld
- else
- OBJONCHIP_FLAG :=
- OBJSECOND_FLAG :=
- PL_DRAM_IMAGE_NAME :=
- PL_DRAM_HDRBIN_PATH :=
- endif
- ifdef CFG_TEE_DRAM_SIZE
- PL_DRAM_RESERVE_SIZE := $(CFG_TEE_DRAM_SIZE)
- else
- PL_DRAM_RESERVE_SIZE := 0
- endif
- ifdef CFG_PRELOADER_DRAM_USE
- ifeq ($(CFG_PRELOADER_DRAM_USE), 1)
- $(LDSCRIPT): $(LDSCRIPT_DRAM)
- $(LDSCRIPT): $(ALL_DEPENDENCY_FILE)
- @echo generating $@
- $(MKDIR)
- sed "s/%CFG_DRAM_SIZE%/$(CFG_DRAM_SIZE)/;s/%EXT_PRELOAER_DRAMSIZE%/$(EXT_PRELOAER_DRAMSIZE)/;s/%PL_DRAM_RESERVE_SIZE%/$(PL_DRAM_RESERVE_SIZE)/" < $< > $@
- endif
- endif
- ifeq ($(CFG_PRELOADER_EXTENSION), 1)
- MKIMAGE := tools/mkimage/mkimage
- LOADER_EXT_NAME := loader_ext
- LOADER_EXT_ETC_HEADER_CFG := loader_ext_etc_hdr.cfg
- LOADER_EXT_DRAM_HEADER_CFG := loader_ext_dram_hdr.cfg
- endif #($(CFG_PRELOADER_EXTENSION), 1)
- ifneq ($(wildcard $(CONFIG_PATH)/PBP_PY_SUPPORT),)
- PBP_TOOL := tools/pbp/pbp.py
- BIN_TO_TXT_TOOL := tools/pbp/bin2txt.py
- CHIP_KEY := $(KEY_PATH)/pl_key.ini
- else
- ifeq ($(HOST_OS),darwin)
- PBP_TOOL := tools/pbp/PBP.darwin
- else
- PBP_TOOL := tools/pbp/PBP
- endif
- CHIP_CONFIG := $(CONFIG_PATH)/CHIP_CONFIG.ini
- CHIP_KEY := $(KEY_PATH)/CHIP_TEST_KEY.ini
- endif
- preloader_bin: $(D_BIN)/$(PL_IMAGE_NAME).bin $(PRELOADER_OUT)/report-codesize.csv $(PRELOADER_OUT)/codesize_profiling.csv
- ifeq ($(MTK_EFUSE_WRITER_SUPPORT),yes)
- preloader_bin: $(D_BIN)/efuse.img
- endif
- $(D_BIN)/keyhash.bin: $(PBP_TOOL) $(KEY_PATH)/root_prvk.pem
- ifneq (,$(findstring legacy,$(PADDING_TYPE)))
- PYTHONDONTWRITEBYTECODE=True python $(PBP_TOOL) -j $(KEY_PATH)/root_prvk.pem -func keyhash_legacy -o $@
- else
- PYTHONDONTWRITEBYTECODE=True python $(PBP_TOOL) -j $(KEY_PATH)/root_prvk.pem -func keyhash_pss -o $@
- endif
- $(D_BIN)/keyhash.txt: $(D_BIN)/keyhash.bin $(BIN_TO_TXT_TOOL) $(PBP_TOOL) $(CHIP_KEY)
- ifneq ($(wildcard $(CONFIG_PATH)/PBP_PY_SUPPORT),)
- python $(BIN_TO_TXT_TOOL) $< $@
- else
- $(PBP_TOOL) -func keyhash -i $(CHIP_KEY) -o $@
- endif
- $(D_BIN)/$(EFUSE_IMAGE_NAME): $(D_BIN)/keyhash.txt $(EFUSE_PY_FILE) $(EFUSE_INPUT_FILE) $(EFUSE_PY_DEF)
- rm -rf $(PRELOADER_OUT)/efuse_bingen.log
- python $(EFUSE_PY_FILE) -f $(EFUSE_INPUT_FILE) -d $(EFUSE_PY_DEF) -k $< -o $@ -l $(PRELOADER_OUT)/efuse_bingen.log
- rm -rf $(D_BIN)/keyhash.txt
- $(D_BIN)/efuse.img: $(D_BIN)/$(EFUSE_IMAGE_NAME)
- ifeq ($(MTK_EFUSE_WRITER_SUPPORT),yes)
- rm -rf $@
- cp -f $< $@
- endif
- $(D_BIN)/$(PL_IMAGE_NAME).elf: $(SUBDIRS_FLAGS) $(LDSCRIPT)
- $(D_BIN)/$(PL_IMAGE_NAME).elf: $(wildcard $(PICACHU_LIB)) $(SEC_LIB) $(CRYPTO_LIB) $(SEC_PLAT_LIB) $(wildcard $(HW_CRYPTO_LIB)) $(wildcard $(DEVINFO_LIB)) $(wildcard $(DEVINFO_DEBUG_LIB))
- $(D_BIN)/$(PL_IMAGE_NAME).elf: $(ALL_DEPENDENCY_FILE)
- @mkdir -p $(dir $@)
- ifeq ($(CFG_PRELOADER_EXT_COMMON_BUILD), 1)
- rm -rf $(DEVINFO_OBJ_DIR)
- mkdir -p $(DEVINFO_OBJ_DIR)
- $(AR) -t $(DEVINFO_LIB) | grep "\.o" > $(SECLIB_OBJ_LIST_FILE)
- python $(SECLIB2OBJ_TOOL) -b $(SECLIB_OBJ_LIST_FILE) -r $(D_ROOT) -p $(DEVINFO_OBJ_DIR) -s $(DEVINFO_LIB) -t $(PRELOADER_OUT)
- rm -rf $(SECLIB_OBJ_LIST_FILE)
- $(LD) --gc-sections -Bstatic -T$(LDSCRIPT) \
- `cat $(PRELOADER_OUT)/obj/*.flag | tr ' ' '\n' | grep "\.o$$" | LC_COLLATE=C sort` \
- $(wildcard $(PICACHU_LIB)) \
- --start-group \
- $(SEC_LIB) \
- $(CRYPTO_LIB) \
- $(SEC_PLAT_LIB) \
- $(DEVINFO_OBJ_DIR)/*.o \
- $(wildcard $(DEVINFO_DEBUG_LIB)) \
- $(wildcard $(HW_CRYPTO_LIB)) \
- --end-group \
- -Map $(PRELOADER_OUT)/system.map -o $(D_BIN)/$(PL_IMAGE_NAME).elf
- rm -rf $(DEVINFO_OBJ_DIR)
- else
- $(LD) --gc-sections -Bstatic -T$(LDSCRIPT) \
- `cat $(PRELOADER_OUT)/obj/*.flag | tr ' ' '\n' | grep "\.o$$" | LC_COLLATE=C sort` \
- $(wildcard $(PICACHU_LIB)) \
- --start-group \
- $(SEC_LIB) \
- $(CRYPTO_LIB) \
- $(SEC_PLAT_LIB) \
- $(wildcard $(DEVINFO_LIB)) \
- $(wildcard $(DEVINFO_DEBUG_LIB)) \
- $(wildcard $(HW_CRYPTO_LIB)) \
- --end-group \
- -Map $(PRELOADER_OUT)/system.map -o $(D_BIN)/$(PL_IMAGE_NAME).elf
- endif
- $(D_BIN)/preloader.elf: $(D_BIN)/$(PL_IMAGE_NAME).elf
- $(OBJCOPY) -R .dram $(D_BIN)/$(PL_IMAGE_NAME).elf -O elf32-littlearm $(D_BIN)/preloader.elf
- ifeq ($(CFG_PRELOADER_DRAM_USE), 1)
- preloader_bin: $(D_BIN)/$(PL_DRAM_IMAGE_NAME).bin
- $(D_BIN)/$(PL_DRAM_IMAGE_NAME).bin: $(D_BIN)/$(PL_IMAGE_NAME).elf
- $(hide) $(OBJCOPY) $(OBJCFLAGS) $(OBJSECOND_FLAG) $(D_BIN)/$(PL_IMAGE_NAME).elf -O binary $(D_BIN)/$(PL_DRAM_IMAGE_NAME).bin
- endif
- $(D_BIN)/$(PL_IMAGE_NAME)_LINKED.bin: $(D_BIN)/$(PL_IMAGE_NAME).elf
- ifeq ($(PRELOADER_EXT_BIN_EXIST),TRUE)
- $(D_BIN)/$(PL_IMAGE_NAME)_LINKED.bin: $(PRELOADER_EXT_BIN)
- endif
- $(D_BIN)/$(PL_IMAGE_NAME)_LINKED.bin: $(PRELOADER_OUT)/MTK_Loader_Info.tag
- $(D_BIN)/$(PL_IMAGE_NAME)_LINKED.bin: zero_padding.sh
- $(D_BIN)/$(PL_IMAGE_NAME)_LINKED.bin: $(PRELOADER_OUT)/report-objsize.txt
- $(D_BIN)/$(PL_IMAGE_NAME)_LINKED.bin: $(PRELOADER_OUT)/report-codesize.txt
- $(D_BIN)/$(PL_IMAGE_NAME)_LINKED.bin: $(PRELOADER_OUT)/function.map
- ifeq ($(CFG_PRELOADER_DRAM_USE), 1)
- $(hide) $(OBJCOPY) $(OBJCFLAGS) $(OBJONCHIP_FLAG) $(D_BIN)/$(PL_IMAGE_NAME).elf -O binary $@
- else
- ifeq ($(CFG_PRELOADER_EXTENSION), 1)
- # loader_ext_etc
- $(hide) $(OBJCOPY) $(OBJCFLAGS) -j .loader_ext_etc $(D_BIN)/$(PL_IMAGE_NAME).elf -O binary $(D_BIN)/$(PL_IMAGE_NAME)_ETC_NO_HDR.bin
- $(hide) $(MKIMAGE) $(D_BIN)/$(PL_IMAGE_NAME)_ETC_NO_HDR.bin $(MTK_PATH_PLATFORM)/$(LOADER_EXT_ETC_HEADER_CFG) > $(D_BIN)/$(PL_IMAGE_NAME)_ETC.bin
- # loader_ext_dram
- $(hide) $(OBJCOPY) $(OBJCFLAGS) -j .loader_ext_dram $(D_BIN)/$(PL_IMAGE_NAME).elf -O binary $(D_BIN)/$(PL_IMAGE_NAME)_DRAM_NO_HDR.bin
- $(hide) $(MKIMAGE) $(D_BIN)/$(PL_IMAGE_NAME)_DRAM_NO_HDR.bin $(MTK_PATH_PLATFORM)/$(LOADER_EXT_DRAM_HEADER_CFG) > $(D_BIN)/$(PL_IMAGE_NAME)_DRAM.bin
- # loader_ext.img = loader_ext_dram + loader_ext_etc
- cp $(D_BIN)/$(PL_IMAGE_NAME)_DRAM.bin $(D_BIN)/$(LOADER_EXT_NAME).img
- cat $(D_BIN)/$(PL_IMAGE_NAME)_ETC.bin >> $(D_BIN)/$(LOADER_EXT_NAME).img
- $(hide) $(OBJCOPY) $(OBJCFLAGS) -R .loader_ext_etc -R .loader_ext_dram $(D_BIN)/$(PL_IMAGE_NAME).elf -O binary $@
- else # original flow
- $(hide) $(OBJCOPY) $(OBJCFLAGS) $(D_BIN)/$(PL_IMAGE_NAME).elf -O binary $@
- endif #($(CFG_PRELOADER_EXTENSION), 1)
- endif
- ifeq ("$(PRELOADER_EXT_BIN_EXIST)","TRUE")
- cat $(PRELOADER_EXT_BIN) >> $@
- endif
- ./zero_padding.sh $@ 4
- ./alignment_check.sh $(PRELOADER_OUT)/MTK_Loader_Info.tag 4
- cat $(PRELOADER_OUT)/MTK_Loader_Info.tag >> $@
- $(PRELOADER_OUT)/report-codesize.txt: $(D_BIN)/$(PL_IMAGE_NAME).elf
- $(CROSS_COMPILE)readelf -s $(D_BIN)/$(PL_IMAGE_NAME).elf | awk -F':' '/Num/ {print $$2}' > $@
- $(CROSS_COMPILE)readelf -s $(D_BIN)/$(PL_IMAGE_NAME).elf | awk -F':' '{if ($$1>0) print $$2}' | awk -F' ' '{if ($$2>0) print $$0}' | sort -k1 >> $@
- $(PRELOADER_OUT)/report-codesize.csv: $(PRELOADER_OUT)/report-codesize.txt
- cat $(PRELOADER_OUT)/report-codesize.txt | sed 's/[ ]+/,/g' > $@
- $(PRELOADER_OUT)/report-objsize.txt: $(D_BIN)/$(PL_IMAGE_NAME).elf
- $(CROSS_COMPILE)size `ls $(PRELOADER_OUT)/obj/*.o` > $@
- $(PRELOADER_OUT)/codesize_profiling.csv: $(D_BIN)/$(PL_IMAGE_NAME).elf
- $(PRELOADER_OUT)/codesize_profiling.csv: codesize_profiling.sh
- ./codesize_profiling.sh $(PRELOADER_OUT)/system.map $@
- ##############################################################
- # Security Library Generation
- #
- ifeq ($(CREATE_SEC_LIB),TRUE)
- $(SEC_LIB): $(SUBDIRS_FLAGS)
- rm -rf $@
- @echo AR $(PRELOADER_OUT)/out/*.o
- $(AR) -r $@ $(PRELOADER_OUT)/out/*.o
- @echo =================================================================
- @echo Security Library Common
- @echo '$@' built at
- @echo time : $(shell date)
- @echo =================================================================
- $(CRYPTO_LIB): $(SUBDIRS_FLAGS)
- rm -rf $@
- @echo AR $(PRELOADER_OUT)/out_crypto/*.o
- $(AR) -r $@ $(PRELOADER_OUT)/out_crypto/*.o
- @echo =================================================================
- @echo Crypto Library
- @echo '$@' built at
- @echo time : $(shell date)
- @echo =================================================================
- $(SEC_PLAT_LIB): $(SUBDIRS_FLAGS)
- rm -rf $@
- @echo AR $(PRELOADER_OUT)/out_plat/*.o
- $(AR) -r $@ $(PRELOADER_OUT)/out_plat/*.o
- @echo =================================================================
- @echo Security Library Platform
- @echo '$@' built at
- @echo time : $(shell date)
- @echo =================================================================
- endif
- ifeq ($(CREATE_DEVINFO_LIB), TRUE)
- $(DEVINFO_LIB): $(SUBDIRS_FLAGS)
- rm -rf $@
- @echo AR $(PRELOADER_OUT)/out_devinfo/*.o
- -$(AR) -r $@ $(PRELOADER_OUT)/out_devinfo/*.o
- @echo =================================================================
- @echo Devinfo Security Library
- @echo '$@' built at
- @echo time : $(shell date)
- @echo =================================================================
- $(DEVINFO_DEBUG_LIB): $(SUBDIRS_FLAGS)
- rm -rf $@
- @echo AR $(PRELOADER_OUT)/out_devinfo_debug/*.o
- -$(AR) -r $@ $(PRELOADER_OUT)/out_devinfo_debug/*.o
- @echo =================================================================
- @echo Devinfo Security Library Debug Version
- @echo '$@' built at
- @echo time : $(shell date)
- @echo =================================================================
- endif
- ##############################################################
- # File for Debugging
- #
- $(PRELOADER_OUT)/function.map: $(D_BIN)/$(PL_IMAGE_NAME).elf
- $(NM) $< | grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | sort > $@
- ##############################################################
- # Dump Configurations
- #
- show_title:
- @echo =================================================================
- @echo Building Configuration:
- @echo Project = $(MTK_PROJECT)
- @echo Platform = $(MTK_PLATFORM)
- @echo Buildspec = buildspec.mak
- @echo Create SecLib = $(CREATE_SEC_LIB)
- @echo Image Auth key exist = $(IMAGE_AUTH_KEY_EXIST)
- @echo Preloader EXT exist = $(PRELOADER_EXT_BIN_EXIST)
- @echo SECRO AC support = $(MTK_SEC_SECRO_AC_SUPPORT)
- @echo =================================================================
- show_internal_feature:
- @echo =================================================================
- @echo Internal Feature:
- @echo HW_INIT_ONLY = $(HW_INIT_ONLY)
- @echo CFG_MDJTAG_SWITCH= $(CFG_MDJTAG_SWITCH)
- @echo CFG_MDMETA_DETECT= $(CFG_MDMETA_DETECT)
- @echo CFG_HW_WATCHDOG= $(CFG_HW_WATCHDOG)
- @echo CFG_APWDT= $(CFG_APWDT)
- @echo CFG_APWDT_DISABLE= $(CFG_APWDT_DISABLE)
- @echo CFG_MDWDT_DISABLE= $(CFG_MDWDT_DISABLE)
- @echo CFG_SYS_STACK_SZ= $(CFG_SYS_STACK_SZ)
- @echo CFG_MMC_ADDR_TRANS= $(CFG_MMC_ADDR_TRANS)
- @echo CFG_BOOT_ARGUMENT= $(CFG_BOOT_ARGUMENT)
- @echo CFG_RAM_CONSOLE= $(CFG_RAM_CONSOLE)
- @echo =================================================================
- @echo MTK_PATH_PLATFORM= $(MTK_PATH_PLATFORM)
- @echo MTK_PATH_CUSTOM= $(MTK_PATH_CUSTOM)
- @echo MTK_ROOT_CUSTOM= $(MTK_ROOT_CUSTOM)
- @echo CUSTOM_PATH= $(CUSTOM_PATH)
- @echo =================================================================
- show_feature:
- @if [ -e "$(MTK_PATH_CUSTOM)/cust_bldr.mak" ]; then \
- echo =========================================== ; \
- echo Platform Feature: ; \
- echo 'CFG_FPGA_PLATFORM'= $(CFG_FPGA_PLATFORM) ; \
- echo 'CFG_EVB_PLATFORM'= $(CFG_EVB_PLATFORM) ; \
- echo 'CFG_BATTERY_DETECT'= $(CFG_BATTERY_DETECT) ; \
- echo 'CFG_PMT_SUPPORT'= $(CFG_PMT_SUPPORT) ; \
- echo =========================================== ; \
- echo Communication Feature: ; \
- echo 'CFG_UART_TOOL_HANDSHAKE'= $(CFG_UART_TOOL_HANDSHAKE) ; \
- echo 'CFG_USB_TOOL_HANDSHAKE'= $(CFG_USB_TOOL_HANDSHAKE) ; \
- echo 'CFG_USB_DOWNLOAD'= $(CFG_USB_DOWNLOAD) ; \
- echo 'CFG_LOG_BAUDRATE'= $(CFG_LOG_BAUDRATE) ; \
- echo 'CFG_META_BAUDRATE'= $(CFG_META_BAUDRATE) ; \
- echo 'CFG_UART_LOG'= $(CFG_UART_LOG) ; \
- echo 'CFG_UART_META'= $(CFG_UART_META) ; \
- echo 'CFG_EMERGENCY_DL_SUPPORT'= $(CFG_EMERGENCY_DL_SUPPORT) ; \
- echo 'CFG_EMERGENCY_DL_TIMEOUT_MS'= $(CFG_EMERGENCY_DL_TIMEOUT_MS) ; \
- echo 'MTK_UART_USB_SWITCH'= $(MTK_UART_USB_SWITCH) ; \
- echo =========================================== ; \
- echo Image Loading: ; \
- echo 'CFG_LOAD_UBOOT'= $(CFG_LOAD_UBOOT) ; \
- echo 'CFG_LOAD_AP_ROM'= $(CFG_LOAD_AP_ROM) ; \
- echo 'CFG_LOAD_MD_ROM'= $(CFG_LOAD_MD_ROM) ; \
- echo 'CFG_LOAD_MD_RAMDISK'= $(CFG_LOAD_MD_RAMDISK) ; \
- echo 'CFG_LOAD_CONN_SYS'= $(CFG_LOAD_CONN_SYS) ; \
- echo 'CFG_UBOOT_MEMADDR'= $(CFG_UBOOT_MEMADDR) ; \
- echo 'CFG_AP_ROM_MEMADDR'= $(CFG_AP_ROM_MEMADDR) ; \
- echo 'CFG_MD1_ROM_MEMADDR'= $(CFG_MD1_ROM_MEMADDR) ; \
- echo 'CFG_MD1_RAMDISK_MEMADDR'= $(CFG_MD1_RAMDISK_MEMADDR) ; \
- echo 'CFG_MD2_ROM_MEMADDR'= $(CFG_MD2_ROM_MEMADDR) ; \
- echo 'CFG_MD2_RAMDISK_MEMADDR'= $(CFG_MD2_RAMDISK_MEMADDR) ; \
- echo 'CFG_CONN_SYS_MEMADDR'= $(CFG_CONN_SYS_MEMADDR) ; \
- echo 'ONEKEY_REBOOT_NORMAL_MODE_PL'= $(ONEKEY_REBOOT_NORMAL_MODE_PL) ; \
- echo 'KPD_USE_EXTEND_TYPE'= $(KPD_USE_EXTEND_TYPE) ; \
- echo 'KPD_PMIC_LPRST_TD'= $(KPD_PMIC_LPRST_TD) ; \
- echo 'MTK_PMIC_RST_KEY'= $(MTK_PMIC_RST_KEY) ; \
- echo 'CFG_ATF_SUPPORT'= $(CFG_ATF_SUPPORT) ; \
- echo 'CFG_ATF_LOG_SUPPORT'= $(CFG_ATF_LOG_SUPPORT) ; \
- echo 'CFG_TEE_SUPPORT'= $(CFG_TEE_SUPPORT) ; \
- echo 'CFG_TEE_VIRTUAL_RPMB_SUPPORT'= $(CFG_TEE_VIRTUAL_RPMB_SUPPORT) ; \
- echo 'CFG_RPMB_SET_KEY'= $(CFG_RPMB_SET_KEY) ; \
- echo 'CFG_TRUSTONIC_TEE_SUPPORT'= $(CFG_TRUSTONIC_TEE_SUPPORT) ; \
- echo 'CFG_MICROTRUST_TEE_SUPPORT'= $(CFG_MICROTRUST_TEE_SUPPORT) ; \
- echo 'CFG_MICROTRUST_TEE_LITE_SUPPORT'= $(CFG_MICROTRUST_TEE_LITE_SUPPORT) ; \
- echo 'CFG_TRUSTKERNEL_TEE_SUPPORT'= $(CFG_TRUSTKERNEL_TEE_SUPPORT) ; \
- echo 'CFG_TEE_SECURE_MEM_PROTECTED'= $(CFG_TEE_SECURE_MEM_PROTECTED) ; \
- echo 'CFG_TEE_SECURE_MEM_TAG_FORMAT'= $(CFG_TEE_SECURE_MEM_TAG_FORMAT) ; \
- echo 'CFG_TEE_SECURE_MEM_SHARED'= $(CFG_TEE_SECURE_MEM_SHARED) ; \
- echo 'CFG_TEE_TRUSTED_APP_HEAP_SIZE'= $(CFG_TEE_TRUSTED_APP_HEAP_SIZE) ; \
- echo 'CFG_RPMB_KEY_PROGRAMED_IN_KERNEL'= $(CFG_RPMB_KEY_PROGRAMED_IN_KERNEL) ; \
- echo 'MTK_EFUSE_WRITER_SUPPORT'= $(MTK_EFUSE_WRITER_SUPPORT) ; \
- echo 'CFG_GOOGLE_TRUSTY_SUPPORT'= $(CFG_GOOGLE_TRUSTY_SUPPORT) ; \
- echo 'CFG_GZ_SUPPORT'= $(CFG_GZ_SUPPORT) ; \
- echo 'CFG_GZ_NEED_DESCRAMBLE'= $(CFG_GZ_NEED_DESCRAMBLE) ; \
- echo 'CFG_GZ_REMAP'= $(CFG_GZ_REMAP) ; \
- echo 'CFG_NEBULA_VM_SUPPORT'= $(CFG_NEBULA_VM_SUPPORT) ; \
- echo 'CFG_NEBULA_LOAD_IN_PART2'= $(CFG_NEBULA_LOAD_IN_PART2) ; \
- echo 'CFG_GZ_PWRAP_ENABLE'= $(CFG_GZ_PWRAP_ENABLE) ; \
- fi
- ##############################################################
- # Adding Build Time
- #
- build_info: $(PRELOADER_OUT)/inc/preloader.h
- $(PRELOADER_OUT)/inc/preloader.h: $(ALL_DEPENDENCY_FILE)
- @mkdir -p $(dir $@)
- @echo // Auto generated. Build Time Information > $@
- @echo '#'define BUILD_TIME '"'$(shell date +%Y%m%d-%H%M%S)'"' >> $@
- ##############################################################
- # Adding Project Configuration
- #
- project_info: $(PRELOADER_OUT)/inc/proj_cfg.h
- $(PRELOADER_OUT)/inc/proj_cfg.h: $(MTK_PATH_PLATFORM)/default.mak $(MTK_PATH_CUSTOM)/cust_bldr.mak $(PROJECT_CONFIGS)
- $(PRELOADER_OUT)/inc/proj_cfg.h: $(ALL_DEPENDENCY_FILE)
- @mkdir -p $(dir $@)
- @echo // Auto generated. Import ProjectConfig.mk > $@
- @echo '#'define CUSTOM_SUSBDL_CFG $(MTK_SEC_USBDL) >> $@
- @echo '#'define CUSTOM_SBOOT_CFG $(MTK_SEC_BOOT) >> $@
- @echo '#'define MTK_SEC_MODEM_AUTH $(MTK_SEC_MODEM_AUTH) >> $@
- ifdef MTK_SEC_SECRO_AC_SUPPORT
- @echo '#'define MTK_SEC_SECRO_AC_SUPPORT $(MTK_SEC_SECRO_AC_SUPPORT) >> $@
- endif
- ##############################################################
- # Generate Key Info File
- #
- img_auth_info: $(IMAGE_AUTH_CFG_FILE)
- $(IMAGE_AUTH_CFG_FILE): $(SIGN_TOOL) $(IMAGE_AUTH_KEY) $(IMAGE_AUTH_CFG)
- $(IMAGE_AUTH_CFG_FILE): $(ALL_DEPENDENCY_FILE)
- @mkdir -p $(dir $@)
- @touch $@
- @chmod 777 $@
- $(SIGN_TOOL) $(IMAGE_AUTH_KEY) $(IMAGE_AUTH_CFG) $@ IMG
- ##############################################################
- # Clean
- #
- clean:
- @rm -rf $(PRELOADER_OUT)/obj
- @rm -rf $(PRELOADER_OUT)/inc
- @rm -rf $(PRELOADER_OUT)/bin
- @rm -rf $(PRELOADER_OUT)/out_crypto
- @rm -rf $(PRELOADER_OUT)/out_plat
- @rm -rf $(PRELOADER_OUT)/out_devinfo
- @rm -rf $(PRELOADER_OUT)/out_devinfo_debug
- @rm -rf $(PRELOADER_OUT)/out_hw_crypto_lib
- #
- # Encode Key
- #
- ifeq ($(HOST_OS),darwin)
- KEY_ENCODE_TOOL := tools/ke/KeyEncode.darwin
- else
- KEY_ENCODE_TOOL := tools/ke/KeyEncode
- endif
- #key_encode
- $(D_BIN)/KEY_ENCODED_PL: $(D_BIN)/$(PL_IMAGE_NAME)_LINKED.bin | $(KEY_ENCODE_TOOL)
- $(KEY_ENCODE_TOOL) $< $@
- @echo "$(KEY_ENCODE_TOOL) pass !!!!"
- ifdef SEC_ROM_INFO_V2
- $(D_BIN)/$(PL_IMAGE_NAME)_NO_GFH.bin: $(D_BIN)/$(PL_IMAGE_NAME)_LINKED.bin
- @echo "[ Load Chip Config. ]"
- @echo "============================================"
- @echo " : MTK_SEC_CHIP_SUPPORT - $(MTK_SEC_CHIP_SUPPORT)"
- cp -f $< $@
- else
- $(D_BIN)/$(PL_IMAGE_NAME)_NO_GFH.bin: $(D_BIN)/KEY_ENCODED_PL
- @echo "[ Load Chip Config. ]"
- @echo "============================================"
- @echo " : MTK_SEC_CHIP_SUPPORT - $(MTK_SEC_CHIP_SUPPORT)"
- cp -f $< $@
- endif
- ifneq ($(wildcard $(CONFIG_PATH)/PBP_PY_SUPPORT),)
- include bl_sign_v21.mak
- else
- ifneq ($(wildcard $(GFH_PATH)/GFH_CONFIG.ini),)
- include bl_sign_v11.mak
- else
- include bl_sign_v10.mak
- endif
- endif
- dump_build_info: $(D_BIN)/$(PL_IMAGE_NAME)_LINKED.bin $(D_BIN)/$(PL_IMAGE_NAME).elf
- @echo "============================================"
- @echo "${MTK_PROJECT} preloader load"
- @echo "$(D_BIN)/$(PL_IMAGE_NAME)_LINKED.bin built at"
- @echo "time : $(shell date)"
- @echo "img size : `wc -c < $(D_BIN)/$(PL_IMAGE_NAME)_LINKED.bin` byte"
- @echo "bss size : 0x`$(CROSS_COMPILE)readelf -SW $(D_BIN)/$(PL_IMAGE_NAME).elf | grep bss | awk '{if (NF==11) print $$6; else print $$7;}'` byte"
- @echo "dram size : 0x`$(CROSS_COMPILE)readelf -SW $(D_BIN)/$(PL_IMAGE_NAME).elf | grep dram | awk '{if (NF==11) print $$6; else print $$7;}'` byte"
- @echo ============================================
|