tokens: fix parallel builds Currently, tokens.h and token_vars.h are each generated by a call to mktokens, which means mktokens is called twice. But mktokens generates both in a single run. This means that, with a fast-enough machine, the call to mktokens that generates tokens.h may finish before the call that generates token_vars.h. Then tokens.h is transiently incomplete (it can even be empty). By the time it is fully generated in the second run, a compile job that ends up using token.h may have already started, and the source file would include an in complete token.h and would be missing some token definitions. We fix that by making token.h a dependency of token_vars.h, with a dummy recipe (to force it not being PHONY). The actual recipe is for token_vars.h Signed-off-by: "Yann E. MORIN" diff -durN dash-0.5.8.orig/src/Makefile.am dash-0.5.8/src/Makefile.am --- dash-0.5.8.orig/src/Makefile.am 2014-09-28 10:19:32.000000000 +0200 +++ dash-0.5.8/src/Makefile.am 2017-03-07 09:53:28.579811603 +0100 @@ -45,7 +45,14 @@ mktokens mkbuiltins builtins.def.in mkinit.c \ mknodes.c nodetypes nodes.c.pat mksyntax.c mksignames.c -token.h token_vars.h: mktokens +# Both token.h and token_vars.h are generated by a single call +# to mktokens. However, token.h is the only file that is used +# as a dependency, so we must ensure token_vars.h is generated +# first. +token.h: token_vars.h + @: + +token_vars.h: mktokens sh $^ builtins.def: builtins.def.in $(top_builddir)/config.h