/[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.108 by edhill, Thu Oct 21 13:38:46 2004 UTC revision 1.160 by ce107, Wed Jan 31 21:28:10 2007 UTC
# Line 13  Line 13 
13  test_for_package_in_cpp_options() {  test_for_package_in_cpp_options() {
14      cpp_options=$1      cpp_options=$1
15      pkg=$2      pkg=$2
16      test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_$pkg" || exit 99      test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_$pkg[ ]"
17      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_$pkg" || exit 99      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_$pkg[ ]"
18      test_for_string_in_file $cpp_options "^[ ]*#define.*DISABLE_$pkg" || exit 99      test_for_string_in_file $cpp_options "^[ ]*#define.*DISABLE_$pkg[ ]"
19      test_for_string_in_file $cpp_options "^[ ]*#undef.*DISABLE_$pkg" || exit 99      test_for_string_in_file $cpp_options "^[ ]*#undef.*DISABLE_$pkg[ ]"
20        test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_$pkg$"
21        test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_$pkg$"
22        test_for_string_in_file $cpp_options "^[ ]*#define.*DISABLE_$pkg$"
23        test_for_string_in_file $cpp_options "^[ ]*#undef.*DISABLE_$pkg$"
24  }  }
25    
26  # Search for particular CPP #cmds associated with MPI  # Search for particular CPP #cmds associated with MPI
27  # usage: test_for_mpi_in_cpp_eeoptions CPP_file  # usage: test_for_mpi_in_cpp_eeoptions CPP_file
28  test_for_mpi_in_cpp_eeoptions() {  test_for_mpi_in_cpp_eeoptions() {
29      cpp_options=$1      cpp_options=$1
30      test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_USE_MPI" || exit 99      test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_USE_MPI[ ]"
31      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_USE_MPI" || exit 99      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_USE_MPI[ ]"
32      test_for_string_in_file $cpp_options "^[ ]*#define.*ALWAYS_USE_MPI" || exit 99      test_for_string_in_file $cpp_options "^[ ]*#define.*ALWAYS_USE_MPI[ ]"
33      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALWAYS_USE_MPI" || exit 99      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALWAYS_USE_MPI[ ]"
34        test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_USE_MPI$"
35        test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_USE_MPI$"
36        test_for_string_in_file $cpp_options "^[ ]*#define.*ALWAYS_USE_MPI$"
37        test_for_string_in_file $cpp_options "^[ ]*#undef.*ALWAYS_USE_MPI$"
38  }  }
39    
40  # Search for particular string in a file. Return 1 if detected, 0 if not  # Search for particular string in a file. Return 1 if detected, 0 if not
# Line 39  test_for_string_in_file() { Line 47  test_for_string_in_file() {
47      if test "x${RETVAL}" = x0 ; then      if test "x${RETVAL}" = x0 ; then
48          printf "Error: In $file there is an illegal line: "          printf "Error: In $file there is an illegal line: "
49          grep -i "$strng" $file          grep -i "$strng" $file
50          return 1          exit 99
51      fi      fi
52      return 0      return 0
53  }  }
# Line 122  EOF Line 130  EOF
130        stop        stop
131        end        end
132  EOF  EOF
133      test -f Makefile  &&  mv -f Makefile Makefile.bak      test -f $MAKEFILE  &&  mv -f $MAKEFILE $MAKEFILE".tst"
134      cat <<EOF >> Makefile      cat <<EOF >> $MAKEFILE
135  .SUFFIXES:  .SUFFIXES:
136  .SUFFIXES: .$tfs .F  .SUFFIXES: .$tfs .F
137  .F.$tfs:  .F.$tfs:
# Line 148  EOF Line 156  EOF
156              return              return
157          fi          fi
158      fi      fi
159      rm -f genmake_hello.* Makefile      rm -f genmake_hello.* $MAKEFILE
160      test -f Makefile  &&  mv -f Makefile.bak Makefile      test -f $MAKEFILE".tst"  &&  mv -f $MAKEFILE".tst" $MAKEFILE
161    
162      #  If we make it here, use the extensions      #  If we make it here, use the extensions
163      FS=$tfs      FS=$tfs
# Line 181  look_for_makedepend()  { Line 189  look_for_makedepend()  {
189      if test "x${MAKEDEPEND}" = x ; then      if test "x${MAKEDEPEND}" = x ; then
190          which makedepend > /dev/null 2>&1          which makedepend > /dev/null 2>&1
191          RV0=$?          RV0=$?
192            test -f $MAKEFILE  &&  mv -f $MAKEFILE $MAKEFILE".tst"
193            #  echo 'MAKEFILE="'$MAKEFILE'"'
194            cat <<EOF >> $MAKEFILE
195    #   THIS IS A TEST MAKEFILE GENERATED BY "genmake2"
196    #
197    #   Some "makedepend" implementations will die if they cannot
198    #   find a Makefile -- so this file is here to gives them an
199    #   empty one to find and parse.
200    EOF
201          cat <<EOF >> genmake_tc.f          cat <<EOF >> genmake_tc.f
202        program test        program test
203        write(*,*) 'test'        write(*,*) 'test'
# Line 189  look_for_makedepend()  { Line 206  look_for_makedepend()  {
206  EOF  EOF
207          makedepend genmake_tc.f > /dev/null 2>&1          makedepend genmake_tc.f > /dev/null 2>&1
208          RV1=$?          RV1=$?
209            test -f $MAKEFILE  &&  rm -f $MAKEFILE
210            test -f $MAKEFILE".tst"  &&  mv -f $MAKEFILE".tst" $MAKEFILE
211          if test "x${RV0}${RV1}" = x00 ; then          if test "x${RV0}${RV1}" = x00 ; then
212              MAKEDEPEND=makedepend              MAKEDEPEND=makedepend
213          else          else
# Line 237  build_cyrus_makedepend()  { Line 256  build_cyrus_makedepend()  {
256      fi      fi
257  }  }
258    
259    
260    build_embed_encode()
261    {
262        printf "  building the embed-encode utility...  "
263        if test ! -e "$ROOTDIR/tools/embed_encode/encode_files" ; then
264            if test ! -d "$ROOTDIR/tools/embed_encode" ; then
265                echo
266                echo "    Error: can't locate \"$ROOTDIR/tools/embed_encode\""
267                echo
268                EMBED_SRC=f
269                return 1
270            fi
271            clist="cc gcc c89 $CC"
272            for ic in $clist ; do
273                comm="$ic -o encode_files encode_files.c"
274                ( cd $ROOTDIR/tools/embed_encode && $comm ) > /dev/null 2>&1
275                RETVAL=$?
276                if test "x$RETVAL" = x0 ; then
277                    echo "OK"
278                    DEFINES="$DEFINES -DHAVE_EMBED_SRC"
279                    return 0
280                fi
281            done
282            echo
283            echo "    Error: unable to build $ROOTDIR/embed_encode/encode_files"
284            echo "      so it has been disabled"
285            echo
286            EMBED_SRC=f
287            return 1
288        fi
289        echo "OK"
290        DEFINES="$DEFINES -DHAVE_EMBED_SRC"
291    }
292    
293    
294  # Guess possible config options for this host  # Guess possible config options for this host
295  find_possible_configs()  {  find_possible_configs()  {
296    
# Line 271  find_possible_configs()  { Line 325  find_possible_configs()  {
325    
326      #================================================================      #================================================================
327      #  look for possible C compilers      #  look for possible C compilers
328      tmp="$MITGCM_CC $CC gcc c89 cc c99 mpicc"      tmp="$MITGCM_CC $CC gcc c89 cc c99 mpicc icc"
329      p_CC=      p_CC=
330      for c in $tmp ; do      for c in $tmp ; do
331          rm -f ./genmake_hello.c  ./genmake_hello          rm -f ./genmake_hello.c  ./genmake_hello
# Line 310  EOF Line 364  EOF
364    
365      #================================================================      #================================================================
366      #  look for possible FORTRAN compilers      #  look for possible FORTRAN compilers
367      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 ifort f90 f95 mpif77 mpf77 mpxlf95 gfortran g95"
368      p_FC=      p_FC=
369      for c in $tmp ; do      for c in $tmp ; do
370          rm -f ./hello.f ./hello          rm -f ./hello.f ./hello
# Line 342  EOF Line 396  EOF
396      else      else
397          echo "  The possible FORTRAN compilers found in your path are:"          echo "  The possible FORTRAN compilers found in your path are:"
398          echo "   "$p_FC          echo "   "$p_FC
399          if test "x$FC" = x ; then      fi
400              FC=`echo $p_FC | $AWK '{print $1}'`  
401              echo "  Setting FORTRAN compiler to: "$FC      #  Use the first of the compilers found in the current PATH
402          fi      #  that has a correctly-named optfile
403        if test "x$OPTFILE" = x  -a  "x$FC" = x ; then
404            for i in $p_FC ; do
405                OPTFILE=$ROOTDIR"/tools/build_options/"$PLATFORM"_"$i
406                if test -r $OPTFILE ; then
407                    echo "  Setting OPTFILE to: "$OPTFILE
408                    break
409                fi
410            done
411      fi      fi
412    
413      if test "x$OPTFILE" = x ; then      if test "x$OPTFILE" = x ; then
# Line 516  Usage: "$0" [OPTIONS] Line 578  Usage: "$0" [OPTIONS]
578            *only* works if it is supported by the OPTFILE that            *only* works if it is supported by the OPTFILE that
579            is being used.            is being used.
580    
581        -ignoretime | -ignore_time | --ignoretime | --ignore_time
582              Ignore all the "wall clock" routines entirely.  This will
583              not in any way hurt the model results -- it simply means
584              that the code that checks how long the model spends in
585              various routines will give junk values.
586    
587        -ts | --ts
588              Produce timing information per timestep
589        -papis | --papis
590              Produce summary MFlop/s (and IPC) with PAPI per timestep
591        -pcls | --pcls
592              Produce summary MFlop/s etc. with PCL per timestep
593        -foolad | --foolad
594              Fool the AD code generator
595        -papi | --papi
596              Performance analysis with PAPI
597        -pcl | --pcl
598              Performance analysis with PCL
599        -hpmt | --hpmt
600              Performance analysis with the HPM Toolkit
601    
602        -gsl | --gsl
603              Use GSL to control floating point rounding and precision
604        -devel | --devel
605              Add additional warning and debugging flags for development
606    
607      -mpi | --mpi      -mpi | --mpi
608            Include MPI header files and link to MPI libraries            Include MPI header files and link to MPI libraries
609      -mpi=PATH | --mpi=PATH      -mpi=PATH | --mpi=PATH
# Line 523  Usage: "$0" [OPTIONS] Line 611  Usage: "$0" [OPTIONS]
611            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
612            from \$PATH/lib and use binaries from \$PATH/bin.            from \$PATH/lib and use binaries from \$PATH/bin.
613    
614        -es | --es | -embed-source | --embed-source
615              Embed a tarball containing the full source code
616              (including the Makefile, etc.) used to build the
617              executable [off by default]
618    
619      -bash NAME      -bash NAME
620            Explicitly specify the Bourne or BASH shell to use            Explicitly specify the Bourne or BASH shell to use
621    
# Line 581  WARNING: Please contact <MITgcm-support@ Line 674  WARNING: Please contact <MITgcm-support@
674  EOF  EOF
675          return 1          return 1
676      fi      fi
677      cat > genmake_tcomp.f <<EOF      cat > genmake_tcomp.$FS <<EOF
678        subroutine tcall( string )        subroutine tcall( string )
679        character*(*) string        character*(*) string
680        call tsub( string )        call tsub( string )
681        end        end
682  EOF  EOF
683      $FC $FFLAGS $DEFINES -c genmake_tcomp.f >> genmake_warnings 2>&1      $FC $FFLAGS -c genmake_tcomp.$FS >> genmake_warnings 2>&1
684      RETVAL=$?      RETVAL=$?
685      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
686          FC_NAMEMANGLE=$default_nm          FC_NAMEMANGLE=$default_nm
# Line 653  void FC_NAMEMANGLE(cloc) ( double *curti Line 746  void FC_NAMEMANGLE(cloc) ( double *curti
746   *curtim = *curtim/1.E6;   *curtim = *curtim/1.E6;
747  }  }
748  EOF  EOF
749      make genmake_tc_1.o >> genmake_tc.log 2>&1      make genmake_tc_1.o >> genmake_warnings 2>&1
750      RET_C=$?      RET_C=$?
751      cat <<EOF > genmake_tc_2.f      cat <<EOF > genmake_tc_2.$FS
752        program hello        program hello
753        Real*8 wtime        REAL*8 wtime
754        external cloc        external cloc
755        call cloc(wtime)        call cloc(wtime)
756        print *," HELLO WORLD", wtime        print *," HELLO WORLD", wtime
757        end program hello        end
758  EOF  EOF
759      $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
760      RET_F=$?      RET_F=$?
761      test -x ./genmake_tc  &&  ./genmake_tc >> genmake_tc.log 2>&1      test -x ./genmake_tc  &&  ./genmake_tc >> genmake_warnings 2>&1
762      RETVAL=$?      RETVAL=$?
763      if test "x$RETVAL" = x0 ; then      if test "x$RETVAL" = x0 ; then
764          HAVE_CLOC=t          HAVE_CLOC=t
# Line 675  EOF Line 768  EOF
768  }  }
769    
770    
771    check_HAVE_SIGREG()  {
772        if test ! "x$HAVE_SIGREG" = x ; then
773            return
774        fi
775        get_fortran_c_namemangling
776        cat <<EOF > genmake_tc_1.c
777    $FC_NAMEMANGLE
778    #include <stdlib.h>
779    #include <stdio.h>
780    #include <signal.h>
781    #include <errno.h>
782    #include <ucontext.h>
783    
784    int * ip;
785    
786    static void killhandler(
787        unsigned int sn, siginfo_t  si, struct ucontext *sc )
788    {
789        *ip = *ip + 1;
790        return;
791    }
792    
793    void FC_NAMEMANGLE(sigreg) (int * aip)
794    {
795        struct sigaction s;
796        ip = aip;
797        s.sa_flags = SA_SIGINFO;
798        s.sa_sigaction = (void *)killhandler;
799        if(sigaction (SIGTERM,&s,(struct sigaction *)NULL)) {
800            printf("Sigaction returned error = %d\n", errno);
801            exit(0);
802        }
803        return;
804    }
805    EOF
806        make genmake_tc_1.o >> genmake_warnings 2>&1
807        RET_C=$?
808        cat <<EOF > genmake_tc_2.$FS
809          program hello
810          integer anint
811          common /iv/ anint
812          external sigreg
813          call sigreg(anint)
814          end
815    EOF
816        echo >> genmake_warnings
817        echo "running: check_HAVE_SIGREG()" >> genmake_warnings
818        cat genmake_tc_2.$FS >> genmake_warnings
819        COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"
820        echo $COMM >> genmake_warnings
821        $COMM >> genmake_warnings 2>&1
822        RETVAL=$?
823        if test "x$RETVAL" = x0 ; then
824            HAVE_SIGREG=t
825            DEFINES="$DEFINES -DHAVE_SIGREG"
826        fi
827        rm -f genmake_tc*
828    }
829    
830    
831    check_HAVE_SETRLSTK()  {
832        if test "x$HAVE_SETRLSTK" = xt ; then
833            DEFINES="$DEFINES -DHAVE_SETRLSTK"
834            return
835        fi  
836        if test ! "x$HAVE_SETRLSTK" = x ; then
837            return
838        fi
839        get_fortran_c_namemangling
840        cat <<EOF > genmake_tc_1.c
841    $FC_NAMEMANGLE
842    #include <sys/time.h>
843    #include <sys/resource.h>
844    #include <unistd.h>
845    void FC_NAMEMANGLE(setrlstk) ()
846    {
847        struct rlimit rls;
848        rls.rlim_cur = RLIM_INFINITY;
849        rls.rlim_max = RLIM_INFINITY;
850        setrlimit(RLIMIT_STACK, &rls);
851        return;
852    }
853    EOF
854        make genmake_tc_1.o >> genmake_warnings 2>&1
855        RET_C=$?
856        cat <<EOF > genmake_tc_2.$FS
857          program hello
858          external setrlstk
859          call setrlstk()
860          end
861    EOF
862        echo >> genmake_warnings
863        echo "running: check_HAVE_SETRLSTK()" >> genmake_warnings
864        cat genmake_tc_2.$FS >> genmake_warnings
865        COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"
866        echo $COMM >> genmake_warnings
867        $COMM >> genmake_warnings 2>&1
868        RETVAL=$?
869        if test "x$RETVAL" = x0 ; then
870            HAVE_SETRLSTK=t
871            DEFINES="$DEFINES -DHAVE_SETRLSTK"
872        fi
873        rm -f genmake_tc*
874    }
875    
876    
877  check_HAVE_STAT()  {  check_HAVE_STAT()  {
878      get_fortran_c_namemangling      get_fortran_c_namemangling
879      cat <<EOF > genmake_tc_1.c      cat <<EOF > genmake_tc_1.c
# Line 698  void FC_NAMEMANGLE(tfsize) ( int *nbyte Line 897  void FC_NAMEMANGLE(tfsize) ( int *nbyte
897  EOF  EOF
898      make genmake_tc_1.o >> genmake_tc.log 2>&1      make genmake_tc_1.o >> genmake_tc.log 2>&1
899      RET_C=$?      RET_C=$?
900      cat <<EOF > genmake_tc_2.f      cat <<EOF > genmake_tc_2.$FS
901        program hello        program hello
902        integer nbyte        integer nbyte
903        call tfsize(nbyte)        call tfsize(nbyte)
904        print *," HELLO WORLD", nbyte        print *," HELLO WORLD", nbyte
905        end program hello        end
906  EOF  EOF
907      $FC $FFLAGS -o genmake_tc genmake_tc_2.f genmake_tc_1.o >> genmake_tc.log 2>&1      echo >> genmake_warnings
908      RET_F=$?      echo "running: check_HAVE_STAT()" >> genmake_warnings
909      test -x ./genmake_tc  &&  ./genmake_tc >> genmake_tc.log 2>&1      cat genmake_tc_2.$FS >> genmake_warnings
910        COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"
911        echo $COMM >> genmake_warnings
912        $COMM >> genmake_tc.log 2>&1
913      RETVAL=$?      RETVAL=$?
914      if test "x$RETVAL" = x0 ; then      if test "x$RETVAL" = x0 ; then
915          HAVE_STAT=t          HAVE_STAT=t
# Line 718  EOF Line 920  EOF
920    
921    
922  check_netcdf_libs()  {  check_netcdf_libs()  {
923      echo "" > genmake_tnc.log      if test ! "x$SKIP_NETCDF_CHECK" = x ; then
924      cat <<EOF > genmake_tnc.for          return
925        fi
926        echo >> genmake_warnings
927        echo "running: check_netcdf_libs()" >> genmake_warnings
928        cat <<EOF > genmake_tnc.F
929        program fgennc        program fgennc
930  #include "netcdf.inc"  #include "netcdf.inc"
931    EOF
932        if test ! "x$MPI" = x ; then
933            echo '#include "mpif.h"' >> genmake_tnc.F
934        fi
935        cat <<EOF >> genmake_tnc.F
936        integer iret, ncid, xid        integer iret, ncid, xid
937        iret = nf_create('genmake_tnc.nc', NF_CLOBBER, ncid)        iret = nf_create('genmake_tnc.nc', NF_CLOBBER, ncid)
938        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
# Line 731  check_netcdf_libs()  { Line 942  check_netcdf_libs()  {
942        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
943        end        end
944  EOF  EOF
945      #echo "$CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f"      echo "===  genmake_tnc.F  ===" > genmake_tnc.log
946      #echo "$FC $FFLAGS $FOPTIM -c genmake_tnc.f"      cat genmake_tnc.F >> genmake_tnc.log
947      #echo "$LINK -o genmake_tnc.o $LIBS"      echo "===  genmake_tnc.F  ===" >> genmake_tnc.log
948      $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f 2>/dev/null  \      RET_CPP=f
949          &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.f >> genmake_tnc.log 2>&1  \      COMM="cat genmake_tnc.F | $CPP $DEFINES $INCLUDES"
950          &&  $LINK -o genmake_tnc genmake_tnc.o $LIBS >> genmake_tnc.log 2>&1      echo "$COMM" >> genmake_tnc.log
951        eval $COMM > genmake_tnc.$FS 2>/dev/null  &&  RET_CPP=t
952        if test "x$RET_CPP" = xf ; then
953            echo "  WARNING: CPP failed to pre-process the netcdf test." \
954                >> genmake_tnc.log
955            echo "    Please check that \$INCLUDES is properly set." \
956                >> genmake_tnc.log
957        fi
958        echo "$FC $FFLAGS $FOPTIM -c genmake_tnc.$FS  \ " >> genmake_tnc.log
959        echo "  &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc.o $LIBS" >> genmake_tnc.log
960        $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
961            &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS >> genmake_tnc.log 2>&1
962      RET_COMPILE=$?      RET_COMPILE=$?
963        cat genmake_tnc.log >> genmake_warnings
964    
965      #EH3  Remove test program execution for machines that either disallow      #EH3  Remove test program execution for machines that either disallow
966      #EH3  execution or cannot support it (eg. cross-compilers)      #EH3  execution or cannot support it (eg. cross-compilers)
# Line 750  EOF Line 973  EOF
973          HAVE_NETCDF=t          HAVE_NETCDF=t
974      else      else
975          # try again with "-lnetcdf" added to the libs          # try again with "-lnetcdf" added to the libs
976          $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f 2>/dev/null  \          echo "try again with added '-lnetcdf'" > genmake_tnc.log
977              &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.f >> genmake_tnc.log 2>&1  \          echo "cat genmake_tnc.F | $CPP $DEFINES $INCLUDES > genmake_tnc.$FS \ " >> genmake_tnc.log
978              &&  $LINK -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf >> genmake_tnc.log 2>&1          echo " &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS \ " >> genmake_tnc.log
979            echo " &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf" >> genmake_tnc.log
980            cat genmake_tnc.F | $CPP $DEFINES $INCLUDES > genmake_tnc.$FS 2>/dev/null  \
981                &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
982                &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf >> genmake_tnc.log 2>&1
983          RET_COMPILE=$?          RET_COMPILE=$?
984            cat genmake_tnc.log >> genmake_warnings
985          if test "x$RET_COMPILE" = x0 ; then          if test "x$RET_COMPILE" = x0 ; then
986              LIBS="$LIBS -lnetcdf"              LIBS="$LIBS -lnetcdf"
987              HAVE_NETCDF=t              HAVE_NETCDF=t
988          else          else
989            # try again with "-lnetcdff" added to the libs
990                echo "try again with added '-lnetcdff -lnetcdf'" > genmake_tnc.log
991                echo "cat genmake_tnc.F | $CPP $DEFINES $INCLUDES > genmake_tnc.$FS \ " >> genmake_tnc.log
992                echo " &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS \ " >> genmake_tnc.log
993                echo " &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf" >> genmake_tnc.log
994                cat genmake_tnc.F | $CPP $DEFINES $INCLUDES > genmake_tnc.$FS 2>/dev/null  \
995                    &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
996                    &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdff -lnetcdf >> genmake_tnc.log 2>&1
997                RET_COMPILE=$?
998              cat genmake_tnc.log >> genmake_warnings              cat genmake_tnc.log >> genmake_warnings
999                if test "x$RET_COMPILE" = x0 ; then
1000                    LIBS="$LIBS -lnetcdff -lnetcdf"
1001                    HAVE_NETCDF=t
1002                fi
1003          fi          fi
1004      fi      fi
1005      rm -f genmake_tnc*      rm -f genmake_tnc*
# Line 777  PLATFORM= Line 1018  PLATFORM=
1018  LN=  LN=
1019  S64=  S64=
1020  KPP=  KPP=
1021  FC=  #FC=
1022  #CC=gcc  #CC=gcc
1023  CPP=  #CPP=
1024  LINK=  LINK=
1025  DEFINES=  DEFINES=
1026  PACKAGES=  PACKAGES=
1027  ENABLE=  ENABLE=
1028  DISABLE=  DISABLE=
1029  MAKEFILE=  # MAKEFILE=
1030  #MAKEDEPEND=  # MAKEDEPEND=
1031  PDEPEND=  PDEPEND=
1032  DUMPSTATE=t  DUMPSTATE=t
1033  PDEFAULT=  PDEFAULT=
1034  OPTFILE=  OPTFILE=
1035  INCLUDES="-I."  INCLUDES="-I. $INCLUDES"
1036  FFLAGS=  FFLAGS=
1037  FOPTIM=  FOPTIM=
1038  CFLAGS=  CFLAGS=
# Line 804  NOOPTFILES= Line 1045  NOOPTFILES=
1045  NOOPTFLAGS=  NOOPTFLAGS=
1046  MPI=  MPI=
1047  MPIPATH=  MPIPATH=
1048    TS=
1049    PAPIS=
1050    PCLS=
1051    FOOLAD=
1052    PAPI=
1053    PCL=
1054    HPMT=
1055    GSL=
1056    DEVEL=
1057    HAVE_TEST_L=
1058    
1059  # DEFINES checked by test compilation  # DEFINES checked by test compilation or command-line
1060  HAVE_SYSTEM=  HAVE_SYSTEM=
1061  HAVE_FDATE=  HAVE_FDATE=
1062  FC_NAMEMANGLE=  FC_NAMEMANGLE=
1063  HAVE_CLOC=  HAVE_CLOC=
1064    # HAVE_SETRLSTK=
1065  HAVE_STAT=  HAVE_STAT=
1066  HAVE_NETCDF=  HAVE_NETCDF=
1067  HAVE_ETIME=  HAVE_ETIME=
1068    IGNORE_TIME=
1069    
1070  MODS=  MODS=
1071  TOOLSDIR=  TOOLSDIR=
# Line 823  STANDARDDIRS="USE_THE_DEFAULT" Line 1076  STANDARDDIRS="USE_THE_DEFAULT"
1076  G2ARGS=  G2ARGS=
1077  BASH=  BASH=
1078  PWD=`pwd`  PWD=`pwd`
1079  MAKE=make  test "x$MAKE" = x  &&  MAKE=make
1080  AWK=awk  test "x$AWK" = x   &&  AWK=awk
1081    EMBED_SRC=
1082  THISHOST=`hostname`  THISHOST=`hostname`
1083  THISCWD=`pwd`  THISCWD=`pwd`
1084  THISDATE=`date`  THISDATE=`date`
# Line 858  TAMC_EXTRA= Line 1112  TAMC_EXTRA=
1112    
1113  #  The following state can be set directly by command-line switches  #  The following state can be set directly by command-line switches
1114  gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE"  gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE"
1115  gm_s2="FC CPP IEEE MPI JAM DUMPSTATE STANDARDDIRS"  gm_s2="FC CPP IEEE TS PAPIS PCLS PAPI PCL HPMT GSL DEVEL MPI JAM DUMPSTATE STANDARDDIRS"
1116    
1117  #  The following state is not directly set by command-line switches  #  The following state is not directly set by command-line switches
1118  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 1038  for ac_option in "$@" ; do Line 1292  for ac_option in "$@" ; do
1292          -noieee | --noieee)          -noieee | --noieee)
1293              IEEE= ;;              IEEE= ;;
1294    
1295            -ts | --ts)
1296                TS=true ;;
1297            -papis | --papis)
1298                PAPIS=true ;;
1299            -pcls | --pcls)
1300                PCLS=true ;;
1301            -foolad | --foolad)
1302                FOOLAD=true ;;
1303            -papi | --papi)
1304                PAPI=true ;;
1305            -pcl | --pcl)
1306                PCL=true ;;
1307            -hpmt | --hpmt)
1308                HPMT=true ;;
1309    
1310            -gsl | --gsl)
1311                GSL=true ;;
1312    
1313            -devel | --devel)
1314                DEVEL=true ;;
1315    
1316          -mpi | --mpi)          -mpi | --mpi)
1317              MPI=true ;;              MPI=true ;;
1318          -mpi=* | --mpi=*)          -mpi=* | --mpi=*)
# Line 1061  for ac_option in "$@" ; do Line 1336  for ac_option in "$@" ; do
1336              ac_prev=TAMC_EXTRA ;;              ac_prev=TAMC_EXTRA ;;
1337          -tamc_extra=* | --tamc_extra=*)          -tamc_extra=* | --tamc_extra=*)
1338              TAMC_EXTRA=$ac_optarg ;;              TAMC_EXTRA=$ac_optarg ;;
1339            
1340            -ignoretime | -ignore_time | --ignoretime | --ignore_time)
1341                IGNORE_TIME="-DIGNORE_TIME" ;;
1342    
1343            -es | --es | -embed-source | --embed-source)
1344                EMBED_SRC=t ;;
1345    
1346          -*)          -*)
1347              echo "Error: unrecognized option: "$ac_option              echo "Error: unrecognized option: "$ac_option
# Line 1076  for ac_option in "$@" ; do Line 1357  for ac_option in "$@" ; do
1357            
1358  done  done
1359    
1360    
1361  if test -f ./.genmakerc ; then  if test -f ./.genmakerc ; then
1362      echo      echo
1363      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 1090  fi Line 1372  fi
1372    
1373  #  Find the MITgcm ${ROOTDIR}  #  Find the MITgcm ${ROOTDIR}
1374  if test "x${ROOTDIR}" = x ; then  if test "x${ROOTDIR}" = x ; then
1375      tmp=`echo $PWD | sed -e 's/\// /g' | awk '{print $NR}'`      tmp=`echo $PWD | sed -e 's/\// /g' | $AWK '{print $NR}'`
1376      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 ../eesupp -a -d ../pkg ; then
1377          ROOTDIR=".."          ROOTDIR=".."
1378      else      else
1379          for d in . .. ../.. ../../.. ../../../.. ../../../../.. ; do          for d in . .. ../.. ../../.. ../../../.. ../../../../.. ; do
# Line 1117  fi Line 1399  fi
1399    
1400  #  Find the MITgcm ${THISVER}  #  Find the MITgcm ${THISVER}
1401  if test -f "${ROOTDIR}/doc/tag-index" ; then  if test -f "${ROOTDIR}/doc/tag-index" ; then
1402      THISVER=`grep checkpoint ${ROOTDIR}/doc/tag-index | head -1`      THISVER=`grep '^checkpoint' ${ROOTDIR}/doc/tag-index | head -1`
1403    fi
1404    
1405    if test "x$MAKEFILE" = x ; then
1406        MAKEFILE="Makefile"
1407  fi  fi
1408    
1409  echo "  getting OPTFILE information:  "  echo "  getting OPTFILE information:  "
# Line 1149  if test "x$OPTFILE" != xNONE ; then Line 1435  if test "x$OPTFILE" != xNONE ; then
1435      fi      fi
1436  fi  fi
1437    
 #  Check for broken systems that cannot correctly distinguish *.F and *.f files  
 # check_for_broken_Ff  
   
