/ Makefile
Makefile
  1  export PATH:= $(abspath bin):$(PATH)
  2  
  3  .PHONY: all
  4  all: 80columns-compressed.prg 80c2-compressed.prg 80c3-compressed.prg 80c4-compressed.prg
  5  all: 80colreu-compressed.prg 80r2-compressed.prg 80r3-compressed.prg 80r4-compressed.prg
  6  all: charset.prg charset2.prg charset3.prg charset4.prg
  7  
  8  ifneq ($(shell which c1541 2>/dev/null),)
  9  all: 80columns.d64
 10  endif
 11  
 12  80columns.d64: 80columns-compressed.prg 80colreu-compressed.prg charset.prg charset2.prg charset3.prg charset4.prg
 13  	rm -f $@
 14  	c1541 -format 80columns,80 d64 80columns.d64.tmp \
 15  		$(foreach fn,$^,-write $(fn) $(patsubst %-compressed,%,$(patsubst %.prg,%,$(fn))))
 16  	mv -f 80columns.d64.tmp 80columns.d64
 17  
 18  EXOMIZER_SFX := exomizer sfx 51200 -q -n -T4 -M256 -Di_perf=2
 19  .INTERMEDIATE: charset.bin
 20  charset.prg: charset.bin
 21  	(printf '\0\320'; cat $<) > $@.tmp
 22  	$(EXOMIZER_SFX) -o $@ $@.tmp
 23  	rm -f $@.tmp
 24  
 25  charset.bin: charset.o charset.cfg
 26  	ld65 -C charset.cfg $< -o $@
 27  
 28  charset%.prg: charset%.bin
 29  	(printf '\0\320'; cat $<) > $@.tmp
 30  	$(EXOMIZER_SFX) -o $@ $@.tmp
 31  	rm -f $@.tmp
 32  
 33  charset%.bin: charset%.o charset.cfg
 34  	ld65 -C charset.cfg $< -o $@
 35  
 36  %-compressed.prg: %-uncompressed.prg
 37  	$(EXOMIZER_SFX) -o $@ $<
 38  
 39  %-uncompressed.prg: %.bin
 40  	(printf '\0\310'; cat $<) > $@
 41  
 42  .PHONY: update-font-images
 43  update-font-images: charset.bin charset2.bin charset3.bin charset4.bin mkfontimg.py
 44  	python3 mkfontimg.py -l charset.bin  img/t1.png
 45  	python3 mkfontimg.py    charset.bin  img/g1.png
 46  	python3 mkfontimg.py -l charset2.bin img/t2.png
 47  	python3 mkfontimg.py    charset2.bin img/g2.png
 48  	python3 mkfontimg.py -l charset3.bin img/t3.png
 49  	python3 mkfontimg.py    charset3.bin img/g3.png
 50  	python3 mkfontimg.py -l charset4.bin img/t4.png
 51  	python3 mkfontimg.py    charset4.bin img/g4.png
 52  
 53  .INTERMEDIATE: 80colreu.bin
 54  80colreu.bin: 80colreu.o charset.o 80columns.cfg
 55  	ld65 -C 80columns.cfg $(filter %.o,$^) -o $@ --mapfile ${@:.bin=.map}
 56  
 57  .INTERMEDIATE: 80columns.bin
 58  80columns.bin: 80columns.o charset.o 80columns.cfg
 59  	ld65 -C 80columns.cfg $(filter %.o,$^) -o $@ --mapfile ${@:.bin=.map}
 60  
 61  80r%.bin: 80colreu.o charset%.o 80columns.cfg
 62  	ld65 -C 80columns.cfg $(filter %.o,$^) -o $@ --mapfile ${@:.bin=.map} --dbgfile ${@:.bin=.dbg}
 63  
 64  80c%.bin: 80columns.o charset%.o 80columns.cfg
 65  	ld65 -C 80columns.cfg $(filter %.o,$^) -o $@ --mapfile ${@:.bin=.map} --dbgfile ${@:.bin=.dbg}
 66  
 67  80r%.bin: 80colreu.o charset%.o 80columns.cfg
 68  	ld65 -C 80columns.cfg $(filter %.o,$^) -o $@ --mapfile ${@:.bin=.map} --dbgfile ${@:.bin=.dbg}
 69  
 70  80colreu.s: 80columns.s
 71  
 72  80colreu.s: 80columns.s
 73  
 74  %.o: %.s
 75  	ca65 -o $@ $< --debug --listing ${@:.o=.lst}
 76  
 77  .PHONY: clean
 78  clean:
 79  	rm -f *.lst *.map *.prg *.bin *.o 80columns.d64
 80  
 81  .PHONY: toolchain
 82  toolchain: toolchain-cc65 toolchain-exomizer
 83  
 84  .PHONY: toolchain-cc65
 85  toolchain-cc65:
 86  	[ -d cc65/src ] || git submodule update --init cc65
 87  
 88  	$(MAKE) -C cc65 CC=cc bin
 89  
 90  	mkdir -p bin
 91  
 92  	cp cc65/bin/ca65 bin/
 93  	cp cc65/bin/ld65 bin/
 94  
 95  .PHONY: toolchain-exomizer
 96  toolchain-exomizer:
 97  	[ -d exomizer/src ] || git submodule update --init exomizer
 98  
 99  	$(MAKE) -C exomizer/src CFLAGS="-Wall -Wstrict-prototypes -pedantic -O3"
100  
101  	mkdir -p bin
102  
103  	cp exomizer/src/exomizer bin/
104  
105  	# have to do this, or git will report untracked files
106  	(cd exomizer && git clean -dxf)