| 21 | 
  | 
#  Filename     :  $RCSfile: filepp,v $ | 
| 22 | 
  | 
#  Author       :  $Author: tim $ | 
| 23 | 
  | 
#  Maintainer   :  Darren Miller: darren@cabaret.demon.co.uk | 
| 24 | 
< | 
#  File version :  $Revision: 1.2 $ | 
| 25 | 
< | 
#  Last changed :  $Date: 2004-10-02 04:40:48 $ | 
| 24 | 
> | 
#  File version :  $Revision: 1.4 $ | 
| 25 | 
> | 
#  Last changed :  $Date: 2004-10-11 14:51:57 $ | 
| 26 | 
  | 
#  Description  :  Main program | 
| 27 | 
  | 
#  Licence      :  GNU copyleft | 
| 28 | 
  | 
# | 
| 32 | 
  | 
 | 
| 33 | 
  | 
use strict "vars"; | 
| 34 | 
  | 
use strict "subs"; | 
| 35 | 
– | 
#use Graph; | 
| 35 | 
  | 
# Used to all filepp to work with any char, not just ascii, | 
| 36 | 
  | 
# feel free to remove this if it causes you problems | 
| 37 | 
< | 
use bytes; | 
| 37 | 
> | 
#use bytes; | 
| 38 | 
  | 
 | 
| 39 | 
  | 
# version number of program | 
| 40 | 
  | 
my $VERSION = '1.7.1'; | 
| 41 | 
  | 
 | 
| 42 | 
  | 
# list of paths to search for modules, normal Perl list + module dir | 
| 43 | 
< | 
push(@INC, "/home/maul/gezelter/tim/code/OOPSE-2.0/scripts/filepp-1.7.1/modules/f90dpend/"); | 
| 43 | 
> | 
#push(@INC, "/home/maul/gezelter/tim/code/OOPSE-2.0/scripts/filepp-1.7.1/modules/f90dpend/"); | 
| 44 | 
  | 
 | 
| 45 | 
  | 
# index of keywords supported and functions to deal with them | 
| 46 | 
  | 
my %Keywords = ( | 
| 295 | 
  | 
# | 
| 296 | 
  | 
my %f90ModList = (); | 
| 297 | 
  | 
 | 
| 298 | 
< | 
# | 
| 298 | 
> | 
# suffix of fortran object file | 
| 299 | 
  | 
my $objExt = '.o'; | 
| 300 | 
+ | 
 | 
| 301 | 
+ | 
# suffix of fortran 90 module | 
| 302 | 
+ | 
my $modSuffix = "mod"; | 
| 303 | 
+ | 
 | 
| 304 | 
+ | 
# case of basename of fortran 90 module | 
| 305 | 
+ | 
my $modBasenameCase = "lower"; | 
| 306 | 
  | 
############################################################################## | 
| 307 | 
  | 
# SetDebug - controls debugging level | 
| 308 | 
  | 
############################################################################## | 
| 2443 | 
  | 
    if ($modulename !~ /^procedure/){ | 
| 2444 | 
  | 
         | 
| 2445 | 
  | 
        $modulename =~ s/\s+$//; | 
| 2446 | 
< | 
        $parsedModList{uc($modulename) . ".mod"} =  Filepp::GetDefine('__FILE__'); | 
| 2446 | 
> | 
        $parsedModList{GetModBasename($modulename) .  "." . $modSuffix} | 
| 2447 | 
> | 
                    =  Filepp::GetDefine('__FILE__'); | 
| 2448 | 
  | 
         | 
| 2449 | 
  | 
        #$modulefile = Filepp::GetDefine('__BASE_FILE__'); | 
| 2450 | 
  | 
        #print $modulefile; | 
| 2468 | 
  | 
    $f90module =~ s/\s+$//; | 
| 2469 | 
  | 
    $f90module = uc($f90module); | 
| 2470 | 
  | 
     | 
| 2471 | 
< | 
    print " " . $objDir . $f90module . '.mod \\', "\n"; | 
| 2466 | 
< | 
    #addModule($f90module); | 
| 2471 | 
> | 
    print " " . $objDir . GetModBasename($f90module) . "." . $modSuffix . "\\\n"; | 
| 2472 | 
  | 
} | 
| 2473 | 
  | 
 | 
| 2474 | 
  | 
############################################################################## | 
| 2507 | 
  | 
 | 
| 2508 | 
  | 
} | 
| 2509 | 
  | 
 | 
| 2510 | 
< | 
 | 
