| 1 |
#!/bin/bash |
| 2 |
# $Header$ |
| 3 |
# $Name$ |
| 4 |
# |
| 5 |
# 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. |
| 10 |
# 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 |
| 16 |
|
| 17 |
for filename in *.F90 *.F *.h; do |
| 18 |
# quick check for "use" to speed up processing |
| 19 |
if grep -i '^ *use ' $filename > /dev/null; then |
| 20 |
# extract module name in lower case |
| 21 |
modreflist=$(grep -i '^ *use ' $filename | awk '{print tolower($2)}' | sed 's/,.*$//') |
| 22 |
|
| 23 |
echo "$filename => $modreflist" >> f90mkdepend.log |
| 24 |
|
| 25 |
# change .F90 into .f90, .F into .f for target |
| 26 |
preprocessed=$(echo $filename | sed -e 's/\.F$/.f/' -e 's/\.F90$/.f90/') |
| 27 |
|
| 28 |
depline="$preprocessed:" |
| 29 |
for m in $modreflist; do |
| 30 |
# ignore modules that don't have an appropriately named source file |
| 31 |
if [ -f $m.F90 ] || [ -f $m.F ]; then |
| 32 |
depline="$depline $m.o" |
| 33 |
elif [ -f ${m%_mod}.F90 ] || [ -f ${m%_mod}.F ]; then |
| 34 |
# source file name is module name without "_mod" |
| 35 |
depline="$depline ${m%_mod}.o" |
| 36 |
else |
| 37 |
echo "WARNING: f90mkdepend: no source file found for module $m" 1>&2 |
| 38 |
fi |
| 39 |
done |
| 40 |
echo $depline |
| 41 |
fi |
| 42 |
done |