| 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; |