Annotation of src/share/mk/bsd.regress.mk, Revision 1.18
1.18 ! bluhm 1: # $OpenBSD: bsd.regress.mk,v 1.17 2018/12/03 22:30:04 bluhm Exp $
1.10 avsm 2: # Documented in bsd.regress.mk(5)
3:
1.1 art 4: # No man pages for regression tests.
5: NOMAN=
6:
7: # No installation.
8: install:
9:
1.10 avsm 10: # If REGRESS_TARGETS is defined and PROG is not defined, set NOPROG
11: .if defined(REGRESS_TARGETS) && !defined(PROG)
1.2 art 12: NOPROG=
1.1 art 13: .endif
14:
15: .include <bsd.prog.mk>
1.7 art 16:
17: .MAIN: all
18: all: regress
1.1 art 19:
1.10 avsm 20: # XXX - Need full path to REGRESS_LOG, otherwise there will be much pain.
21: REGRESS_LOG?=/dev/null
22: REGRESS_SKIP_TARGETS?=
23: REGRESS_SKIP_SLOW?=no
1.11 halex 24: REGRESS_FAIL_EARLY?=no
1.10 avsm 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
1.1 art 29:
30: .if defined(PROG) && !empty(PROG)
1.3 art 31: run-regress-${PROG}: ${PROG}
1.1 art 32: ./${PROG}
33: .endif
34:
1.12 kettenis 35: .if defined(PROG) && !defined(REGRESS_TARGETS)
1.10 avsm 36: REGRESS_TARGETS=run-regress-${PROG}
37: . if defined(REGRESS_SKIP)
38: REGRESS_SKIP_TARGETS=run-regress-${PROG}
1.1 art 39: . endif
40: .endif
41:
1.18 ! bluhm 42: .if defined(REGRESS_SLOW_TARGETS) && ${REGRESS_SKIP_SLOW:L} != no
1.10 avsm 43: REGRESS_SKIP_TARGETS+=${REGRESS_SLOW_TARGETS}
1.9 marc 44: .endif
45:
1.18 ! bluhm 46: .if ${REGRESS_FAIL_EARLY:L} != no
! 47: _REGRESS_IGNORE_FAIL=
1.11 halex 48: .else
1.18 ! bluhm 49: _REGRESS_IGNORE_FAIL= -
1.11 halex 50: .endif
51:
1.10 avsm 52: .if defined(REGRESS_ROOT_TARGETS)
53: _ROOTUSER!=id -g
1.9 marc 54: SUDO?=
1.10 avsm 55: . if (${_ROOTUSER} != 0) && empty(SUDO)
56: REGRESS_SKIP_TARGETS+=${REGRESS_ROOT_TARGETS}
57: . endif
1.4 art 58: .endif
59:
1.10 avsm 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
1.15 bluhm 68: .endif
69:
70: REGRESS_SETUP?=
1.16 bluhm 71: REGRESS_SETUP_ONCE?=
1.15 bluhm 72: REGRESS_CLEANUP?=
1.16 bluhm 73:
1.15 bluhm 74: .if !empty(REGRESS_SETUP)
75: ${REGRESS_TARGETS}: ${REGRESS_SETUP}
76: .endif
1.1 art 77:
1.16 bluhm 78: .if !empty(REGRESS_SETUP_ONCE)
79: CLEANFILES+=${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 >$@
84: REGRESS_CLEANUP+=${REGRESS_SETUP_ONCE:S/^/cleanup-stamp-/}
85: ${REGRESS_SETUP_ONCE:S/^/cleanup-stamp-/}: .SILENT
86: rm -f ${@:S/^cleanup-//}
87: .endif
88:
1.10 avsm 89: regress: .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
1.16 bluhm 96: .endif
97: .if !empty(REGRESS_SETUP_ONCE)
98: rm -f ${REGRESS_SETUP_ONCE:S/^/stamp-/}
1.10 avsm 99: .endif
1.15 bluhm 100: .for RT in ${REGRESS_TARGETS} ${REGRESS_CLEANUP}
1.10 avsm 101: . if ${REGRESS_SKIP_TARGETS:M${RT}}
102: @echo -n "SKIP " ${_REGRESS_OUT}
1.17 bluhm 103: @echo SKIPPED
1.1 art 104: . else
1.18 ! bluhm 105: ${_REGRESS_IGNORE_FAIL} if ${MAKE} -C ${.CURDIR} ${RT}; then \
1.10 avsm 106: echo -n "SUCCESS " ${_REGRESS_OUT} ; \
1.3 art 107: else \
1.10 avsm 108: echo -n "FAIL " ${_REGRESS_OUT} ; \
1.1 art 109: echo FAILED ; \
1.11 halex 110: false; \
1.1 art 111: fi
112: . endif
1.10 avsm 113: @echo ${_REGRESS_NAME}/${RT:S/^run-regress-//} ${_REGRESS_OUT}
1.1 art 114: .endfor
115:
116: .PHONY: regress