.SILENT: include memory.mk ASM := zasm ASMFLAGS := -w -b BUILDDIR := build FILES := bios SOURCES := $(addprefix ./, $(addsuffix .asm, $(FILES))) TARGETS := $(addprefix $(BUILDDIR)/, $(addsuffix .bin, $(FILES))) TOPTARGETS := all clean $(TOPTARGETS): $(SUBDIRS) all: $(BUILDDIR) $(BUILDDIR)/rom.bin clean: rm -rf $(BUILDDIR) $(BUILDDIR): mkdir -p $(BUILDDIR) $(BUILDDIR)/%.bin: ./%.asm $(BUILDDIR)/memory.inc echo '>$<' $(ASM) $(ASMFLAGS) $< $@ $(BUILDDIR)/basic.bin: $(BUILDDIR)/memory.inc $(MAKE) -C apps/basic $(or $(MAKECMDGOALS),all) --no-print-directory $(BUILDDIR)/memory.inc: memory.mk @mkdir -p $(@D) @awk 'BEGIN { print "; Generated from rom_layout.mk; do not edit." } \ /^[A-Z][A-Z0-9_]*[[:space:]]*:=[[:space:]]*/ { print $$1 " .equ " $$3 }' $< > $@ $(BUILDDIR)/rom.bin: $(BUILDDIR)/bios.bin $(BUILDDIR)/basic.bin echo "bios: $(shell wc -c < $(BUILDDIR)/bios.bin) / $$(($(BIOS_ROM_SIZE)+0))" echo "basic: $(shell wc -c < $(BUILDDIR)/basic.bin) / $$(($(BASIC_ROM_SIZE)+0))" objcopy --pad-to=$$(($(BIOS_ROM_START)+$(BIOS_ROM_SIZE))) \ -I binary $(BUILDDIR)/bios.bin -O binary $(BUILDDIR)/bios_padded.bin objcopy --pad-to=$(BASIC_ROM_SIZE) \ -I binary $(BUILDDIR)/basic.bin -O binary $(BUILDDIR)/basic_padded.bin cat $(BUILDDIR)/bios_padded.bin $(BUILDDIR)/basic_padded.bin > $(BUILDDIR)/rom.bin .PHONY: $(TOPTARGETS) $(SUBDIRS)