| 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 |
|
# |
| 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 = (); |
| 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 |
|
############################################################################## |
| 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 |
| 2233 |
|
sub Write |
| 2234 |
|
{ |
| 2235 |
|
my $string = shift; |
| 2236 |
< |
#print(OUTPUT $string); |
| 2236 |
> |
|
| 2237 |
> |
if(!$dependency){ |
| 2238 |
> |
print(OUTPUT $string); |
| 2239 |
> |
} |
| 2240 |
|
} |
| 2241 |
|
|
| 2242 |
|
|
| 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 |
|
############################################################################## |
| 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 |
|
|
| 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 |
|
############################################################################## |
| 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 |
| 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]); |
| 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(); } |