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