diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 59 |
1 files changed, 36 insertions, 23 deletions
@@ -1,41 +1,54 @@ -ASM=crt0.asm -SRC=crc16.c zbootloader.c +AS = sdasz80 +CC = sdcc +CPP = sdcpp -OBJ=$(ASM:%.asm=build/%.rel) $(SRC:%.c=build/%.rel) -IHX=build/bootloader.ihx -TARGET=bootloader.hex +BUILD = build +INCLUDE = include +ROM_CHIP = AT28C256 +TARGET = $(BUILD)/bootloader.hex -CFLAGS=-mz80 -I. --Werror -LDFLAGS=-mz80 --no-std-crt0 --code-loc 0x100 --data-loc 0x8000 -Wl-b_GSINIT=0x80 +DEPFLAGS = -MP -MMD -MF$(basename $@).d -MT$@ +# patsubst to fix sdcc compiler not supporting flags directly +CFLAGS = -mz80 -I$(INCLUDE) --Werror $(patsubst %,-Wp%,$(DEPFLAGS)) +LDFLAGS = -mz80 --no-std-crt0\ + --code-loc 0x0100\ + --data-loc 0x8000\ + -Wl-b_GSINIT=0x80 -ROM_CHIP=SST39SF020A +SRC = src/crt0.asm src/crc16.c src/zbootloader.c + +OBJ = $(patsubst src/%,$(BUILD)/%.rel,$(basename $(SRC))) +DEPS = $(patsubst %.rel,%.d,$(OBJ)) all : $(TARGET) -build/%.rel : %.asm - @echo ' (AS)' $< - @sdcpp -P -I. -DASSEMBLY $< > build/$< - @sdasz80 -g -o $@ build/$< +$(BUILD)/%.rel : src/%.asm + @echo ' (AS)' $< $@ + @$(CPP) -P -I$(INCLUDE) -DASSEMBLY $< > $(basename $@).asm + @$(AS) -g -o $@ $(basename $@).asm -build/%.rel : %.c +$(BUILD)/%.rel : src/%.c @echo ' (CC)' $< - @sdcc $(CFLAGS) -c -o $@ $< + @$(CC) $(CFLAGS) -c -o $@ $< + +$(OBJ) : | $(BUILD) +$(BUILD) : + @mkdir -p $@ -$(IHX) : $(OBJ) +.SECONDARY : +$(BUILD)/%.ihx : $(OBJ) @echo ' (LD)' $(OBJ) - @sdcc $(LDFLAGS) -o $@ $(OBJ) + @$(CC) $(LDFLAGS) -o $@ $(OBJ) -$(TARGET) : $(IHX) +$(TARGET) : $(BUILD)/bootloader.ihx @hex2bin.py $< $@ -.PHONY : upload -upload : - z80up $(TARGET) -p /dev/ttyUSB0 - .PHONE : flash flash : - minipro -y -sp $(ROM_CHIP) -w $(TARGET) + minipro -u -y -sp $(ROM_CHIP) -w $(TARGET) .PHONY : clean clean : - @rm -rf build/* $(TARGET) + @rm -rf $(BUILD) + +-include $(DEPS) |