436 lines
11 KiB
Makefile
Executable File
436 lines
11 KiB
Makefile
Executable File
MODULE_NAME = rtos-main
|
|
|
|
.PHONY: all clean install
|
|
|
|
#######################################################################################
|
|
#--------- ENVIRONMENT SETTING -------------------------------------------------------#
|
|
#######################################################################################
|
|
|
|
# LIB_DEPENDENCY to collect magic symbol and check if needing link again and
|
|
LIB_DEPENDENCY = \
|
|
$(wildcard $(RTOS_CURR_DEMO_DIR)/output/*.a) \
|
|
$(wildcard $(NVT_HDAL_DIR)/output/*.a) \
|
|
$(wildcard $(NVT_HDAL_DIR)/vendor/output/*.a) \
|
|
$(wildcard $(NVT_HDAL_DIR)/vendor/isp/drivers/output/*.a) \
|
|
$(wildcard $(NVT_HDAL_DIR)/vendor/media/drivers/output/*.a) \
|
|
$(wildcard $(HDAL_SAMPLE_DIR)/output/*.a) \
|
|
$(wildcard $(LIBRARY_DIR)/output/*.a) \
|
|
$(wildcard $(VOS_DRIVER_DIR)/output/*.a) \
|
|
$(wildcard $(NVT_DRIVER_DIR)/output/*.a) \
|
|
$(wildcard $(KDRV_DIR)/output/*.a) \
|
|
$(wildcard $(EXT_DIR)/panel/output/*.a) \
|
|
$(wildcard $(EXT_DIR)/sensor/output/*.a) \
|
|
$(wildcard $(EXT_DIR)/ad/output/*.a) \
|
|
$(wildcard $(KFLOW_DIR)/output/*.a) \
|
|
$(wildcard $(EXT_DIR)/audio/output/*.a) \
|
|
$(wildcard $(EXT_DIR)/gyro/output/*.a) \
|
|
|
|
#LIB DIRs for C_LDFLAGS
|
|
EXTRA_LIB_DIR += \
|
|
-L$(LIBC_LIB_DIR) \
|
|
-L$(GCC_LIB_DIR) \
|
|
-L$(STDC_LIB_DIR) \
|
|
-L$(RTOS_CURR_DEMO_DIR)/output \
|
|
-L$(NVT_HDAL_DIR)/output \
|
|
-L$(NVT_HDAL_DIR)/vendor/output \
|
|
-L$(NVT_HDAL_DIR)/vendor/media/drivers/output/ \
|
|
-L$(NVT_HDAL_DIR)/vendor/isp/drivers/output/ \
|
|
-L$(KDRV_DIR)/output \
|
|
-L$(EXT_DIR)/panel/output \
|
|
-L$(EXT_DIR)/sensor/output \
|
|
-L$(EXT_DIR)/ad/output \
|
|
-L$(EXT_DIR)/audio/output \
|
|
-L$(EXT_DIR)/gyro/output \
|
|
-L$(KFLOW_DIR)/output \
|
|
-L$(HDAL_SAMPLE_DIR)/output \
|
|
-L$(LIBRARY_DIR)/output \
|
|
-L$(VOS_DRIVER_DIR)/output \
|
|
-L$(NVT_VOS_DIR)/output \
|
|
-L$(NVT_DRIVER_DIR)/output \
|
|
|
|
C_CFLAGS = $(PLATFORM_CFLAGS) $(EXTRA_INCLUDE) $(C_PREDEFINED) -Wno-format
|
|
C_CXXFLAGS = $(PLATFORM_CXXFLAGS) $(EXTRA_INCLUDE) $(C_PREDEFINED)
|
|
C_AFLAGS = $(PLATFORM_AFLAGS) $(EXTRA_INCLUDE)
|
|
C_LDFLAGS = \
|
|
-Bstatic \
|
|
-EL \
|
|
--no-wchar-size-warning \
|
|
--gc-sections \
|
|
-T $(OUTPUT_DIR)/$(LDSCRIPT) \
|
|
-Map $(MAP_NAME) \
|
|
--start-group \
|
|
$(EXTRA_LIB_DIR) \
|
|
$(EXTRA_LIB) \
|
|
--end-group
|
|
|
|
# FILEs
|
|
ifeq "$(LDS_SCRIPT)" "HUNTING_LDS"
|
|
LDSCRIPT = rtos-main-hunting.lds
|
|
else ifeq "$(LDS_SCRIPT)" "HUNTING_LVGL_LDS"
|
|
LDSCRIPT = rtos-main-hunting_lvgl.lds
|
|
else ifeq "$(LDS_SCRIPT)" "CAMERA_LDS"
|
|
LDSCRIPT = rtos-main-camera.lds
|
|
else
|
|
LDSCRIPT = rtos-main.lds
|
|
endif
|
|
LDS_EXTERN = extern.lds
|
|
OUTPUT_NAME = $(OUTPUT_DIR)/$(MODULE_NAME).bin
|
|
IMG_NAME = $(OUTPUT_DIR)/$(MODULE_NAME).img
|
|
MAP_NAME = $(OUTPUT_DIR)/$(MODULE_NAME).map
|
|
SYM_NAME = $(OUTPUT_DIR)/$(MODULE_NAME).sym
|
|
DASM_NAME = $(OUTPUT_DIR)/$(MODULE_NAME).asm
|
|
|
|
# LDS
|
|
LDS_REPLACE = \
|
|
$(LDS_REPLACE_DEFAULT) \
|
|
|
|
#--------- END OF ENVIRONMENT SETTING -------------------------------------------------
|
|
|
|
#######################################################################################
|
|
#--------- LINKING LIBs FOR C_LDFLAGS ------------------------------------------------#
|
|
#######################################################################################
|
|
|
|
# kernel, vos, libc, others necessary
|
|
EXTRA_LIB = \
|
|
-lfreertos \
|
|
-ldrv_portable \
|
|
-lc \
|
|
-lm \
|
|
-lgcc \
|
|
-lstdc++ \
|
|
-lkwrap \
|
|
-lvos \
|
|
-lmem \
|
|
-ldrv_drtc \
|
|
-ldrv_rtc \
|
|
-ldrv_serial \
|
|
-larb_protected \
|
|
-ldrv_misc \
|
|
-ldrv_gps \
|
|
-lker_pkg
|
|
|
|
# kdrv
|
|
EXTRA_LIB += \
|
|
-lkdrv_adc \
|
|
-lkdrv_interrupt \
|
|
-lkdrv_pll \
|
|
-lkdrv_top \
|
|
-lkdrv_usb2dev \
|
|
-lkdrv_comm \
|
|
-lkdrv_gfx2d \
|
|
-lkdrv_afn \
|
|
-lkdrv_videocapture \
|
|
-lkdrv_videoprocess \
|
|
-lkdrv_i2c \
|
|
-lkdrv_gpio \
|
|
-lkdrv_cpu \
|
|
-lkdrv_sdp \
|
|
-lnvt_remote \
|
|
-lnvt_uvcp \
|
|
-lnvt_tse \
|
|
-lnvt_sif \
|
|
-lkdrv_jpg \
|
|
-lkdrv_videoout \
|
|
-lnvt_ide \
|
|
-lnvt_audio \
|
|
-lnvt_kdrv_audio \
|
|
-lnvt_spi \
|
|
-laud_aec \
|
|
-laud_aacd \
|
|
-laud_aace \
|
|
-laudlib_IIR \
|
|
-lkdrv_h26x \
|
|
-lkdrv_rtosfdt \
|
|
-lkdrv_eth \
|
|
-lkdrv_wdt \
|
|
-lker_pkg \
|
|
-lkdrv_ai \
|
|
-lkdrv_builtin \
|
|
-lnvt_dsi \
|
|
-lkflow_ai \
|
|
-lvendor_ai2 \
|
|
-lvendor_ai2_pub \
|
|
-lnvt_eis \
|
|
|
|
# kflow
|
|
EXTRA_LIB += \
|
|
-lkflow_videoout \
|
|
-lkflow_videoenc \
|
|
-lkflow_videodec \
|
|
-lkflow_common \
|
|
-lkflow_videocapture \
|
|
-lkflow_videoprocess \
|
|
-lkflow_audiocap \
|
|
-lkflow_audioenc \
|
|
-lkflow_audiodec \
|
|
-lkflow_audioout \
|
|
-lnvt_gfx \
|
|
-lnvt_videosprite \
|
|
|
|
# PQ
|
|
EXTRA_LIB += \
|
|
-lvendor_isp \
|
|
-lnvt_isp \
|
|
-lnvt_ae \
|
|
-lnvt_awb \
|
|
-lnvt_iq \
|
|
-lisp_demon \
|
|
-lprebuilt_isp \
|
|
-lm \
|
|
-lvendor_eis \
|
|
|
|
# ext_devices
|
|
EXTRA_LIB += \
|
|
-lnvt_dispdev_panel \
|
|
-l$(LCD1) \
|
|
-lnvt_$(SENSOR1) \
|
|
-lnvt_$(SENSOR2) \
|
|
-lnvt_aud_emu \
|
|
-lnvt_aud_ac108 \
|
|
-lnvt_gyro_icm42607 \
|
|
|
|
# hdal, vendor
|
|
EXTRA_LIB += \
|
|
-lhdal \
|
|
-lvendor_media \
|
|
-lnvt_vencrc \
|
|
-lprebuilt_ai \
|
|
|
|
# hdal, cv
|
|
EXTRA_LIB += \
|
|
-lkdrv_dis \
|
|
-lkflow_dis \
|
|
|
|
# code/lib
|
|
EXTRA_LIB += \
|
|
-lSxTimer \
|
|
-lFileSys \
|
|
-lFsUitron \
|
|
-lfwsrv \
|
|
-lutility \
|
|
-lzlib \
|
|
-lexif \
|
|
-lsizeconvert \
|
|
-lgxgfx \
|
|
-lnvtuser \
|
|
-luicontrol \
|
|
-lvcontrol \
|
|
-lappcontrol \
|
|
-lping \
|
|
-ldhcpd \
|
|
-lbsmux \
|
|
-lfileout \
|
|
-lfilein \
|
|
-lvf_gfx \
|
|
-limageapp_common \
|
|
-limageapp_moviemulti \
|
|
-limageapp_usbmovie \
|
|
-limageapp_voice \
|
|
-lpbxfilelist_dcf \
|
|
-lpbxfilelist_filedb \
|
|
-lpbxfile \
|
|
-lplayback \
|
|
-limageapp_play \
|
|
-lavfile \
|
|
-lbsdemux \
|
|
-limageapp_movieplay \
|
|
-lDCF \
|
|
-lfiledb \
|
|
-lavfile \
|
|
-lGxVideoFile \
|
|
-lHfsNvt \
|
|
-lWiFiIpc \
|
|
-lusockipc \
|
|
-lusockcliipc \
|
|
-lDhcpNvt \
|
|
-lUVAC \
|
|
-lUCDC \
|
|
-lFontConv \
|
|
-lNameRule \
|
|
-lgximagefile \
|
|
-lnvtlive555 \
|
|
-lLviewNvt \
|
|
-limageapp_photo \
|
|
-lDbgUt \
|
|
-lcmdmap \
|
|
-lPStore \
|
|
-ltop \
|
|
-lsw_md \
|
|
-llogfile \
|
|
-lmd5 \
|
|
-lJSONparser \
|
|
-lQRCode \
|
|
-lCurlNvt \
|
|
-lcurl \
|
|
-lcurltool \
|
|
-lethcamsocket \
|
|
-lethsocketcli \
|
|
-lethsockcliipc \
|
|
-lethsocket \
|
|
-lethsockipc \
|
|
|
|
ifeq "$(UI_STYLE)" "UI_STYLE_LVGL"
|
|
EXTRA_LIB += \
|
|
-llvgl
|
|
endif
|
|
|
|
ifeq "$(NVT_SDIO_WIFI)" "NVT_SDIO_WIFI_RTK"
|
|
EXTRA_LIB += \
|
|
-l8189ftv \
|
|
-lwlan_lib
|
|
else ifeq "$(NVT_SDIO_WIFI)" "NVT_SDIO_WIFI_ICOMM"
|
|
EXTRA_LIB += \
|
|
-licomm \
|
|
-lssv6x5x
|
|
else ifeq "$(NVT_SDIO_WIFI)" "NVT_SDIO_WIFI_BOUFFALO"
|
|
EXTRA_LIB += \
|
|
-lblwifi \
|
|
-lbl602
|
|
else
|
|
EXTRA_LIB += \
|
|
-ldummywifi
|
|
endif
|
|
|
|
# code/driver
|
|
EXTRA_LIB += \
|
|
-ldrv_devusb_msdc \
|
|
-ldrv_storage \
|
|
-lmsdcnvt \
|
|
-liperf \
|
|
-ldrv_pmu_ip6303 \
|
|
-ldrv_gsensor_da380 \
|
|
-ldrv_touch_gt911 \
|
|
-ldrv_sf_i2c_mcu \
|
|
|
|
# HDAL Samples
|
|
|
|
#--------- END of LINKING LIBs FOR C_LDFLAGS ------------------------------------------
|
|
|
|
#######################################################################################
|
|
#--------- DEVICE TREE CONFIGURATION -------------------------------------------------#
|
|
#######################################################################################
|
|
DTB_SENSOR = $(DTS_SENSOR:.dts=.dtb)
|
|
DTB_APP = $(DTS_APP:.dts=.dtb)
|
|
DTB = $(DTB_SENSOR) $(DTB_APP)
|
|
|
|
SENSOR_CFG_DIR = $(NVT_HDAL_DIR)/ext_devices/sensor/configs
|
|
AD_CFG_DIR = $(NVT_HDAL_DIR)/ext_devices/ad/configs
|
|
MOTOR_CFG_DIR = $(NVT_HDAL_DIR)/ext_devices/motor/configs
|
|
ISP_CFG_DIR = $(NVT_HDAL_DIR)/vendor/isp/configs
|
|
TOUCH_CFG_DIR = $(NVT_DRIVER_DIR)/source/touch/configs
|
|
|
|
DTB_INCLUDE = \
|
|
-I$(SENSOR_CFG_DIR)/dtsi \
|
|
-I$(AD_CFG_DIR)/dtsi \
|
|
-I$(MOTOR_CFG_DIR)/dtsi \
|
|
-I$(ISP_CFG_DIR)/dtsi \
|
|
-I$(TOUCH_CFG_DIR)/dtsi \
|
|
-I$(KERNELDIR)/include \
|
|
-I$(KERNELDIR)/arch/arm/boot/dts/include \
|
|
-I$(CONFIG_DIR)/include \
|
|
-I$(LINUX_BUILD_TOP)/base/linux-BSP/linux-kernel/include
|
|
|
|
#--------- END OF DEVICE TREE CONFIGURATION -------------------------------------------
|
|
|
|
#######################################################################################
|
|
#--------- COMPILING AND LINKING -----------------------------------------------------#
|
|
#######################################################################################
|
|
OBJ = $(SRC:.c=.o) $(ASM:.S=.o) $(CPP_SRC:.cpp=.o) $(DTS_SENSOR:.dts=.o)
|
|
|
|
all: $(DTB_APP) $(OUTPUT_NAME)
|
|
|
|
$(DTB): $(wildcard ./SrcCode/Dx/$(MODEL)/*.dtsi)
|
|
|
|
$(LDS_EXTERN): $(OBJ) $(LIB_DEPENDENCY) $(LDSCRIPT) $(MAIN_C)
|
|
@echo generate $@ ... && \
|
|
echo "EXTERN(" > $@ && \
|
|
$(OBJDUMP) -h $(LIB_DEPENDENCY) | grep "\.version\.info" | sed 's/[^.]*\.version\.info\.[^\.]*\.\([^\ ]*\).*/\1_LIBRARY_VERSION_INFO/g' >> $@
|
|
@$(OBJDUMP) -h $(LIB_DEPENDENCY) | grep "\.cmdsys\.table" | sed 's/[^.]*\.cmdsys\.table\.\([^\ ]*\).*/\1_cmdsys_main/g' >> $@
|
|
@$(OBJDUMP) -h $(LIB_DEPENDENCY) | grep "\.examsys\.table" | sed 's/[^.]*\.examsys\.table\.\([^\ ]*\).*/\1_examsys_main/g' >> $@
|
|
@echo ")" >> $@
|
|
|
|
$(IMG_NAME): $(LDS_EXTERN)
|
|
@echo Compiling $(MAIN_C) && \
|
|
$(CC) $(C_CFLAGS) -c $(MAIN_C) -o $(MAIN_C:.c=.o) && \
|
|
echo Creating $@... && \
|
|
mkdir -p $(OUTPUT_DIR) && \
|
|
sed $(LDS_REPLACE_DEFAULT) $(LDSCRIPT) > $(OUTPUT_DIR)/$(LDSCRIPT).in && \
|
|
cpp -nostdinc -x assembler-with-cpp -C -P -E $(C_PREDEFINED) $(OUTPUT_DIR)/$(LDSCRIPT).in > $(OUTPUT_DIR)/$(LDSCRIPT) && \
|
|
rm $(OUTPUT_DIR)/$(LDSCRIPT).in && \
|
|
$(LD) -o $@ $(OBJ) $(MAIN_C:.c=.o) $(C_LDFLAGS) && \
|
|
$(NM) -n $@ > $(SYM_NAME)
|
|
|
|
$(OUTPUT_NAME): $(IMG_NAME)
|
|
@echo Creating executable $@ ... && \
|
|
$(OBJCOPY) --gap-fill=0xff -O binary $< $@.tmp && \
|
|
echo Encrypt binary file $@ ... && \
|
|
$(NVT_TOOLS_DIR)/encrypt_bin SUM $@.tmp $(BIN_INFO_CHIPNAME) $(BIN_NAME)
|
|
ifeq ($(FW_TYPE),FW_TYPE_COMPRESS)
|
|
@$(NVT_TOOLS_DIR)/bfc c lz $@.tmp $@.tmp.lz 0 0 -align && \
|
|
cp -f $@.tmp.lz $@ && \
|
|
rm -f $@.tmp.lz $@.tmp
|
|
else ifeq ($(FW_TYPE),FW_TYPE_PARTIAL_COMPRESS)
|
|
@$(NVT_TOOLS_DIR)/bfc c gz $@.tmp $@.tmp.lz 1 $(CODE_INFO_SECTION01_SIZE) $(BIN_INFO_LENGHT) $(BIN_INFO_BINCTRL) $(BIN_INFO_CHKSUM) $(EMBMEM_BLK_SIZE) && \
|
|
cp -f $@.tmp.lz $@ && \
|
|
rm -f $@.tmp.lz $@.tmp
|
|
else ifeq ($(FW_TYPE),FW_TYPE_LZMA)
|
|
@$(NVT_TOOLS_DIR)/bfc c lzma $@.tmp $@.tmp.lz 0 0 -align && \
|
|
cp -f $@.tmp.lz $@ && \
|
|
rm -f $@.tmp.lz $@.tmp
|
|
else
|
|
@cp -f $@.tmp $@ && \
|
|
rm -f $@.tmp
|
|
endif
|
|
|
|
# inline warning should be ignored with some LVGL static inline functions(e.g. lv_color_mix_with_alpha)
|
|
%/fbdev.o: %/fbdev.c
|
|
@echo Compiling $< , skip inline warning
|
|
@$(CC) $(C_CFLAGS) -Wno-inline -c $< -o $@
|
|
|
|
%.o: %.c
|
|
@echo Compiling $<
|
|
@$(CC) $(C_CFLAGS) -c $< -o $@
|
|
|
|
%.o: %.cpp
|
|
@echo Compiling $<
|
|
@$(CXX) $(C_CXXFLAGS) -c $< -o $@
|
|
|
|
%.o: %.S
|
|
@echo Assembling $<
|
|
@$(CC) $(C_AFLAGS) -c $< -o $@
|
|
|
|
%.dtb: %.dts
|
|
@echo Compiling $<
|
|
@cpp -nostdinc $(DTB_INCLUDE) -undef -x assembler-with-cpp $(C_PREDEFINED) -D__FREERTOS $< > $<.tmp \
|
|
&& dtc -O dtb -b 0 -o $@ $<.tmp \
|
|
&& rm $<.tmp
|
|
|
|
%.o: %.dtb
|
|
@echo Objectizing $< && \
|
|
touch $<.tmp.c && \
|
|
$(CC) $(C_CFLAGS) -c $<.tmp.c -o $@ && \
|
|
$(OBJCOPY) --add-section .sensor=$< $@ && \
|
|
rm $<.tmp.c
|
|
|
|
# cim is for coverity check
|
|
cim: $(DTB) $(OBJ)
|
|
|
|
clean:
|
|
@rm -rf $(OBJ) $(MAIN_C:.c=.o) $(LDS_EXTERN) $(DTB) $(OUTPUT_DIR)
|
|
|
|
install: $(OUTPUT_NAME)
|
|
@mkdir -p $(INSTALL_DIR)
|
|
@cp -avf $(OUTPUT_NAME) $(INSTALL_DIR)
|
|
@cp -avf $(DTS_APP:.dts=.dtb) $(INSTALL_DIR)/$(notdir $(DTS_APP:.dts=.bin))
|
|
|
|
dasm: $(IMG_NAME)
|
|
@echo Disassembly $< to $(DASM_NAME)... \
|
|
&& $(OBJDUMP) -D $(IMG_NAME) > $(DASM_NAME)
|
|
|
|
# codesize statistics
|
|
codesize: $(OUTPUT_NAME)
|
|
@cd $(dir $(SYM_NAME)) && \
|
|
$(BUILD_DIR)/nvt-tools/nvt-ld-op -r -s $(notdir $(SYM_NAME)) && \
|
|
$(BUILD_DIR)/nvt-tools/nvt-ld-op -a $(notdir $(MAP_NAME)) && \
|
|
echo see $(dir $(SYM_NAME))*.txt for the report
|