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