aboutsummaryrefslogtreecommitdiff
path: root/boot/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'boot/Makefile')
-rw-r--r--boot/Makefile62
1 files changed, 22 insertions, 40 deletions
diff --git a/boot/Makefile b/boot/Makefile
index 2fff22d..88d3c6e 100644
--- a/boot/Makefile
+++ b/boot/Makefile
@@ -1,50 +1,32 @@
-AS=sdasz80
-CC=sdcc
-CPP=sdcpp
+BUILD=$(PROJECT_ROOT)/build/boot
-ASM=crt0.asm
-SRC=crc16.c\
- bootloader.c
-
-INCLUDE=../include
-BUILD=../build/boot
-
-OBJ=$(ASM:%.asm=$(BUILD)/%.rel)\
- $(SRC:%.c=$(BUILD)/%.rel)
-
-IHX=$(BUILD)/bootloader.ihx
TARGET=$(BUILD)/bootloader.hex
+IHX=$(BUILD)/boot.ihx
-CFLAGS=-mz80 -I$(INCLUDE) --Werror
-LDFLAGS=-mz80 --no-std-crt0\
- --code-loc 0x8100\
- --data-loc 0xC000\
- --stack-loc 0x0000\
- -Wl-b_GSINIT=0x8080
+ASM=$(filter-out crt0.asm, $(wildcard *.asm))
+SRC=$(wildcard *.c)
+PAYLOADS=cmd devmode
-all : $(TARGET)
-
-$(OBJ): | $(BUILD)
+PAYLOADS_HEX=$(foreach payload,$(PAYLOADS),$(BUILD)/$(payload)/$(payload).hex)
-$(BUILD) :
- @mkdir -p $(BUILD)
+HEX=$(BUILD)/boot.hex $(PAYLOADS_HEX)
-$(BUILD)/%.rel : %.asm
- @echo ' (AS)' $<
- @$(CPP) -P -I$(INCLUDE) -DASSEMBLY $< > $(BUILD)/$(notdir $<)
- @$(AS) -g -o $@ $(BUILD)/$(notdir $<)
+CODE_LOC=0x0120
+DATA_LOC=0xC000
+STACK_LOC=0x0000
+GSINIT_LOC=0x0090
-$(BUILD)/%.rel : %.c
- @echo ' (CC)' $<
- @$(CC) $(CFLAGS) -c -o $@ $<
+all : $(TARGET)
-$(IHX) : $(OBJ)
- @echo ' (LD)' $(OBJ)
- @$(CC) $(LDFLAGS) -o $@ $(OBJ)
+$(TARGET) : $(HEX)
+ cp $(BUILD)/boot.hex /tmp/bootloader.hex
+ dd if=$(BUILD)/cmd/cmd.hex of=/tmp/bootloader.hex obs=4096 seek=1 conv=notrunc 2>/dev/null
+ dd if=$(BUILD)/cmd/cmd.hex of=/tmp/bootloader.hex obs=4096 seek=2 conv=notrunc 2>/dev/null
+ mv /tmp/bootloader.hex $@
-$(TARGET) : $(IHX)
- @hex2bin.py $< $@
+.PHONY : $(PAYLOADS_HEX)
+$(PAYLOADS_HEX) : $(BUILD)/crt0.rel
+ make -C $(notdir $(basename $@)) CRT0=$<
-.PHONY : clean
-clean :
- @find $(BUILD) -type f -delete
+include $(PROJECT_ROOT)/include.mk
+-include $(BUILD)/crt0.d