[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [platform-testers] GNU make 4.3.91 release candidate available
From: |
Frank Heckenbach |
Subject: |
Re: [platform-testers] GNU make 4.3.91 release candidate available |
Date: |
Wed, 19 Oct 2022 06:31:56 +0200 |
> * WARNING: Future backward-incompatibility!
> In the NEXT release of GNU Make, pattern rules will implement the same
> behavior change for multiple targets as explicit grouped targets, below: if
> any target of the rule is needed by the build, the recipe will be invoked if
> any target of the rule is missing or out of date. During testing some
> makefiles were found to contain pattern rules that do not build all targets;
> this can cause issues so we are delaying this change for one release cycle
> to allow these makefiles to be updated. GNU Make shows a warning if it
> detects this situation: "pattern recipe did not update peer target".
This warning doesn't seem to be given for indirect targets as e.g.
would be the case with bison and cc: %.y -> %.[ch] -> %.o which was
the case that caused me problems with 4.3.90. I've since fixed my
Makefile, so no actual problem to me, but I just did a recheck and
expected to see this warning with my old Makefile and didn't get it.
% cat Makefile
%.c %.h &: %.y; touch "$@"
%.o: %.c; touch "$@"
foo.y: ; touch "$@"
clean: ; @rm -f foo.y foo.c foo.o
% make clean; make -s foo.c
Makefile:1: warning: pattern recipe did not update peer target 'foo.h'.
% make clean; make -s foo.o
%