663 lines
18 KiB
Makefile
Executable File
663 lines
18 KiB
Makefile
Executable File
#
|
|
# Rules for building project
|
|
#
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# Environment variables.
|
|
# ----------------------------------------------------------------------------
|
|
export KCONFIG_CONFIG=$(ROOT_PATH)/.config
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# library
|
|
# ----------------------------------------------------------------------------
|
|
LIBRARY_PATHS := -L$(ROOT_PATH)/lib
|
|
LIBRARY_PATHS += -L$(ROOT_PATH)/lib/$(PLATFORM_RELATIVE_PATH)
|
|
LIBRARY_PATHS += $(PRJ_EXTRA_LIBS_PATH)
|
|
|
|
# wlan libs
|
|
ifeq ($(CONFIG_WLAN_STA)_$(CONFIG_WLAN_AP), y_y)
|
|
ifeq ($(CONFIG_WLAN_STA_WPS), y)
|
|
LIB_WPA += -lwpas_wps_hostapd
|
|
else
|
|
LIB_WPA += -lwpas_hostapd
|
|
endif
|
|
else
|
|
ifeq ($(CONFIG_WLAN_STA), y)
|
|
ifeq ($(CONFIG_WLAN_STA_WPS), y)
|
|
LIB_WPA += -lwpas_wps
|
|
else
|
|
LIB_WPA += -lwpas
|
|
endif
|
|
endif
|
|
ifeq ($(CONFIG_WLAN_AP), y)
|
|
LIB_WPA += -lhostapd
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(CONFIG_ETF), y)
|
|
LIB_WLAN := -lxretf
|
|
ifeq ($(CONFIG_CHIP_ARCH_VER), 1)
|
|
LIB_WLAN += -lwlan
|
|
endif
|
|
else
|
|
ifeq ($(CONFIG_WLAN), y)
|
|
LIB_WLAN := -lwlan $(LIB_WPA) -lnet80211 -lxrwireless -lnet80211
|
|
|
|
ifeq ($(CONFIG_CHIP_ARCH_VER), 3)
|
|
ifeq ($(CONFIG_WLAN), y)
|
|
LIB_WLAN += -lxrwireless_phy
|
|
endif
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
# There are strong and weak symbols in "lchip", it may link to the weak symbol
|
|
# as they are statc libraries, so use --whole-archive to solve this problem.
|
|
LIBRARIES := -Wl,--whole-archive -lchip -lxrsys -lrom -Wl,--no-whole-archive
|
|
|
|
# add extra libs from specific project
|
|
LIBRARIES += $(PRJ_EXTRA_LIBS)
|
|
|
|
ifneq ($(CONFIG_BOOTLOADER), y)
|
|
|
|
ifeq ($(CONFIG_OTA), y)
|
|
LIBRARIES += -lota
|
|
endif
|
|
LIBRARIES += -lefpg
|
|
|
|
LIBRARIES += $(LIB_WLAN)
|
|
|
|
# audio player libs
|
|
ifeq ($(CONFIG_XPLAYER), y)
|
|
LIBRARIES += -lcedarx
|
|
LIBRARIES += -lmp3
|
|
LIBRARIES += -lmp3en
|
|
LIBRARIES += -lamr
|
|
LIBRARIES += -lamren
|
|
LIBRARIES += -lwav
|
|
LIBRARIES += -laac
|
|
LIBRARIES += -laacen
|
|
LIBRARIES += -logg
|
|
LIBRARIES += -lcedarx
|
|
endif
|
|
|
|
ifeq ($(CONFIG_BLEHOST), y)
|
|
LIBRARIES += -l_ble_host
|
|
endif
|
|
|
|
ifeq ($(CONFIG_BLE), y)
|
|
LIBRARIES += -lbt_driver
|
|
LIBRARIES += -lblec
|
|
endif
|
|
|
|
# network libs
|
|
ifeq ($(CONFIG_WLAN), y)
|
|
LIBRARIES += -lmqtt
|
|
LIBRARIES += -lnopoll
|
|
LIBRARIES += -llibwebsockets
|
|
LIBRARIES += -lhttpd
|
|
LIBRARIES += -lhttpcli
|
|
LIBRARIES += -lmbedtls
|
|
LIBRARIES += -lsntp
|
|
LIBRARIES += -lping
|
|
LIBRARIES += -ludhcpd
|
|
LIBRARIES += -lsmartlink
|
|
LIBRARIES += -lairkiss_aes
|
|
LIBRARIES += -lsc_assistant
|
|
LIBRARIES += -lethernetif
|
|
LIBRARIES += -llwip
|
|
LIBRARIES += -lmbuf
|
|
endif
|
|
|
|
# other libs
|
|
LIBRARIES += -lcjson
|
|
ifeq ($(CONFIG_FILESYSTEMS), y)
|
|
LIBRARIES += -lfs
|
|
endif
|
|
LIBRARIES += -lconsole
|
|
LIBRARIES += -lcomponent
|
|
LIBRARIES += -lreverb
|
|
LIBRARIES += -laudmgr
|
|
LIBRARIES += -lpcm
|
|
LIBRARIES += -ladt
|
|
LIBRARIES += -lutil
|
|
ifeq ($(CONFIG_JPEG), y)
|
|
LIBRARIES += -ljpeg
|
|
endif
|
|
LIBRARIES += -lsdd
|
|
LIBRARIES += -lzbar
|
|
LIBRARIES += -leq
|
|
LIBRARIES += -ldrc
|
|
LIBRARIES += -lopus
|
|
|
|
endif # CONFIG_BOOTLOADER
|
|
|
|
ifeq ($(CONFIG_BIN_COMPRESS), y)
|
|
ifneq ($(CONFIG_ROM_XZ), y)
|
|
LIBRARIES += -lxz
|
|
endif
|
|
endif
|
|
|
|
ifeq ($(CONFIG_PM), y)
|
|
LIBRARIES += -lpm
|
|
endif
|
|
|
|
ifeq ($(CONFIG_BENCH_MARK), y)
|
|
LIBRARIES += -lcoremark -ldhrystone -lwhetstone
|
|
endif
|
|
|
|
ifeq ($(CONFIG_SECURE_BOOT)_$(CONFIG_CHIP_ARCH_VER), y_2)
|
|
LIBRARIES += -lsecureboot
|
|
endif
|
|
|
|
LIBRARIES += -limage -los
|
|
|
|
ifeq ($(CONFIG_OS_FREERTOS), y)
|
|
LIBRARIES += -lfreertos
|
|
endif
|
|
|
|
LIBRARIES += -ldebug
|
|
|
|
ifeq ($(CONFIG_WATCHPOINT), y)
|
|
LIBRARIES += -lwatchpoint
|
|
endif
|
|
|
|
ifeq ($(CONFIG_CPLUSPLUS), y)
|
|
LIBRARIES += -lcplusplus
|
|
endif
|
|
|
|
ifeq ($(CONFIG_TRUSTZONE), y)
|
|
LIBRARIES += $(ROOT_PATH)/lib/$(NSC_SYMBOL)
|
|
endif
|
|
|
|
LIBRARIES += -lxrc $(LD_SYS_LIBS) -lxrc
|
|
|
|
ifeq ($(CONFIG_MUTIL_NET_STACK), y)
|
|
LIBRARIES += -lxrlink
|
|
endif
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# extra include path
|
|
# ----------------------------------------------------------------------------
|
|
ifeq ($(CONFIG_XPLAYER), y)
|
|
CEDARX_INC_DIRS := $(shell find $(ROOT_PATH)/include/cedarx -type d)
|
|
INCLUDE_PATHS += $(foreach dir, $(CEDARX_INC_DIRS), -I$(dir))
|
|
endif
|
|
|
|
INCLUDE_PATHS += -I$(ROOT_PATH)/project
|
|
|
|
ifneq ($(CONFIG_BOARD),)
|
|
INCLUDE_PATHS += -I$(ROOT_PATH)/project/common/board/$(shell echo $(CONFIG_BOARD))
|
|
endif
|
|
|
|
INCLUDE_PATHS += $(PRJ_EXTRA_INC_PATH)
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# include config header for all project
|
|
# ----------------------------------------------------------------------------
|
|
CC_FLAGS += -include common/prj_conf_opt.h
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# common suffix
|
|
# ----------------------------------------------------------------------------
|
|
ifeq ($(CONFIG_XIP), y)
|
|
SUFFIX_XIP := _xip
|
|
endif
|
|
|
|
ifeq ($(CONFIG_PSRAM), y)
|
|
SUFFIX_PSRAM := _psram
|
|
endif
|
|
|
|
ifeq ($(CONFIG_BIN_COMPRESS), y)
|
|
SUFFIX_XZ := _xz
|
|
endif
|
|
|
|
ifeq ($(CONFIG_OTA_POLICY_IMAGE_COMPRESSION), y)
|
|
SUFFIX_IMG_XZ := _img_xz
|
|
endif
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# linker script
|
|
# ----------------------------------------------------------------------------
|
|
# linker script, maybe override by the specific project
|
|
LINKER_SCRIPT_PATH ?= $(ROOT_PATH)/project/linker_script/gcc
|
|
|
|
ifeq ($(CONFIG_BOOTLOADER), y)
|
|
LINKER_SCRIPT ?= $(LINKER_SCRIPT_PATH)/bootloader.ld
|
|
else
|
|
LINKER_SCRIPT ?= $(LINKER_SCRIPT_PATH)/appos.ld
|
|
endif
|
|
|
|
# linker script generated automatically for building elf file
|
|
PROJECT_LD := .project.ld
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# image
|
|
# ----------------------------------------------------------------------------
|
|
# original bin path, files and names
|
|
BIN_PATH := $(ROOT_PATH)/bin/$(PLATFORM_RELATIVE_PATH)
|
|
|
|
BOOT_BIN_PATH := $(ROOT_PATH)/bin/xradio_v$(CONFIG_CHIP_ARCH_VER)/boot/$(CONFIG_CHIP_TYPE)
|
|
ifeq ($(findstring y, $(CONFIG_TRUSTZONE_BOOT) $(CONFIG_TRUSTZONE)), y)
|
|
BOOT_BIN_NAME := boot_$(CONFIG_HOSC_TYPE)M_tz.bin
|
|
else
|
|
BOOT_BIN_NAME := boot_$(CONFIG_HOSC_TYPE)M.bin
|
|
endif
|
|
APP_BIN_NAME := app.bin
|
|
|
|
ifeq ($(CONFIG_XIP), y)
|
|
APP_XIP_BIN_NAME := app$(SUFFIX_XIP).bin
|
|
endif
|
|
|
|
ifeq ($(CONFIG_PSRAM), y)
|
|
APP_PSRAM_BIN_NAME := app$(SUFFIX_PSRAM).bin
|
|
endif
|
|
|
|
SYS_SDD_NAME := sys_sdd_$(CONFIG_HOSC_TYPE)M.bin
|
|
|
|
BIN_FILES := $(BOOT_BIN_PATH)/$(BOOT_BIN_NAME)
|
|
BIN_FILES += $(BIN_PATH)/wlan_bl.bin
|
|
BIN_FILES += $(BIN_PATH)/wlan_fw.bin
|
|
BIN_FILES += $(BIN_PATH)/$(SYS_SDD_NAME)
|
|
ifeq ($(CONFIG_TRUSTZONE), y)
|
|
TZ_API_BIN := tz_api.bin
|
|
BIN_FILES += $(BIN_PATH)/$(TZ_API_BIN)
|
|
ifeq ($(CONFIG_TZ_XIP), y)
|
|
TZ_XIP_BIN := tz_xip.bin
|
|
BIN_FILES += $(BIN_PATH)/$(TZ_XIP_BIN)
|
|
endif
|
|
ifeq ($(CONFIG_TZ_PSRAM), y)
|
|
TZ_PSRAM_BIN := tz_psram.bin
|
|
BIN_FILES += $(BIN_PATH)/$(TZ_PSRAM_BIN)
|
|
endif
|
|
endif
|
|
|
|
BIN_NAMES := $(notdir $(BIN_FILES))
|
|
|
|
ifeq ($(CONFIG_BIN_COMPRESS), y)
|
|
|
|
# xz is a tool used to compress bins
|
|
XZ_CHECK ?= none
|
|
XZ_LZMA2_DICT_SIZE ?= 8KiB
|
|
XZ := xz -f -k --no-sparse --armthumb --check=$(XZ_CHECK) \
|
|
--lzma2=preset=6,dict=$(XZ_LZMA2_DICT_SIZE),lc=3,lp=1,pb=1
|
|
|
|
XZ_DEFAULT_BINS := app.bin
|
|
XZ_BINS ?= $(XZ_DEFAULT_BINS)
|
|
|
|
endif # CONFIG_BIN_COMPRESS
|
|
|
|
# output image path
|
|
IMAGE_PATH := ../image/$(CONFIG_CHIP_TYPE)
|
|
|
|
# $(IMAGE_TOOL) is relative to $(IMAGE_PATH)
|
|
IMAGE_TOOL := ../$(ROOT_PATH)/tools/$(MKIMAGE)
|
|
|
|
# $(MKFS) is a tool for creating fs bin
|
|
ifeq ($(CONFIG_FLASH_FS_IMG_PACK), y)
|
|
ifeq ($(shell uname -o), Cygwin)
|
|
ifeq ($(CONFIG_LITTLE_FS), y)
|
|
MKFS := mklittlefs.exe
|
|
else ifeq ($(CONFIG_SPIF_FS), y)
|
|
MKFS := mkspiffs.exe
|
|
endif
|
|
MKFS_EXEC := $(MKFS)
|
|
else
|
|
ifeq ($(CONFIG_LITTLE_FS), y)
|
|
MKFS := mklittlefs
|
|
else ifeq ($(CONFIG_SPIF_FS), y)
|
|
MKFS := mkspiffs
|
|
endif
|
|
MKFS_EXEC := ./$(MKFS)
|
|
endif
|
|
endif
|
|
|
|
# fs image tool option
|
|
ifeq ($(CONFIG_FLASH_FS_IMG_PACK), y)
|
|
FS_IMAGE_TOOL_PATH := $(ROOT_PATH)/tools/fs_img_tools
|
|
FS_IMAGE_TOOL := $(MKFS_EXEC)
|
|
FS_IMAGE_TOOL_DBG_LEVEL := 0
|
|
ifeq ($(CONFIG_LITTLE_FS), y)
|
|
FS_IMG_SUFFIX := littlefs
|
|
FS_PAGE_SIZE ?= 256
|
|
FS_BLOCK_SIZE := $(CONFIG_LITTLE_FS_BLOCK_SIZE)
|
|
FS_PHY_SIZE := `expr $(CONFIG_LITTLE_FS_BLOCK_SIZE) \* $(CONFIG_LITTLE_FS_BLOCK_COUNT)`
|
|
else ifeq ($(CONFIG_SPIF_FS), y)
|
|
FS_IMG_SUFFIX := spiffs
|
|
FS_PAGE_SIZE ?= 256
|
|
FS_BLOCK_SIZE := $(CONFIG_SPIF_FS_BLOCK_SIZE)
|
|
FS_PHY_SIZE := $(CONFIG_SPIF_FS_PHY_SIZE)
|
|
endif
|
|
endif
|
|
|
|
# image config file, maybe override by the specific project
|
|
# $(IMAGE_CFG_PATH) is relative to $(IMAGE_PATH)
|
|
IMAGE_CFG_PATH ?= ../$(ROOT_PATH)/project/image_cfg
|
|
IMAGE_CFG ?= $(IMAGE_CFG_PATH)/image.cfg
|
|
|
|
# image config file generated automatically for creating image, relative to $(IMAGE_PATH)
|
|
PROJECT_IMG_CFG := .image.cfg
|
|
PROJECT_IMG_XZ_CFG := .image_xz.cfg
|
|
|
|
# trustzone memory split parameters
|
|
ifeq ($(CONFIG_TRUSTZONE), y)
|
|
TZ_PARAMS_PATH := $(ROOT_PATH)/project/tz_params
|
|
TZ_PARAMS_SCRIPT := transform_tz_param.sh
|
|
TZ_PARAMS_ORG := tz_params.txt
|
|
TZ_PARAMS_BIN := tz_params.bin
|
|
endif
|
|
|
|
# image sign script option
|
|
SIGN_PACKAGE_PATH := $(ROOT_PATH)/project/sign_script
|
|
SIGN_SCRIPT := gen_signature.sh
|
|
|
|
# image tool's options to enable/disable OTA
|
|
ifeq ($(CONFIG_OTA), y)
|
|
IMAGE_TOOL_OPT := -O
|
|
else
|
|
IMAGE_TOOL_OPT :=
|
|
endif
|
|
|
|
# image tool's options to enable pack flash fs.bin(raw bin)
|
|
ifeq ($(CONFIG_FLASH_FS_IMG_PACK), y)
|
|
IMAGE_TOOL_OPT += -r
|
|
endif
|
|
|
|
# image tool's options to support flash crypto
|
|
ifeq ($(CONFIG_FLASH_CRYPTO), y)
|
|
FLASH_CRYPTO_PATH := ../$(ROOT_PATH)/project/flash_crypto
|
|
FLASH_CRYPTO_INI := flash_crypto.ini
|
|
IMAGE_TOOL_OPT += -e $(FLASH_CRYPTO_PATH)/$(FLASH_CRYPTO_INI)
|
|
endif
|
|
|
|
# image name, maybe override by the specific project
|
|
IMAGE_NAME ?= xr_system
|
|
|
|
# secure boot image mass production package option
|
|
ifeq ($(CONFIG_SECURE_BOOT), y)
|
|
SIGNPACK_SH := signpack.sh
|
|
SIGNPACK_TOOL := ../$(ROOT_PATH)/tools/$(SIGNPACK_SH)
|
|
SIGNATURE_DIR_NAME := signature
|
|
SIGNATURE_MKIMG_CMD := "./$(MKIMAGE) $(IMAGE_TOOL_OPT) -c \$$imgcfg -o $(IMAGE_NAME).img"
|
|
endif
|
|
ifeq ($(CONFIG_SECURE_BOOT)_$(CONFIG_CHIP_ARCH_VER), y_2)
|
|
SIGNPACK_GEN_CERT := ./$(SIGNPACK_TOOL) $(PROJECT_IMG_CFG)
|
|
else
|
|
SIGNPACK_GEN_CERT := true
|
|
endif
|
|
|
|
ifeq ($(CONFIG_OTA_POLICY_IMAGE_COMPRESSION), y)
|
|
# xz is a tool used to compress image
|
|
XZ_CHECK ?= none
|
|
XZ_LZMA2_DICT_SIZE ?= 8KiB
|
|
XZ := xz -f -k --no-sparse --armthumb --check=$(XZ_CHECK) \
|
|
--lzma2=preset=6,dict=$(XZ_LZMA2_DICT_SIZE),lc=3,lp=1,pb=1
|
|
XZ_DEFAULT_IMG := $(IMAGE_NAME).img
|
|
IMAGE_XZ_CFG ?= $(IMAGE_CFG_PATH)/image$(SUFFIX_IMG_XZ).cfg
|
|
ifeq ($(CONFIG_TRUSTZONE), y)
|
|
BOOTLOADER_LENGTH := $(shell od -An -N4 -j 60 -i $(IMAGE_PATH)/$(XZ_DEFAULT_IMG) | sed 's/ //g')
|
|
else
|
|
BOOTLOADER_LENGTH := $(shell od -An -N4 -j 32 -i $(IMAGE_PATH)/$(XZ_DEFAULT_IMG) | sed 's/ //g')
|
|
endif
|
|
endif # CONFIG_OTA_POLICY_IMAGE_COMPRESSION
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# common targets and building rules
|
|
# ----------------------------------------------------------------------------
|
|
CC_SYMBOLS += $(PRJ_EXTRA_SYMBOLS)
|
|
|
|
ifeq ($(MDK_DBG_EN), y)
|
|
ELF_EXT = axf
|
|
else
|
|
ELF_EXT = elf
|
|
endif
|
|
|
|
ifeq ($(CONFIG_XIP), y)
|
|
OBJCOPY_R_XIP := -R .xip
|
|
OBJCOPY_J_XIP := -j .xip
|
|
endif
|
|
|
|
ifeq ($(CONFIG_PSRAM), y)
|
|
OBJCOPY_R_PSRAM := -R .psram_text -R .psram_data -R .psram_bss
|
|
OBJCOPY_J_PSRAM := -j .psram_text -j .psram_data
|
|
endif
|
|
|
|
PHONY :=
|
|
|
|
all: __all
|
|
|
|
ifeq ($(sdk_cfg_rdy), y)
|
|
__all: $(PROJECT).bin size
|
|
else
|
|
__all: include/generated/autoconf.h
|
|
$(Q)$(MAKE) $(S) sdk_cfg_rdy=y
|
|
endif
|
|
|
|
PHONY += include/generated/autoconf.h
|
|
include/generated/autoconf.h:
|
|
$(Q)cd $(ROOT_PATH); $(MAKE) prj=$(PRJ_PARENT_DIR)/$(PROJECT) $@; cd -
|
|
|
|
$(PROJECT).$(ELF_EXT): lib $(OBJS)
|
|
ifeq ($(CONFIG_TRUSTZONE), y)
|
|
cd $(ROOT_PATH)/src/trustzone && make && cd -
|
|
endif
|
|
$(Q)$(CC) -E -P -CC $(CC_SYMBOLS) -I$(ROOT_PATH)/include -I$(ROOT_PATH)/lib/xradio_v$(CONFIG_CHIP_ARCH_VER) -include generated/autoconf.h -o $(PROJECT_LD) - < $(LINKER_SCRIPT) && \
|
|
$(Q)$(CC) $(LD_FLAGS) -T$(PROJECT_LD) $(LIBRARY_PATHS) -o $@ $(OBJS) $(LIBRARIES)
|
|
|
|
%.bin: %.$(ELF_EXT)
|
|
$(Q)$(OBJCOPY) -O binary $(OBJCOPY_R_XIP) $(OBJCOPY_R_PSRAM) $(OBJCOPY_R_EXT) $< $@
|
|
ifeq ($(CONFIG_XIP), y)
|
|
$(Q)$(OBJCOPY) -O binary $(OBJCOPY_J_XIP) $< $(basename $@)$(SUFFIX_XIP).bin
|
|
endif
|
|
ifeq ($(CONFIG_PSRAM), y)
|
|
$(Q)$(OBJCOPY) -O binary $(OBJCOPY_J_PSRAM) $< $(basename $@)$(SUFFIX_PSRAM).bin
|
|
endif
|
|
|
|
%.objdump: %.$(ELF_EXT)
|
|
$(Q)$(OBJDUMP) -Sdh $< > $@
|
|
|
|
objdump: $(PROJECT).objdump
|
|
|
|
size: $(PROJECT).$(ELF_EXT)
|
|
$(Q)$(SIZE) $(PROJECT).$(ELF_EXT)
|
|
|
|
PHONY += clean
|
|
clean:
|
|
$(Q)-rm -f $(PROJECT_LD) $(PROJECT).* *.bin $(OBJS) $(DEPS)
|
|
$(Q)-rm -rf $(ROOT_PATH)/out/*
|
|
|
|
lib: __lib
|
|
|
|
ifeq ($(sdk_cfg_rdy), y)
|
|
__lib:
|
|
$(Q)$(MAKE) $(S) -C $(ROOT_PATH)/src install
|
|
else
|
|
__lib: include/generated/autoconf.h
|
|
$(Q)$(MAKE) $(S) $@ sdk_cfg_rdy=y
|
|
endif
|
|
|
|
PHONY += lib_clean
|
|
lib_clean:
|
|
$(Q)$(MAKE) $(S) -C $(ROOT_PATH)/src clean
|
|
|
|
PHONY += lib_install_clean
|
|
lib_install_clean:
|
|
$(Q)$(MAKE) $(S) -C $(ROOT_PATH)/src install_clean
|
|
|
|
PHONY += trustzone
|
|
trustzone:
|
|
ifeq ($(CONFIG_TRUSTZONE), y)
|
|
cd $(ROOT_PATH)/src/trustzone/ && \
|
|
make all
|
|
endif
|
|
|
|
PHONY += trustzone_clean
|
|
trustzone_clean:
|
|
ifeq ($(CONFIG_TRUSTZONE), y)
|
|
cd $(ROOT_PATH)/src/trustzone/ && \
|
|
make clean
|
|
endif
|
|
|
|
build: __build
|
|
ifeq ($(sdk_cfg_rdy), y)
|
|
__build: all image
|
|
else
|
|
__build: include/generated/autoconf.h
|
|
$(Q)$(MAKE) $(S) $@ sdk_cfg_rdy=y
|
|
endif
|
|
|
|
ifeq ($(CONFIG_BOOTLOADER), y)
|
|
|
|
install: $(PROJECT).bin
|
|
$(Q)$(CP) $(PROJECT).bin $(BOOT_BIN_PATH)/$(BOOT_BIN_NAME)
|
|
|
|
build_clean: clean lib_clean lib_install_clean
|
|
-$(Q)-rm -rf $(ROOT_PATH)/out/*
|
|
|
|
image: install
|
|
|
|
else # CONFIG_BOOTLOADER
|
|
|
|
install: $(PROJECT).bin
|
|
@mkdir -p $(IMAGE_PATH); \
|
|
$(Q)$(CP) $(PROJECT).bin $(IMAGE_PATH)/app.bin
|
|
ifeq ($(CONFIG_XIP), y)
|
|
$(Q)$(CP) $(PROJECT)$(SUFFIX_XIP).bin $(IMAGE_PATH)/app$(SUFFIX_XIP).bin
|
|
endif
|
|
ifeq ($(CONFIG_PSRAM), y)
|
|
$(Q)$(CP) $(PROJECT)$(SUFFIX_PSRAM).bin $(IMAGE_PATH)/app$(SUFFIX_PSRAM).bin
|
|
endif
|
|
|
|
image: install
|
|
-@if ls $(BIN_PATH)/*.bin > /dev/null 2>&1; then \
|
|
$(Q)$(CP) -t $(IMAGE_PATH) $(BIN_FILES); \
|
|
fi
|
|
ifeq ($(CONFIG_BIN_COMPRESS), y)
|
|
cd $(IMAGE_PATH) && \
|
|
$(Q)$(XZ) $(XZ_BINS)
|
|
endif
|
|
ifeq ($(CONFIG_TRUSTZONE), y)
|
|
cd $(TZ_PARAMS_PATH) && \
|
|
chmod 777 $(TZ_PARAMS_SCRIPT) && ./$(TZ_PARAMS_SCRIPT) $(TZ_PARAMS_ORG) && cd - && \
|
|
mv $(TZ_PARAMS_PATH)/$(TZ_PARAMS_BIN) $(IMAGE_PATH)/
|
|
$(Q)$(CP) -t $(SIGN_PACKAGE_PATH) $(IMAGE_PATH)/$(TZ_PARAMS_BIN) $(IMAGE_PATH)/$(TZ_API_BIN)
|
|
ifeq ($(CONFIG_TZ_XIP), y)
|
|
$(Q)$(CP) -t $(SIGN_PACKAGE_PATH) $(IMAGE_PATH)/$(TZ_XIP_BIN)
|
|
endif
|
|
ifeq ($(CONFIG_TZ_PSRAM), y)
|
|
$(Q)$(CP) -t $(SIGN_PACKAGE_PATH) $(IMAGE_PATH)/$(TZ_PSRAM_BIN)
|
|
endif
|
|
cd $(SIGN_PACKAGE_PATH) && chmod 777 $(SIGN_SCRIPT) && \
|
|
./$(SIGN_SCRIPT) $(TZ_PARAMS_BIN) && ./$(SIGN_SCRIPT) $(TZ_API_BIN);
|
|
ifeq ($(CONFIG_TZ_XIP), y)
|
|
cd $(SIGN_PACKAGE_PATH) && ./$(SIGN_SCRIPT) $(TZ_XIP_BIN)
|
|
endif
|
|
ifeq ($(CONFIG_TZ_PSRAM), y)
|
|
cd $(SIGN_PACKAGE_PATH) && ./$(SIGN_SCRIPT) $(TZ_PSRAM_BIN)
|
|
endif
|
|
mv $(SIGN_PACKAGE_PATH)/*_sign.bin $(IMAGE_PATH)/
|
|
endif
|
|
|
|
ifeq ($(CONFIG_SECURE_BOOT)_$(CONFIG_CHIP_ARCH_VER), y_3)
|
|
$(Q)$(CP) $(IMAGE_PATH)/$(BOOT_BIN_NAME) $(SIGN_PACKAGE_PATH)/boot.bin
|
|
$(Q)$(CP) $(IMAGE_PATH)/$(APP_BIN_NAME) $(SIGN_PACKAGE_PATH)/$(APP_BIN_NAME)
|
|
ifeq ($(CONFIG_XIP)_$(CONFIG_APP_XIP_BIN_SIGN), y_y)
|
|
$(Q)$(CP) $(IMAGE_PATH)/$(APP_XIP_BIN_NAME) $(SIGN_PACKAGE_PATH)/$(APP_XIP_BIN_NAME)
|
|
endif
|
|
ifeq ($(CONFIG_PSRAM)_$(CONFIG_APP_PSRAM_BIN_SIGN), y_y)
|
|
$(Q)$(CP) $(IMAGE_PATH)/$(APP_PSRAM_BIN_NAME) $(SIGN_PACKAGE_PATH)/$(APP_PSRAM_BIN_NAME)
|
|
endif
|
|
cd $(SIGN_PACKAGE_PATH) && chmod 777 $(SIGN_SCRIPT) && ./$(SIGN_SCRIPT) boot.bin
|
|
cd $(SIGN_PACKAGE_PATH) && chmod 777 $(SIGN_SCRIPT) && ./$(SIGN_SCRIPT) $(APP_BIN_NAME)
|
|
ifeq ($(CONFIG_XIP)_$(CONFIG_APP_XIP_BIN_SIGN), y_y)
|
|
cd $(SIGN_PACKAGE_PATH) && chmod 777 $(SIGN_SCRIPT) && ./$(SIGN_SCRIPT) $(APP_XIP_BIN_NAME)
|
|
endif
|
|
ifeq ($(CONFIG_PSRAM)_$(CONFIG_APP_PSRAM_BIN_SIGN), y_y)
|
|
cd $(SIGN_PACKAGE_PATH) && chmod 777 $(SIGN_SCRIPT) && ./$(SIGN_SCRIPT) $(APP_PSRAM_BIN_NAME)
|
|
endif
|
|
mv $(SIGN_PACKAGE_PATH)/*_sign.bin $(IMAGE_PATH)/
|
|
endif
|
|
|
|
ifeq ($(CONFIG_FLASH_FS_IMG_PACK), y)
|
|
cd $(FS_IMAGE_TOOL_PATH) && mkdir - && chmod 777 $(FS_IMAGE_TOOL) && \
|
|
$(FS_IMAGE_TOOL) -c ./- -d $(FS_IMAGE_TOOL_DBG_LEVEL) -b $(FS_BLOCK_SIZE) -p $(FS_PAGE_SIZE) -s $(FS_PHY_SIZE) fs_$(FS_IMG_SUFFIX).bin && rm -rf -
|
|
mv $(FS_IMAGE_TOOL_PATH)/fs_$(FS_IMG_SUFFIX).bin $(IMAGE_PATH)/
|
|
endif
|
|
|
|
cd $(IMAGE_PATH) && \
|
|
chmod a+r *.bin && \
|
|
$(Q)$(CC) -E -P -CC $(CC_SYMBOLS) -I$(ROOT_PATH)/../include/generated -include autoconf.h -o $(PROJECT_IMG_CFG) - < $(IMAGE_CFG) && \
|
|
$(SIGNPACK_GEN_CERT) && \
|
|
chmod 777 $(IMAGE_TOOL) && $(IMAGE_TOOL) $(IMAGE_TOOL_OPT) -c $(PROJECT_IMG_CFG) -o $(IMAGE_NAME).img
|
|
@test -d "$(ROOT_PATH)/out" || mkdir -p "$(ROOT_PATH)/out"
|
|
$(Q)$(CP) -t $(ROOT_PATH)/out/ $(IMAGE_PATH)/*.bin $(IMAGE_PATH)/$(IMAGE_NAME).img *.map
|
|
|
|
PHONY += image_xz
|
|
image_xz:
|
|
ifeq ($(CONFIG_OTA_POLICY_IMAGE_COMPRESSION), y)
|
|
cd $(IMAGE_PATH) && \
|
|
dd if=$(XZ_DEFAULT_IMG) of=$(XZ_DEFAULT_IMG).temp skip=$(BOOTLOADER_LENGTH) bs=1c && \
|
|
$(Q)$(XZ) $(XZ_DEFAULT_IMG).temp && \
|
|
mv $(XZ_DEFAULT_IMG).temp.xz image.xz && \
|
|
rm $(XZ_DEFAULT_IMG).temp && \
|
|
$(Q)$(CC) -E -P -CC $(CC_SYMBOLS) -I$(ROOT_PATH)/../include/generated -include autoconf.h -o $(PROJECT_IMG_XZ_CFG) - < $(IMAGE_XZ_CFG) && \
|
|
$(IMAGE_TOOL) $(IMAGE_TOOL_OPT) -c $(PROJECT_IMG_XZ_CFG) -o $(IMAGE_NAME)$(SUFFIX_IMG_XZ).img
|
|
@test -d "$(ROOT_PATH)/out" || mkdir -p "$(ROOT_PATH)/out"
|
|
$(Q)$(CP) -t $(ROOT_PATH)/out/ $(IMAGE_PATH)/$(IMAGE_NAME)$(SUFFIX_IMG_XZ).img
|
|
endif
|
|
|
|
PHONY += image_clean
|
|
image_clean:
|
|
-cd $(IMAGE_PATH) && \
|
|
rm -f $(PROJECT_IMG_CFG) $(BIN_NAMES) app*.bin fs_*.bin *_sign.bin *.xz *.crt *.img
|
|
|
|
ifeq ($(CONFIG_SECURE_BOOT), y)
|
|
PHONY += sign
|
|
sign:
|
|
$(Q)mkdir -p $(IMAGE_PATH)/$(SIGNATURE_DIR_NAME)
|
|
cd $(IMAGE_PATH) && \
|
|
$(Q)cp -f -t $(SIGNATURE_DIR_NAME) *.* $(IMAGE_TOOL) $(PROJECT_IMG_CFG) $(SIGNPACK_TOOL) && \
|
|
echo $(SIGNATURE_MKIMG_CMD) >> $(SIGNATURE_DIR_NAME)/$(SIGNPACK_SH) && \
|
|
$(Q)rm -f $(SIGNATURE_DIR_NAME)/$(IMAGE_NAME).img
|
|
ifeq ($(CONFIG_CHIP_ARCH_VER), 3)
|
|
cd $(IMAGE_PATH) && $(Q)rm -f $(SIGNATURE_DIR_NAME)/*_sign.bin && \
|
|
$(Q)cp -rf $(SIGNATURE_DIR_NAME) ../$(ROOT_PATH)/out && $(Q)rm -rf $(SIGNATURE_DIR_NAME)
|
|
endif
|
|
endif # CONFIG_SECURE_BOOT
|
|
|
|
build_clean: image_clean clean lib_clean lib_install_clean trustzone_clean
|
|
-$(Q)-rm -rf $(ROOT_PATH)/out/*
|
|
|
|
endif # CONFIG_BOOTLOADER
|
|
|
|
config_cpy: defconfig
|
|
|
|
PHONY += defconfig
|
|
defconfig:
|
|
-@cp ./defconfig ./$(ROOT_PATH)/.config; \
|
|
$(Q)cd $(ROOT_PATH); $(MAKE) $@; cd -
|
|
|
|
PHONY += config
|
|
config:
|
|
$(Q)cd $(ROOT_PATH); $(MAKE) $@; cd -
|
|
|
|
PHONY += oldconfig
|
|
oldconfig:
|
|
$(Q)cd $(ROOT_PATH); $(MAKE) $@; cd -
|
|
|
|
PHONY += menuconfig
|
|
menuconfig:
|
|
$(Q)cd $(ROOT_PATH); $(MAKE) $@; cd -
|
|
|
|
PHONY += config_clean
|
|
config_clean:
|
|
$(Q)cd $(ROOT_PATH); $(MAKE) $@; cd -
|
|
|
|
# ----------------------------------------------------------------------------
|
|
# dependent rules
|
|
# ----------------------------------------------------------------------------
|
|
DEPS = $(OBJS:.o=.d)
|
|
-include $(DEPS)
|
|
|
|
.PHONY: $(PHONY)
|