2
0

Makefile 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. # This now assumes GNU make or equivalent
  2. MAKEFLAGS += -R -r
  3. Z80ASM = z80asm # Get rid of these...
  4. PERL = perl
  5. Z80_CPP = gcc -E -x assembler-with-cpp
  6. CROSS = ../../../../tools/gnu/bin/z80-none-elf-
  7. Z80_AS = $(CROSS)as
  8. Z80_LD = $(CROSS)ld
  9. Z80_OBJCOPY = $(CROSS)objcopy
  10. Z80_OBJDUMP = $(CROSS)objdump
  11. Z80_NM = $(CROSS)nm
  12. INCLUDE = -I$(O) -I.
  13. SFLAGS = $(INCLUDE) -undef -nostdinc -D__ASSEMBLER__ -D__Z80__
  14. ASFLAGS = $(INCLUDE) -ahlsgm=$*.lst --no-pad-sections -g
  15. LDFLAGS =
  16. # Used for make clean
  17. AUXRAM = nvram_20k nvram_22k no_nvram
  18. UFDDOS = ../$(O)/ufddos80.rom
  19. PRINT = ../$(O)/print80_29.rom ../$(O)/print80_30.rom ../$(O)/print80_28.rom
  20. ROMS = $(UFDDOS) $(PRINT)
  21. HDRS = z80.inc abc80.inc auxram.inc $(O)/nvram.inc print80.inc
  22. .SUFFIXES:
  23. .SECONDARY:
  24. .DELETE_ON_ERROR:
  25. all:
  26. set -e; for r in $(AUXRAM); do $(MAKE) O=$$r all_O; done
  27. all_O: $(ROMS)
  28. # .asm rather than .S to avoid problems on monocase filesystems
  29. $(O)/%.s: %.asm $(HDRS)
  30. $(Z80_CPP) $(SFLAGS) -o $@ $<
  31. %.o: %.s
  32. $(Z80_AS) $(ASFLAGS) -o $@ $<
  33. %.elf: %.o z80.ld z80ld.conf
  34. $(Z80_LD) @z80ld.conf -T z80.ld $(LDFLAGS) \
  35. -Map=$*.map --cref -o $@ $<
  36. %.bin: %.elf
  37. $(Z80_OBJCOPY) -O binary $< $@
  38. # Default rule
  39. ../$(O)/%.rom: $(O)/%.bin
  40. mkdir -p $(@D) && cp -f $< $@
  41. clean:
  42. for d in . $(AUXRAM); do \
  43. rm -f $$d/*.err $$d/*.lis $$d/*.map $$d/*.sym $$d/*.def \
  44. $$d/*.obj $$d/*.o $$d/*.reloc $$d/*.bin $$d/*.lst \
  45. $$d/*.s $$d/*.elf ; \
  46. done
  47. spotless: clean
  48. $(MAKE) O=* spotless_O
  49. spotless_O:
  50. rm -f $(ROMS)