+all: kasse itemz cat
+
+build/%.o: src/%.c ${INCLUDES}
+ ${CC} ${CFLAGS} -O $< -o build/$(addsuffix .s,$(shell basename $< .c))
+ ${AS} ${CFLAGS} build/$(addsuffix .s,$(shell basename $< .c)) -o $@
+
+build/%.o: src/%.s
+ ${AS} ${CFLAGS} $< -o $@
+
+build/%.o: test/%.c ${INCLUDES}
+ ${CC} ${CFLAGS} -O $< -o build/$(addsuffix .s,$(shell basename $< .c))
+ ${AS} ${CFLAGS} build/$(addsuffix .s,$(shell basename $< .c)) -o $@
+
+build/%.o: test/%.s
+ ${AS} ${CFLAGS} $< -o $@
+
+.git/index:
+
+include/version.h: .git/index
+ mkdir -p build
+ echo "#define GV \"${GV}\"" > $@
+
+include/charset_umlauts.h: assets/umlauts.pbm
+ ./util/mkfont assets/umlauts.pbm chars_umlauts > $@
+
+kasse: build/config.o build/kasse.o build/general.o build/credit_manager.o build/c128time.o build/print.o build/vdc_patch_charset.o build/vdc_util.o build/globals.o build/bcd2dec.o
+ ${LD} -Ln $@.lbl -t c128 $^ -o $@
+
+itemz: build/config.o build/itemz.o build/general.o build/credit_manager.o build/c128time.o build/print.o build/globals.o build/bcd2dec.o build/vdc_util.o
+ ${LD} -Ln $@.lbl -t c128 $^ -o $@
+
+cat: build/general.o build/cat.o build/config.o build/print.o build/globals.o
+ ${LD} -Ln $@.lbl -t c128 $^ -o $@
+
+charmap: build/print_charmap.o build/vdc_util.o build/vdc_patch_charset.o
+ ${LD} -Ln $@.lbl -t c128 $^ -o $@
+
+ascii: build/print_ascii.o
+ ${LD} -Ln $@.lbl -t c128 $^ -o $@
+
+package: all
+ c1541 -format "${GV}",KA d71 kasse.d71
+ c1541 -attach kasse.d71 -write kasse
+ c1541 -attach kasse.d71 -write itemz
+ [ -e state ] && c1541 -attach kasse.d71 -write state || exit 0
+ [ -e items ] && c1541 -attach kasse.d71 -write items || exit 0
+
+test: build/config.o build/test.o build/general.o build/print.o build/globals.o
+ ${LD} -Ln $@.lbl -t c128 $^ -o test/$@
+
+test-package: test
+ c1541 -format "test",TE d71 test.d71
+ c1541 -attach test.d71 -write test/test || exit 0
+ c1541 -attach test.d71 -write state || exit 0
+ c1541 -attach test.d71 -write items || exit 0