Merge branch 'js/t6300-hardcode-main'
[git] / Documentation / build-docdep.perl
1 #!/usr/bin/perl
2
3 my %include = ();
4 my %included = ();
5
6 for my $text (<*.txt>) {
7     open I, '<', $text || die "cannot read: $text";
8     while (<I>) {
9         if (/^include::/) {
10             chomp;
11             s/^include::\s*//;
12             s/\[\]//;
13             $include{$text}{$_} = 1;
14             $included{$_} = 1;
15         }
16     }
17     close I;
18 }
19
20 # Do we care about chained includes???
21 my $changed = 1;
22 while ($changed) {
23     $changed = 0;
24     while (my ($text, $included) = each %include) {
25         for my $i (keys %$included) {
26             # $text has include::$i; if $i includes $j
27             # $text indirectly includes $j.
28             if (exists $include{$i}) {
29                 for my $j (keys %{$include{$i}}) {
30                     if (!exists $include{$text}{$j}) {
31                         $include{$text}{$j} = 1;
32                         $included{$j} = 1;
33                         $changed = 1;
34                     }
35                 }
36             }
37         }
38     }
39 }
40
41 while (my ($text, $included) = each %include) {
42     if (! exists $included{$text} &&
43         (my $base = $text) =~ s/\.txt$//) {
44         print "$base.html $base.xml : ", join(" ", keys %$included), "\n";
45     }
46 }