/[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.106 by edhill, Thu Oct 14 03:24:14 2004 UTC revision 1.124 by edhill, Tue Jun 7 20:52:42 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
127  .SUFFIXES:  .SUFFIXES:
128  .SUFFIXES: .$tfs .F  .SUFFIXES: .$tfs .F
129  .F.$tfs:  .F.$tfs:
# 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 581  WARNING: Please contact <MITgcm-support@ Line 592  WARNING: Please contact <MITgcm-support@
592  EOF  EOF
593          return 1          return 1
594      fi      fi
595      cat > genmake_tcomp.f <<EOF      cat > genmake_tcomp.$FS <<EOF
596        subroutine tcall( string )        subroutine tcall( string )
597        character*(*) string        character*(*) string
598        call tsub( string )        call tsub( string )
599        end        end
600  EOF  EOF
601      $FC $FFLAGS $DEFINES -c genmake_tcomp.f >> genmake_warnings 2>&1      $FC $FFLAGS $DEFINES -c genmake_tcomp.$FS >> genmake_warnings 2>&1
602      RETVAL=$?      RETVAL=$?
603      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
604          FC_NAMEMANGLE=$default_nm          FC_NAMEMANGLE=$default_nm
# Line 653  void FC_NAMEMANGLE(cloc) ( double *curti Line 664  void FC_NAMEMANGLE(cloc) ( double *curti
664   *curtim = *curtim/1.E6;   *curtim = *curtim/1.E6;
665  }  }
666  EOF  EOF
667      make genmake_tc_1.o >> genmake_tc.log 2>&1      make genmake_tc_1.o >> genmake_warnings 2>&1
668      RET_C=$?      RET_C=$?
669      cat <<EOF > genmake_tc_2.f      cat <<EOF > genmake_tc_2.$FS
670        program hello        program hello
671        Real*8 wtime        Real*8 wtime
672        external cloc        external cloc
# Line 663  EOF Line 674  EOF
674        print *," HELLO WORLD", wtime        print *," HELLO WORLD", wtime
675        end program hello        end program hello
676  EOF  EOF
677      $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
678      RET_F=$?      RET_F=$?
679      test -x ./genmake_tc  &&  ./genmake_tc >> genmake_tc.log 2>&1      test -x ./genmake_tc  &&  ./genmake_tc >> genmake_warnings 2>&1
680      RETVAL=$?      RETVAL=$?
681      if test "x$RETVAL" = x0 ; then      if test "x$RETVAL" = x0 ; then
682          HAVE_CLOC=t          HAVE_CLOC=t
# Line 675  EOF Line 686  EOF
686  }  }
687    
688    
689    check_HAVE_STAT()  {
690        get_fortran_c_namemangling
691        cat <<EOF > genmake_tc_1.c
692    $FC_NAMEMANGLE
693    #include <stdio.h>
694    #include <stdlib.h>
695    #include <unistd.h>
696    #include <sys/stat.h>
697    #include <sys/types.h>
698    void FC_NAMEMANGLE(tfsize) ( int *nbyte )
699    {
700        char name[512];
701        struct stat astat;
702    
703        name[0] = 'a'; name[1] = '\0';
704        if (! stat(name, &astat))
705            *nbyte = (int)(astat.st_size);
706        else
707            *nbyte = -1;
708    }
709    EOF
710        make genmake_tc_1.o >> genmake_tc.log 2>&1
711        RET_C=$?
712        cat <<EOF > genmake_tc_2.$FS
713          program hello
714          integer nbyte
715          call tfsize(nbyte)
716          print *," HELLO WORLD", nbyte
717          end program hello
718    EOF
719        $FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o >> genmake_tc.log 2>&1
720        RET_F=$?
721        test -x ./genmake_tc  &&  ./genmake_tc >> genmake_tc.log 2>&1
722        RETVAL=$?
723        if test "x$RETVAL" = x0 ; then
724            HAVE_STAT=t
725            DEFINES="$DEFINES -DHAVE_STAT"
726        fi
727        rm -f genmake_tc*
728    }
729    
730    
731  check_netcdf_libs()  {  check_netcdf_libs()  {
732        if test ! "x$SKIP_NETCDF_CHECK" = x ; then
733            return
734        fi
735      echo "" > genmake_tnc.log      echo "" > genmake_tnc.log
736      cat <<EOF > genmake_tnc.for      cat <<EOF > genmake_tnc.F
737        program fgennc        program fgennc
738  #include "netcdf.inc"  #include "netcdf.inc"
739    EOF
740        if test ! "x$MPI" = x ; then
741            echo '#include "mpif.h"' >> genmake_tnc.F
742        fi
743        cat <<EOF >> genmake_tnc.F
744        integer iret, ncid, xid        integer iret, ncid, xid
745        iret = nf_create('genmake_tnc.nc', NF_CLOBBER, ncid)        iret = nf_create('genmake_tnc.nc', NF_CLOBBER, ncid)
746        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
# Line 689  check_netcdf_libs()  { Line 750  check_netcdf_libs()  {
750        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
751        end        end
752  EOF  EOF
753      #echo "$CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f"      echo "Executing:" > genmake_tnc.log
754      #echo "$FC $FFLAGS $FOPTIM -c genmake_tnc.f"      echo "  $CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS" \
755      #echo "$LINK -o genmake_tnc.o $LIBS"          > genmake_tnc.log
756      $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f 2>/dev/null  \      RET_CPP=f
757          &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.f >> genmake_tnc.log 2>&1  \      $CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS 2>/dev/null  \
758            &&  RET_CPP=t
759        if test "x$RET_CPP" = xf ; then
760            echo "  WARNING: CPP failed to pre-process the netcdf test." \
761                > genmake_tnc.log
762            echo "    Please check that \$INCLUDES is properly set." \
763                > genmake_tnc.log
764        fi
765        echo "Executing:" > genmake_tnc.log
766        echo "  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS" > genmake_tnc.log
767        echo "  $LINK -o genmake_tnc.o $LIBS" > genmake_tnc.log
768        $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
769          &&  $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
770      RET_COMPILE=$?      RET_COMPILE=$?
771    
# Line 708  EOF Line 780  EOF
780          HAVE_NETCDF=t          HAVE_NETCDF=t
781      else      else
782          # try again with "-lnetcdf" added to the libs          # try again with "-lnetcdf" added to the libs
783          $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f 2>/dev/null  \          $CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS 2>/dev/null  \
784              &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.f >> genmake_tnc.log 2>&1  \              &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
785              &&  $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
786          RET_COMPILE=$?          RET_COMPILE=$?
787          if test "x$RET_COMPILE" = x0 ; then          if test "x$RET_COMPILE" = x0 ; then
# Line 735  PLATFORM= Line 807  PLATFORM=
807  LN=  LN=
808  S64=  S64=
809  KPP=  KPP=
810  FC=  #FC=
811  #CC=gcc  #CC=gcc
812  CPP=  #CPP=
813  LINK=  LINK=
814  DEFINES=  DEFINES=
815  PACKAGES=  PACKAGES=
816  ENABLE=  ENABLE=
817  DISABLE=  DISABLE=
818  MAKEFILE=  # MAKEFILE=
819  #MAKEDEPEND=  # MAKEDEPEND=
820  PDEPEND=  PDEPEND=
821  DUMPSTATE=t  DUMPSTATE=t
822  PDEFAULT=  PDEFAULT=
823  OPTFILE=  OPTFILE=
824  INCLUDES="-I."  INCLUDES="-I. $INCLUDES"
825  FFLAGS=  FFLAGS=
826  FOPTIM=  FOPTIM=
827  CFLAGS=  CFLAGS=
# Line 763  NOOPTFLAGS= Line 835  NOOPTFLAGS=
835  MPI=  MPI=
836  MPIPATH=  MPIPATH=
837    
838  # DEFINES checked by test compilation  # DEFINES checked by test compilation or command-line
839  HAVE_SYSTEM=  HAVE_SYSTEM=
840  HAVE_FDATE=  HAVE_FDATE=
841  FC_NAMEMANGLE=  FC_NAMEMANGLE=
842  HAVE_CLOC=  HAVE_CLOC=
843    HAVE_STAT=
844  HAVE_NETCDF=  HAVE_NETCDF=
845  HAVE_ETIME=  HAVE_ETIME=
846    IGNORE_TIME=
847    
848  MODS=  MODS=
849  TOOLSDIR=  TOOLSDIR=
# Line 780  STANDARDDIRS="USE_THE_DEFAULT" Line 854  STANDARDDIRS="USE_THE_DEFAULT"
854  G2ARGS=  G2ARGS=
855  BASH=  BASH=
856  PWD=`pwd`  PWD=`pwd`
857  MAKE=make  test "x$MAKE" = x  &&  MAKE=make
858  AWK=awk  test "x$AWK" = x   &&  AWK=awk
859  THISHOST=`hostname`  THISHOST=`hostname`
860  THISCWD=`pwd`  THISCWD=`pwd`
861  THISDATE=`date`  THISDATE=`date`
# Line 1018  for ac_option in "$@" ; do Line 1092  for ac_option in "$@" ; do
1092              ac_prev=TAMC_EXTRA ;;              ac_prev=TAMC_EXTRA ;;
1093          -tamc_extra=* | --tamc_extra=*)          -tamc_extra=* | --tamc_extra=*)
1094              TAMC_EXTRA=$ac_optarg ;;              TAMC_EXTRA=$ac_optarg ;;
1095            
1096            -ignoretime | -ignore_time | --ignoretime | --ignore_time)
1097                IGNORE_TIME="-DIGNORE_TIME" ;;
1098    
1099          -*)          -*)
1100              echo "Error: unrecognized option: "$ac_option              echo "Error: unrecognized option: "$ac_option
# Line 1033  for ac_option in "$@" ; do Line 1110  for ac_option in "$@" ; do
1110            
1111  done  done
1112    
1113    
1114  if test -f ./.genmakerc ; then  if test -f ./.genmakerc ; then
1115      echo      echo
1116      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 1125  fi
1125    
1126  #  Find the MITgcm ${ROOTDIR}  #  Find the MITgcm ${ROOTDIR}
1127  if test "x${ROOTDIR}" = x ; then  if test "x${ROOTDIR}" = x ; then
1128      tmp=`echo $PWD | sed -e 's/\// /g' | awk '{print $NR}'`      tmp=`echo $PWD | sed -e 's/\// /g' | $AWK '{print $NR}'`
1129      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
1130          ROOTDIR=".."          ROOTDIR=".."
1131      else      else
# Line 1077  if test -f "${ROOTDIR}/doc/tag-index" ; Line 1155  if test -f "${ROOTDIR}/doc/tag-index" ;
1155      THISVER=`grep checkpoint ${ROOTDIR}/doc/tag-index | head -1`      THISVER=`grep checkpoint ${ROOTDIR}/doc/tag-index | head -1`
1156  fi  fi
1157    
1158    if test "x$MAKEFILE" = x ; then
1159        MAKEFILE="Makefile"
1160    fi
1161    
1162  echo "  getting OPTFILE information:  "  echo "  getting OPTFILE information:  "
1163  if test "x${OPTFILE}" = x ; then  if test "x${OPTFILE}" = x ; then
1164      if test "x$MITGCM_OF" = x ; then      if test "x$MITGCM_OF" = x ; then
# Line 1106  if test "x$OPTFILE" != xNONE ; then Line 1188  if test "x$OPTFILE" != xNONE ; then
1188      fi      fi
1189  fi  fi
1190    
 #  Check for broken systems that cannot correctly distinguish *.F and *.f files  
 # check_for_broken_Ff  
   