1438  echo "  getting AD_OPTFILE information:  "  echo "  getting AD_OPTFILE information:  "
1439  if test "x${AD_OPTFILE}" = x ; then  if test "x${AD_OPTFILE}" = x ; then
1440      if test "x$MITGCM_AD_OF" = x ; then      if test "x$MITGCM_AD_OF" = x ; then
# Line 1179  if test "x${AD_OPTFILE}" != xNONE ; then Line 1462  if test "x${AD_OPTFILE}" != xNONE ; then
1462      fi      fi
1463  fi  fi
1464    
1465    #====================================================================
1466    #  Set default values if not set by the optfile
1467    #
1468  #  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,
1469  #  either set defaults or complain and abort!  #  either set defaults or complain and abort!
1470  if test ! "x$BASH" = x ; then  if test ! "x$BASH" = x ; then
# Line 1255  Error: The command "ln -s" failed -- ple Line 1541  Error: The command "ln -s" failed -- ple
1541  EOF  EOF
1542      exit 1      exit 1
1543  fi  fi
1544    test -L genmake_tlink > /dev/null 2>&1
1545    RETVAL=$?
1546    if test "x$RETVAL" = x0 ; then
1547        HAVE_TEST_L=t
1548    fi
1549  rm -f genmake_test_ln genmake_tlink  rm -f genmake_test_ln genmake_tlink
1550    
1551  #  Check for broken *.F/*.f handling and fix if possible  #  Check for broken *.F/*.f handling and fix if possible
# Line 1265  if test ! "x$MPI" = x ; then Line 1556  if test ! "x$MPI" = x ; then
1556        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"
1557  fi  fi
1558    
1559    if test ! "x$TS" = x ; then
1560          echo "  Turning on timing per timestep"
1561          if test ! "x$FOOLAD" = x ; then
1562                DEFINES="$DEFINES -DTIME_PER_TIMESTEP_SFP"
1563          else
1564                DEFINES="$DEFINES -DTIME_PER_TIMESTEP"
1565          fi
1566    fi
1567    if test ! "x$PAPIS" = x ; then
1568          echo "  Turning on PAPI flop summary per timestep"
1569          echo "  Please make sure PAPIINC, PAPILIB are defined"
1570          if test ! "x$FOOLAD" = x ; then
1571                DEFINES="$DEFINES -DUSE_PAPI_FLOPS_SFP"
1572          else
1573                DEFINES="$DEFINES -DUSE_PAPI_FLOPS"
1574          fi
1575          INCLUDES="$INCLUDES $PAPIINC"
1576          LIBS="$LIBS $PAPILIB"
1577    fi
1578    if test ! "x$PCLS" = x ; then
1579          echo "  Turning on PCL counter summary per timestep"
1580          echo "  Please make sure PCLINC, PCLLIB are defined"
1581          if test ! "x$FOOLAD" = x ; then
1582                DEFINES="$DEFINES -DUSE_PCL_FLOPS_SFP"
1583          else
1584                DEFINES="$DEFINES -DUSE_PCL_FLOPS"
1585          fi
1586          INCLUDES="$INCLUDES $PCLINC"
1587          LIBS="$LIBS $PCLLIB"
1588    fi
1589    if test ! "x$PAPI" = x ; then
1590          if test ! "x$PAPIS" = x ; then
1591              echo "  PAPI performance analysis and flop summary per timestep cannot co-exist!"
1592              echo "  Sticking with PAPI flop summary per timestep!"
1593          else
1594              echo "  Turning on performance analysis with PAPI"
1595              echo "  Please make sure PAPIINC, PAPILIB are defined"
1596              DEFINES="$DEFINES -DUSE_PAPI"
1597              INCLUDES="$INCLUDES $PAPIINC"
1598              LIBS="$LIBS $PAPILIB"
1599          fi
1600    fi
1601    if test ! "x$PCL" = x ; then
1602          if test ! "x$PCLS" = x ; then
1603              echo "  PCL performance analysis and flop summary per timestep cannot co-exist!"
1604              echo "  Sticking with PCL flop summary per timestep!"
1605          else
1606              echo "  Turning on performance analysis with PCL"
1607              echo "  Please make sure PCLINC, PCLLIB are defined"
1608              DEFINES="$DEFINES -DUSE_PCL"
1609              INCLUDES="$INCLUDES $PCLINC"
1610              LIBS="$LIBS $PCLLIB"
1611          fi
1612    fi
1613    if test ! "x$HPMT" = x ; then
1614          if test ! "x$PAPI" = x ; then
1615              echo "  PAPI and the HPM Toolkit cannot co-exist!"
1616              echo "  Sticking with PAPI!"
1617          else if test ! "x$PCL" = x ; then
1618              echo "  PCL and the HPM Toolkit cannot co-exist!"
1619              echo "  Sticking with PCL!"
1620          else
1621              echo "  Turning on performance analysis with the HPM Toolkit"
1622              echo "  Please make sure HPMTINC, HPMTLIB are defined"
1623              DEFINES="$DEFINES -DUSE_LIBHPM"
1624              INCLUDES="$INCLUDES $HPMTINC"
1625              LIBS="$LIBS $HPMTLIB"
1626          fi
1627          fi
1628    fi
1629    if test ! "x$GSL" = x ; then
1630          echo "  Turning on use of GSL to control floating point calculations"
1631          echo "  Please make sure GSLINC, GSLLIB are defined"
1632          DEFINES="$DEFINES -DUSE_GSL_IEEE"
1633          INCLUDES="$INCLUDES $GSLINC"
1634          LIBS="$LIBS $GSLLIB"
1635    fi
1636    
1637  printf "\n===  Checking system libraries  ===\n"  printf "\n===  Checking system libraries  ===\n"
1638  printf "  Do we have the system() command using $FC...  "  printf "  Do we have the system() command using $FC...  "
1639  cat > genmake_tcomp.f <<EOF  cat > genmake_tcomp.$FS <<EOF
1640        program hello        program hello
1641        call system('echo hi')        call system('echo hi')
1642        end        end
1643  EOF  EOF
1644  $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
1645  RETVAL=$?  RETVAL=$?
1646  if test "x$RETVAL" = x0 ; then  if test "x$RETVAL" = x0 ; then
1647      HAVE_SYSTEM=t      HAVE_SYSTEM=t
# Line 1285  fi Line 1654  fi
1654  rm -f genmake_tcomp*  rm -f genmake_tcomp*
1655    
1656  printf "  Do we have the fdate() command using $FC...  "  printf "  Do we have the fdate() command using $FC...  "
1657  cat > genmake_tcomp.f <<EOF  cat > genmake_tcomp.$FS <<EOF
1658        program hello        program hello
1659        CHARACTER(128) string        CHARACTER*(128) string
1660        string = ' '        string = ' '
1661        call fdate( string )        call fdate( string )
1662        print *, string        print *, string
1663        end        end
1664  EOF  EOF
1665  $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
1666  RETVAL=$?  RETVAL=$?
1667  if test "x$RETVAL" = x0 ; then  if test "x$RETVAL" = x0 ; then
1668      HAVE_FDATE=t      HAVE_FDATE=t
# Line 1306  fi Line 1675  fi
1675  rm -f genmake_tcomp*  rm -f genmake_tcomp*
1676    
1677  printf "  Do we have the etime() command using $FC...  "  printf "  Do we have the etime() command using $FC...  "
1678  cat > genmake_tcomp.f <<EOF  cat > genmake_tcomp.$FS <<EOF
1679        program hello        program hello
1680        REAL*4 ACTUAL, TARRAY(2)        REAL*4 ACTUAL, TARRAY(2)
1681        EXTERNAL ETIME        EXTERNAL ETIME
# Line 1315  cat > genmake_tcomp.f <<EOF Line 1684  cat > genmake_tcomp.f <<EOF
1684        print *, tarray        print *, tarray
1685        end        end
1686  EOF  EOF
1687  $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
1688  RETVAL=$?  RETVAL=$?
1689  if test "x$RETVAL" = x0 ; then  if test "x$RETVAL" = x0 ; then
1690      HAVE_ETIME=t      HAVE_ETIME=t
# Line 1333  if test "x$HAVE_CLOC" != x ; then Line 1702  if test "x$HAVE_CLOC" != x ; then
1702      echo "yes"      echo "yes"
1703  else  else
1704      echo "no"      echo "no"
1705        if test "x$EMBED_SRC" = xt ; then
1706            echo "    WARNING: you requested file embedding but it has"
1707            echo "      been disabled since C code cannot be called"
1708            EMBED_SRC=
1709        fi
1710    fi
1711    rm -f genmake_t*
1712    
1713    printf "  Can we unlimit the stack size using $FC...  "
1714    check_HAVE_SETRLSTK
1715    if test "x$HAVE_SETRLSTK" = xt ; then
1716        echo "yes"
1717    else
1718        echo "no"
1719    fi
1720    rm -f genmake_t*
1721    
1722    printf "  Can we register a signal handler using $FC...  "
1723    check_HAVE_SIGREG
1724    if test "x$HAVE_SIGREG" = xt ; then
1725        echo "yes"
1726    else
1727        echo "no"
1728  fi  fi
1729  rm -f genmake_t*  rm -f genmake_t*
1730    
# Line 1352  if test "x$HAVE_NETCDF" != x ; then Line 1744  if test "x$HAVE_NETCDF" != x ; then
1744  else  else
1745      echo "no"      echo "no"
1746  fi  fi
1747    DEFINES="$DEFINES $IGNORE_TIME"
1748    
1749    if test "x$EMBED_SRC" = xt ; then
1750        build_embed_encode
1751    fi
1752    if test "x$EMBED_SRC" = xt ; then
1753        ENABLE="$ENABLE embed_files"
1754    fi
1755    
1756    
1757  printf "\n===  Setting defaults  ===\n"  printf "\n===  Setting defaults  ===\n"
# Line 1369  for d in $MODS ; do Line 1769  for d in $MODS ; do
1769  done  done
1770  echo  echo
1771    
 if test "x$MAKEFILE" = x ; then  
     MAKEFILE="Makefile"  
 fi  
