# # Rules for building application # # ---------------------------------------------------------------------------- # common rules # ---------------------------------------------------------------------------- ROOT_PATH := ../../../.. include $(ROOT_PATH)/gcc.mk # ---------------------------------------------------------------------------- # project and objects # ---------------------------------------------------------------------------- # PROJECT := blink PROJECT := $(notdir $(shell cd .. && pwd)) PRJ_ROOT_PATH := $(ROOT_PATH)/project/example/$(PROJECT) USE_BLE_HOST := y HCIOPTION := VIRTUAL_HCI HOST_INCLUDES := \ -I$(ROOT_PATH)/src/ble/hci \ -I$(ROOT_PATH)/include/ble \ INCLUDE_PATHS += \ -I$(PRJ_ROOT_PATH) \ $(HOST_INCLUDES) DIRS_IGNORE := $(PRJ_ROOT_PATH)/gcc% DIRS_IGNORE += $(PRJ_ROOT_PATH)/image% DIRS_IGNORE += $(ROOT_PATH)/project/common/board/% DIRS_IGNORE += $(ROOT_PATH)/project/common/board/$(shell echo $(CONFIG_BOARD)) DIRS_ALL := $(shell find $(PRJ_ROOT_PATH) $(ROOT_PATH)/project/common -type d) DIRS := $(filter-out $(DIRS_IGNORE),$(DIRS_ALL)) DIRS += $(ROOT_PATH)/project/common/board/$(shell echo $(CONFIG_BOARD)) #DIRS += $(ROOT_PATH)/project/$(PROJECT)/ports/src ifeq (,$(wildcard ../my_trace.c)) DIRS += $(ROOT_PATH)/project/bluetooth/trace endif SRCS := $(basename $(foreach dir,$(DIRS),$(wildcard $(dir)/*.[csS]))) OBJS := $(addsuffix .o,$(SRCS)) # to avoid path name coincidence, dont use $(subst .c,,$(INSTRUMENTATION_LIST)) C_FNAMES := $(addsuffix .c,$(SRCS)) C_FILE_INSTRU := $(foreach i,$(C_FNAMES),$(foreach j,$(INSTRUMENTATION_LIST),$(if $(findstring $j,$i),$i))) C_NAME_INSTRU := $(basename $(C_FILE_INSTRU)) define one_instrument $(1).o : $(1).c $(Q)echo 'Override General Default Rule : Instrument file: $$<' $(Q)$(CC) $(CC_FLAGS) $(CC_SYMBOLS) -std=gnu99 $(INCLUDE_PATHS) -finstrument-functions -o $$@ $$< endef # extra libs # PRJ_EXTRA_LIBS := # ---------------------------------------------------------------------------- # override project variables # ---------------------------------------------------------------------------- # linker script path/file # - relative to "./" # - define your own "LINKER_SCRIPT_PATH" and/or "LINKER_SCRIPT" to override # the default one # LINKER_SCRIPT_PATH := . # image config path/file # - relative to "../image/xxxxx/", eg. "../image/xr709/" # - define your own "IMAGE_CFG_PATH" and/or "IMAGE_CFG" to override the # default one # IMAGE_CFG_PATH := ../image/xr806/ # IMAGE_CFG := image.cfg # image name, default to xr_system # IMAGE_NAME := # project make rules include $(PRJ_MAKE_RULES) CONFIG_SYMBOLS += -D$(HCIOPTION) CONFIG_SYMBOLS += -DCONFIG_ARM $(foreach i, $(C_NAME_INSTRU),$(eval $(call one_instrument,$(i)))) stat : $(OBJDUMP) -S $(PROJECT).elf > $(PROJECT).lst $(OBJDUMP) --sym $(PROJECT).elf > $(PROJECT).sym $(OBJDUMP) --dwarf=info $(PROJECT).elf > $(PROJECT).info $(OBJDUMP) --dwarf=loc $(PROJECT).elf > $(PROJECT).loc $(OBJDUMP) --dwarf=frames $(PROJECT).elf > $(PROJECT).frames $(OBJCOPY) -S $(PROJECT).elf -O verilog $(PROJECT).hex $(SIZE) $(PROJECT).elf