summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Trofimovich <slyich@gmail.com>2022-09-25 11:42:03 +0100
committerDavid Gibson <david@gibson.dropbear.id.au>2022-09-26 15:22:05 +1000
commit98a07006c48dc0bc3f42b3b3ce75b7f03e87e724 (patch)
tree1f0f97576b17fcd6a50271b9618e2fdc43f24174
parenta036cc7b0c10474a4cf1cdbe0e232e637e1f2edd (diff)
downloaddevice-tree-compiler-98a07006c48dc0bc3f42b3b3ce75b7f03e87e724.tar.gz
Makefile: fix infinite recursion by dropping non-existent `%.output`
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@gmail.com> Message-Id: <20220925104203.648449-2-slyich@gmail.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
-rw-r--r--Makefile2
1 files changed, 1 insertions, 1 deletions
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 $<