Show
Ignore:
Timestamp:
09/09/10 19:58:32 (21 months ago)
Author:
westram
Message:
  • merged r6753, r6788 + r6789 from refactor:
    • multiple attributes get promoted to headers
    • make depends scans __cplusplus sections
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/SOURCE_TOOLS/fix_depends.pl

    r6617 r6812  
    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} 
    10469 
    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; 
     70sub read_input_stream(\@) { 
     71  my ($depends_r) = @_; 
     72  my $makedependlineseen = 0; 
     73 
     74  foreach (<>) { 
     75    if ($makedependlineseen==0) { # simply forward lines until 'DO NOT DELETE' 
     76      print "$_"; 
     77      if (/^\# DO NOT DELETE/) { $makedependlineseen = 1; } 
     78    } 
     79    else { # put lines behind into '@depends' 
     80      chomp; 
     81      if (/^ *[\/\$a-z]/i) { # skip empty lines 
     82        if (/^([^:]*): *(.*)$/) { 
     83          my $file       = $1; 
     84          my $depends_on = $2; 
     85          $file = fix_name($file); 
     86 
     87          while ($depends_on =~ / /) { # split lines with multiple dependencies 
     88            my $name = $`; 
     89            my $rest = $'; 
     90 
     91            add_dependency(@$depends_r,$file,$name); 
     92            $depends_on = $rest; 
     93          } 
     94          add_dependency(@$depends_r,$file,$depends_on); 
     95        } 
     96        else { 
     97          push @$depends_r,$_; # what lines go here? 
     98        } 
     99      } 
     100    } 
    112101  } 
    113   print "$_\n"; 
    114102} 
     103 
     104sub main() { 
     105  my @depends=(); 
     106  read_input_stream(@depends); 
     107 
     108  @depends = sort arb_dependency_order @depends;  
     109 
     110  print "\n# Do not add dependencies manually - use 'make depend' in \$ARBHOME\n"; 
     111  print "# For formatting issues see SOURCE_TOOLS/fix_depends.pl\n"; 
     112 
     113  # print dependency lines 
     114  my $prefix = ''; 
     115  foreach (@depends) { 
     116    my $tprefix = ''; 
     117    if (/^([^:]*):/) { $tprefix = $1; } 
     118    if ($tprefix ne $prefix) { 
     119      print "\n"; # empty line between different files 
     120      $prefix = $tprefix; 
     121    } 
     122    print "$_\n"; 
     123  } 
     124} 
     125main();