bsd.regress.mk revision 1.18
1# $OpenBSD: bsd.regress.mk,v 1.18 2019/05/14 16:43:26 bluhm 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_REGRESS_NAME=${.CURDIR:S/${BSDSRCDIR}\/regress\///} 27_REGRESS_TMP?=/dev/null 28_REGRESS_OUT= | tee -a ${REGRESS_LOG} ${_REGRESS_TMP} 2>&1 > /dev/null 29 30.if defined(PROG) && !empty(PROG) 31run-regress-${PROG}: ${PROG} 32 ./${PROG} 33.endif 34 35.if defined(PROG) && !defined(REGRESS_TARGETS) 36REGRESS_TARGETS=run-regress-${PROG} 37. if defined(REGRESS_SKIP) 38REGRESS_SKIP_TARGETS=run-regress-${PROG} 39. endif 40.endif 41 42.if defined(REGRESS_SLOW_TARGETS) && ${REGRESS_SKIP_SLOW:L} != no 43REGRESS_SKIP_TARGETS+=${REGRESS_SLOW_TARGETS} 44.endif 45 46.if ${REGRESS_FAIL_EARLY:L} != no 47_REGRESS_IGNORE_FAIL= 48.else 49_REGRESS_IGNORE_FAIL= - 50.endif 51 52.if defined(REGRESS_ROOT_TARGETS) 53_ROOTUSER!=id -g 54SUDO?= 55. if (${_ROOTUSER} != 0) && empty(SUDO) 56REGRESS_SKIP_TARGETS+=${REGRESS_ROOT_TARGETS} 57. endif 58.endif 59 60.if defined(ERRORS) 61.BEGIN: 62. for _m in ${ERRORS} 63 @echo 1>&2 ${_m} 64. endfor 65. if !empty(ERRORS:M"Fatal\:*") || !empty(ERRORS:M'Fatal\:*') 66 @exit 1 67. endif 68.endif 69 70REGRESS_SETUP?= 71REGRESS_SETUP_ONCE?= 72REGRESS_CLEANUP?= 73 74.if !empty(REGRESS_SETUP) 75${REGRESS_TARGETS}: ${REGRESS_SETUP} 76.endif 77 78.if !empty(REGRESS_SETUP_ONCE) 79CLEANFILES+=${REGRESS_SETUP_ONCE:S/^/stamp-/} 80${REGRESS_TARGETS}: ${REGRESS_SETUP_ONCE:S/^/stamp-/} 81${REGRESS_SETUP_ONCE:S/^/stamp-/}: .SILENT 82 ${MAKE} -C ${.CURDIR} ${@:S/^stamp-//} 83 date >$@ 84REGRESS_CLEANUP+=${REGRESS_SETUP_ONCE:S/^/cleanup-stamp-/} 85${REGRESS_SETUP_ONCE:S/^/cleanup-stamp-/}: .SILENT 86 rm -f ${@:S/^cleanup-//} 87.endif 88 89regress: .SILENT 90.if ! ${REGRESS_LOG:M/*} 91 echo ========================================================= 92 echo REGRESS_LOG must contain an absolute path to the log-file. 93 echo It currently points to: ${REGRESS_LOG} 94 echo ========================================================= 95 exit 1 96.endif 97.if !empty(REGRESS_SETUP_ONCE) 98 rm -f ${REGRESS_SETUP_ONCE:S/^/stamp-/} 99.endif 100.for RT in ${REGRESS_TARGETS} ${REGRESS_CLEANUP} 101. if ${REGRESS_SKIP_TARGETS:M${RT}} 102 @echo -n "SKIP " ${_REGRESS_OUT} 103 @echo SKIPPED 104. else 105 ${_REGRESS_IGNORE_FAIL} if ${MAKE} -C ${.CURDIR} ${RT}; then \ 106 echo -n "SUCCESS " ${_REGRESS_OUT} ; \ 107 else \ 108 echo -n "FAIL " ${_REGRESS_OUT} ; \ 109 echo FAILED ; \ 110 false; \ 111 fi 112. endif 113 @echo ${_REGRESS_NAME}/${RT:S/^run-regress-//} ${_REGRESS_OUT} 114.endfor 115 116.PHONY: regress 117