ifndef TOOLCHAIN_PATH #ARM GNU gcc v10.3-2021 has the bug to #resolve link option -nostartfiles, prefer v10-2020-q4 #TOOLCHAIN_PATH := /opt/gcc-arm-none-eabi-10.3-2021.10/bin # Comments from TF-M official doc: # GNU Arm compiler version 10-2020-q4-major has an issue in CMSE support. # Select other GNU Arm compiler versions instead #TOOLCHAIN_PATH := /opt/gcc-arm-none-eabi-10-2020-q4-major/bin #TOOLCHAIN_PATH := /opt/gcc-arm-none-eabi-9-2020-q2-update/bin TOOLCHAIN_PATH := /win30/asic/pujie/project/bk7236/boot_rom_firm/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux/gcc-arm-none-eabi-9-2020-q2-update/bin endif # Default goal is build all images .DEFAULT_GOAL := all ################################################################################ # Get the dir of codebase, requires make version 3.81 or later ################################################################################ top-dir := $(patsubst %/,%,$(abspath $(dir $(lastword $(MAKEFILE_LIST)))..)) mk-dir := $(abspath ./build/mk) ################################################################################ # Default values for build configurations ################################################################################ COMPONENT_OUT := ubl include ${mk-dir}/config.mk include ${mk-dir}/build_macros.mk # Common variables ifeq ($(BOOT_V2), Y) BOOT_TOP := ./boot/boot_v2 else BOOT_TOP := ./boot/boot_v1 endif SEC_BOOT_TOP := ./sec_boot EXT_IMG_TOP := ./sec_boot/ext_image_reference BOOTROM_BIN := $(OUT_DIR)/bootrom/bootrom.bin BOOTROM_BIN_OUT := ${top-dir}/out EXT_IMG_BIN := $(OUT_DIR)/ext_img/ext_img.bin EXT_IMG_BIN_OUT := ${top-dir}/out ################################################################################ # Toolchain ################################################################################ ASFLAGS += ${DEFINES} ${INCLUDES} CFLAGS += ${DEFINES} ${INCLUDES} ################################################################################ # Common sources and include directories ################################################################################ include common.mk ################################################################################ # Generic definitions ################################################################################ PLATFORM_ROOT := hal include ${mk-dir}/plat_helpers.mk ################################################################################ # Include the platform specific Makefile(the platform # makefile may use all previous definitions in this file) ################################################################################ include ${PLAT_MAKEFILE_FULL} ################################################################################ # Include the arch specific Makefile ################################################################################ include arch/arch.mk ################################################################################ # Build options checks ################################################################################ $(eval $(call assert_boolean,CONFG_DEBUG)) ################################################################################ # Add definitions to the cpp preprocessor based on the current build options. # This is done after including the platform specific makefile to allow the # platform to overwrite the default options ################################################################################ $(eval $(call add_define,PLAT_$(call uppercase,${PLAT}))) $(eval $(call add_define,CONFIG_$(call uppercase,${PLAT}))) $(eval $(call add_define,LOG_LEVEL)) ################################################################################ # Include specific makefiles ################################################################################ include sec_boot/sec_boot.mk ifeq ($(BOOT_V2), Y) include boot/boot_v2/boot.mk else include boot/boot_v1/boot.mk endif include bootrom.mk include ext_img.mk -include user_define.mk ################################################################################ # Build targets ################################################################################ .PHONY: all msg_start clean realclean distclean help .SUFFIXES: all: msg_start msg_start: @echo "Building ${PLAT}" post_build: -${Q}cp -f $(BOOTROM_BIN) $(BOOTROM_BIN_OUT) ext_post_build: -${Q}cp -f $(EXT_IMG_BIN) $(EXT_IMG_BIN_OUT) clean: @echo " CLEAN $(OUT_DIR)/bootrom $(OUT_DIR)/ext_img" ${Q}rm -f ${CLEANFILES} ${Q}rm -fr $(OUT_DIR)/bootrom ${Q}rm -fr $(OUT_DIR)/ext_img realclean distclean: @echo " REALCLEAN" ${Q}rm -f ${CLEANFILES} ${Q}rm -fr $(O) help: @echo "usage: ${MAKE} [OPTIONS] [TARGET]" @echo "" @echo "CROSS_COMPILE is used to specify which compiler you wish to use." @echo "If no compiler is specified, CROSS_COMPILE defaults to: ${DFT_CROSS_COMPILE}" @echo "" @echo "Supported Options:" @echo "DEBUG=1: debug version" @echo "V=1: verbose build" @echo "clean: clean build" @echo "Please refer to the User Guide for a list of all supported options." @echo "Note that the build system doesn't track dependencies for build" @echo "options. Therefore, if any of the build options are changed" @echo "from a previous build, a clean build must be performed." @echo "" @echo "Supported Targets:" @echo " all Build all individual binaries" @echo " bootrom Build the BootROM binary" @echo " clean Clean the build for the selected platform" @echo " distclean Remove all build artifacts for all platforms" @echo "" @echo "Note: most build targets require PLAT to be set to a specific platform." @echo "" @echo "example: " @echo " CROSS_COMPILE=arm-none-eabi- make "