1772  if test "x${PLATFORM}" = x ; then  if test "x${PLATFORM}" = x ; then
1773      PLATFORM=$p_PLATFORM      PLATFORM=$p_PLATFORM
1774  fi  fi
1775    
1776  if test "x${EXEDIR}" = x ; then  if test "x${EXEDIR}" = x ; then
1777      tmp=`echo $PWD | sed -e 's/\// /g' | awk '{print $NR}'`      tmp=`echo $PWD | sed -e 's/\// /g' | $AWK '{print $NR}'`
1778      if test "x$tmp" = "xbin" -a -d ../exe -a $ROOTDIR = .. ; then      if test "x$tmp" = "xbin" -a -d ../exe -a $ROOTDIR = .. ; then
1779          EXEDIR=../exe          EXEDIR=../exe
1780      else      else
# Line 1442  if test -r $ROOTDIR"/eesupp/src/Makefile Line 1839  if test -r $ROOTDIR"/eesupp/src/Makefile
1839      fi      fi
1840  fi  fi
1841    
1842  #same for exch2  #same for pkg/exch2 and pkg/regrid
1843  if test -r $ROOTDIR"/pkg/exch2/Makefile" ; then  for pdir in exch2 regrid ; do
1844      echo "  Making source files in exch2 from  templates"      if test -r $ROOTDIR"/pkg/${pdir}/Makefile" ; then
1845      ( cd $ROOTDIR"/pkg/exch2/" && $MAKE ) > make_exch2.errors 2>&1          echo "  Making source files in pkg/${pdir} from templates"
1846      RETVAL=$?          ( cd $ROOTDIR"/pkg/"${pdir} && $MAKE ) > make_${pdir}.errors 2>&1
1847      if test "x${RETVAL}" = x0 ; then          RETVAL=$?
1848          rm -f make_exch2.errors          if test "x${RETVAL}" = x0 ; then
1849      else              rm -f make_${pdir}.errors
1850          echo "Error: problem encountered while building source files in exch2:"          else
1851          cat make_exch2.errors 1>&2              echo "Error: problem encountered while building source files in pkg/${pdir}:"
1852          exit 1              cat make_${pdir}.errors 1>&2
1853                exit 1
1854            fi
1855      fi      fi
1856  fi  done
1857    
1858  printf "\n===  Determining package settings  ===\n"  printf "\n===  Determining package settings  ===\n"
1859  if  test "x${PDEPEND}" = x ; then  if  test "x${PDEPEND}" = x ; then
# Line 1588  EOF Line 1987  EOF
1987          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`
1988          DISABLE="$DISABLE mnc"          DISABLE="$DISABLE mnc"
1989      else      else
1990          ( cd $ROOTDIR"/pkg/mnc" && $MAKE templates ) > make_mnc.errors 2>&1          ( cd $ROOTDIR"/pkg/mnc" && $MAKE testclean && $MAKE templates ) > make_mnc.errors 2>&1
1991          RETVAL=$?          RETVAL=$?
1992          if test "x${RETVAL}" = x0 ; then          if test "x${RETVAL}" = x0 ; then
1993              rm -f make_mnc.errors              rm -f make_mnc.errors
# Line 1703  for n in $names ; do Line 2102  for n in $names ; do
2102              fi              fi
2103          done          done
2104          if test "x$has_pack" = xf ; then          if test "x$has_pack" = xf ; then
2105              undef=`echo "ALLOW_$n" | $AWK '{print toupper($0)}'`              undef=`echo "ALLOW_$n" | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
2106              DISABLED_PACKAGES="$DISABLED_PACKAGES -U$undef"              DISABLED_PACKAGES="$DISABLED_PACKAGES -U$undef"
2107          fi          fi
2108      fi      fi
2109  done  done
2110  ENABLED_PACKAGES=  ENABLED_PACKAGES=
2111  for i in $PACKAGES ; do  for i in $PACKAGES ; do
2112      def=`echo "ALLOW_$i" | $AWK '{print toupper($0)}'`      def=`echo "ALLOW_$i" | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
2113      ENABLED_PACKAGES="$ENABLED_PACKAGES -D$def"      ENABLED_PACKAGES="$ENABLED_PACKAGES -D$def"
2114  #eh3 DEFINES="$DEFINES -D$def"  #eh3 DEFINES="$DEFINES -D$def"
2115    
# Line 1794  for i in $SOURCEDIRS ; do Line 2193  for i in $SOURCEDIRS ; do
2193          cat $i/$j >> ad_files          cat $i/$j >> ad_files
2194      done      done
2195  done  done
2196    if test ! "x"$FS = "x.f" ; then
2197        cat ad_files | sed -e "s/\.f/.$FS/g" > ad_files_f
2198        mv -f ad_files_f ad_files
2199    fi
2200    
2201  echo  echo
2202  echo "===  Creating the Makefile  ==="  echo "===  Creating the Makefile  ==="
# Line 1805  for i in $INCLUDEDIRS ; do Line 2207  for i in $INCLUDEDIRS ; do
2207      fi      fi
2208  done  done
2209    
2210    if test ! "x$DIVA" = x ; then
2211        echo "  Creating the pseudo-MPI include directory"
2212        INCLUDES="-I./mpi_headers $INCLUDES"
2213        rm -rf ./mpi_headers
2214        mkdir -p ./mpi_headers
2215    
2216        if test "x$MPIINCLUDEDIR" = x ; then
2217            if test "x$MPIHOME" = x ; then
2218                MPIHOME='/usr'
2219            fi
2220            MPIINCLUDEDIR='$MPIHOME/include'
2221        fi
2222        
2223        if test -r $MPIINCLUDEDIR/mpif.h ; then
2224            for i in $MPI_HEADER_FILES; do
2225                cp -p $MPIINCLUDEDIR/$i ./mpi_headers
2226            done
2227    
2228            perl -i -pe 's/MPI_DISPLACEMENT_CURRENT=-1_8/MPI_DISPLACEMENT_CURRENT=-1/g' mpi_headers/mpif.h
2229        else
2230            echo " We cannot create a copy of mpif.h!"
2231    #       exit -1
2232        fi
2233    fi
2234    
2235  echo "  Determining the list of source and include files"  echo "  Determining the list of source and include files"
2236  rm -rf .links.tmp  rm -rf .links.tmp
2237  mkdir .links.tmp  mkdir .links.tmp
2238    touch .links.tmp/foo
2239    if test ! -r ".links.tmp/foo" ; then
2240        echo
2241        echo "ERROR : something is wrong with your directory permissions or"
2242        echo "   your user file-creation mask (\"umask\") since creating a"
2243        echo "   sub-dir, touch-ing a file within it, and then reading it is"
2244        echo "   not working.  Please try setting your umask to something"
2245        echo "   sane such as:"
2246        echo
2247        echo "      umask 0002"
2248        echo
2249        echo "   and please verify that you have the proper permissions for"
2250        echo "   creating sub-directories and then reading files created"
2251        echo "   within them."
2252        echo
2253        exit 1
2254    fi
2255    rm -f .links.tmp/foo
2256  echo "# This section creates symbolic links" > srclinks.tmp  echo "# This section creates symbolic links" > srclinks.tmp
2257  echo "" >> srclinks.tmp  echo "" >> srclinks.tmp
2258  printf 'SRCFILES = '    > srclist.inc  printf 'SRCFILES = '    > srclist.inc
# Line 1823  for d in $alldirs ; do Line 2268  for d in $alldirs ; do
2268      for sf in $sfiles ; do      for sf in $sfiles ; do
2269          if test ! -r ".links.tmp/$sf" ; then          if test ! -r ".links.tmp/$sf" ; then
2270              if test -f "$d/$sf" ; then              if test -f "$d/$sf" ; then
2271                    ignore_f=f
2272                  case $d/$sf in                  case $d/$sf in
2273                    ./$PACKAGES_DOT_H)                    ./$PACKAGES_DOT_H)
2274                            ignore_f=t
2275                          ;;                          ;;
2276                    ./AD_CONFIG.h)                    ./AD_CONFIG.h)
2277                            ignore_f=t
2278                          ;;                          ;;
2279                    ./FC_NAMEMANGLE.h)                    ./FC_NAMEMANGLE.h)
2280                            ignore_f=t
2281                          ;;                          ;;
2282                    ./BUILD_INFO.h)                    ./BUILD_INFO.h)
2283                            ignore_f=t
2284                            ;;
2285                      ./EMBEDDED_FILES.h)
2286                            ignore_f=t
2287                          ;;                          ;;
2288                    *)                    *)
2289                          touch .links.tmp/$sf                          #  For the local directory *ONLY*,
2290                          deplist="$deplist $sf"                          #  ignore all soft-links
2291                            if test "x$HAVE_TEST_L" = xt -a "x$d" = x. -a -L $sf ; then
2292                                ignore_f=t
2293                            else
2294                                touch .links.tmp/$sf
2295                                deplist="$deplist $sf"
2296                            fi
2297                          ;;                          ;;
2298                  esac                  esac
2299                  extn=`echo $sf | $AWK -F '.' '{print $NF}'`                  if test "x$ignore_f" = xf ; then
2300                  case $extn in                      extn=`echo $sf | $AWK -F. '{print $NF}'`
2301                      F)                      case $extn in
2302                          echo    " \\"  >> srclist.inc                          F)
2303                          printf " $sf" >> srclist.inc                              echo    " \\"  >> srclist.inc
2304                          ;;                              printf " $sf" >> srclist.inc
2305                      F90)                              ;;
2306                          echo    " \\"  >> f90srclist.inc                          F90)
2307                          printf " $sf" >> f90srclist.inc                              echo    " \\"  >> f90srclist.inc
2308                          ;;                              printf " $sf" >> f90srclist.inc
2309                      c)                              ;;
2310                          echo    " \\"  >> csrclist.inc                          c)
2311                          printf " $sf" >> csrclist.inc                              echo    " \\"  >> csrclist.inc
2312                          ;;                              printf " $sf" >> csrclist.inc
2313                      h)                              ;;
2314                          echo    " \\"  >> hlist.inc                          h)
2315                          printf " $sf" >> hlist.inc                              echo    " \\"  >> hlist.inc
2316                          ;;                              printf " $sf" >> hlist.inc
2317                      flow)                              ;;
2318                          echo    " \\"  >> ad_flow_files.inc                          flow)
2319                          printf " $sf" >> ad_flow_files.inc                              echo    " \\"  >> ad_flow_files.inc
2320                          ;;                              printf " $sf" >> ad_flow_files.inc
2321                  esac                              ;;
2322                        esac
2323                    fi
2324              fi              fi
2325          fi          fi
2326      done      done
# Line 1935  DISABLED_PACKAGES = ${DISABLED_PACKAGES} Line 2396  DISABLED_PACKAGES = ${DISABLED_PACKAGES}
2396    
2397  # These files are created by Makefile  # These files are created by Makefile
2398  SPECIAL_FILES = ${PACKAGES_DOT_H} AD_CONFIG.h FC_NAMEMANGLE.h BUILD_INFO.h  SPECIAL_FILES = ${PACKAGES_DOT_H} AD_CONFIG.h FC_NAMEMANGLE.h BUILD_INFO.h
   
2399  EOF  EOF
2400    
2401  #  Note: figure out some way to add Hyades JAM libraries here  if test "x$EMBED_SRC" = xt ; then
2402        echo "EMBEDDED_FILES = EMBEDDED_FILES.h" >>$MAKEFILE
2403    else
2404        echo "EMBEDDED_FILES = " >>$MAKEFILE
2405    fi
2406    
2407    #  Note: figure out some way to add Hyades JAM libraries here
2408  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2409  # Unix ln (link)  # Unix ln (link)
2410  LN = ${LN}  LN = ${LN}
# Line 1990  cat hlist.inc         >> $MAKEFILE Line 2455  cat hlist.inc         >> $MAKEFILE
2455  cat ad_flow_files.inc >> $MAKEFILE  cat ad_flow_files.inc >> $MAKEFILE
2456  echo >> $MAKEFILE  echo >> $MAKEFILE
2457  echo 'F77FILES =  $(SRCFILES:.F=.'$FS')'      >> $MAKEFILE  echo 'F77FILES =  $(SRCFILES:.F=.'$FS')'      >> $MAKEFILE
2458  echo 'F90FILES =  $(F90SRCFILES:.F=.'$FS90')' >> $MAKEFILE  echo 'F90FILES =  $(F90SRCFILES:.F90=.'$FS90')' >> $MAKEFILE
2459  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE
2460  echo >> $MAKEFILE  echo >> $MAKEFILE
2461  echo '.SUFFIXES:' >> $MAKEFILE  echo '.SUFFIXES:' >> $MAKEFILE
# Line 2001  rm -f ad_flow_files.inc Line 2466  rm -f ad_flow_files.inc
2466  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2467    
2468  all: \$(EXECUTABLE)  all: \$(EXECUTABLE)
2469  \$(EXECUTABLE): \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(OBJFILES)  \$(EXECUTABLE): \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(OBJFILES) \$(EMBEDDED_FILES)
2470          @echo Creating \$@ ...          @echo Creating \$@ ...
2471          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)
2472  depend:  depend:
# Line 2010  depend: Line 2475  depend:
2475          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)
2476          -rm -f makedepend.out          -rm -f makedepend.out
2477    
2478    lib: libmitgcmuv.a
2479    
2480    libmitgcmuv.a: \$(OBJFILES)
2481            ar rcv libmitgcmuv.a \$(OBJFILES)
2482            ar d   libmitgcmuv.a main.o
2483    
2484  links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(SPECIAL_FILES)  links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(SPECIAL_FILES)
2485    
2486  small_f: \$(F77FILES) \$(F90FILES)  small_f: \$(F77FILES) \$(F90FILES)
# Line 2019  output.txt: \$(EXECUTABLE) Line 2490  output.txt: \$(EXECUTABLE)
2490          @\$(EXECUTABLE) > \$@          @\$(EXECUTABLE) > \$@
2491    
2492  clean:  clean:
2493          -rm -rf *.o *.$FS *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template          -rm -rf *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template
2494            -rm -rf *.o
2495            -rm -rf *.$FS
2496  Clean:  Clean:
2497          @make clean          @make clean
2498          @make cleanlinks          @make cleanlinks
# Line 2030  CLEAN: Line 2503  CLEAN:
2503          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;
2504          -find \$(EXEDIR) -name "*.data" -exec rm {} \;          -find \$(EXEDIR) -name "*.data" -exec rm {} \;
2505          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;
2506          -rm -f \$(EXECUTABLE) output.txt STD*          -rm -f \$(EXECUTABLE) \$(EXE_AD) *.txt STD* *diagnostics.log datetime
2507            -rm -rf mnc_test_*
2508    
2509  #eh3 Makefile: makefile  #eh3 Makefile: makefile
2510  makefile:  makefile:
# Line 2058  test ! "x$THISUSER" = x && echo "      -echo Line 2532  test ! "x$THISUSER" = x && echo "      -echo
2532  test ! "x$THISDATE" = x && echo "       -echo \"#define THISDATE '$THISDATE'\" >> \$@" >> $MAKEFILE  test ! "x$THISDATE" = x && echo "       -echo \"#define THISDATE '$THISDATE'\" >> \$@" >> $MAKEFILE
2533  test ! "x$THISHOST" = x && echo "       -echo \"#define THISHOST '$THISHOST'\" >> \$@" >> $MAKEFILE  test ! "x$THISHOST" = x && echo "       -echo \"#define THISHOST '$THISHOST'\" >> \$@" >> $MAKEFILE
2534    
2535    if test "x$EMBED_SRC" = xt ; then
2536        cat >>$MAKEFILE <<EOF
2537    
2538    decode_files.o : EMBEDDED_FILES.h
2539    
2540    ##  \$(F77FILES)
2541    all_fF.tar.gz : \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(F77FILES) Makefile
2542            @echo Creating \$@ ...
2543            -tar -hcf all_fF.tar \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(F77FILES) Makefile
2544            -rm -f all_fF.tar.gz
2545            -gzip all_fF.tar
2546    
2547    EMBEDDED_FILES.h : all_fF.tar.gz
2548            @echo Creating \$@ ...
2549            -\${ROOTDIR}/tools/embed_encode/encode_files EMBEDDED_FILES.h all_fF.tar.gz
2550    
2551    EOF
2552    fi
2553    
2554  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2555    
2556  # The normal chain of rules is (  .F - .$FS - .o  )  # The normal chain of rules is (  .F - .$FS - .o  )
# Line 2069  cat >>$MAKEFILE <<EOF Line 2562  cat >>$MAKEFILE <<EOF
2562          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
2563  .$FS.o:  .$FS.o:
2564          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<
2565  .F90.$FS90:  .F90.o:  
         \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@  
 .$FS90.o:  
2566          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<
2567  .c.o:  .c.o:
2568          \$(CC) \$(CFLAGS) -c \$<          \$(CC) \$(CFLAGS) \$(DEFINES) \$(INCLUDES) -c \$<
2569    
2570  # Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain  # Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain
2571  .F.p:  .F.p:
# Line 2098  ad_vars="$ad_vars FTL_TAMC_FLAGS FTL_TAF Line 2589  ad_vars="$ad_vars FTL_TAMC_FLAGS FTL_TAF
2589  ad_vars="$ad_vars SVD_TAMC_FLAGS SVD_TAF_FLAGS"  ad_vars="$ad_vars SVD_TAMC_FLAGS SVD_TAF_FLAGS"
2590  for i in $ad_vars ; do  for i in $ad_vars ; do
2591      name=$i      name=$i
2592      t1="t2=\$"`echo $i`      t1="t2=\$"`echo "$i"`
2593      eval $t1      eval $t1
2594      printf "%-20s = " $name >> $MAKEFILE      printf "%-20s = " $name >> $MAKEFILE
2595      echo $t2 >> $MAKEFILE      echo "$t2" | sed -e 's| \+| |g' >> $MAKEFILE
2596  done  done
2597    
2598  echo "  Add the source list for AD code generation"  echo "  Add the source list for AD code generation"
# Line 2118  rm -f ad_files Line 2609  rm -f ad_files
2609  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2610    
2611  # ... AD ...  # ... AD ...
2612  adall: ad_taf  adall: \$(EXE_AD)
2613  adtaf: ad_taf_output.f  adtaf: ad_taf_output.$FS
2614  adtamc: ad_tamc_output.f  adtamc: ad_tamc_output.$FS
2615    
2616  ad_input_code.f: \$(AD_FILES) \$(HEADERFILES)  ad_input_code.$FS: \$(AD_FILES) \$(HEADERFILES)
2617          @$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
2618          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
2619          -rm -f ad_config.template          -rm -f ad_config.template
2620          @make \$(F77FILES)          @make \$(F77FILES)
2621          @make \$(AD_FLOW_FILES)          @make \$(AD_FLOW_FILES)
2622          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ad_input_code.f          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ad_input_code.$FS
2623    
2624  ad_taf_output.f: ad_input_code.f  ad_taf_output.$FS: ad_input_code.$FS
2625          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.f          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
2626          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
2627    
2628  adtafonly:  adtafonly:
2629          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.f          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
2630          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
2631    
2632  ad_taf: ad_taf_output.o \$(OBJFILES)  \${EXE_AD}: ad_taf_output.o \$(OBJFILES)
2633          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)
2634    
2635  ad_tamc_output.f: ad_input_code.f  ad_tamc_output.$FS: ad_input_code.$FS
2636          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.f          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS
2637          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
2638    
2639  ad_tamc: ad_tamc_output.o \$(OBJFILES)  ad_tamc: ad_tamc_output.o \$(OBJFILES)
2640          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)
# Line 2156  adtrick: Line 2647  adtrick:
2647    
2648  # ... FTL ...  # ... FTL ...
2649  ftlall: ftl_taf  ftlall: ftl_taf
2650  ftltaf: ftl_taf_output.f  ftltaf: ftl_taf_output.$FS
2651  ftltamc: ftl_tamc_output.f  ftltamc: ftl_tamc_output.$FS
2652    
2653  ftl_input_code.f: \$(AD_FILES) \$(HEADERFILES)  ftl_input_code.$FS: \$(AD_FILES) \$(HEADERFILES)
2654          @$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
2655          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
2656          -rm -f ftl_config.template          -rm -f ftl_config.template
2657          @make \$(F77FILES)          @make \$(F77FILES)
2658          @make \$(AD_FLOW_FILES)          @make \$(AD_FLOW_FILES)
2659          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ftl_input_code.f          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ftl_input_code.$FS
2660    
2661  ftl_taf_output.f: ftl_input_code.f  ftl_taf_output.$FS: ftl_input_code.$FS
2662          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.f          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
2663          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
2664    
2665  ftltafonly:  ftltafonly:
2666          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.f          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
2667          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
2668    
2669  ftl_taf: ftl_taf_output.o \$(OBJFILES)  ftl_taf: ftl_taf_output.o \$(OBJFILES)
2670          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)
2671    
2672  ftl_tamc_output.f: ftl_input_code.f  ftl_tamc_output.$FS: ftl_input_code.$FS
2673          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.f          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS
2674          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
2675    
2676  ftl_tamc: ftl_tamc_output.o \$(OBJFILES)  ftl_tamc: ftl_tamc_output.o \$(OBJFILES)
2677          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_tamc_output.o \$(LIBS)          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_tamc_output.o \$(LIBS)
2678    
2679    
2680  # ... SVD ...  # ... SVD ...
2681  svdtaf: ad_taf_output.f ftl_taf_output.f  svdtaf: ad_taf_output.$FS ftl_taf_output.$FS
2682  svdall: svd_taf          @echo "--->>> Only ran TAF to generate SVD code!    <<<---"
2683            @echo "--->>> Do make svdall afterwards to compile. <<<---"
2684    svdall: svd_touch svd_taf
2685    
2686  svd_taf: ad_taf_output.o ftl_taf_output.o \$(OBJFILES)  svd_taf: \$(OBJFILES)
2687          \$(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)
2688    
2689            @echo "--->>> Only COMPILE svd code! <<<---"
2690            @echo "--->>> Assumes you previously <<<---"
2691            @echo "--->>> did make svdtaf        <<<---"
2692    
2693    svd_touch:
2694            @echo "--->>> Only COMPILE svd code! <<<---"
2695            @echo "--->>> Assumes you previously <<<---"
2696            @echo "--->>> did make svdtaf        <<<---"
2697            touch ad_taf_output.$FS ftl_taf_output.$FS
2698            \$(FC) \$(FFLAGS) \$(FOPTIM) -c ad_taf_output.$FS
2699            \$(FC) \$(FFLAGS) \$(FOPTIM) -c ftl_taf_output.$FS
2700            @$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
2701            cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h
2702            -rm -f ftl_config.template
2703    
2704  #=========================================  #=========================================
2705    

Legend:
Removed from v.1.108  
changed lines
  Added in v.1.160

  ViewVC Help
Powered by ViewVC 1.1.22