| 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.3 $ | 
| 25 | 
> | 
#  Last changed :  $Date: 2004-10-06 22:19:33 $ | 
| 26 | 
  | 
#  Description  :  Main program | 
| 27 | 
  | 
#  Licence      :  GNU copyleft | 
| 28 | 
  | 
# | 
| 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 | 
  | 
############################################################################## | 
| 2444 | 
  | 
    if ($modulename !~ /^procedure/){ | 
| 2445 | 
  | 
         | 
| 2446 | 
  | 
        $modulename =~ s/\s+$//; | 
| 2447 | 
< | 
        $parsedModList{uc($modulename) . ".mod"} =  Filepp::GetDefine('__FILE__'); | 
| 2447 | 
> | 
        $parsedModList{GetModBasename($modulename) .  "." . $modSuffix} | 
| 2448 | 
> | 
                    =  Filepp::GetDefine('__FILE__'); | 
| 2449 | 
  | 
         | 
| 2450 | 
  | 
        #$modulefile = Filepp::GetDefine('__BASE_FILE__'); | 
| 2451 | 
  | 
        #print $modulefile; | 
| 2469 | 
  | 
    $f90module =~ s/\s+$//; | 
| 2470 | 
  | 
    $f90module = uc($f90module); | 
| 2471 | 
  | 
     | 
| 2472 | 
< | 
    print " " . $objDir . $f90module . '.mod \\', "\n"; | 
| 2466 | 
< | 
    #addModule($f90module); | 
| 2472 | 
> | 
    print " " . $objDir . GetModBasename($f90module) . "." . $modSuffix . "\\\n"; | 
| 2473 | 
  | 
} | 
| 2474 | 
  | 
 | 
| 2475 | 
  | 
############################################################################## | 
| 2508 | 
  | 
 | 
| 2509 | 
  | 
} | 
| 2510 | 
  | 
 | 
| 2511 | 
< | 
 | 
| 2511 | 
> | 
############################################################################## | 
| 2512 | 
> | 
# Generate rules for fortran 90 module | 
| 2513 | 
> | 
############################################################################## | 
| 2514 | 
  | 
sub printModule { | 
| 2515 | 
  | 
        my $modname; | 
| 2516 | 
  | 
        my $objname; | 
| 2521 | 
  | 
        } | 
| 2522 | 
  | 
} | 
| 2523 | 
  | 
 | 
| 2524 | 
+ | 
############################################################################## | 
| 2525 | 
+ | 
# Get the object file name | 
| 2526 | 
+ | 
############################################################################## | 
| 2527 | 
  | 
sub GetObjFile { | 
| 2528 | 
  | 
        use File::Basename; | 
| 2529 | 
  | 
        my $fullname = shift; | 
| 2532 | 
  | 
        my $suffix; | 
| 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 | 
  | 
############################################################################## | 
| 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) { | 
| 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; |