/[MITgcm]/MITgcm/tools/f90mkdepend
ViewVC logotype

Diff of /MITgcm/tools/f90mkdepend

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.2 by jahn, Thu May 8 19:45:38 2008 UTC revision 1.7 by jahn, Wed Dec 11 21:53:02 2013 UTC
# Line 1  Line 1 
1  #!/bin/csh -f  #!/bin/bash
2    # $Header$
3    # $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".
 # Note: We assume that the name of a module and the same of source are the same.  
6  #  #
7  set flist =  ( `echo *.F90 *.F *.h` )  # For every "use" statement, generate a dependency on lowercase(modulename).o
8  foreach filename ( $flist )  #
9  set dirlist  =  (  . )  # 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  # Try and find some use statements  
12  set modreflist = `cat $filename | grep '[ *] use ' | awk '{print $2}' | sed s'/,//'`  # don't complain if *.F90 doesn't match any files
13    shopt -s nullglob
14  set depfiles = ( )  
15  foreach m ( $modreflist )  cat /dev/null > f90mkdepend.log
16   set depfile = ( )  
17   foreach d ( $dirlist )  for filename in *.F90 *.F *.h; do
18     if ( -f $m.F90 || -f $m.F ) then    # quick check for "use" to speed up processing
19      if ( $depfile == "" ) then    if grep -i '^ *use ' $filename > /dev/null; then
20       set depfile = ( $m.o )      # extract module name in lower case
21      endif      modreflist=$(grep -i '^ *use ' $filename | awk '{print tolower($2)}' | sed 's/,.*$//')
22     endif  
23   end      echo "$filename => $modreflist" >> f90mkdepend.log
24   set depfiles = ( $depfiles $depfile )  
25  end      # change .F90 into .f90, .F into .f for target
26  set ext=`echo ${filename:e} | sed -e 's/F/f/'`      preprocessed=$(echo $filename | sed -e 's/\.F$/.f/' -e 's/\.F90$/.f90/')
27  echo ${filename:r}.${ext}: $depfiles  
28  end      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
43    

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.7

  ViewVC Help
Powered by ViewVC 1.1.22