Makefile revision 1.9
1PROG=	vndcompress
2SRCS=	main.c offtab.c utils.c vndcompress.c vnduncompress.c
3
4LINKS=	${BINDIR}/vndcompress ${BINDIR}/vnduncompress
5MLINKS=	vndcompress.1 vnduncompress.1
6
7DPADD+=	${LIBZ}
8LDADD+=	-lz
9
10WARNS=	5
11
12.include <bsd.prog.mk>
13
14TESTFILES+=	oneblock
15XFAIL+=		oneblock.in-outx
16XFAIL+=		oneblock.cl2-cl2x
17oneblock.in:
18	head -c 512 < /usr/share/dict/words > ${.TARGET}.tmp \
19	&& mv -f ${.TARGET}.tmp ${.TARGET}
20
21TESTFILES+=	tenblock
22XFAIL+=		tenblock.in-outx
23XFAIL+=		tenblock.cl2-cl2x
24tenblock.in:
25	head -c 5120 < /usr/share/dict/words > ${.TARGET}.tmp \
26	&& mv -f ${.TARGET}.tmp ${.TARGET}
27
28TESTFILES+=	smallfile
29XFAIL+=		smallfile.in-outx
30XFAIL+=		smallfile.cl2-cl2x
31smallfile.in:
32	head -c 12345 < /usr/share/dict/words > ${.TARGET}.tmp \
33	&& mv -f ${.TARGET}.tmp ${.TARGET}
34
35CHECKS+=	check-pipe
36CLEANFILES+=	smallfile.cl2pipe
37check-pipe: .PHONY smallfile.cl2 smallfile.cl2pipe
38	cmp ${.ALLSRC}
39smallfile.cl2pipe: smallfile.in vndcompress
40	head -c 54321 < /usr/share/dict/words \
41	| ./vndcompress -l 12345 /dev/stdin ${.TARGET}.tmp \
42	&& mv -f ${.TARGET}.tmp ${.TARGET}
43
44TESTFILES+=	onechunk
45onechunk.in:
46	head -c 65536 < /usr/share/dict/words > ${.TARGET}.tmp \
47	&& mv -f ${.TARGET}.tmp ${.TARGET}
48
49TESTFILES+=	tenchunk
50tenchunk.in:
51	head -c 655360 < /usr/share/dict/words > ${.TARGET}.tmp \
52	&& mv -f ${.TARGET}.tmp ${.TARGET}
53
54TESTFILES+=	extrablock
55XFAIL+=		extrablock.in-outx
56XFAIL+=		extrablock.cl2-cl2x
57extrablock.in:
58	head -c $$((65536 + 512)) < /usr/share/dict/words > ${.TARGET}.tmp \
59	&& mv -f ${.TARGET}.tmp ${.TARGET}
60
61TESTFILES+=	medfile
62XFAIL+=		medfile.in-outx
63XFAIL+=		medfile.cl2-cl2x
64medfile.in:
65	head -c 123456 < /usr/share/dict/words > ${.TARGET}.tmp \
66	&& mv -f ${.TARGET}.tmp ${.TARGET}
67
68TESTFILES+=		onetinyblock
69BLOCKSIZE.onetinyblock=	512
70onetinyblock.in:
71	head -c 512 < /usr/share/dict/words > ${.TARGET}.tmp \
72	&& mv -f ${.TARGET}.tmp ${.TARGET}
73
74TESTFILES+=		tentinyblock
75BLOCKSIZE.tentinyblock=	512
76tentinyblock.in:
77	head -c 5120 < /usr/share/dict/words > ${.TARGET}.tmp \
78	&& mv -f ${.TARGET}.tmp ${.TARGET}
79
80CHECKS+=	check-pipe-restart
81CLEANFILES+=	piperestart.in piperestart.in.tmp
82CLEANFILES+=	piperestart.cl2 piperestart.cl2.tmp
83CLEANFILES+=	piperestart.cl2restart piperestart.cl2restart.tmp
84CLEANFILES+=	piperestart.cl2part piperestart.cl2part.tmp
85check-pipe-restart: .PHONY piperestart.cl2 piperestart.cl2restart
86	cmp ${.ALLSRC}
87piperestart.cl2restart: piperestart.cl2part vndcompress
88	cp piperestart.cl2part ${.TARGET}.tmp \
89	&& head -c 700000 < /usr/share/dict/words \
90	| ./vndcompress -l 655360 -k 1 -rR /dev/stdin ${.TARGET}.tmp \
91	&& mv -f ${.TARGET}.tmp ${.TARGET}
92# The following rule uses ; and not && on purpose: vndcompress is
93# supposed to fail (and it is even OK to interrupt!) so we can restart
94# and fill in the rest.
95piperestart.cl2part: vndcompress
96	head -c 600000 < /usr/share/dict/words \
97	| ./vndcompress -l 655360 -k 1 /dev/stdin ${.TARGET}.tmp; \
98	mv -f ${.TARGET}.tmp ${.TARGET}
99piperestart.in:
100	head -c 655360 < /usr/share/dict/words > ${.TARGET}.tmp \
101	&& mv -f ${.TARGET}.tmp ${.TARGET}
102
103CHECKS+=	check-part
104CLEANFILES+=	part.orig part.cl2part part.cl2 part.out
105check-part: .PHONY part.orig part.out
106	cmp part.orig part.out
107part.cl2: part.orig part.cl2part vndcompress
108	cp part.cl2part ${.TARGET}.tmp \
109	&& ./vndcompress -s 512 -rR part.orig ${.TARGET}.tmp \
110	&& mv -f ${.TARGET}.tmp ${.TARGET}
111part.cl2part: part.orig vndcompress
112	./vndcompress -s 512 -p 10 part.orig ${.TARGET}.tmp \
113	&& mv -f ${.TARGET}.tmp ${.TARGET}
114part.orig:
115	head -c 12345 < /usr/share/dict/words > ${.TARGET}.tmp \
116	&& mv -f ${.TARGET}.tmp ${.TARGET}
117
118TESTSUFFIXES+=	in cl2 cl2x out outx
119
120TESTFORMS+=	cl2 cl2x
121TESTFORMS+=	in out
122TESTFORMS+=	in outx
123
124.for testfile in ${TESTFILES}
125.  for suffix in ${TESTSUFFIXES}
126CLEANFILES+=	${testfile}.${suffix}
127CLEANFILES+=	${testfile}.${suffix}.tmp
128.  endfor
129.  for left right in ${TESTFORMS}
130CHECKS.${testfile}+=	check-${testfile}.${left}-${right}
131check-${testfile}.${left}-${right}: .PHONY \
132  ${testfile}.${left} ${testfile}.${right}
133.    if empty(XFAIL:M${testfile}.${left}-${right})
134	cmp ${testfile}.${left} ${testfile}.${right}
135.    else
136	@echo '# expecting failure...' \
137	&& echo 'cmp ${testfile}.${left} ${testfile}.${right}' \
138	&& if cmp ${testfile}.${left} ${testfile}.${right}; then \
139	  echo 'unexpected pass!' \
140	  && exit 1; \
141	fi
142.    endif
143.  endfor
144check-${testfile}: ${CHECKS.${testfile}}
145CHECKS+=	check-${testfile}
146.endfor
147
148check: .PHONY ${CHECKS}
149
150.SUFFIXES: .cl2 .cl2x .in .out .outx
151
152.in.cl2: vndcompress
153	./vndcompress ${.IMPSRC} ${.TARGET}.tmp ${BLOCKSIZE.${.PREFIX}} \
154	&& mv -f ${.TARGET}.tmp ${.TARGET}
155
156.in.cl2x:
157	vndcompress ${.IMPSRC} ${.TARGET}.tmp ${BLOCKSIZE.${.PREFIX}} \
158	&& mv -f ${.TARGET}.tmp ${.TARGET}
159
160.cl2.out: vndcompress
161	./vndcompress -d ${.IMPSRC} ${.TARGET}.tmp \
162	&& mv -f ${.TARGET}.tmp ${.TARGET}
163
164.cl2.outx:
165	vnduncompress ${.IMPSRC} ${.TARGET}.tmp \
166	&& mv -f ${.TARGET}.tmp ${.TARGET}
167