> * 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 %