📄 makefile
字号:
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 + -