1257099Srpaulo# $FreeBSD$
2257099Srpaulo#
3263161Sjmmv# You must include bsd.test.mk instead of this file from your Makefile.
4263161Sjmmv#
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
9263161Sjmmv.if !target(__<bsd.test.mk>__)
10263161Sjmmv.error plain.test.mk cannot be included directly.
11263161Sjmmv.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
31258298SjmmvSRCS.${_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
42258298SjmmvSRCS.${_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
53258552SjmmvCLEANFILES+= ${_T} ${_T}.tmp
54258552Sjmmv# TODO(jmmv): It seems to me that this SED and SRC functionality should
55258552Sjmmv# exist in bsd.prog.mk along the support for SCRIPTS.  Move it there if
56258552Sjmmv# this proves to be useful within the tests.
57258552SjmmvPLAIN_TESTS_SH_SED_${_T}?= # empty
58258552SjmmvPLAIN_TESTS_SH_SRC_${_T}?= ${_T}.sh
59258552Sjmmv${_T}: ${PLAIN_TESTS_SH_SRC_${_T}}
60274077Sngie.if empty(PLAIN_TESTS_SH_SED_${_T})
61274077Sngie	cat ${.ALLSRC:N*Makefile*} >${.TARGET}.tmp
62274077Sngie.else
63268445Sjmmv	cat ${.ALLSRC:N*Makefile*} \
64268445Sjmmv	    | sed ${PLAIN_TESTS_SH_SED_${_T}} >${.TARGET}.tmp
65274077Sngie.endif
66258552Sjmmv	chmod +x ${.TARGET}.tmp
67258552Sjmmv	mv ${.TARGET}.tmp ${.TARGET}
68257099Srpaulo.endfor
69257099Srpaulo.endif
70