1236594Sobrien# $FreeBSD$
2236594Sobrien
3251368Sobrien.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "ia64"
4251368SobrienBI_BITS=
5251368Sobrien.endif
6251368Sobrien
7251368Sobrien_BINS=	\
8242137Sobrien	filemontest \
9251368Sobrien	timed-forkb \
10251368Sobrien	sizeof_long
11236594Sobrien
12251368SobrienBINS=	${_BINS}
13251368Sobrien.if defined(BI_BITS)
14251368SobrienBINS+=	${_BINS:C/$/32/g}
15251368Sobrien.endif
16251368Sobrien
17251368Sobrienbins: ${BINS}
18242137Sobrienall: bins
19242137Sobrien
20236594SobrienNO_MAN=
21236594Sobrien
22236594SobrienWARNS?=	6
23236594SobrienCFLAGS+= -I${.CURDIR}/../../../sys
24236594Sobrien
25242137Sobrien# Should be "WITHOUT_CTF=" below, but stupid infastrurture fails:
26242137Sobrien# "/usr/share/mk/bsd.own.mk", line 489: WITH_CTF and WITHOUT_CTF can't both be set.
27242137SobrienWITHOUT_CDDL=
28242137Sobrien
29242137SobrienCLEANFILES+=	${BINS}
30242137Sobrien
31251368Sobrien
32251368Sobrien.for f32 in ${BINS}
33251368Sobrien${f32}32: ${f32}.c
34251368Sobrien	${CC} -m32 -DBIT=\"32\" -o ${.TARGET} ${CFLAGS} ${.ALLSRC}
35251368Sobrien.endfor
36251368Sobrien
37251368Sobrientests:
38242137Sobrien	kldstat | grep filemon
39251368Sobrien	@echo ""
40251368Sobrien	${MAKE} test01
41251368Sobrien	${MAKE} test02
42251368Sobrien.if defined(BI_BITS)
43251368Sobrien	${MAKE} test32
44251368Sobrien.endif
45242137Sobrien	@echo "filemon(4) tests passed."
46242137Sobrien
47236594Sobrien# Cannot use .OBJDIR -- 'filemontest' expects 'test_script.sh' in .
48251368Sobrientest01: ${BINS:Mfilemontest*} ${BINS:Msizeof_long*} clean-test
49251368Sobrien.for BIN in ${BINS:Mfilemontest}
50236594Sobrien	cd ${.CURDIR} ; \
51236594Sobrien		for A in 1 2 3 4 5 6 7 8 9 0; do \
52236594Sobrien		for B in 1 2 3 4 5 6 7 8 9 0; do \
53236594Sobrien		for C in 1 2 3 4 5 6 7 8 9 0; do \
54237794Sobrien			test -x ${BIN} && ${.OBJDIR}/${BIN} ;\
55236594Sobrien		done ;\
56236594Sobrien		done ;\
57236594Sobrien		done
58236594Sobrien	@cd ${.CURDIR} ; set +e ; egrep '(Start|Stop) .*\.' filemon_log.* | \
59251368Sobrien	    grep -q -v '\.[0-9][0-9][0-9][0-9][0-9][0-9]$$' || printf "Time stamp format OK\n\n"
60237794Sobrien.endfor
61251368Sobrien	@cd ${.CURDIR} ; set +e ; for F in filemon_log.* ; do \
62251368Sobrien 	    tail -1 $$F | grep -q '# Bye bye' || echo "$$F missing filemon bye-bye" ; \
63251368Sobrien	    NL=`wc -l $$F | awk '{print $$1}'` ; \
64251368Sobrien	    if [ "$${NL}" != 97 ]; then echo "$$F BAD, contains $${NL} lines" ; exit 1 ; fi ; done
65236594Sobrien
66251368Sobrientest02: ${BINS:Mtimed-forkb*}
67251368Sobrien	@echo "Without filemon(4) active:"
68251368Sobrien	./timed-forkb
69251368Sobrien	@echo "With filemon(4) active:"
70251368Sobrien	script -f typescript-timed-forkb ./timed-forkb
71251368Sobrien	ls -l typescript-timed-forkb.filemon
72251368Sobrien
73251368Sobrientest32: ${BINS:M*32*}
74251368Sobrien	script -f typescript.${.TARGET} ./sizeof_long32 >/dev/null
75251368Sobrien	@tail -1 typescript.test32.filemon | grep -q '# Bye bye' || (echo '32-bit comapt filemon Missing "bye-bye"' ; exit 1)
76251368Sobrien	@egrep -q '^X [0-9]+ 0$$' typescript.test32.filemon || (echo "32-bit binary exit ERROR" ; exit 1)
77251368Sobrien	@printf "filemon(4) 32bit FreeBSD support passed.\n\n"
78251368Sobrien
79242157SobrienCLEANFILES+=	typescript-timed-forkb typescript-timed-forkb.filemon
80242157Sobrien
81236594Sobrienclean-test:
82251368Sobrien	cd ${.CURDIR} ; rm -f filemon_log*.*
83236594Sobrien
84242157Sobrienclean-tests: clean-test
85242157Sobrien
86236594Sobrien.include <bsd.prog.mk>
87