xref: /freebsd/share/mk/bsd.test.mk (revision 6f5639e3f15e70b927ad10fdfe22a2df3a6d0038)
150c5d27bSSimon J. Gerraty# $NetBSD: bsd.test.mk,v 1.21 2012/08/25 22:21:16 jmmv Exp $
250c5d27bSSimon J. Gerraty# $FreeBSD$
350c5d27bSSimon J. Gerraty
450c5d27bSSimon J. Gerraty.include <bsd.init.mk>
550c5d27bSSimon J. Gerraty
650c5d27bSSimon J. Gerraty.if defined(TESTS_C)
750c5d27bSSimon J. GerratyPROGS+=	${TESTS_C}
850c5d27bSSimon J. Gerraty.for _T in ${TESTS_C}
950c5d27bSSimon J. GerratyBINDIR.${_T}= ${TESTSDIR}
1050c5d27bSSimon J. GerratyMAN.${_T}?= # empty
1150c5d27bSSimon J. Gerraty.endfor
1250c5d27bSSimon J. Gerraty.endif
1350c5d27bSSimon J. Gerraty
1450c5d27bSSimon J. Gerraty.if defined(TESTS_CXX)
1550c5d27bSSimon J. GerratyPROGS_CXX+= ${TESTS_CXX}
1650c5d27bSSimon J. GerratyPROGS+= ${TESTS_CXX}
1750c5d27bSSimon J. Gerraty.for _T in ${TESTS_CXX}
1850c5d27bSSimon J. GerratyBINDIR.${_T}= ${TESTSDIR}
1950c5d27bSSimon J. GerratyMAN.${_T}?= # empty
2050c5d27bSSimon J. Gerraty.endfor
2150c5d27bSSimon J. Gerraty.endif
2250c5d27bSSimon J. Gerraty
2350c5d27bSSimon J. Gerraty.if defined(TESTS_SH)
2450c5d27bSSimon J. GerratySCRIPTS+= ${TESTS_SH}
2550c5d27bSSimon J. Gerraty.for _T in ${TESTS_SH}
2650c5d27bSSimon J. GerratySCRIPTSDIR_${_T}= ${TESTSDIR}
2750c5d27bSSimon J. Gerraty.endfor
2850c5d27bSSimon J. Gerraty.endif
2950c5d27bSSimon J. Gerraty
3050c5d27bSSimon J. GerratyTESTSBASE?= ${DESTDIR}/usr/tests
3150c5d27bSSimon J. Gerraty
3250c5d27bSSimon J. Gerraty# it is rare for test cases to have man pages
3350c5d27bSSimon J. Gerraty.if !defined(MAN)
3450c5d27bSSimon J. GerratyWITHOUT_MAN=yes
3550c5d27bSSimon J. Gerraty.export WITHOUT_MAN
3650c5d27bSSimon J. Gerraty.endif
3750c5d27bSSimon J. Gerraty
3850c5d27bSSimon J. Gerraty# tell progs.mk we might want to install things
39*6f5639e3SSimon J. GerratyBINDIR = ${TESTSDIR}
4050c5d27bSSimon J. GerratyPROGS_TARGETS+= install
4150c5d27bSSimon J. Gerraty
42*6f5639e3SSimon J. Gerraty.ifdef PROG
43*6f5639e3SSimon J. Gerraty# we came here via bsd.progs.mk below
44*6f5639e3SSimon J. Gerraty# parent will do staging.
45*6f5639e3SSimon J. GerratyMK_STAGING= no
46*6f5639e3SSimon J. Gerraty.endif
47*6f5639e3SSimon J. Gerraty
4850c5d27bSSimon J. Gerraty.if !empty(PROGS) || !empty(PROGS_CXX) || !empty(SCRIPTS)
4950c5d27bSSimon J. Gerraty.include <bsd.progs.mk>
5050c5d27bSSimon J. Gerraty.endif
5150c5d27bSSimon J. Gerraty
5250c5d27bSSimon J. Gerratybeforetest: .PHONY
5350c5d27bSSimon J. Gerraty.if defined(TESTSDIR)
5450c5d27bSSimon J. Gerraty.if ${TESTSDIR} == ${TESTSBASE}
5550c5d27bSSimon J. Gerraty# Forbid running from ${TESTSBASE}.  It can cause false positives/negatives and
5650c5d27bSSimon J. Gerraty# it does not cover all the tests (e.g. it misses testing software in external).
5750c5d27bSSimon J. Gerraty	@echo "*** Sorry, you cannot use make test from src/tests.  Install the"
5850c5d27bSSimon J. Gerraty	@echo "*** tests into their final location and run them from ${TESTSBASE}"
5950c5d27bSSimon J. Gerraty	@false
6050c5d27bSSimon J. Gerraty.else
6150c5d27bSSimon J. Gerraty	@echo "*** Using this test does not preclude you from running the tests"
6250c5d27bSSimon J. Gerraty	@echo "*** installed in ${TESTSBASE}.  This test run may raise false"
6350c5d27bSSimon J. Gerraty	@echo "*** positives and/or false negatives."
6450c5d27bSSimon J. Gerraty.endif
6550c5d27bSSimon J. Gerraty.else
6650c5d27bSSimon J. Gerraty	@echo "*** No TESTSDIR defined; nothing to do."
6750c5d27bSSimon J. Gerraty	@false
6850c5d27bSSimon J. Gerraty.endif
6950c5d27bSSimon J. Gerraty	@echo
7050c5d27bSSimon J. Gerraty
7150c5d27bSSimon J. Gerraty.if !target(realtest)
7250c5d27bSSimon J. Gerratyrealtest: .PHONY
7350c5d27bSSimon J. Gerraty	@echo "$@ not defined; skipping"
7450c5d27bSSimon J. Gerraty.endif
7550c5d27bSSimon J. Gerraty
7650c5d27bSSimon J. Gerratytest: .PHONY
7750c5d27bSSimon J. Gerraty.ORDER: beforetest realtest
7850c5d27bSSimon J. Gerratytest: beforetest realtest
7950c5d27bSSimon J. Gerraty
8050c5d27bSSimon J. Gerraty.if target(aftertest)
8150c5d27bSSimon J. Gerraty.ORDER: realtest aftertest
8250c5d27bSSimon J. Gerratytest: aftertest
8350c5d27bSSimon J. Gerraty.endif
8450c5d27bSSimon J. Gerraty
85*6f5639e3SSimon J. Gerraty.if !defined(PROG) && ${MK_STAGING} != "no"
86*6f5639e3SSimon J. Gerraty.if !defined(_SKIP_BUILD)
87*6f5639e3SSimon J. Gerraty# this will handle staging if needed
88*6f5639e3SSimon J. Gerraty_SKIP_STAGING= no
89*6f5639e3SSimon J. Gerraty# but we don't want it to build anything
90*6f5639e3SSimon J. Gerraty_SKIP_BUILD=
91*6f5639e3SSimon J. Gerraty.endif
92*6f5639e3SSimon J. Gerraty.if !empty(PROGS)
93*6f5639e3SSimon J. Gerratystage_files.prog: ${PROGS}
94*6f5639e3SSimon J. Gerraty.endif
95*6f5639e3SSimon J. Gerraty
96*6f5639e3SSimon J. Gerraty.include <bsd.prog.mk>
97*6f5639e3SSimon J. Gerraty
98*6f5639e3SSimon J. Gerraty.endif
99*6f5639e3SSimon J. Gerraty.if !target(objwarn)
10050c5d27bSSimon J. Gerraty.include <bsd.obj.mk>
101*6f5639e3SSimon J. Gerraty.endif
102