]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Makefile: avoid multiple patterns when recipes generate one file
authorPaul Smith <psmith@gnu.org>
Sun, 27 Nov 2022 22:42:51 +0000 (17:42 -0500)
committerJunio C Hamano <gitster@pobox.com>
Mon, 28 Nov 2022 01:18:55 +0000 (10:18 +0900)
A GNU make pattern rule with multiple targets has always meant that
a single invocation of the recipe will build all the targets.
However in older versions of GNU make a recipe that did not really
build all the targets would be tolerated.

Starting with GNU make 4.4 this behavior is deprecated and pattern
rules are expected to generate files to match all the patterns.
If not all targets are created then GNU make will not consider any
target up to date and will re-run the recipe when it is run again.

Modify Documentation/Makefile to split the man page-creating pattern
rule into a separate pattern rule for each pattern.

Reported-by: Alexander Kanavin <alex.kanavin@gmail.com>
Signed-off-by: Paul Smith <psmith@gnu.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/Makefile

index d47acb2e255051fba8cabb6e5f5cb6b55a1b2311..21375cd3f25b7f7e97a72da37de9a26e2a100520 100644 (file)
@@ -351,8 +351,16 @@ $(OBSOLETE_HTML): %.html : %.txto $(ASCIIDOC_DEPS)
 manpage-base-url.xsl: manpage-base-url.xsl.in
        $(QUIET_GEN)sed "s|@@MAN_BASE_URL@@|$(MAN_BASE_URL)|" $< > $@
 
-%.1 %.5 %.7 : %.xml manpage-base-url.xsl $(wildcard manpage*.xsl)
-       $(QUIET_XMLTO)$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
+
+manpage-prereqs := manpage-base-url.xsl $(wildcard manpage*.xsl)
+manpage-cmd = $(QUIET_XMLTO)$(XMLTO) -m $(MANPAGE_XSL) $(XMLTO_EXTRA) man $<
+
+%.1 : %.xml $(manpage-prereqs)
+       $(manpage-cmd)
+%.5 : %.xml $(manpage-prereqs)
+       $(manpage-cmd)
+%.7 : %.xml $(manpage-prereqs)
+       $(manpage-cmd)
 
 %.xml : %.txt $(ASCIIDOC_DEPS)
        $(QUIET_ASCIIDOC)$(TXT_TO_XML) -d manpage -o $@ $<