On Fri, Dec 02, 2022 at 01:52:43PM +0100, Marc Espie wrote: > On Fri, Dec 02, 2022 at 12:59:02PM +0100, Theo Buehler wrote: > > I wanted to override some of the default run-regress-* targets by > > declaring them in regress Makefiles. Many tests already do that and > > it happens to work as expected. > > > > However, this relies on behavior in the BUGS section of make. In fact, > > espie informs me that gmake behaves the other way around and honors the > > last definition (gmake also warns about redefinitions). > > > > To avoid this, I'd like to have bsd.regress.mk define these default > > targets only if they aren't already defined. This matches most targets > > in the other *.mk files. > > > > I kept the .PHONY target outside of the .if block since most regress > > Makefiles don't use .PHONY at all although they often should. In fact, > > none of the run-regress-* targets I looked at were marked phony. > > > > Index: share/mk/bsd.regress.mk > > =================================================================== > > RCS file: /cvs/src/share/mk/bsd.regress.mk,v > > retrieving revision 1.24 > > diff -u -p -r1.24 bsd.regress.mk > > --- share/mk/bsd.regress.mk 31 Aug 2021 23:33:05 -0000 1.24 > > +++ share/mk/bsd.regress.mk 2 Dec 2022 11:54:43 -0000 > > @@ -32,8 +32,10 @@ _REGRESS_TMP?=/dev/null > > _REGRESS_OUT= | tee -a ${REGRESS_LOG} ${_REGRESS_TMP} 2>&1 > /dev/null > > > > .for p in ${PROG} ${PROGS} > > +. if !target(run-regress-$p) > > run-regress-$p: $p > > ./$p > > +. endif > > .PHONY: run-regress-$p > > .endfor > > > > > > > I don't think it's correct, I would separate the dependency on $p, > which we almost certainly want anyway, and only do the > . if !target dance for the actual commands.
Sorry, this is a bit too cryptic for me. What does 'separate the dependency on $p' mean? > I haven't used it all that much, but we stole > .if commands() from NetBSD back in 2012 precisely to allow this kind of stuff Do you mean this? Index: bsd.regress.mk =================================================================== RCS file: /cvs/src/share/mk/bsd.regress.mk,v retrieving revision 1.24 diff -u -p -r1.24 bsd.regress.mk --- bsd.regress.mk 31 Aug 2021 23:33:05 -0000 1.24 +++ bsd.regress.mk 2 Dec 2022 12:59:03 -0000 @@ -33,7 +33,9 @@ _REGRESS_OUT= | tee -a ${REGRESS_LOG} ${ .for p in ${PROG} ${PROGS} run-regress-$p: $p +. if !commands(run-regress-$p) ./$p +. endif .PHONY: run-regress-$p .endfor