From a5ae8e64cfa09cea57cce832c8371818711d94c2 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 7 Nov 2005 18:21:51 -0800 Subject: [PATCH] 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 --- Documentation/.gitignore | 1 + Documentation/Makefile | 16 +++++++--------- Documentation/build-docdep.perl | 28 ++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 9 deletions(-) create mode 100755 Documentation/build-docdep.perl diff --git a/Documentation/.gitignore b/Documentation/.gitignore index dad52b80d..9fef49087 100644 --- a/Documentation/.gitignore +++ b/Documentation/.gitignore @@ -3,3 +3,4 @@ *.1 *.7 howto-index.txt +doc.dep diff --git a/Documentation/Makefile b/Documentation/Makefile index bb9533ff0..f45a06246 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -53,21 +53,19 @@ install: man # # 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 $< diff --git a/Documentation/build-docdep.perl b/Documentation/build-docdep.perl new file mode 100755 index 000000000..dedef765a --- /dev/null +++ b/Documentation/build-docdep.perl @@ -0,0 +1,28 @@ +#!/usr/bin/perl + +my %include = (); + +for my $text () { + open I, '<', $text || die "cannot read: $text"; + (my $base = $text) =~ s/\.txt$//; + while () { + 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"; +} + -- 2.30.2