AS = sdasz80 CC = sdcc CPP = sdcpp BUILD = build INCLUDE = include ROM_CHIP = AT28C256 TARGET = $(BUILD)/bootloader.hex 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 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 : src/%.asm @echo ' (AS)' $< $@ @$(CPP) -P -I$(INCLUDE) -DASSEMBLY $< > $(basename $@).asm @$(AS) -g -o $@ $(basename $@).asm $(BUILD)/%.rel : src/%.c @echo ' (CC)' $< @$(CC) $(CFLAGS) -c -o $@ $< $(OBJ) : | $(BUILD) $(BUILD) : @mkdir -p $@ .SECONDARY : $(BUILD)/%.ihx : $(OBJ) @echo ' (LD)' $(OBJ) @$(CC) $(LDFLAGS) -o $@ $(OBJ) $(TARGET) : $(BUILD)/bootloader.ihx @hex2bin.py $< $@ .PHONE : flash flash : minipro -u -y -sp $(ROM_CHIP) -w $(TARGET) .PHONY : clean clean : @rm -rf $(BUILD) -include $(DEPS)