1# $FreeBSD$ 2# 3# Logic to build and install TAP-compliant test programs. 4# 5# This is provided to support existing tests in the FreeBSD source tree 6# (particularly those coming from tools/regression/) that comply with the 7# Test Anything Protocol. It should not be used for new tests. 8 9.include <bsd.init.mk> 10 11# List of C, C++ and shell test programs to build. 12# 13# Programs listed here are built according to the semantics of bsd.prog.mk for 14# PROGS, PROGS_CXX and SCRIPTS, respectively. 15# 16# Test programs registered in this manner are set to be installed into TESTSDIR 17# (which should be overriden by the Makefile) and are not required to provide a 18# manpage. 19TAP_TESTS_C?= 20TAP_TESTS_CXX?= 21TAP_TESTS_PERL?= 22TAP_TESTS_SH?= 23 24# Perl interpreter to use for test programs written in this language. 25TAP_PERL_INTERPRETER?= /usr/local/bin/perl 26 27.if !empty(TAP_TESTS_C) 28PROGS+= ${TAP_TESTS_C} 29_TESTS+= ${TAP_TESTS_C} 30.for _T in ${TAP_TESTS_C} 31BINDIR.${_T}= ${TESTSDIR} 32MAN.${_T}?= # empty 33SRCS.${_T}?= ${_T}.c 34TEST_INTERFACE.${_T}= tap 35.endfor 36.endif 37 38.if !empty(TAP_TESTS_CXX) 39PROGS_CXX+= ${TAP_TESTS_CXX} 40_TESTS+= ${TAP_TESTS_CXX} 41.for _T in ${TAP_TESTS_CXX} 42BINDIR.${_T}= ${TESTSDIR} 43MAN.${_T}?= # empty 44SRCS.${_T}?= ${_T}.cc 45TEST_INTERFACE.${_T}= tap 46.endfor 47.endif 48 49.if !empty(TAP_TESTS_PERL) 50SCRIPTS+= ${TAP_TESTS_PERL} 51_TESTS+= ${TAP_TESTS_PERL} 52.for _T in ${TAP_TESTS_PERL} 53SCRIPTSDIR_${_T}= ${TESTSDIR} 54TEST_INTERFACE.${_T}= tap 55TEST_METADATA.${_T}+= required_programs="${TAP_PERL_INTERPRETER}" 56CLEANFILES+= ${_T} ${_T}.tmp 57# TODO(jmmv): It seems to me that this SED and SRC functionality should 58# exist in bsd.prog.mk along the support for SCRIPTS. Move it there if 59# this proves to be useful within the tests. 60TAP_TESTS_PERL_SED_${_T}?= # empty 61TAP_TESTS_PERL_SRC_${_T}?= ${_T}.pl 62${_T}: ${TAP_TESTS_PERL_SRC_${_T}} 63 { \ 64 echo '#! ${TAP_PERL_INTERPRETER}'; \ 65 cat ${.ALLSRC} | sed ${TAP_TESTS_PERL_SED_${_T}}; \ 66 } >${.TARGET}.tmp 67 chmod +x ${.TARGET}.tmp 68 mv ${.TARGET}.tmp ${.TARGET} 69.endfor 70.endif 71 72.if !empty(TAP_TESTS_SH) 73SCRIPTS+= ${TAP_TESTS_SH} 74_TESTS+= ${TAP_TESTS_SH} 75.for _T in ${TAP_TESTS_SH} 76SCRIPTSDIR_${_T}= ${TESTSDIR} 77TEST_INTERFACE.${_T}= tap 78CLEANFILES+= ${_T} ${_T}.tmp 79# TODO(jmmv): It seems to me that this SED and SRC functionality should 80# exist in bsd.prog.mk along the support for SCRIPTS. Move it there if 81# this proves to be useful within the tests. 82TAP_TESTS_SH_SED_${_T}?= # empty 83TAP_TESTS_SH_SRC_${_T}?= ${_T}.sh 84${_T}: ${TAP_TESTS_SH_SRC_${_T}} 85 cat ${.ALLSRC} | sed ${TAP_TESTS_SH_SED_${_T}} >${.TARGET}.tmp 86 chmod +x ${.TARGET}.tmp 87 mv ${.TARGET}.tmp ${.TARGET} 88.endfor 89.endif 90 91.include <bsd.test.mk> 92