]> Savannah Git Hosting - gnulib.git/commitdiff
parse-datetime: Make the build rule work with parallel 'make'.
authorBruno Haible <bruno@clisp.org>
Sun, 13 Sep 2020 20:03:16 +0000 (22:03 +0200)
committerBruno Haible <bruno@clisp.org>
Sun, 13 Sep 2020 20:03:16 +0000 (22:03 +0200)
Reported by Daiki Ueno <ueno@gnu.org> in
<https://lists.gnu.org/archive/html/bug-gnulib/2020-09/msg00036.html>.

* modules/parse-datetime (Makefile.am): Use a phony target and the
general idiom for rules that produce multiple files.

ChangeLog
modules/parse-datetime

index 62e1f17d326555d6aafe85b57044ce227b206477..a5c14c45e2f06e7b4a4457c68cea3b958188914a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2020-09-13  Bruno Haible  <bruno@clisp.org>
+
+       parse-datetime: Make the build rule work with parallel 'make'.
+       Reported by Daiki Ueno <ueno@gnu.org> in
+       <https://lists.gnu.org/archive/html/bug-gnulib/2020-09/msg00036.html>.
+       * modules/parse-datetime (Makefile.am): Use a phony target and the
+       general idiom for rules that produce multiple files.
+
 2020-09-13  Ben Pfaff  <blp@cs.stanford.edu>
 
        getpass: Check for nonnull prompt argument while avoiding warnings.
index 14675194eb093f05e4ba41cce4aee414c451c142..a16b90f7d559982aca658baff4cf5c2ebb1700d3 100644 (file)
@@ -43,7 +43,10 @@ Makefile.am:
 # Additionally, here we assume GNU Bison and therefore don't need the ylwrap
 # script.
 # Therefore we override this rule.
-parse-datetime.c: parse-datetime.y
+# Since this is a rule that produces multiple files, we apply the idiom from
+# <https://lists.gnu.org/archive/html/bug-make/2020-09/msg00008.html>, so that
+# it works also in parallel 'make'.
+generate-parse-datetime:
        $(AM_V_YACC)$(PARSE_DATETIME_BISON) -d $(YFLAGS) $(AM_YFLAGS) $(srcdir)/parse-datetime.y \
        && test ':' = '$(PARSE_DATETIME_BISON)' || { \
          sed -e 's|".*/parse-datetime\.y"|"parse-datetime.y"|' \
@@ -57,6 +60,13 @@ parse-datetime.c: parse-datetime.y
          && mv parse-datetime.c-tmp $(srcdir)/parse-datetime.c \
          && mv parse-datetime-gen.h-tmp $(srcdir)/parse-datetime-gen.h; \
        }
+.PHONY: generate-parse-datetime
+# The above rule will generate files with time stamp order
+# parse-datetime.y <= parse-datetime.c <= parse-datetime-gen.h.
+parse-datetime.c: parse-datetime.y
+       @{ test -f $(srcdir)/parse-datetime.c && test ! $(srcdir)/parse-datetime.c -ot $(srcdir)/parse-datetime.y; } || $(MAKE) generate-parse-datetime
+parse-datetime-gen.h: parse-datetime.c
+       @{ test -f $(srcdir)/parse-datetime-gen.h && test ! $(srcdir)/parse-datetime-gen.h -ot $(srcdir)/parse-datetime.c; } || $(MAKE) generate-parse-datetime
 lib_SOURCES += parse-datetime.y
 BUILT_SOURCES += parse-datetime.c parse-datetime-gen.h
 MOSTLYCLEANFILES += parse-datetime.tab.c parse-datetime.tab.h parse-datetime.c-tmp parse-datetime-gen.h-tmp