Show
Ignore:
Timestamp:
06/09/10 20:47:59 (21 months ago)
Author:
westram
Message:
  • refactored script
  • explicitely excludes includes from /usr/include
    • they were not included before, but when i add -d __cplusplus to makedepend, they get added
    • updated depends (nothing changed)
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/refactor/SOURCE_TOOLS/fix_depends.pl

    r6617 r6788  
    1212# to avoid CVS/SVN changes caused by formatting. 
    1313 
     14use strict; 
     15use warnings; 
     16 
    1417my $arbhome_quoted = quotemeta($ENV{ARBHOME}); 
    1518my $arbhome = qr/$arbhome_quoted/; 
    16 my $makedependlineseen = 0; 
    17 my @depends; 
    18  
    19 if (0) { 
    20   foreach (<>) { 
    21     print "ALL: $_"; 
    22   } 
    23  
    24   die "done"; 
    25 } 
    2619 
    2720sub fix_name($) { 
     
    2922  $name =~ s/^$arbhome/\$\(ARBHOME\)/ig; # translate $ARBHOME 
    3023  $name =~ s/^.\///ig; # remove './' at start 
    31    
     24 
    3225  # ensure there's a / behind '$(ARBHOME)' 
    3326  if ($name =~ /\$\(ARBHOME\)[^\/]/) { 
     
    3831} 
    3932 
    40 # read input stream 
    41 foreach (<>) { 
    42   if ($makedependlineseen==0) { # simply forward lines before 'DO NOT DELETE' 
    43     print "$_"; 
    44     if (/^\# DO NOT DELETE/) { $makedependlineseen = 1; } 
    45   } 
    46   else { # put lines behind into '@depends' 
    47     chomp; 
    48     if (/^ *[\/\$a-z]/i) { 
    49       if (/^([^:]*): *(.*)$/) { 
    50         my $file       = $1; 
    51         my $depends_on = $2; 
    52         $file = fix_name($file); 
    53  
    54         while ($depends_on =~ / /) { # split lines with multiple dependencies 
    55           my $name = $`; 
    56           my $rest = $'; 
    57           $name = fix_name($name); 
    58           push @depends, "$file: $name"; 
    59           $depends_on = $rest; 
    60         } 
    61         $depends_on = fix_name($depends_on); 
    62         $_ = "$file: $depends_on"; 
    63       } 
    64       push @depends,$_; 
    65     } 
    66   } 
    67 } 
    68  
    69 print "\n# Do not add dependencies manually - use 'make depend' in \$ARBHOME\n"; 
    70 print "# For formatting issues see SOURCE_TOOLS/fix_depends.pl\n"; 
    71  
    72 # sort dependency lines 
    73  
    74 sub beautiful($$) { 
     33sub arb_dependency_order($$) { 
    7534  # sorts files alphabetically (ign. case) 
    7635  # sorts local dependencies first (for each file) 
     
    9958} 
    10059 
    101 @depends = sort beautiful @depends; 
     60sub add_dependency(\@$$) { 
     61  my ($depends_r,$file,$depends_on) = @_; 
     62  $depends_on = fix_name($depends_on); 
    10263 
    103 # print dependency lines 
     64  # skip outside dependencies 
     65  if (not $depends_on =~ m@/usr/include/@) { 
     66    push @$depends_r, "$file: $depends_on"; 
     67  } 
     68  else { 
     69    push @$depends_r, "# skipped '$depends_on'"; 
     70  } 
     71} 
    10472 
    105 my $prefix = ''; 
    106 foreach (@depends) { 
    107   my $tprefix = ''; 
    108   if (/^([^:]*):/) { $tprefix = $1; } 
    109   if ($tprefix ne $prefix) { 
    110     print "\n"; # empty line between different files 
    111     $prefix = $tprefix; 
     73sub read_input_stream(\@) { 
     74  my ($depends_r) = @_; 
     75  my $makedependlineseen = 0; 
     76 
     77  foreach (<>) { 
     78    if ($makedependlineseen==0) { # simply forward lines until 'DO NOT DELETE' 
     79      print "$_"; 
     80      if (/^\# DO NOT DELETE/) { $makedependlineseen = 1; } 
     81    } 
     82    else { # put lines behind into '@depends' 
     83      chomp; 
     84      if (/^ *[\/\$a-z]/i) { # skip empty lines 
     85        if (/^([^:]*): *(.*)$/) { 
     86          my $file       = $1; 
     87          my $depends_on = $2; 
     88          $file = fix_name($file); 
     89 
     90          while ($depends_on =~ / /) { # split lines with multiple dependencies 
     91            my $name = $`; 
     92            my $rest = $'; 
     93 
     94            add_dependency(@$depends_r,$file,$name); 
     95            $depends_on = $rest; 
     96          } 
     97          add_dependency(@$depends_r,$file,$depends_on); 
     98        } 
     99        else { 
     100          push @$depends_r,$_; # what lines go here? 
     101        } 
     102      } 
     103    } 
    112104  } 
    113   print "$_\n"; 
    114105} 
     106 
     107sub main() { 
     108  my @depends=(); 
     109  read_input_stream(@depends); 
     110 
     111  @depends = sort arb_dependency_order @depends;  
     112 
     113  print "\n# Do not add dependencies manually - use 'make depend' in \$ARBHOME\n"; 
     114  print "# For formatting issues see SOURCE_TOOLS/fix_depends.pl\n"; 
     115 
     116  # print dependency lines 
     117  my $prefix = ''; 
     118  foreach (@depends) { 
     119    my $tprefix = ''; 
     120    if (/^([^:]*):/) { $tprefix = $1; } 
     121    if ($tprefix ne $prefix) { 
     122      print "\n"; # empty line between different files 
     123      $prefix = $tprefix; 
     124    } 
     125    print "$_\n"; 
     126  } 
     127} 
     128main();