sdk-hwV1.3/lichee/xr806/appos/project/project.mk

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)