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