/[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.99 by edhill, Mon Sep 27 15:49:48 2004 UTC revision 1.135 by edhill, Thu Nov 17 20:06:08 2005 UTC
# Line 122  EOF Line 122  EOF
122        stop        stop
123        end        end
124  EOF  EOF
125      test -f Makefile  &&  mv -f Makefile Makefile.bak      test -f $MAKEFILE  &&  mv -f $MAKEFILE $MAKEFILE".tst"
126      cat <<EOF >> Makefile      cat <<EOF >> $MAKEFILE
 %.$tfs : %.F  
127  .SUFFIXES:  .SUFFIXES:
128  genmake_hello.$tfs: genmake_hello.F  .SUFFIXES: .$tfs .F
129          $LN genmake_hello.F genmake_hello.$tfs  .F.$tfs:
130            $LN \$< \$@
131  EOF  EOF
132      $MAKE "genmake_hello."$tfs > /dev/null 2>&1      $MAKE "genmake_hello."$tfs > /dev/null 2>&1
133      RETVAL=$?      RETVAL=$?
# Line 148  EOF Line 148  EOF
148              return              return
149          fi          fi
150      fi      fi
151      rm -f genmake_hello.* Makefile      rm -f genmake_hello.* $MAKEFILE
152      test -f Makefile  &&  mv -f Makefile.bak Makefile      test -f $MAKEFILE".tst"  &&  mv -f $MAKEFILE".tst" $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 181  look_for_makedepend()  { Line 181  look_for_makedepend()  {
181      if test "x${MAKEDEPEND}" = x ; then      if test "x${MAKEDEPEND}" = x ; then
182          which makedepend > /dev/null 2>&1          which makedepend > /dev/null 2>&1
183          RV0=$?          RV0=$?
184            test -f $MAKEFILE  &&  mv -f $MAKEFILE $MAKEFILE".tst"
185            #  echo 'MAKEFILE="'$MAKEFILE'"'
186            cat <<EOF >> $MAKEFILE
187    #   THIS IS A TEST MAKEFILE GENERATED BY "genmake2"
188    #
189    #   Some "makedepend" implementations will die if they cannot
190    #   find a Makefile -- so this file is here to gives them an
191    #   empty one to find and parse.
192    EOF
193          cat <<EOF >> genmake_tc.f          cat <<EOF >> genmake_tc.f
194        program test        program test
195        write(*,*) 'test'        write(*,*) 'test'
# Line 189  look_for_makedepend()  { Line 198  look_for_makedepend()  {
198  EOF  EOF
199          makedepend genmake_tc.f > /dev/null 2>&1          makedepend genmake_tc.f > /dev/null 2>&1
200          RV1=$?          RV1=$?
201            test -f $MAKEFILE  &&  rm -f $MAKEFILE
202            test -f $MAKEFILE".tst"  &&  mv -f $MAKEFILE".tst" $MAKEFILE
203          if test "x${RV0}${RV1}" = x00 ; then          if test "x${RV0}${RV1}" = x00 ; then
204              MAKEDEPEND=makedepend              MAKEDEPEND=makedepend
205          else          else
# Line 310  EOF Line 321  EOF
321    
322      #================================================================      #================================================================
323      #  look for possible FORTRAN compilers      #  look for possible FORTRAN compilers
324      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 gfortran"
325      p_FC=      p_FC=
326      for c in $tmp ; do      for c in $tmp ; do
327          rm -f ./hello.f ./hello          rm -f ./hello.f ./hello
# Line 516  Usage: "$0" [OPTIONS] Line 527  Usage: "$0" [OPTIONS]
527            *only* works if it is supported by the OPTFILE that            *only* works if it is supported by the OPTFILE that
528            is being used.            is being used.
529    
530        -ts | --ts
531              Produce timing information per timestep
532    
533      -mpi | --mpi      -mpi | --mpi
534            Include MPI header files and link to MPI libraries            Include MPI header files and link to MPI libraries
535      -mpi=PATH | --mpi=PATH      -mpi=PATH | --mpi=PATH
# Line 581  WARNING: Please contact <MITgcm-support@ Line 595  WARNING: Please contact <MITgcm-support@
595  EOF  EOF
596          return 1          return 1
597      fi      fi
598      cat > genmake_tcomp.f <<EOF      cat > genmake_tcomp.$FS <<EOF
599        subroutine tcall( string )        subroutine tcall( string )
600        character*(*) string        character*(*) string
601        call tsub( string )        call tsub( string )
602        end        end
603  EOF  EOF
604      $FC $FFLAGS $DEFINES -c genmake_tcomp.f >> genmake_warnings 2>&1      $FC $FFLAGS -c genmake_tcomp.$FS >> genmake_warnings 2>&1
605      RETVAL=$?      RETVAL=$?
606      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
607          FC_NAMEMANGLE=$default_nm          FC_NAMEMANGLE=$default_nm
# Line 653  void FC_NAMEMANGLE(cloc) ( double *curti Line 667  void FC_NAMEMANGLE(cloc) ( double *curti
667   *curtim = *curtim/1.E6;   *curtim = *curtim/1.E6;
668  }  }
669  EOF  EOF
670      make genmake_tc_1.o >> genmake_tc.log 2>&1      make genmake_tc_1.o >> genmake_warnings 2>&1
671      RET_C=$?      RET_C=$?
672      cat <<EOF > genmake_tc_2.f      cat <<EOF > genmake_tc_2.$FS
673        program hello        program hello
674        Real*8 wtime        REAL*8 wtime
675        external cloc        external cloc
676        call cloc(wtime)        call cloc(wtime)
677        print *," HELLO WORLD", wtime        print *," HELLO WORLD", wtime
678        end program hello        end
679  EOF  EOF
680      $FC $FFLAGS -o genmake_tc genmake_tc_2.f genmake_tc_1.o >> genmake_tc.log 2>&1      $FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o >> genmake_warnings 2>&1
681      RET_F=$?      RET_F=$?
682      test -x ./genmake_tc  &&  ./genmake_tc >> genmake_tc.log 2>&1      test -x ./genmake_tc  &&  ./genmake_tc >> genmake_warnings 2>&1
683      RETVAL=$?      RETVAL=$?
684      if test "x$RETVAL" = x0 ; then      if test "x$RETVAL" = x0 ; then
685          HAVE_CLOC=t          HAVE_CLOC=t
# Line 675  EOF Line 689  EOF
689  }  }
690    
691    
692    check_HAVE_SETRLSTK()  {
693        get_fortran_c_namemangling
694        cat <<EOF > genmake_tc_1.c
695    $FC_NAMEMANGLE
696    #include <sys/time.h>
697    #include <sys/resource.h>
698    #include <unistd.h>
699    void FC_NAMEMANGLE(setrlstk) ()
700    {
701        struct rlimit rls;
702        rls.rlim_cur = RLIM_INFINITY;
703        rls.rlim_max = RLIM_INFINITY;
704        setrlimit(RLIMIT_STACK, &rls);
705        return;
706    }
707    EOF
708        make genmake_tc_1.o >> genmake_warnings 2>&1
709        RET_C=$?
710        cat <<EOF > genmake_tc_2.$FS
711          program hello
712          external setrlstk
713          call setrlstk()
714          end
715    EOF
716        echo >> genmake_warnings
717        echo "running: check_HAVE_SETRLSTK()" >> genmake_warnings
718        cat genmake_tc_2.$FS >> genmake_warnings
719        COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"
720        echo $COMM >> genmake_warnings
721        $COMM >> genmake_warnings 2>&1
722        RETVAL=$?
723        if test "x$RETVAL" = x0 ; then
724            HAVE_SETRLSTK=t
725            DEFINES="$DEFINES -DHAVE_SETRLSTK"
726        fi
727        rm -f genmake_tc*
728    }
729    
730    
731    check_HAVE_STAT()  {
732        get_fortran_c_namemangling
733        cat <<EOF > genmake_tc_1.c
734    $FC_NAMEMANGLE
735    #include <stdio.h>
736    #include <stdlib.h>
737    #include <unistd.h>
738    #include <sys/stat.h>
739    #include <sys/types.h>
740    void FC_NAMEMANGLE(tfsize) ( int *nbyte )
741    {
742        char name[512];
743        struct stat astat;
744    
745        name[0] = 'a'; name[1] = '\0';
746        if (! stat(name, &astat))
747            *nbyte = (int)(astat.st_size);
748        else
749            *nbyte = -1;
750    }
751    EOF
752        make genmake_tc_1.o >> genmake_tc.log 2>&1
753        RET_C=$?
754        cat <<EOF > genmake_tc_2.$FS
755          program hello
756          integer nbyte
757          call tfsize(nbyte)
758          print *," HELLO WORLD", nbyte
759          end
760    EOF
761        echo >> genmake_warnings
762        echo "running: check_HAVE_STAT()" >> genmake_warnings
763        cat genmake_tc_2.$FS >> genmake_warnings
764        COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"
765        echo $COMM >> genmake_warnings
766        $COMM >> genmake_tc.log 2>&1
767        RETVAL=$?
768        if test "x$RETVAL" = x0 ; then
769            HAVE_STAT=t
770            DEFINES="$DEFINES -DHAVE_STAT"
771        fi
772        rm -f genmake_tc*
773    }
774    
775    
776  check_netcdf_libs()  {  check_netcdf_libs()  {
777      echo "" > genmake_tnc.log      if test ! "x$SKIP_NETCDF_CHECK" = x ; then
778      cat <<EOF > genmake_tnc.for          return
779        fi
780        echo >> genmake_warnings
781        echo "running: check_netcdf_libs()" >> genmake_warnings
782        cat <<EOF > genmake_tnc.F
783        program fgennc        program fgennc
784  #include "netcdf.inc"  #include "netcdf.inc"
785    EOF
786        if test ! "x$MPI" = x ; then
787            echo '#include "mpif.h"' >> genmake_tnc.F
788        fi
789        cat <<EOF >> genmake_tnc.F
790        integer iret, ncid, xid        integer iret, ncid, xid
791        iret = nf_create('genmake_tnc.nc', NF_CLOBBER, ncid)        iret = nf_create('genmake_tnc.nc', NF_CLOBBER, ncid)
792        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
# Line 689  check_netcdf_libs()  { Line 796  check_netcdf_libs()  {
796        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
797        end        end
798  EOF  EOF
799      #echo "$CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f"      echo "===  genmake_tnc.F  ===" > genmake_tnc.log
800      #echo "$FC $FFLAGS $FOPTIM -c genmake_tnc.f"      cat genmake_tnc.F >> genmake_tnc.log
801      #echo "$LINK -o genmake_tnc.o $LIBS"      echo "===  genmake_tnc.F  ===" >> genmake_tnc.log
802      $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f 2>/dev/null  \      RET_CPP=f
803          &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.f >> genmake_tnc.log 2>&1  \      COMM="$CPP $DEFINES $INCLUDES genmake_tnc.F"
804        echo "$COMM" >> genmake_tnc.log
805        $COMM > genmake_tnc.$FS 2>/dev/null  &&  RET_CPP=t
806        if test "x$RET_CPP" = xf ; then
807            echo "  WARNING: CPP failed to pre-process the netcdf test." \
808                >> genmake_tnc.log
809            echo "    Please check that \$INCLUDES is properly set." \
810                >> genmake_tnc.log
811        fi
812        echo "$FC $FFLAGS $FOPTIM -c genmake_tnc.$FS  \ " >> genmake_tnc.log
813        echo "  &&  $LINK -o genmake_tnc.o $LIBS" >> genmake_tnc.log
814        $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
815          &&  $LINK -o genmake_tnc genmake_tnc.o $LIBS >> genmake_tnc.log 2>&1          &&  $LINK -o genmake_tnc genmake_tnc.o $LIBS >> genmake_tnc.log 2>&1
816      RET_COMPILE=$?      RET_COMPILE=$?
817        cat genmake_tnc.log >> genmake_warnings
818    
819      #EH3  Remove test program execution for machines that either disallow      #EH3  Remove test program execution for machines that either disallow
820      #EH3  execution or cannot support it (eg. cross-compilers)      #EH3  execution or cannot support it (eg. cross-compilers)
# Line 708  EOF Line 827  EOF
827          HAVE_NETCDF=t          HAVE_NETCDF=t
828      else      else
829          # try again with "-lnetcdf" added to the libs          # try again with "-lnetcdf" added to the libs
830          $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f 2>/dev/null  \          echo "try again with added '-lnetcdf'" > genmake_tnc.log
831              &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.f >> genmake_tnc.log 2>&1  \          echo "$CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS \ " >> genmake_tnc.log
832            echo " &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS \ " >> genmake_tnc.log
833            echo " &&  $LINK -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf" >> genmake_tnc.log
834            $CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS 2>/dev/null  \
835                &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
836              &&  $LINK -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf >> genmake_tnc.log 2>&1              &&  $LINK -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf >> genmake_tnc.log 2>&1
837          RET_COMPILE=$?          RET_COMPILE=$?
838            cat genmake_tnc.log >> genmake_warnings
839          if test "x$RET_COMPILE" = x0 ; then          if test "x$RET_COMPILE" = x0 ; then
840              LIBS="$LIBS -lnetcdf"              LIBS="$LIBS -lnetcdf"
841              HAVE_NETCDF=t              HAVE_NETCDF=t
         else  
             cat genmake_tnc.log >> genmake_warnings  
842          fi          fi
843      fi      fi
844      rm -f genmake_tnc*      rm -f genmake_tnc*
# Line 735  PLATFORM= Line 857  PLATFORM=
857  LN=  LN=
858  S64=  S64=
859  KPP=  KPP=
860  FC=  #FC=
861  #CC=gcc  #CC=gcc
862  CPP=  #CPP=
863  LINK=  LINK=
864  DEFINES=  DEFINES=
865  PACKAGES=  PACKAGES=
866  ENABLE=  ENABLE=
867  DISABLE=  DISABLE=
868  MAKEFILE=  # MAKEFILE=
869  #MAKEDEPEND=  # MAKEDEPEND=
870  PDEPEND=  PDEPEND=
871  DUMPSTATE=t  DUMPSTATE=t
872  PDEFAULT=  PDEFAULT=
873  OPTFILE=  OPTFILE=
874  INCLUDES="-I."  INCLUDES="-I. $INCLUDES"
875  FFLAGS=  FFLAGS=
876  FOPTIM=  FOPTIM=
877  CFLAGS=  CFLAGS=
# Line 762  NOOPTFILES= Line 884  NOOPTFILES=
884  NOOPTFLAGS=  NOOPTFLAGS=
885  MPI=  MPI=
886  MPIPATH=  MPIPATH=
887    TS=
888    HAVE_TEST_L=
889    
890  # DEFINES checked by test compilation  # DEFINES checked by test compilation or command-line
891  HAVE_SYSTEM=  HAVE_SYSTEM=
892  HAVE_FDATE=  HAVE_FDATE=
893  FC_NAMEMANGLE=  FC_NAMEMANGLE=
894  HAVE_CLOC=  HAVE_CLOC=
895    HAVE_SETRLSTK=
896    HAVE_STAT=
897  HAVE_NETCDF=  HAVE_NETCDF=
898  HAVE_ETIME=  HAVE_ETIME=
899    IGNORE_TIME=
900    
901  MODS=  MODS=
902  TOOLSDIR=  TOOLSDIR=
# Line 780  STANDARDDIRS="USE_THE_DEFAULT" Line 907  STANDARDDIRS="USE_THE_DEFAULT"
907  G2ARGS=  G2ARGS=
908  BASH=  BASH=
909  PWD=`pwd`  PWD=`pwd`
910  MAKE=make  test "x$MAKE" = x  &&  MAKE=make
911  AWK=awk  test "x$AWK" = x   &&  AWK=awk
912  THISHOST=`hostname`  THISHOST=`hostname`
913  THISCWD=`pwd`  THISCWD=`pwd`
914  THISDATE=`date`  THISDATE=`date`
# Line 815  TAMC_EXTRA= Line 942  TAMC_EXTRA=
942    
943  #  The following state can be set directly by command-line switches  #  The following state can be set directly by command-line switches
944  gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE"  gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE"
945  gm_s2="FC CPP IEEE MPI JAM DUMPSTATE STANDARDDIRS"  gm_s2="FC CPP IEEE TS MPI JAM DUMPSTATE STANDARDDIRS"
946    
947  #  The following state is not directly set by command-line switches  #  The following state is not directly set by command-line switches
948  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 "
# Line 861  else Line 988  else
988      echo "none found"      echo "none found"
989  fi  fi
990    
991  #  echo "$0::$1:$2:$3:$4:$5:$6:$7:"  #echo "$0::$1:$2:$3:$4:$5:$6:$7:"
992  #OPTIONS=  #OPTIONS=
993  #n=0  #n=0
994  #for i ; do  #for i ; do
# Line 873  fi Line 1000  fi
1000  #done  #done
1001  #parse_options  #parse_options
1002  ac_prev=  ac_prev=
1003  for ac_option in $@ ; do  for ac_option in "$@" ; do
1004    
1005      G2ARGS="$G2ARGS \"$ac_option\""      G2ARGS="$G2ARGS \"$ac_option\""
1006    
# Line 995  for ac_option in $@ ; do Line 1122  for ac_option in $@ ; do
1122          -noieee | --noieee)          -noieee | --noieee)
1123              IEEE= ;;              IEEE= ;;
1124    
1125            -ts | --ts)
1126                TS=true ;;
1127    
1128          -mpi | --mpi)          -mpi | --mpi)
1129              MPI=true ;;              MPI=true ;;
1130          -mpi=* | --mpi=*)          -mpi=* | --mpi=*)
# Line 1018  for ac_option in $@ ; do Line 1148  for ac_option in $@ ; do
1148              ac_prev=TAMC_EXTRA ;;              ac_prev=TAMC_EXTRA ;;
1149          -tamc_extra=* | --tamc_extra=*)          -tamc_extra=* | --tamc_extra=*)
1150              TAMC_EXTRA=$ac_optarg ;;              TAMC_EXTRA=$ac_optarg ;;
1151            
1152            -ignoretime | -ignore_time | --ignoretime | --ignore_time)
1153                IGNORE_TIME="-DIGNORE_TIME" ;;
1154    
1155          -*)          -*)
1156              echo "Error: unrecognized option: "$ac_option              echo "Error: unrecognized option: "$ac_option
# Line 1033  for ac_option in $@ ; do Line 1166  for ac_option in $@ ; do
1166            
1167  done  done
1168    
1169    
1170  if test -f ./.genmakerc ; then  if test -f ./.genmakerc ; then
1171      echo      echo
1172      echo "WARNING: genmake2 has detected a copy of the old-style \"./.genmakerc\""      echo "WARNING: genmake2 has detected a copy of the old-style \"./.genmakerc\""
# Line 1047  fi Line 1181  fi
1181    
1182  #  Find the MITgcm ${ROOTDIR}  #  Find the MITgcm ${ROOTDIR}
1183  if test "x${ROOTDIR}" = x ; then  if test "x${ROOTDIR}" = x ; then
1184      tmp=`echo $PWD | sed -e 's/\// /g' | awk '{print $NR}'`      tmp=`echo $PWD | sed -e 's/\// /g' | $AWK '{print $NR}'`
1185      if test "x$tmp" = "xbin" -a -d ../model -a -d ../eesup -a -d ../pkg ; then      if test "x$tmp" = "xbin" -a -d ../model -a -d ../eesup -a -d ../pkg ; then
1186          ROOTDIR=".."          ROOTDIR=".."
1187      else      else
# Line 1074  fi Line 1208  fi
1208    
1209  #  Find the MITgcm ${THISVER}  #  Find the MITgcm ${THISVER}
1210  if test -f "${ROOTDIR}/doc/tag-index" ; then  if test -f "${ROOTDIR}/doc/tag-index" ; then
1211      THISVER=`grep checkpoint ${ROOTDIR}/doc/tag-index | head -1`      THISVER=`grep '^checkpoint' ${ROOTDIR}/doc/tag-index | head -1`
1212    fi
1213    
1214    if test "x$MAKEFILE" = x ; then
1215        MAKEFILE="Makefile"
1216  fi  fi
1217    
1218  echo "  getting OPTFILE information:  "  echo "  getting OPTFILE information:  "
# Line 1106  if test "x$OPTFILE" != xNONE ; then Line 1244  if test "x$OPTFILE" != xNONE ; then
1244      fi      fi
1245  fi  fi
1246    
 #  Check for broken systems that cannot correctly distinguish *.F and *.f files  
 # check_for_broken_Ff  
   
