1 |
#!/bin/csh -f |
#!/bin/bash |
2 |
# $Header$ |
# $Header$ |
3 |
# $Name$ |
# $Name$ |
4 |
# |
# |
5 |
# Generate some make file dependency entries for a Fortran 90 file that employs "use". |
# Generate some make file dependency entries for a Fortran 90 file that employs "use". |
6 |
|
# |
7 |
|
# For every "use" statement, generate a dependency on lowercase(modulename).o |
8 |
|
# |
9 |
# Note: We assume that the name of a module and the same of source are the same. |
# Note: We assume that the name of a module and the same of source are the same. |
10 |
# The name of the source file should be all lower case (except for the extension). |
# The name of the source file should be all lower case (except for the extension). |
11 |
# |
|
12 |
|
# don't complain if *.F90 doesn't match any files |
13 |
|
shopt -s nullglob |
14 |
|
|
15 |
cat /dev/null > f90mkdepend.log |
cat /dev/null > f90mkdepend.log |
16 |
|
|
17 |
set flist = ( `echo *.F90 *.F *.h` ) |
for filename in *.F90 *.F *.h; do |
18 |
foreach filename ( $flist ) |
# quick check for "use" to speed up processing |
19 |
set dirlist = ( . ) |
if grep -i '^ *use ' $filename > /dev/null; then |
20 |
|
# extract module name in lower case |
21 |
# Try and find some use statements |
modreflist=$(grep -i '^ *use ' $filename | awk '{print tolower($2)}' | sed 's/,.*$//') |
|
cat $filename | grep -i '^ *use ' >> f90mkdepend.log |
|
|
set modreflist = `cat $filename | grep -i '^ *use ' | awk '{print tolower($2)}' | sed s'/,.*$//'` |
|
22 |
|
|
|
if ("x$modreflist" != x) then |
|
23 |
echo "$filename => $modreflist" >> f90mkdepend.log |
echo "$filename => $modreflist" >> f90mkdepend.log |
|
endif |
|
24 |
|
|
25 |
set depfiles = ( ) |
# change .F90 into .f90, .F into .f for target |
26 |
foreach m ( $modreflist ) |
preprocessed=$(echo $filename | sed -e 's/\.F$/.f/' -e 's/\.F90$/.f90/') |
27 |
set depfile = ( ) |
|
28 |
foreach d ( $dirlist ) |
depline="$preprocessed:" |
29 |
if ( -f $m.F90 || -f $m.F ) then |
for m in $modreflist; do |
30 |
if ( $depfile == "" ) then |
# ignore modules that don't have an appropriately named source file |
31 |
set depfile = ( $m.o ) |
if [ -f $m.F90 ] || [ -f $m.F ]; then |
32 |
endif |
depline="$depline $m.o" |
33 |
endif |
fi |
34 |
end |
done |
35 |
set depfiles = ( $depfiles $depfile ) |
echo $depline |
36 |
end |
fi |
37 |
set ext=`echo ${filename:e} | sed -e 's/F/f/'` |
done |
38 |
echo ${filename:r}.${ext}: $depfiles |
|
|
end |
|