On Sun, Sep 25, 2022 at 11:42:03AM +0100, Sergei Trofimovich wrote: > Without the change GNU `make-4.4` falls into infinite recursion of trying > to generate %.output files (bison is not passed flags to generate debug > output). > > This happens on GNU `make-4.4` only after GNU make change to more eagerly > rebuild all target outputs in multiple targets: > https://savannah.gnu.org/bugs/index.php?63098 > > The recursion here is the following: > > - Makefile depends on *.d files > - *.d files depend on *.c files > - *.c files are generated by bison > - bison is triggered whenever some of it's multiple targets are missing > > In our case `%.output` is always missing and bison is always reran. > *.d files are always regenerated on `make` run. And make is always > restarted as *.d files are always regenerated. > > The fix removes infeasible `%.output`. > > Signed-off-by: Sergei Trofimovich <slyich@xxxxxxxxx> Huh, interesting. That .output target seems to have been there since the dawn of time, really can't remember why it was included in the first place. Anyway, both patches applied, thanks. > --- > Makefile | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/Makefile b/Makefile > index e7a0dcb..d4e7551 100644 > --- a/Makefile > +++ b/Makefile > @@ -384,7 +384,7 @@ clean: libfdt_clean pylibfdt_clean tests_clean > @$(VECHO) LEX $@ > $(LEX) -o$@ $< > > -%.tab.c %.tab.h %.output: %.y > +%.tab.c %.tab.h: %.y > @$(VECHO) BISON $@ > $(BISON) -b $(basename $(basename $@)) -d $< > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
Attachment:
signature.asc
Description: PGP signature