47 lines
1.4 KiB
Makefile
47 lines
1.4 KiB
Makefile
.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) $< $@
|
|
|
|
basic:
|
|
$(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 basic
|
|
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) basic
|