1191  echo "  getting AD_OPTFILE information:  "  echo "  getting AD_OPTFILE information:  "
1192  if test "x${AD_OPTFILE}" = x ; then  if test "x${AD_OPTFILE}" = x ; then
1193      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 1215  if test "x${AD_OPTFILE}" != xNONE ; then
1215      fi      fi
1216  fi  fi
1217    
1218    #====================================================================
1219    #  Set default values if not set by the optfile
1220    #
1221  #  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,
1222  #  either set defaults or complain and abort!  #  either set defaults or complain and abort!
1223  if test ! "x$BASH" = x ; then  if test ! "x$BASH" = x ; then
# Line 1224  fi Line 1306  fi
1306    
1307  printf "\n===  Checking system libraries  ===\n"  printf "\n===  Checking system libraries  ===\n"
1308  printf "  Do we have the system() command using $FC...  "  printf "  Do we have the system() command using $FC...  "
1309  cat > genmake_tcomp.f <<EOF  cat > genmake_tcomp.$FS <<EOF
1310        program hello        program hello
1311        call system('echo hi')        call system('echo hi')
1312        end        end
1313  EOF  EOF
1314  $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.f > genmake_tcomp.log 2>&1  $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.$FS > genmake_tcomp.log 2>&1
1315  RETVAL=$?  RETVAL=$?
1316  if test "x$RETVAL" = x0 ; then  if test "x$RETVAL" = x0 ; then
1317      HAVE_SYSTEM=t      HAVE_SYSTEM=t
# Line 1242  fi Line 1324  fi
1324  rm -f genmake_tcomp*  rm -f genmake_tcomp*
1325    
1326  printf "  Do we have the fdate() command using $FC...  "  printf "  Do we have the fdate() command using $FC...  "
1327  cat > genmake_tcomp.f <<EOF  cat > genmake_tcomp.$FS <<EOF
1328        program hello        program hello
1329        CHARACTER(128) string        CHARACTER(128) string
1330        string = ' '        string = ' '
# Line 1250  cat > genmake_tcomp.f <<EOF Line 1332  cat > genmake_tcomp.f <<EOF
1332        print *, string        print *, string
1333        end        end
1334  EOF  EOF
1335  $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.f > genmake_tcomp.log 2>&1  $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.$FS > genmake_tcomp.log 2>&1
1336  RETVAL=$?  RETVAL=$?
1337  if test "x$RETVAL" = x0 ; then  if test "x$RETVAL" = x0 ; then
1338      HAVE_FDATE=t      HAVE_FDATE=t
# Line 1263  fi Line 1345  fi
1345  rm -f genmake_tcomp*  rm -f genmake_tcomp*
1346    
1347  printf "  Do we have the etime() command using $FC...  "  printf "  Do we have the etime() command using $FC...  "
1348  cat > genmake_tcomp.f <<EOF  cat > genmake_tcomp.$FS <<EOF
1349        program hello        program hello
1350        REAL*4 ACTUAL, TARRAY(2)        REAL*4 ACTUAL, TARRAY(2)
1351        EXTERNAL ETIME        EXTERNAL ETIME
# Line 1272  cat > genmake_tcomp.f <<EOF Line 1354  cat > genmake_tcomp.f <<EOF
1354        print *, tarray        print *, tarray
1355        end        end
1356  EOF  EOF
1357  $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.f > genmake_tcomp.log 2>&1  $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.$FS > genmake_tcomp.log 2>&1
1358  RETVAL=$?  RETVAL=$?
1359  if test "x$RETVAL" = x0 ; then  if test "x$RETVAL" = x0 ; then
1360      HAVE_ETIME=t      HAVE_ETIME=t
# Line 1293  else Line 1375  else
1375  fi  fi
1376  rm -f genmake_t*  rm -f genmake_t*
1377    
1378    printf "  Can we use stat() through C calls...  "
1379    check_HAVE_STAT
1380    if test "x$HAVE_STAT" != x ; then
1381        echo "yes"
1382    else
1383        echo "no"
1384    fi
1385    rm -f genmake_t*
1386    
1387  printf "  Can we create NetCDF-enabled binaries...  "  printf "  Can we create NetCDF-enabled binaries...  "
1388  check_netcdf_libs  check_netcdf_libs
1389  if test "x$HAVE_NETCDF" != x ; then  if test "x$HAVE_NETCDF" != x ; then
# Line 1300  if test "x$HAVE_NETCDF" != x ; then Line 1391  if test "x$HAVE_NETCDF" != x ; then
1391  else  else
1392      echo "no"      echo "no"
1393  fi  fi
1394    DEFINES="$DEFINES $IGNORE_TIME"
1395    
1396  printf "\n===  Setting defaults  ===\n"  printf "\n===  Setting defaults  ===\n"
1397  printf "  Adding MODS directories:  "  printf "  Adding MODS directories:  "
# Line 1317  for d in $MODS ; do Line 1408  for d in $MODS ; do
1408  done  done
1409  echo  echo
1410    
 if test "x$MAKEFILE" = x ; then  
     MAKEFILE="Makefile"  
 fi  
1411  if test "x${PLATFORM}" = x ; then  if test "x${PLATFORM}" = x ; then
1412      PLATFORM=$p_PLATFORM      PLATFORM=$p_PLATFORM
1413  fi  fi
1414    
1415  if test "x${EXEDIR}" = x ; then  if test "x${EXEDIR}" = x ; then
1416      tmp=`echo $PWD | sed -e 's/\// /g' | awk '{print $NR}'`      tmp=`echo $PWD | sed -e 's/\// /g' | $AWK '{print $NR}'`
1417      if test "x$tmp" = "xbin" -a -d ../exe -a $ROOTDIR = .. ; then      if test "x$tmp" = "xbin" -a -d ../exe -a $ROOTDIR = .. ; then
1418          EXEDIR=../exe          EXEDIR=../exe
1419      else      else
# Line 1536  EOF Line 1624  EOF
1624          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`
1625          DISABLE="$DISABLE mnc"          DISABLE="$DISABLE mnc"
1626      else      else
1627          ( cd $ROOTDIR"/pkg/mnc" && $MAKE templates ) > make_mnc.errors 2>&1          ( cd $ROOTDIR"/pkg/mnc" && $MAKE testclean && $MAKE templates ) > make_mnc.errors 2>&1
1628          RETVAL=$?          RETVAL=$?
1629          if test "x${RETVAL}" = x0 ; then          if test "x${RETVAL}" = x0 ; then
1630              rm -f make_mnc.errors              rm -f make_mnc.errors
# Line 1651  for n in $names ; do Line 1739  for n in $names ; do
1739              fi              fi
1740          done          done
1741          if test "x$has_pack" = xf ; then          if test "x$has_pack" = xf ; then
1742              undef=`echo "ALLOW_$n" | $AWK '{print toupper($0)}'`              undef=`echo "ALLOW_$n" | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
1743              DISABLED_PACKAGES="$DISABLED_PACKAGES -U$undef"              DISABLED_PACKAGES="$DISABLED_PACKAGES -U$undef"
1744          fi          fi
1745      fi      fi
1746  done  done
1747  ENABLED_PACKAGES=  ENABLED_PACKAGES=
1748  for i in $PACKAGES ; do  for i in $PACKAGES ; do
1749      def=`echo "ALLOW_$i" | $AWK '{print toupper($0)}'`      def=`echo "ALLOW_$i" | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
1750      ENABLED_PACKAGES="$ENABLED_PACKAGES -D$def"      ENABLED_PACKAGES="$ENABLED_PACKAGES -D$def"
1751  #eh3 DEFINES="$DEFINES -D$def"  #eh3 DEFINES="$DEFINES -D$def"
1752    
# Line 1742  for i in $SOURCEDIRS ; do Line 1830  for i in $SOURCEDIRS ; do
1830          cat $i/$j >> ad_files          cat $i/$j >> ad_files
1831      done      done
1832  done  done
1833    if test ! "x"$FS = "x.f" ; then
1834        cat ad_files | sed -e "s/\.f/.$FS/g" > ad_files_f
1835        mv -f ad_files_f ad_files
1836    fi
1837    
1838  echo  echo
1839  echo "===  Creating the Makefile  ==="  echo "===  Creating the Makefile  ==="
# Line 1785  for d in $alldirs ; do Line 1876  for d in $alldirs ; do
1876                          deplist="$deplist $sf"                          deplist="$deplist $sf"
1877                          ;;                          ;;
1878                  esac                  esac
1879                  extn=`echo $sf | $AWK -F '.' '{print $NF}'`                  extn=`echo $sf | $AWK -F. '{print $NF}'`
1880                  case $extn in                  case $extn in
1881                      F)                      F)
1882                          echo    " \\"  >> srclist.inc                          echo    " \\"  >> srclist.inc
# Line 1925  CFLAGS = ${CFLAGS} Line 2016  CFLAGS = ${CFLAGS}
2016  NOOPTFILES = ${NOOPTFILES}  NOOPTFILES = ${NOOPTFILES}
2017  NOOPTFLAGS = ${NOOPTFLAGS}  NOOPTFLAGS = ${NOOPTFLAGS}
2018  # Flags and libraries needed for linking  # Flags and libraries needed for linking
2019  LIBS = ${LIBS} \$(XLIBS)  LIBS = ${LIBS}
2020  # Name of the Mekfile  # Name of the Mekfile
2021  MAKEFILE=${MAKEFILE}  MAKEFILE=${MAKEFILE}
2022    
# Line 2067  cat >>$MAKEFILE <<EOF Line 2158  cat >>$MAKEFILE <<EOF
2158    
2159  # ... AD ...  # ... AD ...
2160  adall: ad_taf  adall: ad_taf
2161  adtaf: ad_taf_output.f  adtaf: ad_taf_output.$FS
2162  adtamc: ad_tamc_output.f  adtamc: ad_tamc_output.$FS
2163    
2164  ad_input_code.f: \$(AD_FILES) \$(HEADERFILES)  ad_input_code.$FS: \$(AD_FILES) \$(HEADERFILES)
2165          @$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
2166          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
2167          -rm -f ad_config.template          -rm -f ad_config.template
2168          @make \$(F77FILES)          @make \$(F77FILES)
2169          @make \$(AD_FLOW_FILES)          @make \$(AD_FLOW_FILES)
2170          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ad_input_code.f          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ad_input_code.$FS
2171    
2172  ad_taf_output.f: ad_input_code.f  ad_taf_output.$FS: ad_input_code.$FS
2173          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.f          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
2174          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
2175    
2176  adtafonly:  adtafonly:
2177          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.f          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
2178          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
2179    
2180  ad_taf: ad_taf_output.o \$(OBJFILES)  ad_taf: ad_taf_output.o \$(OBJFILES)
2181          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)
2182    
2183  ad_tamc_output.f: ad_input_code.f  ad_tamc_output.$FS: ad_input_code.$FS
2184          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.f          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS
2185          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
2186    
2187  ad_tamc: ad_tamc_output.o \$(OBJFILES)  ad_tamc: ad_tamc_output.o \$(OBJFILES)
2188          \$(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 2104  adtrick: Line 2195  adtrick:
2195    
2196  # ... FTL ...  # ... FTL ...
2197  ftlall: ftl_taf  ftlall: ftl_taf
2198  ftltaf: ftl_taf_output.f  ftltaf: ftl_taf_output.$FS
2199  ftltamc: ftl_tamc_output.f  ftltamc: ftl_tamc_output.$FS
2200    
2201  ftl_input_code.f: \$(AD_FILES) \$(HEADERFILES)  ftl_input_code.$FS: \$(AD_FILES) \$(HEADERFILES)
2202          @$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
2203          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
2204          -rm -f ftl_config.template          -rm -f ftl_config.template
2205          @make \$(F77FILES)          @make \$(F77FILES)
2206          @make \$(AD_FLOW_FILES)          @make \$(AD_FLOW_FILES)
2207          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ftl_input_code.f          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ftl_input_code.$FS
2208    
2209  ftl_taf_output.f: ftl_input_code.f  ftl_taf_output.$FS: ftl_input_code.$FS
2210          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.f          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
2211          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
2212    
2213  ftltafonly:  ftltafonly:
2214          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.f          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
2215          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
2216    
2217  ftl_taf: ftl_taf_output.o \$(OBJFILES)  ftl_taf: ftl_taf_output.o \$(OBJFILES)
2218          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)
2219    
2220  ftl_tamc_output.f: ftl_input_code.f  ftl_tamc_output.$FS: ftl_input_code.$FS
2221          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.f          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS
2222          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
2223    
2224  ftl_tamc: ftl_tamc_output.o \$(OBJFILES)  ftl_tamc: ftl_tamc_output.o \$(OBJFILES)
2225          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_tamc_output.o \$(LIBS)          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_tamc_output.o \$(LIBS)
2226    
2227    
2228  # ... SVD ...  # ... SVD ...
2229  svdtaf: ad_taf_output.f ftl_taf_output.f  svdtaf: ad_taf_output.$FS ftl_taf_output.$FS
2230  svdall: svd_taf          @echo "--->>> Only ran TAF to generate SVD code!    <<<---"
2231            @echo "--->>> Do make svdall afterwards to compile. <<<---"
2232    svdall: svd_touch svd_taf
2233    
2234  svd_taf: ad_taf_output.o ftl_taf_output.o \$(OBJFILES)  svd_taf: \$(OBJFILES)
2235          \$(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)
2236    
2237            @echo "--->>> Only COMPILE svd code! <<<---"
2238            @echo "--->>> Assumes you previously <<<---"
2239            @echo "--->>> did make svdtaf        <<<---"
2240    
2241    svd_touch:
2242            @echo "--->>> Only COMPILE svd code! <<<---"
2243            @echo "--->>> Assumes you previously <<<---"
2244            @echo "--->>> did make svdtaf        <<<---"
2245            touch ad_taf_output.$FS ftl_taf_output.$FS
2246            \$(FC) \$(FFLAGS) \$(FOPTIM) -c ad_taf_output.$FS
2247            \$(FC) \$(FFLAGS) \$(FOPTIM) -c ftl_taf_output.$FS
2248            @$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
2249            cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h
2250            -rm -f ftl_config.template
2251    
2252  #=========================================  #=========================================
2253    

Legend:
Removed from v.1.106  
changed lines
  Added in v.1.124

  ViewVC Help
Powered by ViewVC 1.1.22