|
@@ -1,6 +1,7 @@
|
|
|
MAKEFLAGS += -R -r
|
|
|
|
|
|
-SUBDIRS := include test roms fatfs/source zlib
|
|
|
+ASMDIRS := roms/abc80/asmsrc
|
|
|
+SUBDIRS := include test roms fatfs/source zlib $(ROMDIRS)
|
|
|
|
|
|
CROSS = ../tools/gnu/bin/riscv32-unknown-elf-
|
|
|
CC = $(CROSS)gcc
|
|
@@ -40,8 +41,7 @@ gensrcs =
|
|
|
|
|
|
all: sram.bin dram.bin dram.hex checksum.h
|
|
|
|
|
|
-LIBS = max80.a fatfs.a zlib.a
|
|
|
-
|
|
|
+LIBS = max80.a roms.a fatfs.a zlib.a
|
|
|
|
|
|
ROMS = $(shell find roms -name '*.rom' -print)
|
|
|
ROMOBJ = $(ROMS:.rom=.o)
|
|
@@ -57,12 +57,18 @@ LIBOBJ = debug.o ioregsa.o irqasm.o irqtable.o spurious_irq.o \
|
|
|
abcmem.o abcio.o abcdisk.o abcrtc.o abcpun80.o \
|
|
|
memset.o memcpy.o \
|
|
|
runtest.o start_test.o \
|
|
|
- $(COMMONOBJ) $(ROMOBJ)
|
|
|
+ $(COMMONOBJ)
|
|
|
|
|
|
max80.a: $(LIBOBJ)
|
|
|
rm -f $@
|
|
|
$(AR) cq $@ $(LIBOBJ)
|
|
|
|
|
|
+ROMDEPS = roms
|
|
|
+
|
|
|
+roms.a: $(ROMDEPS)
|
|
|
+ rm -f $@
|
|
|
+ $(AR) cq $@ $(ROMOBJ)
|
|
|
+
|
|
|
FATFS_C = $(wildcard fatfs/source/*.c)
|
|
|
FATFS_O = $(FATFS_C:.c=.o)
|
|
|
fatfs.a: $(FATFS_O)
|
|
@@ -141,20 +147,30 @@ ioregsa.S: ioregs.h ioregsa.pl | $(genhdrs)
|
|
|
$(PERL) ioregsa.pl $< $@
|
|
|
|
|
|
.PHONY: roms
|
|
|
-roms: $(ROMOBJ) roms.h
|
|
|
+roms: asmsrc
|
|
|
+ $(MAKE) _roms
|
|
|
+
|
|
|
+.PHONY: _roms
|
|
|
+_roms: $(ROMOBJ)
|
|
|
|
|
|
roms/%.o: roms/%.rom rom.S
|
|
|
$(CC) $(SFLAGS) $(SFLAGS_$(F<)) \
|
|
|
-DNAME=rom_$$(echo '$*' | sed -r -e 's/[^A-Za-z0-9]+/_/g') \
|
|
|
-DFILE='"$<"' -c -o $@ rom.S
|
|
|
|
|
|
-roms.h: $(ROMS)
|
|
|
+.PHONY: asmsrc
|
|
|
+asmsrc:
|
|
|
+ for d in $(ASMDIRS); do $(MAKE) -C $$d; done
|
|
|
+
|
|
|
+roms.h: roms
|
|
|
( for r in $(ROMS); do \
|
|
|
cn=$$(echo "$$r" | sed -r -e 's/^roms/rom_/' -e 's/\.rom$$//' \
|
|
|
-e 's/[^A-Za-z0-9]+/_/g') ; \
|
|
|
stat -c "extern const char $$cn[%s];" "$$r"; \
|
|
|
done ) > $@
|
|
|
|
|
|
+abcmem.o: roms.h
|
|
|
+
|
|
|
%.ild: %.ld | $(genhdrs)
|
|
|
$(CC) $(CFLAGS) $(CFLAGS_$<) $(gendeps) \
|
|
|
-x assembler-with-cpp \
|
|
@@ -168,13 +184,14 @@ irqtable.h: ../iodevs.conf ../tools/iodevs.pl
|
|
|
$(PERL) ../tools/iodevs.pl irqh $< $@
|
|
|
|
|
|
clean:
|
|
|
- for d in . $(SUBDIRS); do \
|
|
|
+ for d in . $(shell find $(SUBDIRS) -type d); do \
|
|
|
rm -f $$d/*.a $$d/*.o $$d/*.i $$d/*.s $$d/*.elf $$d/*.bin \
|
|
|
$$d/.*.d $$d/*.ild $$d/*.map; \
|
|
|
done
|
|
|
rm -f $(genhdrs) $(gensrcs) $(ROMOBJ)
|
|
|
|
|
|
spotless: clean
|
|
|
+ for d in $(ASMDIRS); do $(MAKE) -C $$d $@; done
|
|
|
rm -f *.mem *.hex *.mif checksum.h
|
|
|
|
|
|
-include $(patsubst %,%/.*.d,. $(SUBDIRS))
|