summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile59
1 files changed, 36 insertions, 23 deletions
diff --git a/Makefile b/Makefile
index bd309f5..d909915 100644
--- a/Makefile
+++ b/Makefile
@@ -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)