| 2510 | 
> | 
############################################################################## | 
| 2511 | 
> | 
# Generate rules for fortran 90 module | 
| 2512 | 
> | 
############################################################################## | 
| 2513 | 
  | 
sub printModule { | 
| 2514 | 
  | 
        my $modname; | 
| 2515 | 
  | 
        my $objname; | 
| 2520 | 
  | 
        } | 
| 2521 | 
  | 
} | 
| 2522 | 
  | 
 | 
| 2523 | 
+ | 
############################################################################## | 
| 2524 | 
+ | 
# Get the object file name | 
| 2525 | 
+ | 
############################################################################## | 
| 2526 | 
  | 
sub GetObjFile { | 
| 2527 | 
  | 
        use File::Basename; | 
| 2528 | 
  | 
        my $fullname = shift; | 
| 2532 | 
  | 
        ($filename, $dir, $suffix) = fileparse($fullname, '\.[^.]*');    | 
| 2533 | 
  | 
        return $filename . $objExt; | 
| 2534 | 
  | 
} | 
| 2535 | 
+ | 
 | 
| 2536 | 
  | 
############################################################################## | 
| 2537 | 
+ | 
# Get the base name of fortran 90 module | 
| 2538 | 
+ | 
############################################################################## | 
| 2539 | 
+ | 
sub GetModBasename { | 
| 2540 | 
+ | 
        my $modname = shift; | 
| 2541 | 
+ | 
         | 
| 2542 | 
+ | 
        if ($modBasenameCase eq "lower") { | 
| 2543 | 
+ | 
            $modname = lc($modname); | 
| 2544 | 
+ | 
             | 
| 2545 | 
+ | 
        } elsif ($modBasenameCase eq "upper") { | 
| 2546 | 
+ | 
            $modname = uc($modname); | 
| 2547 | 
+ | 
        } elsif ($modBasenameCase eq "mixed") { | 
| 2548 | 
+ | 
            $modname = ucfirst(lc($modname)); | 
| 2549 | 
+ | 
        } | 
| 2550 | 
+ | 
         | 
| 2551 | 
+ | 
        return $modname; | 
| 2552 | 
+ | 
} | 
| 2553 | 
+ | 
 | 
| 2554 | 
+ | 
############################################################################## | 
| 2555 | 
  | 
# Main routine | 
| 2556 | 
  | 
############################################################################## | 
| 2557 | 
  | 
 | 
| 2746 | 
  | 
        } | 
| 2747 | 
  | 
        UseModule($ARGV[++$i]); | 
| 2748 | 
  | 
    } | 
| 2749 | 
< | 
 | 
| 2749 | 
> | 
     | 
| 2750 | 
> | 
    #case of basename of fortran module | 
| 2751 | 
> | 
    elsif($ARGV[$i] eq "-mc") { | 
| 2752 | 
> | 
        my $tempVar = lc($ARGV[++$i]); | 
| 2753 | 
> | 
        if ($modBasenameCase ne 'lower' && $modBasenameCase ne 'upper' | 
| 2754 | 
> | 
                                        && $modBasenameCase ne 'mixed'){ | 
| 2755 | 
> | 
            Error("Valid argument for `-om' are lower, upper or mixed"); | 
| 2756 | 
> | 
        } | 
| 2757 | 
> | 
        $modBasenameCase = $tempVar; | 
| 2758 | 
> | 
    } | 
| 2759 | 
> | 
     | 
| 2760 | 
> | 
    #the suffix of fortran module | 
| 2761 | 
> | 
    elsif($ARGV[$i] eq "-ms") { | 
| 2762 | 
> | 
        $modSuffix = $ARGV[++$i]; | 
| 2763 | 
> | 
    } | 
| 2764 | 
> | 
     | 
| 2765 | 
  | 
    # set macro prefix | 
| 2766 | 
  | 
    elsif($ARGV[$i] eq "-mp") { | 
| 2767 | 
  | 
        if($i+1 >= $argc) { | 
| 2779 | 
  | 
    # module files will be built in a separate directory from the sources. | 
| 2780 | 
  | 
    elsif($ARGV[$i] eq "-od") { | 
| 2781 | 
  | 
        $objDir = $ARGV[++$i]; | 
| 2782 | 
< | 
    }     | 
| 2782 | 
> | 
    } | 
| 2783 | 
> | 
     | 
| 2784 | 
  | 
    # turn on overwrite mode | 
| 2785 | 
  | 
    elsif($ARGV[$i] eq "-ov") { | 
| 2786 | 
  | 
        $overwrite = 1; |