1242711Ssjg# $FreeBSD: releng/10.3/share/mk/atf.test.mk 292148 2015-12-13 04:20:47Z ngie $
2242711Ssjg#
3264483Sjmmv# You must include bsd.test.mk instead of this file from your Makefile.
4264483Sjmmv#
5259962Sjmmv# Logic to build and install ATF test programs; i.e. test programs linked
6259962Sjmmv# against the ATF libraries.
7242711Ssjg
8264483Sjmmv.if !target(__<bsd.test.mk>__)
9264483Sjmmv.error atf.test.mk cannot be included directly.
10264483Sjmmv.endif
11242711Ssjg
12259962Sjmmv# List of C, C++ and shell test programs to build.
13259962Sjmmv#
14259962Sjmmv# Programs listed here are built using PROGS, PROGS_CXX and SCRIPTS,
15259962Sjmmv# respectively, from bsd.prog.mk.  However, the build rules are tweaked to
16259962Sjmmv# require the ATF libraries.
17259962Sjmmv#
18259962Sjmmv# Test programs registered in this manner are set to be installed into TESTSDIR
19259962Sjmmv# (which should be overriden by the Makefile) and are not required to provide a
20259962Sjmmv# manpage.
21259962SjmmvATF_TESTS_C?=
22259962SjmmvATF_TESTS_CXX?=
23259962SjmmvATF_TESTS_SH?=
24242711Ssjg
25259962Sjmmv.if !empty(ATF_TESTS_C)
26259962SjmmvPROGS+= ${ATF_TESTS_C}
27259962Sjmmv_TESTS+= ${ATF_TESTS_C}
28259962Sjmmv.for _T in ${ATF_TESTS_C}
29259962SjmmvBINDIR.${_T}= ${TESTSDIR}
30259962SjmmvMAN.${_T}?= # empty
31242711SsjgSRCS.${_T}?= ${_T}.c
32242711SsjgDPADD.${_T}+= ${LIBATF_C}
33242711SsjgLDADD.${_T}+= -latf-c
34270905SngieUSEPRIVATELIB+= atf-c
35259962SjmmvTEST_INTERFACE.${_T}= atf
36242711Ssjg.endfor
37242711Ssjg.endif
38242711Ssjg
39259962Sjmmv.if !empty(ATF_TESTS_CXX)
40259962SjmmvPROGS_CXX+= ${ATF_TESTS_CXX}
41259962Sjmmv_TESTS+= ${ATF_TESTS_CXX}
42259962Sjmmv.for _T in ${ATF_TESTS_CXX}
43259962SjmmvBINDIR.${_T}= ${TESTSDIR}
44259962SjmmvMAN.${_T}?= # empty
45242711SsjgSRCS.${_T}?= ${_T}${CXX_SUFFIX:U.cc}
46242711SsjgDPADD.${_T}+= ${LIBATF_CXX} ${LIBATF_C}
47242711SsjgLDADD.${_T}+= -latf-c++ -latf-c
48270905SngieUSEPRIVATELIB+= atf-c++
49259962SjmmvTEST_INTERFACE.${_T}= atf
50242711Ssjg.endfor
51242711Ssjg.endif
52242711Ssjg
53259962Sjmmv.if !empty(ATF_TESTS_SH)
54259962SjmmvSCRIPTS+= ${ATF_TESTS_SH}
55259962Sjmmv_TESTS+= ${ATF_TESTS_SH}
56259962Sjmmv.for _T in ${ATF_TESTS_SH}
57259962SjmmvSCRIPTSDIR_${_T}= ${TESTSDIR}
58259962SjmmvTEST_INTERFACE.${_T}= atf
59242711SsjgCLEANFILES+= ${_T} ${_T}.tmp
60271298Sngie# TODO(jmmv): It seems to me that this SED and SRC functionality should
61271298Sngie# exist in bsd.prog.mk along the support for SCRIPTS.  Move it there if
62271298Sngie# this proves to be useful within the tests.
63271298SngieATF_TESTS_SH_SED_${_T}?= # empty
64259962SjmmvATF_TESTS_SH_SRC_${_T}?= ${_T}.sh
65259962Sjmmv${_T}: ${ATF_TESTS_SH_SRC_${_T}}
66285094Sbapt	echo '#! /usr/libexec/atf-sh' > ${.TARGET}.tmp
67276423Sngie.if empty(ATF_TESTS_SH_SED_${_T})
68276423Sngie	cat ${.ALLSRC:N*Makefile*} >>${.TARGET}.tmp
69276423Sngie.else
70271298Sngie	cat ${.ALLSRC:N*Makefile*} \
71271298Sngie	    | sed ${ATF_TESTS_SH_SED_${_T}} >>${.TARGET}.tmp
72276423Sngie.endif
73242711Ssjg	chmod +x ${.TARGET}.tmp
74242711Ssjg	mv ${.TARGET}.tmp ${.TARGET}
75242711Ssjg.endfor
76242711Ssjg.endif
77