ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-2.0/scripts/filepp
(Generate patch)

Comparing trunk/OOPSE-2.0/scripts/filepp (file contents):
Revision 1555 by tim, Mon Oct 11 14:51:57 2004 UTC vs.
Revision 1556 by tim, Mon Oct 11 21:10:28 2004 UTC

# Line 21 | Line 21
21   #  Filename     :  $RCSfile: filepp,v $
22   #  Author       :  $Author: tim $
23   #  Maintainer   :  Darren Miller: darren@cabaret.demon.co.uk
24 < #  File version :  $Revision: 1.4 $
25 < #  Last changed :  $Date: 2004-10-11 14:51:57 $
24 > #  File version :  $Revision: 1.5 $
25 > #  Last changed :  $Date: 2004-10-11 21:10:28 $
26   #  Description  :  Main program
27   #  Licence      :  GNU copyleft
28   #
# Line 280 | Line 280 | options:
280   all other arguments are assumed to be input files
281   ";
282  
283 # graph for dependency files
284 my $dependencyGraph;
283  
284   # visited table
285   my %visitedTable = ();
# Line 303 | Line 301 | my $modBasenameCase = "lower";
301  
302   # case of basename of fortran 90 module
303   my $modBasenameCase = "lower";
304 +
305 + #flag for generating dependency, by default, it is off
306 + my $dependency = 0;
307 +
308 + #skip system header file
309 + my $skipSysInclude = 0;
310 +
311 + #saved command line define macro
312 + my @savedDefine;
313 +
314   ##############################################################################
315   # SetDebug - controls debugging level
316   ##############################################################################
# Line 1937 | Line 1945 | sub Include
1945      }
1946      # else assume filename given without "" or <>, naughty but allowed
1947      
1948 +    #if skipSysInclude option is turned on, skip current file
1949 +    if ($skipSysInclude && $sysinclude) {
1950 +        return;
1951 +    }
1952 +    
1953      # check for file in current directory
1954      if($sysinclude == 0) {
1955          # get name of directory base file is in
# Line 2220 | Line 2233 | sub Write
2233   sub Write
2234   {
2235      my $string = shift;
2236 <    #print(OUTPUT $string);
2236 >    
2237 >    if(!$dependency){
2238 >        print(OUTPUT $string);
2239 >    }
2240   }
2241  
2242  
# Line 2468 | Line 2484 | sub Use{
2484      $f90module =~ s/\s+$//;
2485      $f90module = uc($f90module);
2486      
2487 <    print " " . $objDir . GetModBasename($f90module) . "." . $modSuffix . "\\\n";
2487 >    print " " . $objDir . GetModBasename($f90module) . "." . $modSuffix . " \\\n";
2488   }
2489  
2490   ##############################################################################
# Line 2495 | Line 2511 | sub AddModule {
2511          }
2512   }
2513  
2514 + ##############################################################################
2515 + # Clean Visited Table
2516 + ##############################################################################
2517 + sub cleanVisited {
2518 +    my $visitedFile;
2519 +    foreach $visitedFile (keys %visitedTable) {
2520 +        delete $visitedTable{$visitedFile};
2521 +    }
2522 +
2523 + }
2524 +
2525   sub AddModule {
2526          my $modulename = shift;
2527  
# Line 2551 | Line 2578 | sub GetModBasename {
2578          return $modname;
2579   }
2580  
2581 + sub RestoreCommandLineDefine {
2582 +    my $macro;
2583 +    
2584 +    foreach $macro(@savedDefine) {
2585 +        Define($macro);
2586 +    }
2587 + }
2588 +
2589 + sub SaveCommandLineDefine {
2590 +    my $macro = shift;
2591 +    push @savedDefine, $macro;
2592 + }
2593   ##############################################################################
2594   # Main routine
2595   ##############################################################################
# Line 2595 | Line 2634 | while($ARGV[$i]) {
2634          }
2635          # add macro and defn to hash table
2636          Define($macro." ".$defn);
2637 +        
2638 +        #save define macro from command line
2639 +        #it will be restored when next source file is processed
2640 +        SaveCommandLineDefine($macro." ".$defn);
2641      }
2642  
2643      # Debugging turned on: -d
# Line 2725 | Line 2768 | while($ARGV[$i]) {
2768      }
2769  
2770      # Module paths: -Minclude or -M include
2771 <    elsif(substr($ARGV[$i], 0, 2) eq "-M") {
2772 <        # -M include format
2773 <        if(length($ARGV[$i]) == 2) {
2774 <            if($i+1 >= $argc) {
2775 <                Error("Argument to `-M' is missing");
2776 <            }
2777 <            AddModulePath($ARGV[++$i]);
2778 <        }
2779 <        # -Minclude format
2780 <        else {
2781 <            AddModulePath(substr($ARGV[$i], 2));
2782 <        }
2783 <    }
2771 >    #elsif(substr($ARGV[$i], 0, 2) eq "-M") {
2772 >    #   # -M include format
2773 >    #   if(length($ARGV[$i]) == 2) {
2774 >    #       if($i+1 >= $argc) {
2775 >    #           Error("Argument to `-M' is missing");
2776 >    #       }
2777 >    #       AddModulePath($ARGV[++$i]);
2778 >    #   }
2779 >    #   # -Minclude format
2780 >    #   else {
2781 >    #       AddModulePath(substr($ARGV[$i], 2));
2782 >    #   }
2783 >    #}
2784  
2785      # use module
2786 <    elsif($ARGV[$i] eq "-m") {
2787 <        if($i+1 >= $argc) {
2788 <            Error("Argument to `-m' is missing");
2789 <        }
2790 <        UseModule($ARGV[++$i]);
2786 >    #elsif($ARGV[$i] eq "-m") {
2787 >    #   if($i+1 >= $argc) {
2788 >    #       Error("Argument to `-m' is missing");
2789 >    #   }
2790 >    #   UseModule($ARGV[++$i]);
2791 >    #}
2792 >
2793 >    # make dependency
2794 >    elsif($ARGV[$i] eq "-M") {
2795 >        $dependency = 1;
2796      }
2797 <    
2797 >
2798 >    # make dependency (skip system header files)
2799 >    elsif($ARGV[$i] eq "-MM") {
2800 >        $dependency = 1;
2801 >        $skipSysInclude = 1;
2802 >    }
2803 >
2804      #case of basename of fortran module
2805      elsif($ARGV[$i] eq "-mc") {
2806          my $tempVar = lc($ARGV[++$i]);
# Line 2890 | Line 2944 | foreach $base_file (@Inputfiles) {
2944      }
2945      
2946      #clean visitedTable
2947 <    %visitedTable = ();
2947 >    cleanVisited();
2948 >    
2949 >    #clear all define
2950 >    UndefAll();
2951 >    
2952 >    #restore command line define
2953 >    RestoreCommandLineDefine();
2954 >    
2955 >    #print dependency rule
2956      print "\n";
2957 <    print $objDir . GetObjFile($base_file) . " : ";
2957 >    print $objDir . GetObjFile($base_file) . " : " . $base_file . " \\";
2958 >    print "\n";
2959 >
2960      Parse($base_file);
2961      # close output file if in overwrite mode
2962      if($overwrite) { CloseOutputFile(); }    

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines