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 \
 | |
| 	-lsifar \
 | |
| 	
 | |
| # 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
 | 
