| 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" <yann.morin.1998@free.fr> |
| |
| 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 |