+#lzma/lz/lz_decoder.o: lzma/lz/lz_decoder.c
+#lzma/lz/lz_encoder.o: lzma/lz/lz_encoder.c
+
+lzma/%.o: lzma/%.c
+ $(CC) $(CFLAGS) $(LZMAFLAGS) -c -o $@ $<
+
+lib/liblzma.a: $(LZMAOBJ)
+ ar rcuv $@ $?
+
+lib/libjsw.a: $(JSWOBJ)
+ ar rcuv $@ $?
+
+ZPM:= ./zpm -P.
+
+zpm-$(ZPMVER)-1.zpm: programs
+ rm -f $@
+ $(ZPM) newpackage -C zpm-$(ZPMVER)-1
+ $(ZPM) add -u root -g root -f $@ -P /sbin zpm-$(ZPMVER)-1 $(sort $(PROGRAMS))
+
+tarball: zpm-$(ZPMVER)-1.tar.xz
+
+zpm-$(ZPMVER)-1.tar.xz: programs
+ rm -f $@
+ tar -cJf $@ --transform='s|^|bin/|' \
+ $(PROGRAMS)
+
+lzma.c: mklzma
+ sh mklzma
+
+lzma.o: lzma.c
+ gcc -std=c99 -Wall -c -o $@ $<
+
+stest: $(ZPKGBIN)
+ PATH=$(curdir)/t:$(curdir):$(PATH) t/$(T).t
+
+t/ctap/prove: t/ctap/prove.o
+ $(CC) $(CFLAGS) -o $@ $+
+
+test: $(ZPKGBIN) t/ctap/prove
+ @PATH=$(curdir)/t:$(curdir):$(PATH) t/ctap/prove t/*.t
+
+programs: $(ZPKGBIN)