Dear tech@, given the following Makefile:
# REGRESS_SETUP vs REGRESS_SETUP_ONCE example setup: @echo setup setup_once: @echo setup_once test1: @echo test1 test2: @echo test2 cleanup: @echo cleanup REGRESS_SETUP = setup REGRESS_SETUP_ONCE = setup_once REGRESS_TARGETS+= test1 test2 REGRESS_CLEANUP = cleanup .include <bsd.regress.mk> I expected the following output: pbp$ make regress setup_once setup test1 setup test2 cleanup But instead I got: pbp$ make regress setup setup_once test1 setup test2 cleanup The diff below yields the expected result instead. Index: share/mk/bsd.regress.mk =================================================================== RCS file: /cvs/src/share/mk/bsd.regress.mk,v retrieving revision 1.21 diff -u -p -r1.21 bsd.regress.mk --- share/mk/bsd.regress.mk 17 Jun 2019 17:20:24 -0000 1.21 +++ share/mk/bsd.regress.mk 24 Sep 2020 19:48:11 -0000 @@ -67,16 +67,16 @@ REGRESS_SETUP?= REGRESS_SETUP_ONCE?= REGRESS_CLEANUP?= -.if !empty(REGRESS_SETUP) -${REGRESS_TARGETS}: ${REGRESS_SETUP} -.endif - .if !empty(REGRESS_SETUP_ONCE) CLEANFILES+=${REGRESS_SETUP_ONCE:S/^/stamp-/} ${REGRESS_TARGETS}: ${REGRESS_SETUP_ONCE:S/^/stamp-/} ${REGRESS_SETUP_ONCE:S/^/stamp-/}: .SILENT ${MAKE} -C ${.CURDIR} ${@:S/^stamp-//} date >$@ +.endif + +.if !empty(REGRESS_SETUP) +${REGRESS_TARGETS}: ${REGRESS_SETUP} .endif regress: .SILENT