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 overridden by the Makefile) and are not required to provide a 20# manpage. 21ATF_TESTS_C?= 22ATF_TESTS_CXX?= 23ATF_TESTS_SH?= 24ATF_TESTS_KSH93?= 25 26.if !empty(ATF_TESTS_C) 27PROGS+= ${ATF_TESTS_C} 28_TESTS+= ${ATF_TESTS_C} 29.for _T in ${ATF_TESTS_C} 30BINDIR.${_T}= ${TESTSDIR} 31MAN.${_T}?= # empty 32SRCS.${_T}?= ${_T}.c 33DPADD.${_T}+= ${LIBATF_C} 34.if empty(LDFLAGS:M-static) && empty(LDFLAGS.${_T}:M-static) 35LDADD.${_T}+= ${LDADD_atf_c} 36.else 37LDADD.${_T}+= ${LIBATF_C} 38.endif 39TEST_INTERFACE.${_T}= atf 40.endfor 41.endif 42 43.if !empty(ATF_TESTS_CXX) 44PROGS_CXX+= ${ATF_TESTS_CXX} 45_TESTS+= ${ATF_TESTS_CXX} 46.for _T in ${ATF_TESTS_CXX} 47BINDIR.${_T}= ${TESTSDIR} 48MAN.${_T}?= # empty 49SRCS.${_T}?= ${_T}${CXX_SUFFIX:U.cc} 50DPADD.${_T}+= ${LIBATF_CXX} ${LIBATF_C} 51.if empty(LDFLAGS:M-static) && empty(LDFLAGS.${_T}:M-static) 52LDADD.${_T}+= ${LDADD_atf_cxx} ${LDADD_atf_c} 53.else 54LDADD.${_T}+= ${LIBATF_CXX} ${LIBATF_C} 55.endif 56TEST_INTERFACE.${_T}= atf 57.endfor 58.endif 59 60.if !empty(ATF_TESTS_SH) 61SCRIPTS+= ${ATF_TESTS_SH} 62_TESTS+= ${ATF_TESTS_SH} 63.for _T in ${ATF_TESTS_SH} 64SCRIPTSDIR_${_T}= ${TESTSDIR} 65TEST_INTERFACE.${_T}= atf 66CLEANFILES+= ${_T} ${_T}.tmp 67# TODO(jmmv): It seems to me that this SED and SRC functionality should 68# exist in bsd.prog.mk along the support for SCRIPTS. Move it there if 69# this proves to be useful within the tests. 70ATF_TESTS_SH_SED_${_T}?= # empty 71ATF_TESTS_SH_SRC_${_T}?= ${_T}.sh 72${_T}: ${ATF_TESTS_SH_SRC_${_T}} 73 echo '#! /usr/libexec/atf-sh' > ${.TARGET}.tmp 74.if empty(ATF_TESTS_SH_SED_${_T}) 75 cat ${.ALLSRC:N*Makefile*} >>${.TARGET}.tmp 76.else 77 cat ${.ALLSRC:N*Makefile*} \ 78 | sed ${ATF_TESTS_SH_SED_${_T}} >>${.TARGET}.tmp 79.endif 80 chmod +x ${.TARGET}.tmp 81 mv ${.TARGET}.tmp ${.TARGET} 82.endfor 83.endif 84 85.if !empty(ATF_TESTS_KSH93) 86SCRIPTS+= ${ATF_TESTS_KSH93} 87_TESTS+= ${ATF_TESTS_KSH93} 88.for _T in ${ATF_TESTS_KSH93} 89SCRIPTSDIR_${_T}= ${TESTSDIR} 90TEST_INTERFACE.${_T}= atf 91TEST_METADATA.${_T}+= required_programs="ksh93" 92CLEANFILES+= ${_T} ${_T}.tmp 93# TODO(jmmv): It seems to me that this SED and SRC functionality should 94# exist in bsd.prog.mk along the support for SCRIPTS. Move it there if 95# this proves to be useful within the tests. 96ATF_TESTS_KSH93_SED_${_T}?= # empty 97ATF_TESTS_KSH93_SRC_${_T}?= ${_T}.sh 98${_T}: ${ATF_TESTS_KSH93_SRC_${_T}} 99 echo '#! /usr/libexec/atf-sh -s/usr/local/bin/ksh93' > ${.TARGET}.tmp 100.if empty(ATF_TESTS_KSH93_SED_${_T}) 101 cat ${.ALLSRC:N*Makefile*} >>${.TARGET}.tmp 102.else 103 cat ${.ALLSRC:N*Makefile*} \ 104 | sed ${ATF_TESTS_KSH93_SED_${_T}} >>${.TARGET}.tmp 105.endif 106 chmod +x ${.TARGET}.tmp 107 mv ${.TARGET}.tmp ${.TARGET} 108.endfor 109.endif 110