bsd.regress.mk revision 1.19
1# $OpenBSD: bsd.regress.mk,v 1.19 2019/06/11 18:14:23 espie Exp $ 2# Documented in bsd.regress.mk(5) 3 4# No man pages for regression tests. 5NOMAN= 6 7# No installation. 8install: 9 10# If REGRESS_TARGETS is defined and PROG is not defined, set NOPROG 11.if defined(REGRESS_TARGETS) && !defined(PROG) 12NOPROG= 13.endif 14 15.include <bsd.prog.mk> 16 17.MAIN: all 18all: regress 19 20# XXX - Need full path to REGRESS_LOG, otherwise there will be much pain. 21REGRESS_LOG?=/dev/null 22REGRESS_SKIP_TARGETS?= 23REGRESS_SKIP_SLOW?=no 24REGRESS_FAIL_EARLY?=no 25 26.if ! ${REGRESS_LOG:M/*} 27ERRORS += "Fatal: REGRESS_LOG=${REGRESS_LOG} is not an absolute path" 28.endif 29 30_REGRESS_NAME=${.CURDIR:S/${BSDSRCDIR}\/regress\///} 31_REGRESS_TMP?=/dev/null 32_REGRESS_OUT= | tee -a ${REGRESS_LOG} ${_REGRESS_TMP} 2>&1 > /dev/null 33 34.if defined(PROG) && !empty(PROG) 35run-regress-${PROG}: ${PROG} 36 ./${PROG} 37.PHONY: run-regress-${PROG} 38.endif 39 40.if defined(PROG) && !defined(REGRESS_TARGETS) 41REGRESS_TARGETS=run-regress-${PROG} 42. if defined(REGRESS_SKIP) 43REGRESS_SKIP_TARGETS=run-regress-${PROG} 44. endif 45.endif 46 47.if defined(REGRESS_SLOW_TARGETS) && ${REGRESS_SKIP_SLOW:L} != no 48REGRESS_SKIP_TARGETS+=${REGRESS_SLOW_TARGETS} 49.endif 50 51.if ${REGRESS_FAIL_EARLY:L} != no 52_REGRESS_FAILED = false 53.else 54_REGRESS_FAILED = true 55.endif 56 57.if defined(REGRESS_ROOT_TARGETS) 58_ROOTUSER!=id -g 59SUDO?= 60. if (${_ROOTUSER} != 0) && empty(SUDO) 61REGRESS_SKIP_TARGETS+=${REGRESS_ROOT_TARGETS} 62. endif 63.endif 64 65REGRESS_SETUP?= 66REGRESS_SETUP_ONCE?= 67REGRESS_CLEANUP?= 68 69.if !empty(REGRESS_SETUP) 70${REGRESS_TARGETS}: ${REGRESS_SETUP} 71.endif 72 73.if !empty(REGRESS_SETUP_ONCE) 74CLEANFILES+=${REGRESS_SETUP_ONCE:S/^/stamp-/} 75${REGRESS_TARGETS}: ${REGRESS_SETUP_ONCE:S/^/stamp-/} 76${REGRESS_SETUP_ONCE:S/^/stamp-/}: .SILENT 77 ${MAKE} -C ${.CURDIR} ${@:S/^stamp-//} 78 date >$@ 79REGRESS_CLEANUP+=${REGRESS_SETUP_ONCE:S/^/cleanup-stamp-/} 80${REGRESS_SETUP_ONCE:S/^/cleanup-stamp-/}: .SILENT 81 rm -f ${@:S/^cleanup-//} 82.endif 83 84regress: .SILENT 85.if !empty(REGRESS_SETUP_ONCE) 86 rm -f ${REGRESS_SETUP_ONCE:S/^/stamp-/} 87.endif 88.for RT in ${REGRESS_TARGETS} ${REGRESS_CLEANUP} 89. if ${REGRESS_SKIP_TARGETS:M${RT}} 90 echo -n "SKIP " ${_REGRESS_OUT} 91 echo SKIPPED 92. else 93 if ${MAKE} -C ${.CURDIR} ${RT}; then \ 94 echo -n "SUCCESS " ${_REGRESS_OUT} ; \ 95 else \ 96 echo -n "FAIL " ${_REGRESS_OUT} ; \ 97 echo FAILED ; \ 98 ${_REGRESS_FAILED}; \ 99 fi 100. endif 101 echo ${_REGRESS_NAME}/${RT:S/^run-regress-//} ${_REGRESS_OUT} 102.endfor 103 104.if defined(ERRORS) 105.BEGIN: 106. for _m in ${ERRORS} 107 @echo 1>&2 ${_m} 108. endfor 109. if !empty(ERRORS:M"Fatal\:*") || !empty(ERRORS:M'Fatal\:*') 110 @exit 1 111. endif 112.endif 113 114.PHONY: regress 115