/[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.76 by edhill, Thu Apr 8 21:32:11 2004 UTC revision 1.98 by edhill, Tue Sep 7 21:28:47 2004 UTC
# Line 97  EOF Line 97  EOF
97      RETVAL=$?      RETVAL=$?
98      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
99          if test "x$FS" = x ; then          if test "x$FS" = x ; then
100              FS='fs'              FS='for'
101              FS90='fs90'              FS90='fr9'
102              check_for_broken_Ff              check_for_broken_Ff
103          else          else
104              cat <<EOF 2>&1              cat <<EOF 2>&1
# Line 122  EOF Line 122  EOF
122        stop        stop
123        end        end
124  EOF  EOF
125      test -e Makefile  &&  mv -f Makefile Makefile.bak      test -f Makefile  &&  mv -f Makefile Makefile.bak
126      cat <<EOF >> Makefile      cat <<EOF >> Makefile
127    %.$tfs : %.F
128  .SUFFIXES:  .SUFFIXES:
129  genmake_hello.$tfs: genmake_hello.F  genmake_hello.$tfs: genmake_hello.F
130          $LN genmake_hello.F genmake_hello.$tfs          $LN genmake_hello.F genmake_hello.$tfs
131  EOF  EOF
132      $MAKE "genmake_hello."$tfs > /dev/null 2>&1      $MAKE "genmake_hello."$tfs > /dev/null 2>&1
133      RETVAL=$?      RETVAL=$?
134      if test "x$RETVAL" != x0 -o ! -e "genmake_hello."$tfs ; then      if test "x$RETVAL" != x0 -o ! -f "genmake_hello."$tfs ; then
135          if test "x$FS" = x ; then          if test "x$FS" = x ; then
136              FS='fs'              FS='for'
137              FS90='fs9'              FS90='fr9'
138              check_for_broken_Ff              check_for_broken_Ff
139          else          else
140              cat <<EOF 2>&1              cat <<EOF 2>&1
# Line 148  EOF Line 149  EOF
149          fi          fi
150      fi      fi
151      rm -f genmake_hello.* Makefile      rm -f genmake_hello.* Makefile
152      test -e Makefile  &&  mv -f Makefile.bak Makefile      test -f Makefile  &&  mv -f Makefile.bak Makefile
153    
154      #  If we make it here, use the extensions      #  If we make it here, use the extensions
155      FS=$tfs      FS=$tfs
# Line 157  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                build_cyrus_makedepend
199                RETVAL=$?
200                if test "x$RETVAL" != x0 ; then
201                    MAKEDEPEND='$(TOOLSDIR)/xmakedepend'
202                fi
203                rm -f ./genmake_cy_md
204            fi
205        else
206            #  echo "MAKEDEPEND=${MAKEDEPEND}"
207            echo "${MAKEDEPEND}" | grep -i cyrus > /dev/null 2>&1
208            RETVAL=$?
209            if test x"$RETVAL" = x0 ; then
210                build_cyrus_makedepend
211            fi
212        fi
213    }
214    
215    
216    build_cyrus_makedepend()  {
217        rm -f ./genmake_cy_md
218        (
219            cd $ROOTDIR/tools/cyrus-imapd-makedepend  \
220                &&  ./configure > /dev/null 2>&1  \
221                &&  make > /dev/null 2>&1
222            if test -x ./makedepend.exe ; then
223                $LN ./makedepend.exe ./makedepend
224            fi
225            ./makedepend ifparser.c > /dev/null 2>&1  \
226                &&  echo "true"
227        ) > ./genmake_cy_md
228        grep true ./genmake_cy_md > /dev/null 2>&1
229        RETVAL=$?
230        rm -f ./genmake_cy_md
231        if test "x$RETVAL" = x0 ; then
232            MAKEDEPEND='$(TOOLSDIR)/cyrus-imapd-makedepend/makedepend'
233            return 0
234        else
235            echo "WARNING: unable to build cyrus-imapd-makedepend"
236            return 1
237        fi
238    }
239    
240  # Guess possible config options for this host  # Guess possible config options for this host
241  find_possible_configs()  {  find_possible_configs()  {
242    
# Line 167  find_possible_configs()  { Line 247  find_possible_configs()  {
247      tmp2=`echo $tmp1 | sed -e 's/i[3-6]86/ia32/' | sed -e 's/athlon/ia32/'`      tmp2=`echo $tmp1 | sed -e 's/i[3-6]86/ia32/' | sed -e 's/athlon/ia32/'`
248      tmp3=`echo $tmp2 | sed -e 's/cray sv1/craysv1/'`      tmp3=`echo $tmp2 | sed -e 's/cray sv1/craysv1/'`
249      PLATFORM=$tmp3      PLATFORM=$tmp3
250        echo $PLATFORM | grep cygwin > /dev/null 2>&1  &&  PLATFORM=cygwin_ia32
251      OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`      OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`
252      echo "  The platform appears to be:  $PLATFORM"      echo "  The platform appears to be:  $PLATFORM"
253            
# Line 186  find_possible_configs()  { Line 267  find_possible_configs()  {
267          CPP="cpp -traditional -P"          CPP="cpp -traditional -P"
268      fi      fi
269    
270      #  The "original" makedepend is part of the Imake system that is      look_for_makedepend
271      #  most often distributed with XFree86 or with an XFree86 source  
272      #  package.  As a result, many machines (eg. generic Linux) do not      #================================================================
273      #  have a system-default "makedepend" available.  For those      #  look for possible C compilers
274      #  systems, we have two fall-back options:      tmp="$MITGCM_CC $CC gcc c89 cc c99 mpicc"
275      #      p_CC=
276      #    1) a makedepend implementation shipped with the cyrus-imapd      for c in $tmp ; do
277      #       package:  ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/          rm -f ./genmake_hello.c  ./genmake_hello
278      #          cat >> genmake_hello.c << EOF
279      #    2) a known-buggy xmakedpend shell script  #include <stdio.h>
280      #  int main(int argc, char **argv) {
281      #  So the choices are, in order:    printf("Hello!\n");
282      #    return 0;
283      #    1) use the user-specified program  }
284      #    2) use a system-wide default  EOF
285      #    3) locally build and use the cyrus implementation          $c -o genmake_hello genmake_hello.c > /dev/null 2>&1
286      #    4) fall back to the buggy local xmakedpend script          RETVAL=$?
287      #          if test "x${RETVAL}" = x0 ; then
288      if test "x${MAKEDEPEND}" = x ; then              p_CC="$p_CC $c"
289        which makedepend > /dev/null 2>&1          fi
290        RETVAL=$?      done
291        if test ! "x${RETVAL}" = x0 ; then      rm -f ./genmake_hello.c ./genmake_hello
292           echo "    a system-default makedepend was not found."      if test "x${p_CC}" = x ; then
293            cat 1>&2 <<EOF
294           #  Try to build the cyrus impl  
295           rm -f ./genmake_cy_md  Error: No C compilers were found in your path.  Please specify one using:
296           (  
297               cd $ROOTDIR/tools/cyrus-imapd-makedepend  \      1) an "optfile" on (eg. "-optfile=path/to/OPTFILE"),
298                   &&  ./configure > /dev/null 2>&1  \      2) the CC or MITGCM_CC environment variables.
299                   &&  make > /dev/null 2>&1  \  
300                   &&  ./makedepend ifparser.c > /dev/null 2>&1  \  EOF
301                   &&  echo "true"          exit 1
302           ) > ./genmake_cy_md      else
303           grep true ./genmake_cy_md > /dev/null 2>&1          echo "  The possible C compilers found in your path are:"
304           RETVAL=$?          echo "   "$p_CC
305           if test "x$RETVAL" = x0 ; then          if test "x$CC" = x ; then
306               MAKEDEPEND='$(TOOLSDIR)/cyrus-imapd-makedepend/makedepend'              CC=`echo $p_CC | $AWK '{print $1}'`
307           else              echo "  Setting C compiler to: "$CC
308               MAKEDEPEND='$(TOOLSDIR)/xmakedepend'          fi
          fi  
          rm -f ./genmake_cy_md  
       fi  
309      fi      fi
310    
311      # look for possible fortran compilers      #================================================================
312        #  look for possible FORTRAN compilers
313      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"
314      p_FC=      p_FC=
315      for c in $tmp ; do      for c in $tmp ; do
# Line 256  Error: No Fortran compilers were found i Line 335  Error: No Fortran compilers were found i
335    
336      1) an "optfile" on (eg. "-optfile=path/to/OPTFILE"),      1) an "optfile" on (eg. "-optfile=path/to/OPTFILE"),
337      2) a command-line option (eg. "-fc NAME"), or      2) a command-line option (eg. "-fc NAME"), or
338      3) the MITGCM_FC environment variable.      3) the FC or MITGCM_FC environment variables.
339    
340  EOF  EOF
341          exit 1          exit 1
# Line 358  Usage: "$0" [OPTIONS] Line 437  Usage: "$0" [OPTIONS]
437      -help | --help | -h | --h      -help | --help | -h | --h
438            Print this help message and exit.            Print this help message and exit.
439    
440        -adoptfile NAME | --adoptfile NAME | -adof NAME | --adof NAME
441          -adoptfile=NAME | --adoptfile=NAME | -adof=NAME | --adof=NAME
442              Use "NAME" as the adoptfile.  By default, the file at
443              "tools/adjoint_options/adjoint_default" will be used.
444    
445      -nooptfile | --nooptfile      -nooptfile | --nooptfile
446        -optfile NAME | --optfile NAME | -of NAME | --of NAME        -optfile NAME | --optfile NAME | -of NAME | --of NAME
447        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME
# Line 422  Usage: "$0" [OPTIONS] Line 506  Usage: "$0" [OPTIONS]
506            will search for a working compiler by trying a list of            will search for a working compiler by trying a list of
507            "usual suspects" such as g77, f77, etc.            "usual suspects" such as g77, f77, etc.
508    
509        -cc NAME | --cc NAME | -cc=NAME | --cc=NAME
510              Use "NAME" as the C compiler.  By default, genmake
511              will search for a working compiler by trying a list of
512              "usual suspects" such as gcc, c89, cc, etc.
513    
514      -[no]ieee | --[no]ieee      -[no]ieee | --[no]ieee
515            Do or don't use IEEE numerics.  Note that this option            Do or don't use IEEE numerics.  Note that this option
516            *only* works if it is supported by the OPTFILE that            *only* works if it is supported by the OPTFILE that
# Line 431  Usage: "$0" [OPTIONS] Line 520  Usage: "$0" [OPTIONS]
520            Include MPI header files and link to MPI libraries            Include MPI header files and link to MPI libraries
521      -mpi=PATH | --mpi=PATH      -mpi=PATH | --mpi=PATH
522            Include MPI header files and link to MPI libraries using MPI_ROOT            Include MPI header files and link to MPI libraries using MPI_ROOT
523            set to PATH. i.e. Include files from $PATH/include, link to libraries            set to PATH. i.e. Include files from \$PATH/include, link to libraries
524            from $PATH/lib and use binaries from $PATH/bin.            from \$PATH/lib and use binaries from \$PATH/bin.
525    
526      -bash NAME      -bash NAME
527            Explicitly specify the Bourne or BASH shell to use            Explicitly specify the Bourne or BASH shell to use
# Line 457  EOF Line 546  EOF
546    
547  #  Build a CPP macro to automate calling C routines from FORTRAN  #  Build a CPP macro to automate calling C routines from FORTRAN
548  get_fortran_c_namemangling()  {  get_fortran_c_namemangling()  {
549    
550        #echo "FC_NAMEMANGLE = \"$FC_NAMEMANGLE\""
551        if test ! "x$FC_NAMEMANGLE" = x ; then
552            return 0
553        fi
554    
555      default_nm="#define FC_NAMEMANGLE(X) X ## _"      default_nm="#define FC_NAMEMANGLE(X) X ## _"
556            
557      cat > genmake_test.c <<EOF      cat > genmake_test.c <<EOF
# Line 474  WARNING: Please contact <MITgcm-support@ Line 569  WARNING: Please contact <MITgcm-support@
569  EOF  EOF
570          return 1          return 1
571      fi      fi
572      c_tcall=`nm genmake_test.o | grep 'T ' | grep tcall | cut -d ' ' -f 3`      c_tcall=`nm genmake_test.o 2>/dev/null | grep 'T ' | grep tcall | cut -d ' ' -f 3`
573      RETVAL=$?      RETVAL=$?
574      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
575          FC_NAMEMANGLE=$default_nm          FC_NAMEMANGLE=$default_nm
# Line 504  WARNING: Please contact <MITgcm-support@ Line 599  WARNING: Please contact <MITgcm-support@
599  EOF  EOF
600          return 1          return 1
601      fi      fi
602      f_tcall=`nm genmake_tcomp.o | grep 'T ' | grep tcall | cut -d ' ' -f 3`      f_tcall=`nm genmake_tcomp.o 2>/dev/null | grep 'T ' | grep tcall | cut -d ' ' -f 3`
603      RETVAL=$?      RETVAL=$?
604      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
605          FC_NAMEMANGLE=$default_nm          FC_NAMEMANGLE=$default_nm
# Line 581  EOF Line 676  EOF
676    
677    
678  check_netcdf_libs()  {  check_netcdf_libs()  {
679        echo "" > genmake_tnc.log
680      cat <<EOF > genmake_tnc.for      cat <<EOF > genmake_tnc.for
681        program fgennc        program fgennc
682  #include "netcdf.inc"  #include "netcdf.inc"
# Line 593  check_netcdf_libs()  { Line 689  check_netcdf_libs()  {
689        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
690        end        end
691  EOF  EOF
692      $CPP genmake_tnc.for > genmake_tnc.f  \      #echo "$CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f"
693          &&  $FC $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.f $LIBS >> genmake_tnc.log 2>&1      #echo "$FC $FFLAGS $FOPTIM -c genmake_tnc.f"
694        #echo "$LINK -o genmake_tnc.o $LIBS"
695        $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f 2>/dev/null  \
696            &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.f  \
697            &&  $LINK -o genmake_tnc genmake_tnc.o $LIBS >> genmake_tnc.log 2>&1
698      RET_COMPILE=$?      RET_COMPILE=$?
699      test -x ./genmake_tnc  &&  ./genmake_tnc >> genmake_tnc.log 2>&1      test -x ./genmake_tnc  &&  ./genmake_tnc >> genmake_tnc.log 2>&1
700      RETVAL=$?      RETVAL=$?
# Line 602  EOF Line 702  EOF
702          HAVE_NETCDF=t          HAVE_NETCDF=t
703      else      else
704          # try again with "-lnetcdf" added to the libs          # try again with "-lnetcdf" added to the libs
705          $CPP genmake_tnc.for > genmake_tnc.f  \          $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f 2>/dev/null  \
706              &&  $FC $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.f \              &&  $FC $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.f \
707              $LIBS -lnetcdf >> genmake_tnc_2.log 2>&1              $LIBS -lnetcdf >> genmake_tnc_2.log 2>&1
708          RET_COMPILE=$?          RET_COMPILE=$?
# Line 632  LN= Line 732  LN=
732  S64=  S64=
733  KPP=  KPP=
734  FC=  FC=
735    #CC=gcc
736  CPP=  CPP=
737  LINK=  LINK=
738  DEFINES=  DEFINES=
# Line 639  PACKAGES= Line 740  PACKAGES=
740  ENABLE=  ENABLE=
741  DISABLE=  DISABLE=
742  MAKEFILE=  MAKEFILE=
743  MAKEDEPEND=  #MAKEDEPEND=
744  PDEPEND=  PDEPEND=
745  DUMPSTATE=t  DUMPSTATE=t
746  PDEFAULT=  PDEFAULT=
# Line 664  HAVE_FDATE= Line 765  HAVE_FDATE=
765  FC_NAMEMANGLE=  FC_NAMEMANGLE=
766  HAVE_CLOC=  HAVE_CLOC=
767  HAVE_NETCDF=  HAVE_NETCDF=
768    HAVE_ETIME=
769    
770  MODS=  MODS=
771  TOOLSDIR=  TOOLSDIR=
# Line 676  BASH= Line 778  BASH=
778  PWD=`pwd`  PWD=`pwd`
779  MAKE=make  MAKE=make
780  AWK=awk  AWK=awk
781  THISHOSTNAME=`hostname`  THISHOST=`hostname`
782  THISCWD=`pwd`  THISCWD=`pwd`
783  THISDATE=`date`  THISDATE=`date`
784    THISUSER=`echo $USER`
785    THISVER=
786  MACHINE=`uname -a`  MACHINE=`uname -a`
787  EXECUTABLE=  EXECUTABLE=
788  EXEHOOK=  EXEHOOK=
# Line 712  gm_s2="FC CPP IEEE MPI JAM DUMPSTATE STA Line 816  gm_s2="FC CPP IEEE MPI JAM DUMPSTATE STA
816  #  The following state is not directly set by command-line switches  #  The following state is not directly set by command-line switches
817  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPEND PDEPEND PDEFAULT INCLUDES FFLAGS FOPTIM "  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPEND PDEPEND PDEFAULT INCLUDES FFLAGS FOPTIM "
818  gm_s4="CFLAGS KFLAGS1 KFLAGS2 LIBS KPPFILES NOOPTFILES NOOPTFLAGS"  gm_s4="CFLAGS KFLAGS1 KFLAGS2 LIBS KPPFILES NOOPTFILES NOOPTFLAGS"
819  gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD MAKE THISHOSTNAME THISDATE MACHINE"  gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD MAKE THISHOST THISUSER THISDATE THISVER MACHINE"
820  gm_s6="EXECUTABLE EXEHOOK EXEDIR PACKAGES_CONF"  gm_s6="EXECUTABLE EXEHOOK EXEDIR PACKAGES_CONF"
821  gm_s7="HAVE_SYSTEM HAVE_FDATE FC_NAMEMANGLE"  gm_s7="HAVE_SYSTEM HAVE_FDATE FC_NAMEMANGLE HAVE_ETIME"
822    
823  #  The following are all related to adjoint/tangent-linear stuff  #  The following are all related to adjoint/tangent-linear stuff
824  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 744  for i in . $MODS ; do Line 848  for i in . $MODS ; do
848      fi      fi
849  done  done
850  printf "  getting local config information:  "  printf "  getting local config information:  "
851  if test -e $gm_local ; then  if test -f $gm_local ; then
852      echo "using $gm_local"      echo "using $gm_local"
853      . $gm_local      . $gm_local
854      # echo "DISABLE=$DISABLE"      # echo "DISABLE=$DISABLE"
# Line 765  fi Line 869  fi
869  #done  #done
870  #parse_options  #parse_options
871  ac_prev=  ac_prev=
872  for ac_option ; do  for ac_option in $@ ; do
873    
874      G2ARGS="$G2ARGS \"$ac_option\""      G2ARGS="$G2ARGS \"$ac_option\""
875    
# Line 861  for ac_option ; do Line 965  for ac_option ; do
965  #               ac_prev=cpp ;;  #               ac_prev=cpp ;;
966  #           -cpp=* | --cpp=*)  #           -cpp=* | --cpp=*)
967  #               CPP=$ac_optarg ;;  #               CPP=$ac_optarg ;;
968                        
969            -cc | --cc)
970                ac_prev=CC ;;
971            -cc=* | --cc=*)
972                CC=$ac_optarg ;;
973            
974          -fortran | --fortran | -fc | --fc)          -fortran | --fortran | -fc | --fc)
975              ac_prev=FC ;;              ac_prev=FC ;;
976          -fc=* | --fc=*)          -fc=* | --fc=*)
# Line 932  if test -f ./.genmakerc ; then Line 1041  if test -f ./.genmakerc ; then
1041      echo      echo
1042  fi  fi
1043    
1044    #  Find the MITgcm ${ROOTDIR}
1045  if test "x${ROOTDIR}" = x ; then  if test "x${ROOTDIR}" = x ; then
1046      if test "${PWD##/*/}" = "bin" -a -d ../model -a -d ../eesup -a -d ../pkg ; then      tmp=`echo $PWD | sed -e 's/\// /g' | awk '{print $NR}'`
1047        if test "x$tmp" = "xbin" -a -d ../model -a -d ../eesup -a -d ../pkg ; then
1048          ROOTDIR=".."          ROOTDIR=".."
1049      else      else
1050          for d in . .. ../.. ../../.. ../../../.. ../../../../.. ; do          for d in . .. ../.. ../../.. ../../../.. ../../../../.. ; do
# Line 957  if test ! -d ${ROOTDIR} ; then Line 1068  if test ! -d ${ROOTDIR} ; then
1068      exit 1      exit 1
1069  fi  fi
1070    
1071    #  Find the MITgcm ${THISVER}
1072    if test -f "${ROOTDIR}/doc/tag-index" ; then
1073        THISVER=`grep checkpoint ${ROOTDIR}/doc/tag-index | head -1`
1074    fi
1075    
1076  echo "  getting OPTFILE information:  "  echo "  getting OPTFILE information:  "
1077  if test "x${OPTFILE}" = x ; then  if test "x${OPTFILE}" = x ; then
1078      if test "x$MITGCM_OF" = x ; then      if test "x$MITGCM_OF" = x ; then
# Line 987  if test "x$OPTFILE" != xNONE ; then Line 1103  if test "x$OPTFILE" != xNONE ; then
1103  fi  fi
1104    
1105  #  Check for broken systems that cannot correctly distinguish *.F and *.f files  #  Check for broken systems that cannot correctly distinguish *.F and *.f files
1106  check_for_broken_Ff  # check_for_broken_Ff
1107    
1108  echo "  getting AD_OPTFILE information:  "  echo "  getting AD_OPTFILE information:  "
1109  if test "x${AD_OPTFILE}" = x ; then  if test "x${AD_OPTFILE}" = x ; then
# Line 1016  if test "x${AD_OPTFILE}" != xNONE ; then Line 1132  if test "x${AD_OPTFILE}" != xNONE ; then
1132      fi      fi
1133  fi  fi
1134    
1135  #  Check that FC, LINK, CPP, S64, LN, and MAKE are defined.  If not,  #  Check that FC, CC, LINK, CPP, S64, LN, and MAKE are defined.  If not,
1136  #  either set defaults or complain and abort!  #  either set defaults or complain and abort!
1137  if test ! "x$BASH" = x ; then  if test ! "x$BASH" = x ; then
1138      # add a trailing space so that it works within the Makefile syntax (see below)      # add a trailing space so that it works within the Makefile syntax (see below)
# Line 1032  Error: no Fortran compiler: please speci Line 1148  Error: no Fortran compiler: please speci
1148  EOF  EOF
1149      exit 1      exit 1
1150  fi  fi
1151    if test "x$CC" = x ; then
1152        CC=cc
1153    #     cat <<EOF 1>&2
1154    # Error: no C compiler: please specify using one of the following:
1155    #   1) within the options file ("CC=...") as specified by "-of=OPTFILE"
1156    #   2) the "-cc=XXX" command-line option
1157    #   3) the "./genmake_local" file
1158    # EOF
1159    #     exit 1
1160    fi
1161  if test "x$LINK" = x ; then  if test "x$LINK" = x ; then
1162      LINK=$FC      LINK=$FC
1163  fi  fi
# Line 1066  EOF Line 1192  EOF
1192  else  else
1193      rm -f test_cpp      rm -f test_cpp
1194  fi  fi
1195  if test "x$MAKEDEPEND" = x ; then  look_for_makedepend
     MAKEDEPEND=makedepend  
 fi  
1196  if test "x$LN" = x ; then  if test "x$LN" = x ; then
1197      LN="ln -s"      LN="ln -s"
1198  fi  fi
# Line 1086  EOF Line 1210  EOF
1210  fi  fi
1211  rm -f genmake_test_ln genmake_tlink  rm -f genmake_test_ln genmake_tlink
1212    
1213    #  Check for broken *.F/*.f handling and fix if possible
1214    check_for_broken_Ff
1215    
1216  if test ! "x$MPI" = x ; then  if test ! "x$MPI" = x ; then
1217        echo "  Turning on MPI cpp macros"        echo "  Turning on MPI cpp macros"
1218        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"
# Line 1131  else Line 1258  else
1258  fi  fi
1259  rm -f genmake_tcomp*  rm -f genmake_tcomp*
1260    
1261    printf "  Do we have the etime() command using $FC...  "
1262    cat > genmake_tcomp.f <<EOF
1263          program hello
1264          REAL*4 ACTUAL, TARRAY(2)
1265          EXTERNAL ETIME
1266          REAL*4 ETIME
1267          actual = etime( tarray )
1268          print *, tarray
1269          end
1270    EOF
1271    $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.f > genmake_tcomp.log 2>&1
1272    RETVAL=$?
1273    if test "x$RETVAL" = x0 ; then
1274        HAVE_ETIME=t
1275        DEFINES="$DEFINES -DHAVE_ETIME"
1276        echo "yes"
1277    else
1278        HAVE_ETIME=
1279        echo "no"
1280    fi
1281    rm -f genmake_tcomp*
1282    
1283  printf "  Can we call simple C routines (here, \"cloc()\") using $FC...  "  printf "  Can we call simple C routines (here, \"cloc()\") using $FC...  "
1284  check_HAVE_CLOC  check_HAVE_CLOC
1285  if test "x$HAVE_CLOC" != x ; then  if test "x$HAVE_CLOC" != x ; then
# Line 1172  if test "x${PLATFORM}" = x ; then Line 1321  if test "x${PLATFORM}" = x ; then
1321  fi  fi
1322    
1323  if test "x${EXEDIR}" = x ; then  if test "x${EXEDIR}" = x ; then
1324      if test "${PWD##/*/}" = "bin" -a -d ../exe -a $ROOTDIR = .. ; then      tmp=`echo $PWD | sed -e 's/\// /g' | awk '{print $NR}'`
1325        if test "x$tmp" = "xbin" -a -d ../exe -a $ROOTDIR = .. ; then
1326          EXEDIR=../exe          EXEDIR=../exe
1327      else      else
1328          EXEDIR=.          EXEDIR=.
# Line 1290  else Line 1440  else
1440              PACKAGES="$PACKAGES $i"              PACKAGES="$PACKAGES $i"
1441          done          done
1442          echo "    before group expansion packages are: $PACKAGES"          echo "    before group expansion packages are: $PACKAGES"
1443          while ! expand_pkg_groups; do echo > /dev/null; done          RET=1
1444            while test $RET = 1 ; do expand_pkg_groups; RET=$?; done
1445          echo "    after group expansion packages are:  $PACKAGES"          echo "    after group expansion packages are:  $PACKAGES"
1446      fi      fi
1447  fi  fi
# Line 1399  while test "x$ck" != xtt ; do Line 1550  while test "x$ck" != xtt ; do
1550              echo "  the dependency rules for \"$dname\""              echo "  the dependency rules for \"$dname\""
1551              exit 1              exit 1
1552          fi          fi
1553          i=$(( $i + 1 ))          i=`echo "$i + 1" | bc -l`
1554            #i=$(( $i + 1 ))
1555      done      done
1556      ck=$ck"t"      ck=$ck"t"
1557  done  done
# Line 1561  echo Line 1713  echo
1713  echo "===  Creating the Makefile  ==="  echo "===  Creating the Makefile  ==="
1714  echo "  setting INCLUDES"  echo "  setting INCLUDES"
1715  for i in $INCLUDEDIRS ; do  for i in $INCLUDEDIRS ; do
1716      if ! test -d $i ; then      if test ! -d $i ; then
 #       INCLUDES="$INCLUDES -I$i"  
 #   else  
1717          echo "Warning: can't find INCLUDEDIRS=\"$i\""          echo "Warning: can't find INCLUDEDIRS=\"$i\""
1718      fi      fi
1719  done  done
# Line 1593  for d in $alldirs ; do Line 1743  for d in $alldirs ; do
1743                          ;;                          ;;
1744                    ./FC_NAMEMANGLE.h)                    ./FC_NAMEMANGLE.h)
1745                          ;;                          ;;
1746                      ./BUILD_INFO.h)
1747                            ;;
1748                    *)                    *)
1749                          touch .links.tmp/$sf                          touch .links.tmp/$sf
1750                          deplist="$deplist $sf"                          deplist="$deplist $sf"
# Line 1638  echo "" >> f90srclist.inc Line 1790  echo "" >> f90srclist.inc
1790  echo "" >> hlist.inc  echo "" >> hlist.inc
1791  echo "" >> ad_flow_files.inc  echo "" >> ad_flow_files.inc
1792    
1793  if test -e $MAKEFILE ; then  if test -f $MAKEFILE ; then
1794      mv -f $MAKEFILE "$MAKEFILE.bak"      mv -f $MAKEFILE "$MAKEFILE.bak"
1795  fi  fi
1796  echo "  Writing makefile: $MAKEFILE"  echo "  Writing makefile: $MAKEFILE"
# Line 1649  echo "#    $THISDATE" >> $MAKEFILE Line 1801  echo "#    $THISDATE" >> $MAKEFILE
1801  echo "# by the command:" >> $MAKEFILE  echo "# by the command:" >> $MAKEFILE
1802  echo "#    $0 $G2ARGS" >> $MAKEFILE  echo "#    $0 $G2ARGS" >> $MAKEFILE
1803  echo "# executed by:" >> $MAKEFILE  echo "# executed by:" >> $MAKEFILE
1804  echo "#    $USER@${THISHOSTNAME}:${THISCWD}" >> $MAKEFILE  echo "#    ${THISUSER}@${THISHOST}:${THISCWD}" >> $MAKEFILE
1805    
1806  EXE_AD=$EXECUTABLE"_ad"  EXE_AD=$EXECUTABLE"_ad"
1807  EXE_FTL=$EXECUTABLE"_ftl"  EXE_FTL=$EXECUTABLE"_ftl"
# Line 1695  ENABLED_PACKAGES = ${ENABLED_PACKAGES} Line 1847  ENABLED_PACKAGES = ${ENABLED_PACKAGES}
1847  DISABLED_PACKAGES = ${DISABLED_PACKAGES}  DISABLED_PACKAGES = ${DISABLED_PACKAGES}
1848    
1849  # These files are created by Makefile  # These files are created by Makefile
1850  SPECIAL_FILES = ${PACKAGES_DOT_H} AD_CONFIG.h FC_NAMEMANGLE.h  SPECIAL_FILES = ${PACKAGES_DOT_H} AD_CONFIG.h FC_NAMEMANGLE.h BUILD_INFO.h
1851    
1852  EOF  EOF
1853    
# Line 1714  KPP = ${KPP} Line 1866  KPP = ${KPP}
1866  FC = ${FC}  FC = ${FC}
1867  # Fortran compiler  # Fortran compiler
1868  F90C = ${F90C}  F90C = ${F90C}
1869    # C compiler
1870    CC = ${CC}
1871  # Link editor  # Link editor
1872  LINK = ${LINK} ${LDADD}  LINK = ${LINK} ${LDADD}
1873    
# Line 1753  echo 'F90FILES =  $(F90SRCFILES:.F=.'$FS Line 1907  echo 'F90FILES =  $(F90SRCFILES:.F=.'$FS
1907  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE
1908  echo >> $MAKEFILE  echo >> $MAKEFILE
1909  echo '.SUFFIXES:' >> $MAKEFILE  echo '.SUFFIXES:' >> $MAKEFILE
1910  echo '.SUFFIXES: .o .F .p .'$FS' .c .F90 .'$FS90 >> $MAKEFILE  echo '.SUFFIXES: .o .'$FS' .p .F .c .'$FS90' .F90' >> $MAKEFILE
1911  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
1912  rm -f ad_flow_files.inc  rm -f ad_flow_files.inc
1913    
# Line 1789  CLEAN: Line 1943  CLEAN:
1943          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;
1944          -find \$(EXEDIR) -name "*.data" -exec rm {} \;          -find \$(EXEDIR) -name "*.data" -exec rm {} \;
1945          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;
1946          -rm -f \$(EXECUTABLE) output.txt          -rm -f \$(EXECUTABLE) output.txt STD*
1947    
1948  #eh3 Makefile: makefile  #eh3 Makefile: makefile
1949  makefile:  makefile:
# Line 1797  makefile: Line 1951  makefile:
1951  cleanlinks:  cleanlinks:
1952          -find . -type l -exec rm {} \;          -find . -type l -exec rm {} \;
1953    
1954  # Special targets ($SPECIAL_FILES) which are create by make  # Special targets (SPECIAL_FILES) which are create by make
1955  ${PACKAGES_DOT_H}:  ${PACKAGES_DOT_H}:
1956          @echo Creating \$@ ...          @echo Creating \$@ ...
1957          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bPACKAGES_CONFIG_H "Disabled packages:" \$(DISABLED_PACKAGES) " " "Enabled packages:" \$(ENABLED_PACKAGES) > \$@          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bPACKAGES_CONFIG_H "Disabled packages:" \$(DISABLED_PACKAGES) " " "Enabled packages:" \$(ENABLED_PACKAGES) > \$@
# Line 1808  FC_NAMEMANGLE.h: Line 1962  FC_NAMEMANGLE.h:
1962          @echo Creating \$@ ...          @echo Creating \$@ ...
1963          echo "$FC_NAMEMANGLE" > \$@          echo "$FC_NAMEMANGLE" > \$@
1964    
1965    BUILD_INFO.h:
1966            @echo Creating \$@ ...
1967    EOF
1968    
1969    test ! "x$THISVER" = x  && echo "       -echo \"#define THISVER '$THISVER'\" > \$@"   >> $MAKEFILE
1970    test ! "x$THISUSER" = x && echo "       -echo \"#define THISUSER '$THISUSER'\" >> \$@" >> $MAKEFILE
1971    test ! "x$THISDATE" = x && echo "       -echo \"#define THISDATE '$THISDATE'\" >> \$@" >> $MAKEFILE
1972    test ! "x$THISHOST" = x && echo "       -echo \"#define THISHOST '$THISHOST'\" >> \$@" >> $MAKEFILE
1973    
1974    cat >>$MAKEFILE <<EOF
1975    
1976  # The normal chain of rules is (  .F - .$FS - .o  )  # The normal chain of rules is (  .F - .$FS - .o  )
1977    
1978  %.o : %.F  %.o : %.F

Legend:
Removed from v.1.76  
changed lines
  Added in v.1.98

  ViewVC Help
Powered by ViewVC 1.1.22