1247  echo "  getting AD_OPTFILE information:  "  echo "  getting AD_OPTFILE information:  "
1248  if test "x${AD_OPTFILE}" = x ; then  if test "x${AD_OPTFILE}" = x ; then
1249      if test "x$MITGCM_AD_OF" = x ; then      if test "x$MITGCM_AD_OF" = x ; then
# Line 1136  if test "x${AD_OPTFILE}" != xNONE ; then Line 1271  if test "x${AD_OPTFILE}" != xNONE ; then
1271      fi      fi
1272  fi  fi
1273    
1274    #====================================================================
1275    #  Set default values if not set by the optfile
1276    #
1277  #  Check that FC, CC, LINK, CPP, S64, LN, and MAKE are defined.  If not,  #  Check that FC, CC, LINK, CPP, S64, LN, and MAKE are defined.  If not,
1278  #  either set defaults or complain and abort!  #  either set defaults or complain and abort!
1279  if test ! "x$BASH" = x ; then  if test ! "x$BASH" = x ; then
# Line 1212  Error: The command "ln -s" failed -- ple Line 1350  Error: The command "ln -s" failed -- ple
1350  EOF  EOF
1351      exit 1      exit 1
1352  fi  fi
1353    test -L genmake_tlink > /dev/null 2>&1
1354    RETVAL=$?
1355    if test "x$RETVAL" = x0 ; then
1356        HAVE_TEST_L=t
1357    fi
1358  rm -f genmake_test_ln genmake_tlink  rm -f genmake_test_ln genmake_tlink
1359    
1360  #  Check for broken *.F/*.f handling and fix if possible  #  Check for broken *.F/*.f handling and fix if possible
# Line 1222  if test ! "x$MPI" = x ; then Line 1365  if test ! "x$MPI" = x ; then
1365        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"
1366  fi  fi
1367    
1368    if test ! "x$TS" = x ; then
1369          echo "  Turning on timing per timestep"
1370          DEFINES="$DEFINES -DTIME_PER_TIMESTEP"
1371    fi
1372    
1373  printf "\n===  Checking system libraries  ===\n"  printf "\n===  Checking system libraries  ===\n"
1374  printf "  Do we have the system() command using $FC...  "  printf "  Do we have the system() command using $FC...  "
1375  cat > genmake_tcomp.f <<EOF  cat > genmake_tcomp.$FS <<EOF
1376        program hello        program hello
1377        call system('echo hi')        call system('echo hi')
1378        end        end
1379  EOF  EOF
1380  $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.f > genmake_tcomp.log 2>&1  $FC $FFLAGS -o genmake_tcomp genmake_tcomp.$FS > genmake_tcomp.log 2>&1
1381  RETVAL=$?  RETVAL=$?
1382  if test "x$RETVAL" = x0 ; then  if test "x$RETVAL" = x0 ; then
1383      HAVE_SYSTEM=t      HAVE_SYSTEM=t
# Line 1242  fi Line 1390  fi
1390  rm -f genmake_tcomp*  rm -f genmake_tcomp*
1391    
1392  printf "  Do we have the fdate() command using $FC...  "  printf "  Do we have the fdate() command using $FC...  "
1393  cat > genmake_tcomp.f <<EOF  cat > genmake_tcomp.$FS <<EOF
1394        program hello        program hello
1395        CHARACTER(128) string        CHARACTER*(128) string
1396        string = ' '        string = ' '
1397        call fdate( string )        call fdate( string )
1398        print *, string        print *, string
1399        end        end
1400  EOF  EOF
1401  $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.f > genmake_tcomp.log 2>&1  $FC $FFLAGS -o genmake_tcomp genmake_tcomp.$FS > genmake_tcomp.log 2>&1
1402  RETVAL=$?  RETVAL=$?
1403  if test "x$RETVAL" = x0 ; then  if test "x$RETVAL" = x0 ; then
1404      HAVE_FDATE=t      HAVE_FDATE=t
# Line 1263  fi Line 1411  fi
1411  rm -f genmake_tcomp*  rm -f genmake_tcomp*
1412    
1413  printf "  Do we have the etime() command using $FC...  "  printf "  Do we have the etime() command using $FC...  "
1414  cat > genmake_tcomp.f <<EOF  cat > genmake_tcomp.$FS <<EOF
1415        program hello        program hello
1416        REAL*4 ACTUAL, TARRAY(2)        REAL*4 ACTUAL, TARRAY(2)
1417        EXTERNAL ETIME        EXTERNAL ETIME
# Line 1272  cat > genmake_tcomp.f <<EOF Line 1420  cat > genmake_tcomp.f <<EOF
1420        print *, tarray        print *, tarray
1421        end        end
1422  EOF  EOF
1423  $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.f > genmake_tcomp.log 2>&1  $FC $FFLAGS -o genmake_tcomp genmake_tcomp.$FS > genmake_tcomp.log 2>&1
1424  RETVAL=$?  RETVAL=$?
1425  if test "x$RETVAL" = x0 ; then  if test "x$RETVAL" = x0 ; then
1426      HAVE_ETIME=t      HAVE_ETIME=t
# Line 1293  else Line 1441  else
1441  fi  fi
1442  rm -f genmake_t*  rm -f genmake_t*
1443    
1444    printf "  Can we unlimit the stack size using $FC...  "
1445    check_HAVE_SETRLSTK
1446    if test "x$HAVE_SETRLSTK" != x ; then
1447        echo "yes"
1448    else
1449        echo "no"
1450    fi
1451    rm -f genmake_t*
1452    
1453    printf "  Can we use stat() through C calls...  "
1454    check_HAVE_STAT
1455    if test "x$HAVE_STAT" != x ; then
1456        echo "yes"
1457    else
1458        echo "no"
1459    fi
1460    rm -f genmake_t*
1461    
1462  printf "  Can we create NetCDF-enabled binaries...  "  printf "  Can we create NetCDF-enabled binaries...  "
1463  check_netcdf_libs  check_netcdf_libs
1464  if test "x$HAVE_NETCDF" != x ; then  if test "x$HAVE_NETCDF" != x ; then
# Line 1300  if test "x$HAVE_NETCDF" != x ; then Line 1466  if test "x$HAVE_NETCDF" != x ; then
1466  else  else
1467      echo "no"      echo "no"
1468  fi  fi
1469    DEFINES="$DEFINES $IGNORE_TIME"
1470    
1471  printf "\n===  Setting defaults  ===\n"  printf "\n===  Setting defaults  ===\n"
1472  printf "  Adding MODS directories:  "  printf "  Adding MODS directories:  "
# Line 1317  for d in $MODS ; do Line 1483  for d in $MODS ; do
1483  done  done
1484  echo  echo
1485    
 if test "x$MAKEFILE" = x ; then  
     MAKEFILE="Makefile"  
 fi  
