/ 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)