diff options
Diffstat (limited to 'boot/Makefile')
-rw-r--r-- | boot/Makefile | 45 |
1 files changed, 22 insertions, 23 deletions
diff --git a/boot/Makefile b/boot/Makefile index 88d3c6e..9c3f7c7 100644 --- a/boot/Makefile +++ b/boot/Makefile @@ -1,32 +1,31 @@ -BUILD=$(PROJECT_ROOT)/build/boot +BOOT_BUILD = $(BUILD)/boot -TARGET=$(BUILD)/bootloader.hex -IHX=$(BUILD)/boot.ihx +BOOT_SRC =\ + boot.asm\ + main.c -ASM=$(filter-out crt0.asm, $(wildcard *.asm)) -SRC=$(wildcard *.c) -PAYLOADS=cmd devmode +PAYLOADS = cmd devmode +PAYLOADS_HEX = $(foreach p,$(PAYLOADS),$(BOOT_BUILD)/$(p)/$(p).hex) -PAYLOADS_HEX=$(foreach payload,$(PAYLOADS),$(BUILD)/$(payload)/$(payload).hex) +HEX = $(BOOT_BUILD)/boot.hex $(PAYLOADS_HEX) -HEX=$(BUILD)/boot.hex $(PAYLOADS_HEX) +BOOT_CRT0 = $(BOOT_BUILD)/crt0.rel +DEPS += $(patsubst %.rel,%.d,$(BOOT_CRT0)) -CODE_LOC=0x0120 -DATA_LOC=0xC000 -STACK_LOC=0x0000 -GSINIT_LOC=0x0090 +BOOT_OBJ = $(patsubst %,$(BOOT_BUILD)/%.rel,$(basename $(BOOT_SRC))) +DEPS += $(patsubst %.rel,%.d,$(BOOT_OBJ)) -all : $(TARGET) +$(BOOT_BUILD)/boot.ihx : EXTRA_LDFLAGS=$(BOOT_LDFLAGS) +$(BOOT_BUILD)/boot.ihx : $(BOOT_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 $@ +$(BOOT_OBJ) : | $(BOOT_BUILD) +$(BOOT_BUILD) : + @mkdir -p $@ -.PHONY : $(PAYLOADS_HEX) -$(PAYLOADS_HEX) : $(BUILD)/crt0.rel - make -C $(notdir $(basename $@)) CRT0=$< +$(BOOT_BUILD)/bootloader.hex : $(HEX) + @cp $(BOOT_BUILD)/boot.hex /tmp/bootloader.hex + @dd if=$(BOOT_BUILD)/cmd/cmd.hex of=/tmp/bootloader.hex obs=4096 seek=1 conv=notrunc 2>/dev/null + @dd if=$(BOOT_BUILD)/devmode/devmode.hex of=/tmp/bootloader.hex obs=4096 seek=2 conv=notrunc 2>/dev/null + @mv /tmp/bootloader.hex $@ -include $(PROJECT_ROOT)/include.mk --include $(BUILD)/crt0.d +include $(patsubst %,boot/%/Makefile,$(PAYLOADS)) |