cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

build-docdep.perl (968B)


      1#!/usr/bin/perl
      2
      3my %include = ();
      4my %included = ();
      5
      6for 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???
     21my $changed = 1;
     22while ($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
     41while (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}