################################################################ # macros ################################################################ IMAGE = $(BUILDDIR)/downloadme AS = arm-elf-as CC = arm-elf-gcc LD = arm-elf-ld GDB = arm-elf-gdb-eclipse SIMCMD = sh -c "VisualBoyAdvance-SDL.exe -Gtcp &" ASFLAGS = -g CFLAGS = -g -O0 -mcpu=arm7tdmi -fno-builtin -mlittle-endian LDFLAGS = -nostartfiles -nodefaultlibs -nostdlibs -static -T arm7.link INCDIR = inc COMDIR = inc\_common SRCDIR = src BUILDDIR = build C_SOURCES_ABS = $(wildcard src/*.c) $(wildcard src/*/*.c) ASM_SOURCES_ABS = $(ASM_SOURCES:%=$(SRCDIR)/%) OBJECTS = $(ASM_SOURCES_ABS:$(SRCDIR)/%.asm=$(BUILDDIR)/%.o) \ $(C_SOURCES_ABS:$(SRCDIR)/%.c=$(BUILDDIR)/%.o) C_INC = $(INCDIR:%=-I %) $(COMDIR:%=-I %) ASM_INC = $(INCDIR:%=-I %) ################################################################ # rules ################################################################ rebuild : clean all clean : @echo Deleting '$(BUILDDIR)' and its contents rm -f $(BUILDDIR)/*.o $(BUILDDIR)/*.elf $(BUILDDIR)/*.map $(BUILDDIR)/.gdbinit @echo @echo Finished building '$@' @echo all : $(BUILDDIR) $(IMAGE).elf @echo @echo Finished building '$@' @echo @echo $(SRCDIR) $(IMAGE).elf : Makefile arm7.link $(BUILDDIR)/.gdbinit $(C_SOURCES_ABS) $(ASM_SOURCES_ABS) $(OBJECTS) @echo Linking '$@' $(LD) -Map $(IMAGE).map $(OBJECTS) $(LDFLAGS) -o $@ @echo test : $(BUILDDIR) $(IMAGE).elf @echo Starting simulator and debugger $(GDB) -x $(BUILDDIR)/.gdbinit -w @echo @echo Debug session ended @echo $(BUILDDIR)/.gdbinit : Makefile @echo Preparing gdb startup script '$@' @echo 'shell $(SIMCMD)' > $@ @echo "file $(IMAGE).elf -readnow" >> $@ @echo "target remote :55555" >> $@ # @echo "set trust-readonly-sections on" >> $@ @echo "set osabi none" >> $@ @echo "load" >> $@ @echo "jump *0" >> $@ @echo "b *0" >> $@ @echo $(OBJECTS) $(BUILDDIR)/.gdbinit : Makefile $(BUILDDIR)/%.o : $(SRCDIR)/%.c @echo Compiling $< $(CC) $(C_INC) -c $(CFLAGS) $< -o $@ @echo $(BUILDDIR)/%.o : $(SRCDIR)/%.asm @echo Assembling $< $(AS) $(ASFLAGS) $(ASM_INC) $< -o $@ @echo $(BUILDDIR) : @echo Creating directory '$@' mkdir $@ @echo