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

Comparing trunk/scripts/filepp (file contents):
Revision 26 by tim, Fri Oct 1 21:11:29 2004 UTC vs.
Revision 47 by tim, Wed Oct 6 22:19:33 2004 UTC

# Line 1 | Line 1
1   #!/usr/bin/perl -w
2
3 package FileEntry;
4
5 sub new {
6    my $type = shift;
7    my $filename = shift;
8    my $path = shift;
9    my $self = {};
10    $self->{'source_file'} = $filename;
11    $self->{'filepath'} = $path;
12    $self->{'includes'} = {};
13    $self->{'uses'} = {};
14    $self->{'modules'} = {};
15    bless $self;
16 }
17
2   ########################################################################
3   #
4   # filepp is free software; you can redistribute it and/or modify
# Line 37 | Line 21 | sub new {
21   #  Filename     :  $RCSfile: filepp,v $
22   #  Author       :  $Author: tim $
23   #  Maintainer   :  Darren Miller: darren@cabaret.demon.co.uk
24 < #  File version :  $Revision: 1.1 $
25 < #  Last changed :  $Date: 2004-10-01 21:11:29 $
24 > #  File version :  $Revision: 1.3 $
25 > #  Last changed :  $Date: 2004-10-06 22:19:33 $
26   #  Description  :  Main program
27   #  Licence      :  GNU copyleft
28   #
# Line 312 | Line 296 | my %f90ModList = ();
296   #
297   my %f90ModList = ();
298  
299 < #
299 > # suffix of fortran object file
300   my $objExt = '.o';
301 +
302 + # suffix of fortran 90 module
303 + my $modSuffix = "mod";
304 +
305 + # case of basename of fortran 90 module
306 + my $modBasenameCase = "lower";
307   ##############################################################################
308   # SetDebug - controls debugging level
309   ##############################################################################
# Line 2453 | Line 2443 | sub Module{
2443      my $file;
2444      if ($modulename !~ /^procedure/){
2445          
2446 <        $parsedModList{uc($modulename) . ".mod"} =  Filepp::GetDefine('__FILE__');
2446 >        $modulename =~ s/\s+$//;
2447 >        $parsedModList{GetModBasename($modulename) .  "." . $modSuffix}
2448 >                    =  Filepp::GetDefine('__FILE__');
2449          
2450          #$modulefile = Filepp::GetDefine('__BASE_FILE__');
2451          #print $modulefile;
# Line 2474 | Line 2466 | sub Use{
2466      my $line = shift;
2467      $line =~ /^(\w+).*/;
2468      my $f90module = $1;
2469 +    $f90module =~ s/\s+$//;
2470      $f90module = uc($f90module);
2471      
2472 <    print " " . $objDir . $f90module . '.mod \\', "\n";
2480 <    #addModule($f90module);
2472 >    print " " . $objDir . GetModBasename($f90module) . "." . $modSuffix . "\\\n";
2473   }
2474  
2475   ##############################################################################
# Line 2491 | Line 2483 | Filepp::AddKeyword("include", "Filepp::Include");
2483   Filepp::AddKeyword("include", "Filepp::Include");
2484  
2485   ##############################################################################
2486 < # add RecordFileInfo info Filepp. Every time a file is opened, an entry
2495 < # of this file is created  
2486 > # test whether a file is visited or not
2487   ##############################################################################
2497
2498 sub RecordFileInfo{
2499    my $file = Filepp::GetDefine('__FILE__');
2500 #    dependenyGraph->add_vertex(new );
2501    
2502    #if it is not base file, we need to add an edge
2503    if ($include_level > 0) {
2504    
2505    }
2506
2507 }
2508
2509 Filepp::AddOpenInputFunc("Filepp::RecordFileInfo");
2510
2488   sub IsVisited {
2489          my $fullfile = shift;
2490          
# Line 2531 | Line 2508 | sub AddModule {
2508  
2509   }
2510  
2511 <
2511 > ##############################################################################
2512 > # Generate rules for fortran 90 module
2513 > ##############################################################################
2514   sub printModule {
2515          my $modname;
2516          my $objname;
# Line 2542 | Line 2521 | sub printModule {
2521          }
2522   }
2523  
2524 + ##############################################################################
2525 + # Get the object file name
2526 + ##############################################################################
2527   sub GetObjFile {
2528          use File::Basename;
2529          my $fullname = shift;
# Line 2551 | Line 2533 | sub GetObjFile {
2533          ($filename, $dir, $suffix) = fileparse($fullname, '\.[^.]*');  
2534          return $filename . $objExt;
2535   }
2536 +
2537   ##############################################################################
2538 + # Get the base name of fortran 90 module
2539 + ##############################################################################
2540 + sub GetModBasename {
2541 +        my $modname = shift;
2542 +        
2543 +        if ($modBasenameCase eq "lower") {
2544 +            $modname = lc($modname);
2545 +            
2546 +        } elsif ($modBasenameCase eq "upper") {
2547 +            $modname = uc($modname);
2548 +        } elsif ($modBasenameCase eq "mixed") {
2549 +            $modname = ucfirst(lc($modname));
2550 +        }
2551 +        
2552 +        return $modname;
2553 + }
2554 +
2555 + ##############################################################################
2556   # Main routine
2557   ##############################################################################
2558  
# Line 2746 | Line 2747 | while($ARGV[$i]) {
2747          }
2748          UseModule($ARGV[++$i]);
2749      }
2750 <
2750 >    
2751 >    #case of basename of fortran module
2752 >    elsif($ARGV[$i] eq "-mc") {
2753 >        my $tempVar = lc($ARGV[++$i]);
2754 >        if ($modBasenameCase ne 'lower' && $modBasenameCase ne 'upper'
2755 >                                        && $modBasenameCase ne 'mixed'){
2756 >            Error("Valid argument for `-om' are lower, upper or mixed");
2757 >        }
2758 >        $modBasenameCase = $tempVar;
2759 >    }
2760 >    
2761 >    #the suffix of fortran module
2762 >    elsif($ARGV[$i] eq "-ms") {
2763 >        $modSuffix = $ARGV[++$i];
2764 >    }
2765 >    
2766      # set macro prefix
2767      elsif($ARGV[$i] eq "-mp") {
2768          if($i+1 >= $argc) {
# Line 2764 | Line 2780 | while($ARGV[$i]) {
2780      # module files will be built in a separate directory from the sources.
2781      elsif($ARGV[$i] eq "-od") {
2782          $objDir = $ARGV[++$i];
2783 <    }    
2783 >    }
2784 >    
2785      # turn on overwrite mode
2786      elsif($ARGV[$i] eq "-ov") {
2787          $overwrite = 1;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines