/[MITgcm]/MITgcm/tools/genmake2
ViewVC logotype

Diff of /MITgcm/tools/genmake2

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

revision 1.77 by edhill, Thu Apr 8 23:48:43 2004 UTC revision 1.85 by edhill, Wed Jul 14 21:26:53 2004 UTC
# Line 1  Line 1 
1  #! /usr/bin/env bash  #! /usr/bin/env sh
2  #  #
3  # $Header$  # $Header$
4  #  #
# Line 158  EOF Line 158  EOF
158  }  }
159    
160    
161    look_for_makedepend()  {
162    
163        #  The "original" makedepend is part of the Imake system that is
164        #  most often distributed with XFree86 or with an XFree86 source
165        #  package.  As a result, many machines (eg. generic Linux) do not
166        #  have a system-default "makedepend" available.  For those
167        #  systems, we have two fall-back options:
168        #
169        #    1) a makedepend implementation shipped with the cyrus-imapd
170        #       package:  ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/
171        #
172        #    2) a known-buggy xmakedpend shell script
173        #
174        #  So the choices are, in order:
175        #
176        #    1) use the user-specified program
177        #    2) use a system-wide default
178        #    3) locally build and use the cyrus implementation
179        #    4) fall back to the buggy local xmakedpend script
180        #
181        if test "x${MAKEDEPEND}" = x ; then
182            which makedepend > /dev/null 2>&1
183            RV0=$?
184            cat <<EOF >> genmake_tc.f
185          program test
186          write(*,*) 'test'
187          stop
188          end
189    EOF
190            makedepend genmake_tc.f > /dev/null 2>&1
191            RV1=$?
192            if test "x${RV0}${RV1}" = x00 ; then
193                MAKEDEPEND=makedepend
194            else
195                echo "    a system-default makedepend was not found."
196                
197                #  Try to build the cyrus implementation
198                rm -f ./genmake_cy_md
199                (
200                    cd $ROOTDIR/tools/cyrus-imapd-makedepend  \
201                        &&  ./configure > /dev/null 2>&1  \
202                        &&  make > /dev/null 2>&1
203                    if test -x ./makedepend.exe ; then
204                        $LN ./makedepend.exe ./makedepend
205                    fi
206                    ./makedepend ifparser.c > /dev/null 2>&1  \
207                        &&  echo "true"
208                ) > ./genmake_cy_md
209                grep true ./genmake_cy_md > /dev/null 2>&1
210                RETVAL=$?
211                if test "x$RETVAL" = x0 ; then
212                    MAKEDEPEND='$(TOOLSDIR)/cyrus-imapd-makedepend/makedepend'
213                else
214                    MAKEDEPEND='$(TOOLSDIR)/xmakedepend'
215                fi
216                rm -f ./genmake_cy_md
217            fi
218        fi
219    }
220    
221    
222  # Guess possible config options for this host  # Guess possible config options for this host
223  find_possible_configs()  {  find_possible_configs()  {
224    
# Line 188  find_possible_configs()  { Line 249  find_possible_configs()  {
249          CPP="cpp -traditional -P"          CPP="cpp -traditional -P"
250      fi      fi
251    
252      #  The "original" makedepend is part of the Imake system that is      look_for_makedepend
     #  most often distributed with XFree86 or with an XFree86 source  
     #  package.  As a result, many machines (eg. generic Linux) do not  
     #  have a system-default "makedepend" available.  For those  
     #  systems, we have two fall-back options:  
     #  
     #    1) a makedepend implementation shipped with the cyrus-imapd  
     #       package:  ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/  
     #  
     #    2) a known-buggy xmakedpend shell script  
     #  
     #  So the choices are, in order:  
     #  
     #    1) use the user-specified program  
     #    2) use a system-wide default  
     #    3) locally build and use the cyrus implementation  
     #    4) fall back to the buggy local xmakedpend script  
     #  
     if test "x${MAKEDEPEND}" = x ; then  
       which makedepend > /dev/null 2>&1  
       RV0=$?  
       cat <<EOF >> genmake_tc.f  
       program test  
       write(*,*) 'test'  
       stop  
       end  
 EOF  
       makedepend genmake_tc.f > /dev/null 2>&1  
       RV1=$?  
       if test ! "x${RV0}${RV1}" = x00 ; then  
          echo "    a system-default makedepend was not found."  
   
          #  Try to build the cyrus impl  
          rm -f ./genmake_cy_md  
          (  
              cd $ROOTDIR/tools/cyrus-imapd-makedepend  \  
                  &&  ./configure > /dev/null 2>&1  \  
                  &&  make > /dev/null 2>&1  
              if test -x ./makedepend.exe ; then  
                  $LN ./makedepend.exe ./makedepend  
              fi  
              ./makedepend ifparser.c > /dev/null 2>&1  \  
                  &&  echo "true"  
          ) > ./genmake_cy_md  
          grep true ./genmake_cy_md > /dev/null 2>&1  
          RETVAL=$?  
          if test "x$RETVAL" = x0 ; then  
              MAKEDEPEND='$(TOOLSDIR)/cyrus-imapd-makedepend/makedepend'  
          else  
              MAKEDEPEND='$(TOOLSDIR)/xmakedepend'  
          fi  
          rm -f ./genmake_cy_md  
       fi  
     fi  
253    
254      # look for possible fortran compilers      # look for possible fortran compilers
255      tmp="$MITGCM_FC $FC efc g77 f77 pgf77 pgf95 ifc f90 f95 mpif77 mpf77 mpxlf95"      tmp="$MITGCM_FC $FC efc g77 f77 pgf77 pgf95 ifc f90 f95 mpif77 mpf77 mpxlf95"
# Line 371  Usage: "$0" [OPTIONS] Line 379  Usage: "$0" [OPTIONS]
379      -help | --help | -h | --h      -help | --help | -h | --h
380            Print this help message and exit.            Print this help message and exit.
381    
382        -adoptfile NAME | --adoptfile NAME | -adof NAME | --adof NAME
383          -adoptfile=NAME | --adoptfile=NAME | -adof=NAME | --adof=NAME
384              Use "NAME" as the adoptfile.  By default, the file at
385              "tools/adjoint_options/adjoint_default" will be used.
386    
387      -nooptfile | --nooptfile      -nooptfile | --nooptfile
388        -optfile NAME | --optfile NAME | -of NAME | --of NAME        -optfile NAME | --optfile NAME | -of NAME | --of NAME
389        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME
# Line 677  HAVE_FDATE= Line 690  HAVE_FDATE=
690  FC_NAMEMANGLE=  FC_NAMEMANGLE=
691  HAVE_CLOC=  HAVE_CLOC=
692  HAVE_NETCDF=  HAVE_NETCDF=
693    HAVE_ETIME=
694    
695  MODS=  MODS=
696  TOOLSDIR=  TOOLSDIR=
# Line 727  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPE Line 741  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPE
741  gm_s4="CFLAGS KFLAGS1 KFLAGS2 LIBS KPPFILES NOOPTFILES NOOPTFLAGS"  gm_s4="CFLAGS KFLAGS1 KFLAGS2 LIBS KPPFILES NOOPTFILES NOOPTFLAGS"
742  gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD MAKE THISHOSTNAME THISDATE MACHINE"  gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD MAKE THISHOSTNAME THISDATE MACHINE"
743  gm_s6="EXECUTABLE EXEHOOK EXEDIR PACKAGES_CONF"  gm_s6="EXECUTABLE EXEHOOK EXEDIR PACKAGES_CONF"
744  gm_s7="HAVE_SYSTEM HAVE_FDATE FC_NAMEMANGLE"  gm_s7="HAVE_SYSTEM HAVE_FDATE FC_NAMEMANGLE HAVE_ETIME"
745    
746  #  The following are all related to adjoint/tangent-linear stuff  #  The following are all related to adjoint/tangent-linear stuff
747  gm_s10="AUTODIFF_PKG_USED AD_OPTFILE TAMC TAF AD_TAMC_FLAGS AD_TAF_FLAGS"  gm_s10="AUTODIFF_PKG_USED AD_OPTFILE TAMC TAF AD_TAMC_FLAGS AD_TAF_FLAGS"
# Line 1079  EOF Line 1093  EOF
1093  else  else
1094      rm -f test_cpp      rm -f test_cpp
1095  fi  fi
1096  if test "x$MAKEDEPEND" = x ; then  look_for_makedepend
     MAKEDEPEND=makedepend  
 fi  
1097  if test "x$LN" = x ; then  if test "x$LN" = x ; then
1098      LN="ln -s"      LN="ln -s"
1099  fi  fi
# Line 1147  else Line 1159  else
1159  fi  fi
1160  rm -f genmake_tcomp*  rm -f genmake_tcomp*
1161    
1162    printf "  Do we have the etime() command using $FC...  "
1163    cat > genmake_tcomp.f <<EOF
1164          program hello
1165          REAL*4 ACTUAL, TARRAY(2)
1166          EXTERNAL ETIME
1167          REAL*4 ETIME
1168          actual = etime( tarray )
1169          print *, tarray
1170          end
1171    EOF
1172    $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.f > genmake_tcomp.log 2>&1
1173    RETVAL=$?
1174    if test "x$RETVAL" = x0 ; then
1175        HAVE_ETIME=t
1176        DEFINES="$DEFINES -DHAVE_ETIME"
1177        echo "yes"
1178    else
1179        HAVE_ETIME=
1180        echo "no"
1181    fi
1182    rm -f genmake_tcomp*
1183    
1184  printf "  Can we call simple C routines (here, \"cloc()\") using $FC...  "  printf "  Can we call simple C routines (here, \"cloc()\") using $FC...  "
1185  check_HAVE_CLOC  check_HAVE_CLOC
1186  if test "x$HAVE_CLOC" != x ; then  if test "x$HAVE_CLOC" != x ; then
# Line 1769  echo 'F90FILES =  $(F90SRCFILES:.F=.'$FS Line 1803  echo 'F90FILES =  $(F90SRCFILES:.F=.'$FS
1803  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE
1804  echo >> $MAKEFILE  echo >> $MAKEFILE
1805  echo '.SUFFIXES:' >> $MAKEFILE  echo '.SUFFIXES:' >> $MAKEFILE
1806  echo '.SUFFIXES: .o .F .p .'$FS' .c .F90 .'$FS90 >> $MAKEFILE  echo '.SUFFIXES: .o .'$FS' .p .F .c .'$FS90' .F90' >> $MAKEFILE
1807  rm -f srclist.inc csrclist.inc hlist.inc flist.tmp clist.tmp f90srclist.inc  rm -f srclist.inc csrclist.inc hlist.inc flist.tmp clist.tmp f90srclist.inc
1808  rm -f ad_flow_files.inc  rm -f ad_flow_files.inc
1809    
# Line 1805  CLEAN: Line 1839  CLEAN:
1839          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;
1840          -find \$(EXEDIR) -name "*.data" -exec rm {} \;          -find \$(EXEDIR) -name "*.data" -exec rm {} \;
1841          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;
1842          -rm -f \$(EXECUTABLE) output.txt          -rm -f \$(EXECUTABLE) output.txt STD*
1843    
1844  #eh3 Makefile: makefile  #eh3 Makefile: makefile
1845  makefile:  makefile:

Legend:
Removed from v.1.77  
changed lines
  Added in v.1.85

  ViewVC Help
Powered by ViewVC 1.1.22