aboutsummaryrefslogtreecommitdiff
BOOT_BUILD = $(BUILD)/boot

BOOT_SRC =\
	boot.asm\
	main.c

PAYLOADS = cmd devmode
PAYLOADS_HEX = $(foreach p,$(PAYLOADS),$(BOOT_BUILD)/$(p)/$(p).hex)

HEX = $(BOOT_BUILD)/boot.hex $(PAYLOADS_HEX)

BOOT_CRT0 = $(BOOT_BUILD)/crt0.rel
DEPS += $(patsubst %.rel,%.d,$(BOOT_CRT0))

BOOT_OBJ = $(patsubst %,$(BOOT_BUILD)/%.rel,$(basename $(BOOT_SRC)))
DEPS += $(patsubst %.rel,%.d,$(BOOT_OBJ))

$(BOOT_BUILD)/boot.ihx : EXTRA_LDFLAGS=$(BOOT_LDFLAGS)
$(BOOT_BUILD)/boot.ihx : $(BOOT_OBJ)

$(BOOT_OBJ) : | $(BOOT_BUILD)
$(BOOT_BUILD) :
	@mkdir -p $@

$(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 $(patsubst %,boot/%/Makefile,$(PAYLOADS))