1257099Srpaulo# $FreeBSD$
2257099Srpaulo#
3264483Sjmmv# You must include bsd.test.mk instead of this file from your Makefile.
4264483Sjmmv#
5257099Srpaulo# Logic to build and install plain test programs.  A plain test programs it not
6257099Srpaulo# supposed to use any specific testing framework: all it does is run some code
7257099Srpaulo# and report the test's pass or fail status via a 0 or 1 exit code.
8257099Srpaulo
9264483Sjmmv.if !target(__<bsd.test.mk>__)
10264483Sjmmv.error plain.test.mk cannot be included directly.
11264483Sjmmv.endif
12257099Srpaulo
13257099Srpaulo# List of C, C++ and shell test programs to build.
14257099Srpaulo#
15257099Srpaulo# Programs listed here are built according to the semantics of bsd.prog.mk for
16257099Srpaulo# PROGS, PROGS_CXX and SCRIPTS, respectively.
17257099Srpaulo#
18257099Srpaulo# Test programs registered in this manner are set to be installed into TESTSDIR
19257099Srpaulo# (which should be overriden by the Makefile) and are not required to provide a
20257099Srpaulo# manpage.
21257099SrpauloPLAIN_TESTS_C?=
22257099SrpauloPLAIN_TESTS_CXX?=
23257099SrpauloPLAIN_TESTS_SH?=
24257099Srpaulo
25257099Srpaulo.if !empty(PLAIN_TESTS_C)
26257099SrpauloPROGS+= ${PLAIN_TESTS_C}
27257099Srpaulo_TESTS+= ${PLAIN_TESTS_C}
28257099Srpaulo.for _T in ${PLAIN_TESTS_C}
29257099SrpauloBINDIR.${_T}= ${TESTSDIR}
30257099SrpauloMAN.${_T}?= # empty
31259962SjmmvSRCS.${_T}?= ${_T}.c
32257099SrpauloTEST_INTERFACE.${_T}= plain
33257099Srpaulo.endfor
34257099Srpaulo.endif
35257099Srpaulo
36257099Srpaulo.if !empty(PLAIN_TESTS_CXX)
37257099SrpauloPROGS_CXX+= ${PLAIN_TESTS_CXX}
38257099Srpaulo_TESTS+= ${PLAIN_TESTS_CXX}
39257099Srpaulo.for _T in ${PLAIN_TESTS_CXX}
40257099SrpauloBINDIR.${_T}= ${TESTSDIR}
41257099SrpauloMAN.${_T}?= # empty
42259962SjmmvSRCS.${_T}?= ${_T}.cc
43257099SrpauloTEST_INTERFACE.${_T}= plain
44257099Srpaulo.endfor
45257099Srpaulo.endif
46257099Srpaulo
47257099Srpaulo.if !empty(PLAIN_TESTS_SH)
48257099SrpauloSCRIPTS+= ${PLAIN_TESTS_SH}
49257099Srpaulo_TESTS+= ${PLAIN_TESTS_SH}
50257099Srpaulo.for _T in ${PLAIN_TESTS_SH}
51257099SrpauloSCRIPTSDIR_${_T}= ${TESTSDIR}
52257099SrpauloTEST_INTERFACE.${_T}= plain
53260037SjmmvCLEANFILES+= ${_T} ${_T}.tmp
54260037Sjmmv# TODO(jmmv): It seems to me that this SED and SRC functionality should
55260037Sjmmv# exist in bsd.prog.mk along the support for SCRIPTS.  Move it there if
56260037Sjmmv# this proves to be useful within the tests.
57260037SjmmvPLAIN_TESTS_SH_SED_${_T}?= # empty
58260037SjmmvPLAIN_TESTS_SH_SRC_${_T}?= ${_T}.sh
59260037Sjmmv${_T}: ${PLAIN_TESTS_SH_SRC_${_T}}
60271298Sngie	cat ${.ALLSRC:N*Makefile*} \
61271298Sngie	    | sed ${PLAIN_TESTS_SH_SED_${_T}} >${.TARGET}.tmp
62260037Sjmmv	chmod +x ${.TARGET}.tmp
63260037Sjmmv	mv ${.TARGET}.tmp ${.TARGET}
64257099Srpaulo.endfor
65257099Srpaulo.endif
66