diff options
author | schnetter <schnetter@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2006-06-23 03:46:38 +0000 |
---|---|---|
committer | schnetter <schnetter@17b73243-c579-4c4c-a9d2-2d5706c11dac> | 2006-06-23 03:46:38 +0000 |
commit | 4d5f9ed6fdc103aa509c79e14d1ec4680e643925 (patch) | |
tree | 75d549d6848b758bd357e40c0a14b6682c6fdcdf | |
parent | 2d6ee90c4f66b9a6920e966a1bc3ab23770bc843 (diff) |
Generate dependencies for Fortran include statements only if the
included file is actually found. The previous code required that each
included file be in the same directory as the including file. The new
code treats using modules and including files in the same manner.
git-svn-id: http://svn.cactuscode.org/flesh/trunk@4328 17b73243-c579-4c4c-a9d2-2d5706c11dac
-rwxr-xr-x | lib/sbin/f_depend_modules.pl | 58 |
1 files changed, 56 insertions, 2 deletions
diff --git a/lib/sbin/f_depend_modules.pl b/lib/sbin/f_depend_modules.pl index feb59e5e..fc4749d8 100755 --- a/lib/sbin/f_depend_modules.pl +++ b/lib/sbin/f_depend_modules.pl @@ -38,7 +38,61 @@ while (<STDIN>) { # include statement my $name = $1; - print " \\\n $srcdir/$name"; + my $found = 0; + if (! $found) + { + # reference to an include file in this thorn? + my $dirhdl; + if( opendir( DIRHDL, "$srcdir" ) ) + { + while( defined( my $filename = readdir( DIRHDL ) ) ) + { + if( $filename eq "$name" ) + { + $found = 1; + print " \\\n $filename"; + last loop; + } + } + closedir DIRHDL; + } + } + if (! $found) + { + # reference to an include file in another thorn? + loop: foreach my $dir (@otherdirs) + { + # note: we could also use the SUBDIRS from the make.code.defn here + foreach my $subdir (".", "include") + { + if( opendir( DIRHDL, "$dir/$subdir" ) ) + { + while( defined( my $filename = readdir( DIRHDL ) ) ) + { + if( $filename eq "$name" ) + { + $found = 1; + print " \\\n $dir/$subdir/$filename"; + last loop; + } + } + closedir DIRHDL; + } + } + } + } + if (! $found) + { + print STDERR "$srcfile:$line: Warning: While tracing include depencencies: Include file \"$name\" not found\n"; + if (@otherdirs) + { + print STDERR " Searched in thorn directory and in [" . join(', ', @otherdirs) . "]\n"; + } + else + { + print STDERR " Searched in thorn directory only.\n"; + } + } } elsif (/^\s*module\s+(\w+)/i) { @@ -83,7 +137,7 @@ while (<STDIN>) if (! $found) { # reference to a module in another thorn? - loop: foreach my $dir (@otherdirs) + loop: foreach my $dir (@otherdirs) { # note: we could also use the SUBDIRS from the make.code.defn here foreach my $subdir (".", "include") |