1# $FreeBSD$ 2# 3# You must include bsd.test.mk instead of this file from your Makefile. 4# 5# Logic to build and install ATF test programs; i.e. test programs linked 6# against the ATF libraries. 7 8.if !target(__<bsd.test.mk>__) 9.error atf.test.mk cannot be included directly. 10.endif 11 12# List of C, C++ and shell test programs to build. 13# 14# Programs listed here are built using PROGS, PROGS_CXX and SCRIPTS, 15# respectively, from bsd.prog.mk. However, the build rules are tweaked to 16# require the ATF libraries. 17# 18# Test programs registered in this manner are set to be installed into TESTSDIR 19# (which should be overriden by the Makefile) and are not required to provide a 20# manpage. 21ATF_TESTS_C?= 22ATF_TESTS_CXX?= 23ATF_TESTS_SH?= 24 25.if !empty(ATF_TESTS_C) 26PROGS+= ${ATF_TESTS_C} 27_TESTS+= ${ATF_TESTS_C} 28.for _T in ${ATF_TESTS_C} 29BINDIR.${_T}= ${TESTSDIR} 30MAN.${_T}?= # empty 31SRCS.${_T}?= ${_T}.c 32DPADD.${_T}+= ${LIBATF_C} 33LDADD.${_T}+= -latf-c 34USEPRIVATELIB+= atf-c 35TEST_INTERFACE.${_T}= atf 36.endfor 37.endif 38 39.if !empty(ATF_TESTS_CXX) 40PROGS_CXX+= ${ATF_TESTS_CXX} 41_TESTS+= ${ATF_TESTS_CXX} 42.for _T in ${ATF_TESTS_CXX} 43BINDIR.${_T}= ${TESTSDIR} 44MAN.${_T}?= # empty 45SRCS.${_T}?= ${_T}${CXX_SUFFIX:U.cc} 46DPADD.${_T}+= ${LIBATF_CXX} ${LIBATF_C} 47LDADD.${_T}+= -latf-c++ -latf-c 48USEPRIVATELIB+= atf-c++ 49TEST_INTERFACE.${_T}= atf 50.endfor 51.endif 52 53.if !empty(ATF_TESTS_SH) 54SCRIPTS+= ${ATF_TESTS_SH} 55_TESTS+= ${ATF_TESTS_SH} 56.for _T in ${ATF_TESTS_SH} 57SCRIPTSDIR_${_T}= ${TESTSDIR} 58TEST_INTERFACE.${_T}= atf 59CLEANFILES+= ${_T} ${_T}.tmp 60# TODO(jmmv): It seems to me that this SED and SRC functionality should 61# exist in bsd.prog.mk along the support for SCRIPTS. Move it there if 62# this proves to be useful within the tests. 63ATF_TESTS_SH_SED_${_T}?= # empty 64ATF_TESTS_SH_SRC_${_T}?= ${_T}.sh 65${_T}: ${ATF_TESTS_SH_SRC_${_T}} 66 echo '#! /usr/libexec/atf-sh' > ${.TARGET}.tmp 67.if empty(ATF_TESTS_SH_SED_${_T}) 68 cat ${.ALLSRC:N*Makefile*} >>${.TARGET}.tmp 69.else 70 cat ${.ALLSRC:N*Makefile*} \ 71 | sed ${ATF_TESTS_SH_SED_${_T}} >>${.TARGET}.tmp 72.endif 73 chmod +x ${.TARGET}.tmp 74 mv ${.TARGET}.tmp ${.TARGET} 75.endfor 76.endif 77