/[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.3 by jahn, Tue May 13 19:02:00 2008 UTC revision 1.4 by jahn, Fri Apr 30 19:55:17 2010 UTC
# Line 1  Line 1 
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 -q -i '^ *use ' $filename; then
20        # extract module name in lower case
21    # Try and find some use statements      modreflist=$(grep -i '^ *use ' $filename | awk '{sub(/,.*/,"",$2); print tolower($2)}')
   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  

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

  ViewVC Help
Powered by ViewVC 1.1.22