⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makefile

📁 USB OTG Cy7c68300 C51 MCU
💻
字号:
PROJECT := audiodem

VPATH := .:../common

ASM_SRC := startup.s isrs.s

C_SRC   := fwxmain.c sie1.c app.c board.c usb.c \
		   ifbufpool.c logger.c debug.c 

LIBRARIES = libgcc.a libc.a

LYBERTY_HW_FILE := ../common/CY7C67200_300.h
CONFIG_INC_FILE := fwxcfg.inc
MEMMAP_INC_FILE := memmap.inc

ifdef USE_GNU_SID
LIBRARIES += libsim.a
endif


CC      := cy16-elf-gcc
LINKER  := cy16-elf-ld
GDB     := cy16-elf-gdb
STRIP   := cy16-elf-strip
OBJDUMP := cy16-elf-objdump
OBJCOPY := cy16-elf-objcopy



TOOLS_RELEASE := cy16-020830

TOOL_DIR = $(EZHOSTINSTALLDIR)/tools/$(TOOLS_RELEASE)/H-i686-pc-cygwin

LIB_SRCH_PATH  = -L "$(TOOL_DIR)/lib/gcc-lib/cy16-elf/3.1-$(TOOLS_RELEASE)"
LIB_SRCH_PATH += -L "$(TOOL_DIR)/cy16-elf/lib"


COMMON_CC_OPTS := -I. -I../common -I- -Wall -ansi -pedantic
COMMON_LD_OPTS := -T $(PROJECT).ld $(LIB_SRCH_PATH)

COMMON_AS_OPTS := -Wa,"-I.,-I ../common"

ifdef DEBUG
  CC_OPTS = $(COMMON_CC_OPTS) -g -DDEBUG
  LD_OPTS = $(COMMON_LD_OPTS) -Map $(PROJECT).map -cref
else
  CC_OPTS = $(COMMON_CC_OPTS) -O2
  LD_OPTS = $(COMMON_LD_OPTS)
endif


ifdef USE_GNU_SID
  CC_OPTS += -DUSE_GNU_SID
endif


.DEFAULT : all

all : $(PROJECT)

.PHONY : clean debug wrap

OBJS := $(patsubst %.s,%.o,$(ASM_SRC)) $(patsubst %.c,%.o,$(C_SRC))

LIBRARY_ARGS := --start-group $(patsubst lib%.a,-l%,$(LIBRARIES)) --end-group

include $(C_SRC:.c=.d) $(ASM_SRC:.s=.d)

%.d: %.c fwxcfg.h makefile
	@echo "Updating dependencies for $<"
	@$(CC) -MM $(CC_OPTS) $< | sed 's/\(.*\)\.o/\1.o \1.d/' > $@
	
%.d: %.s fwxcfg.h makefile
	@echo "Updating dependencies for $<"
	@$(CC) -MM $(CC_OPTS) $< | sed 's/\(.*\)\.o/\1.o \1.d/' > $@

%.o : %.c %.d fwxcfg.h makefile
	$(CC) -c $(CC_OPTS) -o $@ $<

%.o : %.s $(CONFIG_INC_FILE) $(MEMMAP_INC_FILE) makefile
	$(CC) -c $(CC_OPTS) -x assembler $(COMMON_AS_OPTS) -o $@ $<
	
$(CONFIG_INC_FILE) : fwxcfg.h makefile
	@echo "Updating fwxcfg.inc..."
	@echo "/* File: fwxcfg.inc */" > $(CONFIG_INC_FILE)
	@echo "" >> $(CONFIG_INC_FILE)
	@cat fwxcfg.h | sed -e 's/\/\*.*\*\///g' \
	                    -e 's/#define[ 	][ 	]*\([_A-Za-z][_A-Za-z0-9]*\)[ 	][ 	]*\(.*\)$$/.equ \1, \2/g' \
	                    -e 's/#define[ 	][ 	]*\([_A-Za-z][_A-Za-z0-9]*\)[ 	]*$$/.equ \1, 1/g' \
						-e 's/#undef[ 	][ 	]*\([_A-Za-z][_A-Za-z0-9]*\)/\/\* .undef \1 \*\//g' \
	                    -e 's/#if/.if/g' \
	                    -e 's/#else[   ]*\(.*\)[     ]*$$/.else \1/g' \
	                    -e 's/,[ 	]*$$/, 1/g' \
	                    -e 's/#ifdef[  ]*\(.*\)[    ]*$$/.ifdef \1/g' \
	                    -e 's/#ifndef[  ]*\(.*\)[    ]*$$/.ifndef \1/g' \
	                    -e 's/#endif[   ]*\(.*\)[     ]*$$/.endif \1/g' \
	                    -e 's/fwxcfg\.h/fwxcfg\.inc/g' \
	                    -e 's/fwxcfg_h/fwxcfg_inc/g' \
					    >> $(CONFIG_INC_FILE)
	@echo "" >> $(CONFIG_INC_FILE)
	@echo "/* End of file: fwxcfg.inc */" >> $(CONFIG_INC_FILE)


$(MEMMAP_INC_FILE) : $(LYBERTY_HW_FILE) makefile
	@echo "Updating memmap.inc..."
	@echo "/* File: memmap.inc */" > $(MEMMAP_INC_FILE)
	@echo "" >> $(MEMMAP_INC_FILE)
	@cat $(LYBERTY_HW_FILE) | sed -e 's/\/\*.*\*\///g' \
	                    -e 's/#define[ 	][ 	]*\([_A-Za-z][_A-Za-z0-9]*\)[ 	][ 	]*\(.*\)$$/.equ \1, \2/g' \
	                    -e 's/#define[ 	][ 	]*\([_A-Za-z][_A-Za-z0-9]*\)[ 	]*$$/.equ \1, 1/g' \
	                    -e 's/#if/.if/g' \
	                    -e 's/,[ 	]*$$/, 1/g' \
	                    -e 's/#ifdef[  ]*\(.*\)[    ]*$$/.ifdef \1/g' \
	                    -e 's/#ifndef[  ]*\(.*\)[    ]*$$/.ifndef \1/g' \
	                    -e 's/#endif[   ]*\(.*\)[     ]*$$/.endif \1/g' \
					    >> $(MEMMAP_INC_FILE)
	@echo "" >> $(MEMMAP_INC_FILE)
	@echo "/* End of file: memmap.inc */" >> $(MEMMAP_INC_FILE)


$(PROJECT) : $(OBJS) $(PROJECT).ld makefile
	$(LINKER) $(LD_OPTS) -o $(PROJECT) $(OBJS) $(LIBRARY_ARGS)
	$(OBJDUMP) -D -z -t --source $(PROJECT) > $(PROJECT).lst
	$(OBJCOPY) -O binary $(PROJECT) $(PROJECT).bin 
ifndef DEBUG
	$(STRIP) $(PROJECT)
endif
	@ls -l *.bin
ifdef CODEWRIGHT
	@sleep 2
endif
	
wrap : all
	@wrap $(PROJECT)

clean:
	rm -f $(PROJECT) *.o *.bin *.lst *.map $(CONFIG_INC_FILE) $(MEMMAP_INC_FILE)
	
real_clean : clean
	rm -f *.d

debug: all
	$(GDB) $(PROJECT)



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -