# This now assumes GNU make or equivalent MAKEFLAGS += -R -r Z80ASM = z80asm # Get rid of these... PERL = perl Z80_CPP = gcc -E -x assembler-with-cpp CROSS = ../../../../tools/gnu/bin/z80-none-elf- Z80_AS = $(CROSS)as Z80_LD = $(CROSS)ld Z80_OBJCOPY = $(CROSS)objcopy Z80_OBJDUMP = $(CROSS)objdump Z80_NM = $(CROSS)nm INCLUDE = -I$(O) -I. SFLAGS = $(INCLUDE) -undef -nostdinc -D__ASSEMBLER__ -D__Z80__ ASFLAGS = $(INCLUDE) -ahlsgm=$*.lst --no-pad-sections -g LDFLAGS = # Used for make clean AUXRAM = nvram_20k nvram_22k no_nvram UFDDOS = ../$(O)/ufddos80.rom PRINT = ../$(O)/print80_29.rom ../$(O)/print80_30.rom ../$(O)/print80_28.rom ROMS = $(UFDDOS) $(PRINT) HDRS = z80.inc abc80.inc auxram.inc $(O)/nvram.inc print80.inc .SUFFIXES: .SECONDARY: .DELETE_ON_ERROR: all: set -e; for r in $(AUXRAM); do $(MAKE) O=$$r all_O; done all_O: $(ROMS) # .asm rather than .S to avoid problems on monocase filesystems $(O)/%.s: %.asm $(HDRS) $(Z80_CPP) $(SFLAGS) -o $@ $< %.o: %.s $(Z80_AS) $(ASFLAGS) -o $@ $< %.elf: %.o z80.ld z80ld.conf $(Z80_LD) @z80ld.conf -T z80.ld $(LDFLAGS) \ -Map=$*.map --cref -o $@ $< %.bin: %.elf $(Z80_OBJCOPY) -O binary $< $@ # Default rule ../$(O)/%.rom: $(O)/%.bin mkdir -p $(@D) && cp -f $< $@ clean: for d in . $(AUXRAM); do \ rm -f $$d/*.err $$d/*.lis $$d/*.map $$d/*.sym $$d/*.def \ $$d/*.obj $$d/*.o $$d/*.reloc $$d/*.bin $$d/*.lst \ $$d/*.s $$d/*.elf ; \ done spotless: clean $(MAKE) O=* spotless_O spotless_O: rm -f $(ROMS)