Commits

Junio C Hamano  committed a5ae8e6

Fix documentation dependency generation.

Documentation/Makefile spent a lot of time to generate include
dependencies, which was quite noticeable especially during "make clean".

Rewrite it to generate just a single dependency file.

Signed-off-by: Junio C Hamano <junkio@cox.net>

  • Participants
  • Parent commits 79f6ac7

Comments (0)

Files changed (3)

File Documentation/.gitignore

 *.1
 *.7
 howto-index.txt
+doc.dep

File Documentation/Makefile

 #
 # Determine "include::" file references in asciidoc files.
 #
-TEXTFILES = $(wildcard *.txt)
-DEPFILES = $(TEXTFILES:%.txt=%.dep)
-
-%.dep : %.txt
-	@rm -f $@
-	@$(foreach dep, $(shell grep include:: $< | sed -e 's/include::/ /' -e 's/\[\]//'), \
-		echo $(<:%.txt=%.html) $(<:%.txt=%.1) : $(dep) >> $@; )
+TEXTFILES = $(wildcard git-*.txt)
+doc.dep : $(TEXTFILES) build-docdep.perl
+	rm -f $@+ $@
+	perl ./build-docdep.perl >$@+
+	mv $@+ $@
 
--include $(DEPFILES)
+-include doc.dep
 
 git.7: ../README
 
 
 clean:
-	rm -f *.xml *.html *.1 *.7 howto-index.txt howto/*.html *.dep
+	rm -f *.xml *.html *.1 *.7 howto-index.txt howto/*.html doc.dep
 
 %.html : %.txt
 	asciidoc -b xhtml11 -d manpage -f asciidoc.conf $<

File Documentation/build-docdep.perl

+#!/usr/bin/perl
+
+my %include = ();
+
+for my $text (<git-*.txt>) {
+    open I, '<', $text || die "cannot read: $text";
+    (my $base = $text) =~ s/\.txt$//;
+    while (<I>) {
+	if (/^include::/) {
+	    chomp;
+	    s/^include::\s*//;
+	    s/\[\]//;
+	    $include{$base}{$_} = 1;
+	}
+    }
+    close I;
+}
+
+# Do we care about chained includes???
+
+while (my ($base, $included) = each %include) {
+    my ($suffix) = '1';
+    if ($base eq 'git') {
+	$suffix = '7'; # yuck...
+    }
+    print "$base.html $base.$suffix : ", join(" ", keys %$included), "\n";
+}
+