1242711Ssjg# $NetBSD: bsd.test.mk,v 1.21 2012/08/25 22:21:16 jmmv Exp $
2242711Ssjg# $FreeBSD$
3242711Ssjg
4242711Ssjg.include <bsd.init.mk>
5242711Ssjg
6242711Ssjg.if defined(TESTS_C)
7242711SsjgPROGS+=	${TESTS_C}
8242711Ssjg.for _T in ${TESTS_C}
9242711SsjgBINDIR.${_T}= ${TESTSDIR}
10242711SsjgMAN.${_T}?= # empty
11242711Ssjg.endfor
12242711Ssjg.endif
13242711Ssjg
14242711Ssjg.if defined(TESTS_CXX)
15242711SsjgPROGS_CXX+= ${TESTS_CXX}
16242711SsjgPROGS+= ${TESTS_CXX}
17242711Ssjg.for _T in ${TESTS_CXX}
18242711SsjgBINDIR.${_T}= ${TESTSDIR}
19242711SsjgMAN.${_T}?= # empty
20242711Ssjg.endfor
21242711Ssjg.endif
22242711Ssjg
23242711Ssjg.if defined(TESTS_SH)
24242711SsjgSCRIPTS+= ${TESTS_SH}
25242711Ssjg.for _T in ${TESTS_SH}
26242711SsjgSCRIPTSDIR_${_T}= ${TESTSDIR}
27242711Ssjg.endfor
28242711Ssjg.endif
29242711Ssjg
30242711SsjgTESTSBASE?= ${DESTDIR}/usr/tests
31242711Ssjg
32242711Ssjg# it is rare for test cases to have man pages
33242711Ssjg.if !defined(MAN)
34242711SsjgWITHOUT_MAN=yes
35242711Ssjg.export WITHOUT_MAN
36242711Ssjg.endif
37242711Ssjg
38242711Ssjg# tell progs.mk we might want to install things
39242711SsjgPROG_VARS+= BINDIR
40242711SsjgPROGS_TARGETS+= install
41242711Ssjg
42242711Ssjg.if !empty(PROGS) || !empty(PROGS_CXX) || !empty(SCRIPTS)
43242711Ssjg.include <bsd.progs.mk>
44242711Ssjg.endif
45242711Ssjg
46242711Ssjgbeforetest: .PHONY
47242711Ssjg.if defined(TESTSDIR)
48242711Ssjg.if ${TESTSDIR} == ${TESTSBASE}
49242711Ssjg# Forbid running from ${TESTSBASE}.  It can cause false positives/negatives and
50242711Ssjg# it does not cover all the tests (e.g. it misses testing software in external).
51242711Ssjg	@echo "*** Sorry, you cannot use make test from src/tests.  Install the"
52242711Ssjg	@echo "*** tests into their final location and run them from ${TESTSBASE}"
53242711Ssjg	@false
54242711Ssjg.else
55242711Ssjg	@echo "*** Using this test does not preclude you from running the tests"
56242711Ssjg	@echo "*** installed in ${TESTSBASE}.  This test run may raise false"
57242711Ssjg	@echo "*** positives and/or false negatives."
58242711Ssjg.endif
59242711Ssjg.else
60242711Ssjg	@echo "*** No TESTSDIR defined; nothing to do."
61242711Ssjg	@false
62242711Ssjg.endif
63242711Ssjg	@echo
64242711Ssjg
65242711Ssjg.if !target(realtest)
66242711Ssjgrealtest: .PHONY
67242711Ssjg	@echo "$@ not defined; skipping"
68242711Ssjg.endif
69242711Ssjg
70242711Ssjgtest: .PHONY
71242711Ssjg.ORDER: beforetest realtest
72242711Ssjgtest: beforetest realtest
73242711Ssjg
74242711Ssjg.if target(aftertest)
75242711Ssjg.ORDER: realtest aftertest
76242711Ssjgtest: aftertest
77242711Ssjg.endif
78242711Ssjg
79242711Ssjg.include <bsd.obj.mk>
80