1486  if test "x${PLATFORM}" = x ; then  if test "x${PLATFORM}" = x ; then
1487      PLATFORM=$p_PLATFORM      PLATFORM=$p_PLATFORM
1488  fi  fi
1489    
1490  if test "x${EXEDIR}" = x ; then  if test "x${EXEDIR}" = x ; then
1491      tmp=`echo $PWD | sed -e 's/\// /g' | awk '{print $NR}'`      tmp=`echo $PWD | sed -e 's/\// /g' | $AWK '{print $NR}'`
1492      if test "x$tmp" = "xbin" -a -d ../exe -a $ROOTDIR = .. ; then      if test "x$tmp" = "xbin" -a -d ../exe -a $ROOTDIR = .. ; then
1493          EXEDIR=../exe          EXEDIR=../exe
1494      else      else
# Line 1345  if test ! -d ${TOOLSDIR} ; then Line 1508  if test ! -d ${TOOLSDIR} ; then
1508      exit 1      exit 1
1509  fi  fi
1510  if test "x$S64" = x ; then  if test "x$S64" = x ; then
1511      S64='$(TOOLSDIR)/set64bitConst.sh'      echo "3.0 _d 3" | ${TOOLSDIR}/set64bitConst.sh > /dev/null 2>&1
1512        RETVAL=$?
1513        if test "x${RETVAL}" = x0 ; then
1514            S64='$(TOOLSDIR)/set64bitConst.sh'
1515        else
1516            echo "3.0 _d 3" | ${TOOLSDIR}/set64bitConst.csh > /dev/null 2>&1
1517            RETVAL=$?
1518            if test "x${RETVAL}" = x0 ; then
1519                S64='$(TOOLSDIR)/set64bitConst.csh'
1520            else
1521                cat <<EOF
1522    
1523    ERROR: neither of the two default scripts:
1524    
1525        ${TOOLSDIR}/set64bitConst.sh
1526        ${TOOLSDIR}/set64bitConst.csh
1527    
1528      are working so please check paths or specify (with \$S64) a
1529      working version of this script.
1530    
1531    EOF
1532                exit 1
1533            fi
1534        fi
1535  fi  fi
1536  THIS_SCRIPT=`echo ${0} | sed 's:'$TOOLSDIR':\$(TOOLSDIR):'`  THIS_SCRIPT=`echo ${0} | sed 's:'$TOOLSDIR':\$(TOOLSDIR):'`
1537    
# Line 1490  done Line 1676  done
1676  rm -f ./.tmp_pack  rm -f ./.tmp_pack
1677  echo "    packages are:  $PACKAGES"  echo "    packages are:  $PACKAGES"
1678    
1679    #  Check availability of NetCDF and then either build the MNC template
1680    #  files or delete mnc from the list of available packages.
1681    echo $PACKAGES | grep ' mnc ' > /dev/null 2>&1
1682    RETVAL=$?
1683    if test "x$RETVAL" = x0 ; then
1684        if test "x$HAVE_NETCDF" != xt ; then
1685            cat <<EOF
1686    
1687    *********************************************************************
1688    WARNING: the "mnc" package was enabled but tests failed to compile
1689      NetCDF applications.  Please check that:
1690    
1691      1) NetCDF is correctly installed for this compiler and
1692      2) the LIBS variable (within the "optfile") specifies the correct
1693           NetCDF library to link against.
1694    
1695      Due to this failure, the "mnc" package is now DISABLED.
1696    *********************************************************************
1697    
1698    EOF
1699            PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`
1700            DISABLE="$DISABLE mnc"
1701        else
1702            ( cd $ROOTDIR"/pkg/mnc" && $MAKE testclean && $MAKE templates ) > make_mnc.errors 2>&1
1703            RETVAL=$?
1704            if test "x${RETVAL}" = x0 ; then
1705                rm -f make_mnc.errors
1706            else
1707                echo "Error: problem encountered while building source files in pkg/mnc:"
1708                cat make_mnc.errors 1>&2
1709                exit 1
1710            fi
1711        fi
1712    fi
1713    
1714  echo "  applying package dependency rules"  echo "  applying package dependency rules"
1715  ck=  ck=
1716  while test "x$ck" != xtt ; do  while test "x$ck" != xtt ; do
# Line 1574  for i in $PACKAGES ; do Line 1795  for i in $PACKAGES ; do
1795      fi      fi
1796  done  done
1797    
 #  Build MNC templates and check for ability to build and use NetCDF  
 echo $PACKAGES | grep ' mnc ' > /dev/null 2>&1  
 RETVAL=$?  
 if test "x$RETVAL" = x0 ; then  
     ( cd $ROOTDIR"/pkg/mnc" && $MAKE templates ) > make_mnc.errors 2>&1  
     RETVAL=$?  
     if test "x${RETVAL}" = x0 ; then  
         rm -f make_mnc.errors  
     else  
         echo "Error: problem encountered while building source files in pkg/mnc:"  
         cat make_mnc.errors 1>&2  
         exit 1  
     fi  
     if test "x$HAVE_NETCDF" != xt ; then  
         cat <<EOF  
   
 *********************************************************************  
 WARNING: the "mnc" package was enabled but tests failed to compile  
   NetCDF applications.  Please check that:  
   
   1) NetCDF is correctly installed for this compiler and  
   2) the LIBS variable (within the "optfile") specifies the correct  
        NetCDF library to link against.  
   
   Due to this failure, the "mnc" package is now DISABLED.  
 *********************************************************************  
   
 EOF  
         temp=`echo $PACKAGES | sed -e 's/mnc//g'`  
         PACKAGES=$temp  
     fi  
 fi  
   
1798  # Create a list of #define and #undef to enable/disable packages  # Create a list of #define and #undef to enable/disable packages
1799  PACKAGES_DOT_H=PACKAGES_CONFIG.h  PACKAGES_DOT_H=PACKAGES_CONFIG.h
1800  #  The following UGLY HACK sets multiple "#undef"s and it needs to go  #  The following UGLY HACK sets multiple "#undef"s and it needs to go
# Line 1626  for n in $names ; do Line 1814  for n in $names ; do
1814              fi              fi
1815          done          done
1816          if test "x$has_pack" = xf ; then          if test "x$has_pack" = xf ; then
1817              undef=`echo "ALLOW_$n" | $AWK '{print toupper($0)}'`              undef=`echo "ALLOW_$n" | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
1818              DISABLED_PACKAGES="$DISABLED_PACKAGES -U$undef"              DISABLED_PACKAGES="$DISABLED_PACKAGES -U$undef"
1819          fi          fi
1820      fi      fi
1821  done  done
1822  ENABLED_PACKAGES=  ENABLED_PACKAGES=
1823  for i in $PACKAGES ; do  for i in $PACKAGES ; do
1824      def=`echo "ALLOW_$i" | $AWK '{print toupper($0)}'`      def=`echo "ALLOW_$i" | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
1825      ENABLED_PACKAGES="$ENABLED_PACKAGES -D$def"      ENABLED_PACKAGES="$ENABLED_PACKAGES -D$def"
1826  #eh3 DEFINES="$DEFINES -D$def"  #eh3 DEFINES="$DEFINES -D$def"
1827    
# Line 1717  for i in $SOURCEDIRS ; do Line 1905  for i in $SOURCEDIRS ; do
1905          cat $i/$j >> ad_files          cat $i/$j >> ad_files
1906      done      done
1907  done  done
1908    if test ! "x"$FS = "x.f" ; then
1909        cat ad_files | sed -e "s/\.f/.$FS/g" > ad_files_f
1910        mv -f ad_files_f ad_files
1911    fi
1912    
1913  echo  echo
1914  echo "===  Creating the Makefile  ==="  echo "===  Creating the Makefile  ==="
# Line 1746  for d in $alldirs ; do Line 1937  for d in $alldirs ; do
1937      for sf in $sfiles ; do      for sf in $sfiles ; do
1938          if test ! -r ".links.tmp/$sf" ; then          if test ! -r ".links.tmp/$sf" ; then
1939              if test -f "$d/$sf" ; then              if test -f "$d/$sf" ; then
1940                    ignore_f=f
1941                  case $d/$sf in                  case $d/$sf in
1942                    ./$PACKAGES_DOT_H)                    ./$PACKAGES_DOT_H)
1943                          ;;                          ;;
# Line 1756  for d in $alldirs ; do Line 1948  for d in $alldirs ; do
1948                    ./BUILD_INFO.h)                    ./BUILD_INFO.h)
1949                          ;;                          ;;
1950                    *)                    *)
1951                          touch .links.tmp/$sf                          #  For the local directory *ONLY*,
1952                          deplist="$deplist $sf"                          #  ignore all soft-links
1953                            if test "x$HAVE_TEST_L" = xt -a "x$d" = x. -a -L $sf ; then
1954                                ignore_f=t
1955                            else
1956                                touch .links.tmp/$sf
1957                                deplist="$deplist $sf"
1958                            fi
1959                          ;;                          ;;
1960                  esac                  esac
1961                  extn=`echo $sf | $AWK -F '.' '{print $NF}'`                  if test "x$ignore_f" = xf ; then
1962                  case $extn in                      extn=`echo $sf | $AWK -F. '{print $NF}'`
1963                      F)                      case $extn in
1964                          echo    " \\"  >> srclist.inc                          F)
1965                          printf " $sf" >> srclist.inc                              echo    " \\"  >> srclist.inc
1966                          ;;                              printf " $sf" >> srclist.inc
1967                      F90)                              ;;
1968                          echo    " \\"  >> f90srclist.inc                          F90)
1969                          printf " $sf" >> f90srclist.inc                              echo    " \\"  >> f90srclist.inc
1970                          ;;                              printf " $sf" >> f90srclist.inc
1971                      c)                              ;;
1972                          echo    " \\"  >> csrclist.inc                          c)
1973                          printf " $sf" >> csrclist.inc                              echo    " \\"  >> csrclist.inc
1974                          ;;                              printf " $sf" >> csrclist.inc
1975                      h)                              ;;
1976                          echo    " \\"  >> hlist.inc                          h)
1977                          printf " $sf" >> hlist.inc                              echo    " \\"  >> hlist.inc
1978                          ;;                              printf " $sf" >> hlist.inc
1979                      flow)                              ;;
1980                          echo    " \\"  >> ad_flow_files.inc                          flow)
1981                          printf " $sf" >> ad_flow_files.inc                              echo    " \\"  >> ad_flow_files.inc
1982                          ;;                              printf " $sf" >> ad_flow_files.inc
1983                  esac                              ;;
1984                        esac
1985                    fi
1986              fi              fi
1987          fi          fi
1988      done      done
# Line 1900  CFLAGS = ${CFLAGS} Line 2100  CFLAGS = ${CFLAGS}
2100  NOOPTFILES = ${NOOPTFILES}  NOOPTFILES = ${NOOPTFILES}
2101  NOOPTFLAGS = ${NOOPTFLAGS}  NOOPTFLAGS = ${NOOPTFLAGS}
2102  # Flags and libraries needed for linking  # Flags and libraries needed for linking
2103  LIBS = ${LIBS} \$(XLIBS)  LIBS = ${LIBS}
2104  # Name of the Mekfile  # Name of the Mekfile
2105  MAKEFILE=${MAKEFILE}  MAKEFILE=${MAKEFILE}
2106    
# Line 1913  cat hlist.inc         >> $MAKEFILE Line 2113  cat hlist.inc         >> $MAKEFILE
2113  cat ad_flow_files.inc >> $MAKEFILE  cat ad_flow_files.inc >> $MAKEFILE
2114  echo >> $MAKEFILE  echo >> $MAKEFILE
2115  echo 'F77FILES =  $(SRCFILES:.F=.'$FS')'      >> $MAKEFILE  echo 'F77FILES =  $(SRCFILES:.F=.'$FS')'      >> $MAKEFILE
2116  echo 'F90FILES =  $(F90SRCFILES:.F=.'$FS90')' >> $MAKEFILE  echo 'F90FILES =  $(F90SRCFILES:.F90=.'$FS90')' >> $MAKEFILE
2117  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE
2118  echo >> $MAKEFILE  echo >> $MAKEFILE
2119  echo '.SUFFIXES:' >> $MAKEFILE  echo '.SUFFIXES:' >> $MAKEFILE
# Line 1933  depend: Line 2133  depend:
2133          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)
2134          -rm -f makedepend.out          -rm -f makedepend.out
2135    
2136    lib: libmitgcmuv.a
2137    
2138    libmitgcmuv.a: \$(OBJFILES)
2139            ar rcv libmitgcmuv.a \$(OBJFILES)
2140    
2141  links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(SPECIAL_FILES)  links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(SPECIAL_FILES)
2142    
2143  small_f: \$(F77FILES) \$(F90FILES)  small_f: \$(F77FILES) \$(F90FILES)
# Line 1985  cat >>$MAKEFILE <<EOF Line 2190  cat >>$MAKEFILE <<EOF
2190    
2191  # The normal chain of rules is (  .F - .$FS - .o  )  # The normal chain of rules is (  .F - .$FS - .o  )
2192    
2193  %.o : %.F  ## This nullifies any default implicit rules concerning these two file types:
2194    ## %.o : %.F
2195    
2196  .F.$FS:  .F.$FS:
2197          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
# Line 2041  cat >>$MAKEFILE <<EOF Line 2247  cat >>$MAKEFILE <<EOF
2247    
2248  # ... AD ...  # ... AD ...
2249  adall: ad_taf  adall: ad_taf
2250  adtaf: ad_taf_output.f  adtaf: ad_taf_output.$FS
2251  adtamc: ad_tamc_output.f  adtamc: ad_tamc_output.$FS
2252    
2253  ad_input_code.f: \$(AD_FILES) \$(HEADERFILES)  ad_input_code.$FS: \$(AD_FILES) \$(HEADERFILES)
2254          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ad_config.template          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ad_config.template
2255          cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h          cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
2256          -rm -f ad_config.template          -rm -f ad_config.template
2257          @make \$(F77FILES)          @make \$(F77FILES)
2258          @make \$(AD_FLOW_FILES)          @make \$(AD_FLOW_FILES)
2259          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ad_input_code.f          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ad_input_code.$FS
2260    
2261  ad_taf_output.f: ad_input_code.f  ad_taf_output.$FS: ad_input_code.$FS
2262          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.f          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
2263          cat ad_input_code_ad.f | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.f          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.$FS
2264    
2265  adtafonly:  adtafonly:
2266          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.f          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
2267          cat ad_input_code_ad.f | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.f          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.$FS
2268    
2269  ad_taf: ad_taf_output.o \$(OBJFILES)  ad_taf: ad_taf_output.o \$(OBJFILES)
2270          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)
2271    
2272  ad_tamc_output.f: ad_input_code.f  ad_tamc_output.$FS: ad_input_code.$FS
2273          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.f          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS
2274          cat ad_input_code_ad.f | sed -f \$(TOOLSDIR)/adjoint_sed > ad_tamc_output.f          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_tamc_output.$FS
2275    
2276  ad_tamc: ad_tamc_output.o \$(OBJFILES)  ad_tamc: ad_tamc_output.o \$(OBJFILES)
2277          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)
2278    
2279    adonlyfwd:
2280            patch < \$(TOOLSDIR)/ad_taf_output.f.onlyfwd.diff
2281    
2282    adtrick:
2283            patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff
2284    
2285  # ... FTL ...  # ... FTL ...
2286  ftlall: ftl_taf  ftlall: ftl_taf
2287  ftltaf: ftl_taf_output.f  ftltaf: ftl_taf_output.$FS
2288  ftltamc: ftl_tamc_output.f  ftltamc: ftl_tamc_output.$FS
2289    
2290  ftl_input_code.f: \$(AD_FILES) \$(HEADERFILES)  ftl_input_code.$FS: \$(AD_FILES) \$(HEADERFILES)
2291          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ftl_config.template          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ftl_config.template
2292          cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h          cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h
2293          -rm -f ftl_config.template          -rm -f ftl_config.template
2294          @make \$(F77FILES)          @make \$(F77FILES)
2295          @make \$(AD_FLOW_FILES)          @make \$(AD_FLOW_FILES)
2296          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ftl_input_code.f          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ftl_input_code.$FS
2297    
2298  ftl_taf_output.f: ftl_input_code.f  ftl_taf_output.$FS: ftl_input_code.$FS
2299          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.f          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
2300          cat ftl_input_code_ftl.f | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.f          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS
2301    
2302  ftltafonly:  ftltafonly:
2303          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.f          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
2304          cat ftl_input_code_ftl.f | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.f          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS
2305    
2306  ftl_taf: ftl_taf_output.o \$(OBJFILES)  ftl_taf: ftl_taf_output.o \$(OBJFILES)
2307          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)
2308    
2309  ftl_tamc_output.f: ftl_input_code.f  ftl_tamc_output.$FS: ftl_input_code.$FS
2310          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.f          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS
2311          cat ftl_input_code_ftl.f | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_tamc_output.f          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_tamc_output.$FS
2312    
2313  ftl_tamc: ftl_tamc_output.o \$(OBJFILES)  ftl_tamc: ftl_tamc_output.o \$(OBJFILES)
2314          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_tamc_output.o \$(LIBS)          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_tamc_output.o \$(LIBS)
2315    
2316    
2317  # ... SVD ...  # ... SVD ...
2318  svdtaf: ad_taf_output.f ftl_taf_output.f  svdtaf: ad_taf_output.$FS ftl_taf_output.$FS
2319  svdall: svd_taf          @echo "--->>> Only ran TAF to generate SVD code!    <<<---"
2320            @echo "--->>> Do make svdall afterwards to compile. <<<---"
2321    svdall: svd_touch svd_taf
2322    
2323  svd_taf: ad_taf_output.o ftl_taf_output.o \$(OBJFILES)  svd_taf: \$(OBJFILES)
2324          \$(LINK) -o mitgcmuv_svd \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o ftl_taf_output.o \$(LIBS)          \$(LINK) -o mitgcmuv_svd \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o ftl_taf_output.o \$(LIBS)
2325    
2326            @echo "--->>> Only COMPILE svd code! <<<---"
2327            @echo "--->>> Assumes you previously <<<---"
2328            @echo "--->>> did make svdtaf        <<<---"
2329    
2330    svd_touch:
2331            @echo "--->>> Only COMPILE svd code! <<<---"
2332            @echo "--->>> Assumes you previously <<<---"
2333            @echo "--->>> did make svdtaf        <<<---"
2334            touch ad_taf_output.$FS ftl_taf_output.$FS
2335            \$(FC) \$(FFLAGS) \$(FOPTIM) -c ad_taf_output.$FS
2336            \$(FC) \$(FFLAGS) \$(FOPTIM) -c ftl_taf_output.$FS
2337            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ftl_config.template
2338            cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h
2339            -rm -f ftl_config.template
2340    
2341  #=========================================  #=========================================
2342    

Legend:
Removed from v.1.99  
changed lines
  Added in v.1.135

  ViewVC Help
Powered by ViewVC 1.1.22