/[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.263 by jahn, Mon Jan 6 16:49:10 2014 UTC revision 1.282 by jmc, Thu Mar 30 18:06:38 2017 UTC
# Line 19  Usage: "$0" [OPTIONS] Line 19  Usage: "$0" [OPTIONS]
19      -help | --help | -h | --h      -help | --help | -h | --h
20            Print this help message and exit.            Print this help message and exit.
21    
22        -oad | --oad
23              Generate a Makefile for an OpenAD built
24    
25        -nocat4ad | -dog4ad | -ncad | -dad
26              do not concatenate (cat) source code sent to TAF
27              resulting in compilation of multiple files
28    
29      -adoptfile NAME | --adoptfile NAME | -adof NAME | --adof NAME      -adoptfile NAME | --adoptfile NAME | -adof NAME | --adof NAME
30        -adoptfile=NAME | --adoptfile=NAME | -adof=NAME | --adof=NAME        -adoptfile=NAME | --adoptfile=NAME | -adof=NAME | --adof=NAME
31            Use "NAME" as the adoptfile.  By default, the file at            Use "NAME" as the adoptfile.  By default, the file at
32              "tools/adjoint_options/adjoint_oad" (for OpenAD built) or
33            "tools/adjoint_options/adjoint_default" will be used.            "tools/adjoint_options/adjoint_default" will be used.
34    
35      -nooptfile | --nooptfile      -optfile NAME | --optfile NAME | -of NAME | --of NAME
       -optfile NAME | --optfile NAME | -of NAME | --of NAME  
36        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME
37            Use "NAME" as the optfile.  By default, an attempt will be            Use "NAME" as the optfile.  By default, an attempt will be
38            made to find an appropriate "standard" optfile in the            made to find an appropriate "standard" optfile in the
# Line 138  Usage: "$0" [OPTIONS] Line 145  Usage: "$0" [OPTIONS]
145            from \$PATH/lib and use binaries from \$PATH/bin.            from \$PATH/lib and use binaries from \$PATH/bin.
146    
147      -omp | --omp      -omp | --omp
148            Activate OpenMP code + use Compiler option OMPFLAG            Activate OpenMP code
149      -omp=OMPFLAG | --omp=OMPFLAG      -omp=OMPFLAG | --omp=OMPFLAG
150            Activate OpenMP code + use Compiler option OMPFLAG            Activate OpenMP code + use Compiler option OMPFLAG
151    
# Line 690  get_pdepend_list()  { Line 697  get_pdepend_list()  {
697        echo "Error: unable to parse package dependencies -- please check PKG_DEPEND=\"$1\""        echo "Error: unable to parse package dependencies -- please check PKG_DEPEND=\"$1\""
698        exit 1        exit 1
699      fi      fi
700        #echo "---- content of tmp file '.pd_tmp' :" ; cat .pd_tmp ; echo "---- end of file"
701      . ./.pd_tmp      . ./.pd_tmp
702      rm -f ./.pd_tmp      rm -f ./.pd_tmp
703  }  }
# Line 1079  EOF Line 1087  EOF
1087  }  }
1088    
1089  check_lapack_libs()  {  check_lapack_libs()  {
1090      if test ! "x$SKIP_LAPACK_CHECK" = x ; then      if test "x$CHECK_FOR_LAPACK" = xf ; then return ; fi
         return  
     fi  
1091      echo >> $LOGFILE      echo >> $LOGFILE
1092      echo "running: check_lapack_libs()" >> $LOGFILE      echo "running: check_lapack_libs()" >> $LOGFILE
1093      cat <<EOF > genmake_tla.F      cat <<EOF > genmake_tla.F
# Line 1277  GSL= Line 1283  GSL=
1283  DEVEL=  DEVEL=
1284  HAVE_TEST_L=  HAVE_TEST_L=
1285    
1286  # comment this line out to enable lapack test  # set this to "t" to enable lapack test
1287  SKIP_LAPACK_CHECK=t  CHECK_FOR_LAPACK=f
1288    
1289  # DEFINES checked by test compilation or command-line  # DEFINES checked by test compilation or command-line
1290  HAVE_SYSTEM=  HAVE_SYSTEM=
# Line 1325  FS= Line 1331  FS=
1331  FS90=  FS90=
1332    
1333  AUTODIFF_PKG_USED=f  AUTODIFF_PKG_USED=f
1334    OPENAD=
1335  AD_OPTFILE=  AD_OPTFILE=
1336    CAT_SRC_FOR_TAF=1
1337  TAF=  TAF=
1338  AD_TAF_FLAGS=  AD_TAF_FLAGS=
1339  FTL_TAF_FLAGS=  FTL_TAF_FLAGS=
# Line 1355  gm_s7="TMP THISHOST THISUSER THISDATE TH Line 1363  gm_s7="TMP THISHOST THISUSER THISDATE TH
1363  gm_s8="HAVE_NETCDF HAVE_SYSTEM HAVE_FDATE HAVE_ETIME HAVE_LAPACK HAVE_FLUSH"  gm_s8="HAVE_NETCDF HAVE_SYSTEM HAVE_FDATE HAVE_ETIME HAVE_LAPACK HAVE_FLUSH"
1364    
1365  #  The following are all related to adjoint/tangent-linear stuff  #  The following are all related to adjoint/tangent-linear stuff
1366  gm_s10="AUTODIFF_PKG_USED AD_OPTFILE TAMC TAF AD_TAMC_FLAGS AD_TAF_FLAGS"  gm_s10="AUTODIFF_PKG_USED AD_OPTFILE OPENAD TAMC TAF AD_TAMC_FLAGS AD_TAF_FLAGS"
1367  gm_s11="FTL_TAMC_FLAGS FTL_TAF_FLAGS SVD_TAMC_FLAGS SVD_TAF_FLAGS"  gm_s11="FTL_TAMC_FLAGS FTL_TAF_FLAGS SVD_TAMC_FLAGS SVD_TAF_FLAGS"
1368  gm_s12="TAF_EXTRA TAMC_EXTRA DIVA MPIINCLUDEDIR MPI_HEADER_FILES"  gm_s12="TAF_EXTRA TAMC_EXTRA DIVA MPIINCLUDEDIR MPI_HEADER_FILES"
1369    
# Line 1400  for ac_option in "$@" ; do Line 1408  for ac_option in "$@" ; do
1408          -help | --help | -h | --h)          -help | --help | -h | --h)
1409              usage ;;              usage ;;
1410    
         -nooptfile | --nooptfile)  
             OPTFILE="NONE" ;;  
1411          -optfile | --optfile | -of | --of)          -optfile | --optfile | -of | --of)
1412              ac_prev=OPTFILE ;;              ac_prev=OPTFILE ;;
1413          -optfile=* | --optfile=* | -of=* | --of=*)          -optfile=* | --optfile=* | -of=* | --of=*)
1414              OPTFILE=$ac_optarg ;;              OPTFILE=$ac_optarg ;;
1415    
1416            -oad | --oad)
1417                OPENAD="true" ; ALWAYS_USE_F90=1 ;;
1418            -nocat4ad | -dog4ad | -ncad | -dad)
1419                CAT_SRC_FOR_TAF=0 ;;
1420          -adoptfile | --adoptfile | -adof | --adof)          -adoptfile | --adoptfile | -adof | --adof)
1421              ac_prev=AD_OPTFILE ;;              ac_prev=AD_OPTFILE ;;
1422          -adoptfile=* | --adoptfile=* | -adof=* | --adof=*)          -adoptfile=* | --adoptfile=* | -adof=* | --adof=*)
# Line 1578  done Line 1588  done
1588    
1589  #TMP=./genmk_$$  #TMP=./genmk_$$
1590  #- try to put temporary files in system-local /tmp dir  #- try to put temporary files in system-local /tmp dir
1591  TMP=/tmp/genmk_$$  TMP=/tmp/genmk_${USER}_$$
1592  touch $TMP ; retVal=$?  touch $TMP ; retVal=$?
1593  if [ $retVal -eq 0 ] ; then  if [ $retVal -eq 0 ] ; then
1594    if test ! -r $TMP ; then TMP=./genmk_$$ ; fi    if test ! -r $TMP ; then TMP=./genmk_$$ ; fi
# Line 1680  fi Line 1690  fi
1690    
1691  echo "  getting AD_OPTFILE information:"  echo "  getting AD_OPTFILE information:"
1692  if test "x${AD_OPTFILE}" = x ; then  if test "x${AD_OPTFILE}" = x ; then
1693      if test "x$MITGCM_AD_OF" = x ; then      if test "x$MITGCM_AD_OF" != x ; then
1694            AD_OPTFILE=$MITGCM_AD_OF
1695        elif test "x$OPENAD" = x ; then
1696          AD_OPTFILE=$ROOTDIR/tools/adjoint_options/adjoint_default          AD_OPTFILE=$ROOTDIR/tools/adjoint_options/adjoint_default
1697      else      else
1698          AD_OPTFILE=$MITGCM_AD_OF          AD_OPTFILE=$ROOTDIR/tools/adjoint_options/adjoint_oad
1699      fi      fi
1700  fi  fi
1701  if test "x${AD_OPTFILE}" != xNONE ; then  if test "x${AD_OPTFILE}" != xNONE ; then
# Line 1706  if test "x${AD_OPTFILE}" != xNONE ; then Line 1718  if test "x${AD_OPTFILE}" != xNONE ; then
1718  fi  fi
1719    
1720  #====================================================================  #====================================================================
1721    # Initialize INCLUDEDIRSMK from and optfile INCLUDEDIRS
1722    if test "x${INCLUDEDIRS}" != "x" ; then
1723     INCLUDEDIRSMK=${INCLUDEDIRS}
1724    fi
1725    
1726    #====================================================================
1727  #  Set default values if not set by the optfile  #  Set default values if not set by the optfile
1728  #  #
1729  #  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,
# Line 1950  else Line 1968  else
1968  fi  fi
1969  rm -f genmake_tcomp*  rm -f genmake_tcomp*
1970    
1971  printf "  Do we have the etime() command using $FC...  "  printf "  Do we have the etime() command using $FC... "
1972  cat > genmake_tcomp.$FS <<EOF  cat > genmake_tcomp_1.$FS <<EOF
1973        program hello        program hello
1974        REAL*4 ACTUAL, TARRAY(2)        REAL*4 actual, tarray(2)
1975        EXTERNAL ETIME        EXTERNAL ETIME
1976        REAL*4 ETIME        REAL*4 ETIME
1977        actual = etime( tarray )        actual = ETIME( tarray )
1978        print *, tarray        print *, tarray
1979        end        end
1980  EOF  EOF
1981  $FC $FFLAGS -o genmake_tcomp genmake_tcomp.$FS > genmake_tcomp.log 2>&1  $FC $FFLAGS -o genmake_tcomp_1 genmake_tcomp_1.$FS > genmake_tcomp.log 2>&1
1982  RETVAL=$?  RETVAL=$?
1983  if test "x$RETVAL" = x0 ; then  if test "x$RETVAL" = x0 ; then
1984      HAVE_ETIME=t      HAVE_ETIME='Fct'
1985      DEFINES="$DEFINES -DHAVE_ETIME"      DEFINES="$DEFINES -DHAVE_ETIME_FCT"
1986      echo "yes"      echo " yes (${HAVE_ETIME})"
1987  else  else
1988      cat > genmake_tcomp_2.$FS <<EOF
1989          program hello
1990          REAL*4 actual, tarray(2)
1991          actual = -999.
1992          call ETIME( tarray, actual )
1993          if ( actual.ge.0. ) then
1994            print *, 0, tarray, actual
1995          else
1996            print *, 1, tarray, actual
1997          endif
1998          end
1999    EOF
2000      $FC $FFLAGS -o genmake_tcomp_2 genmake_tcomp_2.$FS >> genmake_tcomp.log 2>&1
2001      RETVAL=$?
2002      if test "x$RETVAL" = x0 ; then
2003        echo -n 'c,'
2004        ./genmake_tcomp_2 > genmake_tcomp_2.out 2>&1
2005        RETVAL=$?
2006      fi
2007      if test "x$RETVAL" = x0 ; then
2008        echo -n 'r:'
2009        RETVAL=`cat genmake_tcomp_2.out | $AWK '{print $1}'`
2010      fi
2011      if test "x$RETVAL" = x0 ; then
2012        HAVE_ETIME='SbR'
2013        DEFINES="$DEFINES -DHAVE_ETIME_SBR"
2014        echo " yes (${HAVE_ETIME})"
2015      else
2016      HAVE_ETIME=      HAVE_ETIME=
2017      echo "no"      echo " no"
2018      fi
2019  fi  fi
2020    #mkdir chk_etime ; cp -p -f genmake_tcomp* chk_etime
2021  rm -f genmake_tcomp*  rm -f genmake_tcomp*
2022    
2023  printf "  Can we call simple C routines (here, \"cloc()\") using $FC...  "  printf "  Can we call simple C routines (here, \"cloc()\") using $FC...  "
# Line 2064  for d in $MODS ; do Line 2112  for d in $MODS ; do
2112          printf "$d "          printf "$d "
2113          SOURCEDIRS="$SOURCEDIRS $d"          SOURCEDIRS="$SOURCEDIRS $d"
2114          INCLUDEDIRS="$INCLUDEDIRS $d"          INCLUDEDIRS="$INCLUDEDIRS $d"
2115            SOURCEDIRSMK="$SOURCEDIRSMK $d"
2116            INCLUDEDIRSMK="$INCLUDEDIRSMK $d"
2117      fi      fi
2118  done  done
2119  echo  echo
# Line 2087  fi Line 2137  fi
2137    
2138  if test "x${TOOLSDIR}" = x ; then  if test "x${TOOLSDIR}" = x ; then
2139      TOOLSDIR="$ROOTDIR/tools"      TOOLSDIR="$ROOTDIR/tools"
2140        TOOLSDIRMK='$(ROOTDIR)'"/tools"
2141    else
2142        TOOLSDIRMK=${TOOLSDIR}
2143  fi  fi
2144  if test ! -d ${TOOLSDIR} ; then  if test ! -d ${TOOLSDIR} ; then
2145      echo "Error: the specified TOOLSDIR (\"$TOOLSDIR\") does not exist!"      echo "Error: the specified TOOLSDIR (\"$TOOLSDIR\") does not exist!"
# Line 2397  if  test "x${PKG_DEPEND}" != x ; then Line 2450  if  test "x${PKG_DEPEND}" != x ; then
2450              if test "x$p" = "x$pname" ; then pin="t" ; fi              if test "x$p" = "x$pname" ; then pin="t" ; fi
2451          done          done
2452    
2453          #  Is the DNAME entry a (+) or (-) rule ?          #  Is the DNAME entry a (=), (+) or (-) rule ?
2454          tmp="dname=\"\$DNAME_$i\""          tmp="dname=\"\$DNAME_$i\""
2455          eval $tmp          eval $tmp
2456          plus="-"          plus="a"
2457          echo $dname | grep '^+' > /dev/null 2>&1          echo $dname | grep '^+' > /dev/null 2>&1
2458          RETVAL=$?          RETVAL=$?
2459          if test "x$RETVAL" = x0 ; then          if test "x$RETVAL" = x0 ; then plus="+" ; fi
2460              plus="+"          echo $dname | grep '^-' > /dev/null 2>&1
2461          fi          RETVAL=$?
2462            if test "x$RETVAL" = x0 ; then plus="-" ; fi
2463    
2464          #  Is $dname in the current $PACKAGES list?          #  Is $dname in the current $PACKAGES list?
2465          dname=`echo $dname | sed -e 's/^[+-]//'`          dname=`echo $dname | sed -e 's/^[=+-]//'`
2466          din="f"          din="f"
2467          for p in $PACKAGES ; do          for p in $PACKAGES ; do
2468              if test "x$p" = "x$dname" ; then              if test "x$p" = "x$dname" ; then
# Line 2417  if  test "x${PKG_DEPEND}" != x ; then Line 2471  if  test "x${PKG_DEPEND}" != x ; then
2471          done          done
2472    
2473          #  Do we need to add $dname according to the dependency rules?          #  Do we need to add $dname according to the dependency rules?
2474          if test "x$pin" = xt -a "x$plus" = "x+" -a "x$din" = xf ; then          if test "x$pin" = xt -a "x$plus" != "x-" -a "x$din" = xf ; then
2475              #echo "   " $pname ": need to add :" $dname              #echo "   " $pname ": need to add :" $dname
2476              in_dis="f"              in_dis="f"
2477              for dis in $DISABLE ; do              for dis in $DISABLE ; do
# Line 2426  if  test "x${PKG_DEPEND}" != x ; then Line 2480  if  test "x${PKG_DEPEND}" != x ; then
2480                  fi                  fi
2481              done              done
2482              if test "x$in_dis" = xt ; then              if test "x$in_dis" = xt ; then
2483                  echo "Error: can't satisfy package dependencies:"                  if test "x$plus" = "x+" ; then
2484                  echo "  \"$dname\" is required by the dependency rules"                      echo "Error: can't satisfy package dependencies:"
2485                  echo "  but is disallowed by the DISABLE settings"                      echo "  \"$dname\" is required with pkg \"$pname\" (dependency rules)"
2486                  exit 1                      echo "  but is disallowed by the DISABLE settings"
2487                        exit 1
2488                    elif test "x$ck" = xt ; then
2489                    #- (=) is a weaker dependency rule: warning but no stop
2490                        echo    "Warning: pkg \"$dname\" is set DISABLE (from: \"$PKG_LIST\")"
2491                        echo -n "     but is recommended with pkg \"$pname\" (dependency rules)"
2492                        echo " <- ignores recommendation"
2493                    fi
2494              else              else
2495                  PACKAGES="$PACKAGES $dname"                  PACKAGES="$PACKAGES $dname"
2496                  ck=                  ck=
# Line 2439  if  test "x${PKG_DEPEND}" != x ; then Line 2500  if  test "x${PKG_DEPEND}" != x ; then
2500          #  Do we need to get rid of $dname according to the dependency rules?          #  Do we need to get rid of $dname according to the dependency rules?
2501          if test "x$pin" = xt -a "x$plus" = "x-" -a "x$din" = xt; then          if test "x$pin" = xt -a "x$plus" = "x-" -a "x$din" = xt; then
2502              echo "Error: can't satisfy package dependencies:"              echo "Error: can't satisfy package dependencies:"
2503              echo "  \"$pname\" was requested but is disallowed by"              echo "  \"$dname\" was requested but is disallowed by"
2504              echo "  the dependency rules for \"$dname\""              echo "  the dependency rules for \"$pname\""
2505              exit 1              exit 1
2506          fi          fi
2507          i=`echo "$i + 1" | bc -l`          i=`expr $i + 1`
2508          #i=$(( $i + 1 ))          #i=`echo "$i + 1" | bc -l`
2509      done      done
2510      ck=$ck"t"      ck=$ck"t"
2511    done    done
# Line 2452  if  test "x${PKG_DEPEND}" != x ; then Line 2513  if  test "x${PKG_DEPEND}" != x ; then
2513  fi  fi
2514  for i in $PACKAGES ; do  for i in $PACKAGES ; do
2515      adr="$ROOTDIR/pkg/$i"      adr="$ROOTDIR/pkg/$i"
2516        adrmk='$(ROOTDIR)'"/pkg/$i"
2517      if test -d $adr ; then      if test -d $adr ; then
2518          SOURCEDIRS="$SOURCEDIRS $adr"          SOURCEDIRS="$SOURCEDIRS $adr"
2519          INCLUDEDIRS="$INCLUDEDIRS $adr"          INCLUDEDIRS="$INCLUDEDIRS $adr"
2520            SOURCEDIRSMK="$SOURCEDIRSMK $adrmk"
2521            INCLUDEDIRSMK="$INCLUDEDIRSMK $adrmk"
2522          if test "x$i" = xautodiff ; then          if test "x$i" = xautodiff ; then
2523              AUTODIFF_PKG_USED=t              AUTODIFF_PKG_USED=t
2524          fi          fi
# Line 2510  BUILDDIR=${BUILDDIR:-.} Line 2574  BUILDDIR=${BUILDDIR:-.}
2574  if test "x$STANDARDDIRS" != x ; then  if test "x$STANDARDDIRS" != x ; then
2575      for d in $STANDARDDIRS ; do      for d in $STANDARDDIRS ; do
2576          adr="$ROOTDIR/$d/src"          adr="$ROOTDIR/$d/src"
2577            adrmk='$(ROOTDIR)/'"$d/src"
2578          if test ! -d $adr ; then          if test ! -d $adr ; then
2579              echo "Error:  directory $adr not found -- please check that ROOTDIR=\"$ROOTDIR\""              echo "Error:  directory $adr not found -- please check that ROOTDIR=\"$ROOTDIR\""
2580              echo "  is correct and that you correctly specified the STANDARDDIRS option"              echo "  is correct and that you correctly specified the STANDARDDIRS option"
2581              exit 1              exit 1
2582          else          else
2583              SOURCEDIRS="$SOURCEDIRS $adr"              SOURCEDIRS="$SOURCEDIRS $adr"
2584                SOURCEDIRSMK="$SOURCEDIRSMK $adrmk"
2585          fi          fi
2586          adr="$ROOTDIR/$d/inc"          adr="$ROOTDIR/$d/inc"
2587            adrmk='$(ROOTDIR)/'"$d/inc"
2588          if test ! -d $adr ; then          if test ! -d $adr ; then
2589              echo "Error:  directory $adr not found -- please check that ROOTDIR=\"$ROOTDIR\""              echo "Error:  directory $adr not found -- please check that ROOTDIR=\"$ROOTDIR\""
2590              echo "  is correct and that you correctly specified the STANDARDDIRS option"              echo "  is correct and that you correctly specified the STANDARDDIRS option"
2591              exit 1              exit 1
2592          else          else
2593              INCLUDEDIRS="$INCLUDEDIRS $adr"              INCLUDEDIRS="$INCLUDEDIRS $adr"
2594                INCLUDEDIRSMK="$INCLUDEDIRSMK $adrmk"
2595          fi          fi
2596      done      done
2597  fi  fi
# Line 2623  if test "x$OPENAD" != x ; then Line 2691  if test "x$OPENAD" != x ; then
2691      OAD_KEEP_ORIGINAL="/dev/null"      OAD_KEEP_ORIGINAL="/dev/null"
2692      OAD_CB2M_FILES="/dev/null"      OAD_CB2M_FILES="/dev/null"
2693      OADTOOLS="$TOOLSDIR/OAD_support"      OADTOOLS="$TOOLSDIR/OAD_support"
2694        OADTOOLSMK='$(TOOLSDIR)/OAD_support'
2695      echo "  looking for dontCompile file:  "      echo "  looking for dontCompile file:  "
2696      for i in "." $MODS ; do      for i in "." $MODS $OADTOOLS ; do
2697          if test -r $i"/dontCompile" ; then          if test -r $i"/dontCompile" ; then
2698              OAD_DONT_COMPILE=$i"/dontCompile"              OAD_DONT_COMPILE=$i"/dontCompile"
2699              echo "     found $OAD_DONT_COMPILE"              echo "     found $OAD_DONT_COMPILE"
# Line 2632  if test "x$OPENAD" != x ; then Line 2701  if test "x$OPENAD" != x ; then
2701          fi          fi
2702      done      done
2703      echo "  looking for dontTransform file:  "      echo "  looking for dontTransform file:  "
2704      for i in "." $MODS ; do      for i in "." $MODS $OADTOOLS ; do
2705          if test -r $i"/dontTransform" ; then          if test -r $i"/dontTransform" ; then
2706              OAD_DONT_TRANSFORM=$i"/dontTransform"              OAD_DONT_TRANSFORM=$i"/dontTransform"
2707              echo "     found $OAD_DONT_TRANSFORM"              echo "     found $OAD_DONT_TRANSFORM"
# Line 2640  if test "x$OPENAD" != x ; then Line 2709  if test "x$OPENAD" != x ; then
2709          fi          fi
2710      done      done
2711      echo "  looking for keepOriginal file:  "      echo "  looking for keepOriginal file:  "
2712      for i in "." $MODS ; do      for i in "." $MODS $OADTOOLS ; do
2713          if test -r $i"/keepOriginal" ; then          if test -r $i"/keepOriginal" ; then
2714              OAD_KEEP_ORIGINAL=$i"/keepOriginal"              OAD_KEEP_ORIGINAL=$i"/keepOriginal"
2715              echo "     found $OAD_KEEP_ORIGINAL"              echo "     found $OAD_KEEP_ORIGINAL"
# Line 2648  if test "x$OPENAD" != x ; then Line 2717  if test "x$OPENAD" != x ; then
2717          fi          fi
2718      done      done
2719      echo "  looking for cb2mFiles:  "      echo "  looking for cb2mFiles:  "
2720      for i in "." $MODS ; do      for i in "." $MODS $OADTOOLS ; do
2721          if test -r $i"/cb2mFiles" ; then          if test -r $i"/cb2mFiles" ; then
2722              OAD_CB2M_FILES=$i"/cb2mFiles"              OAD_CB2M_FILES=$i"/cb2mFiles"
2723              echo "     found $OAD_CB2M_FILES"              echo "     found $OAD_CB2M_FILES"
# Line 2667  printf 'F90_SRC_FILES = ' > $TMP.F90srcl Line 2736  printf 'F90_SRC_FILES = ' > $TMP.F90srcl
2736  printf 'H_SRC_FILES = '   > $TMP.hsrclist  printf 'H_SRC_FILES = '   > $TMP.hsrclist
2737  printf 'AD_FLOW_FILES = ' > $TMP.ad_flow_files  printf 'AD_FLOW_FILES = ' > $TMP.ad_flow_files
2738  alldirs="$SOURCEDIRS $INCLUDEDIRS ."  alldirs="$SOURCEDIRS $INCLUDEDIRS ."
2739    alldirsmk=(${SOURCEDIRSMK} ${INCLUDEDIRSMK} ".")
2740    nd=0
2741  for d in $alldirs ; do  for d in $alldirs ; do
2742        dmk=${alldirsmk[${nd}]}
2743        nd=$((${nd}+1))
2744      deplist=      deplist=
2745      sfiles=`( cd $d; echo *.[h,c,F] *.flow )`      sfiles=`( cd $d; echo *.[h,c,F] *.flow )`
2746      sfiles=`( echo $sfiles; cd $d; echo *.F90 )`      sfiles=`( echo $sfiles; cd $d; echo *.F90 )`
# Line 2770  for d in $alldirs ; do Line 2843  for d in $alldirs ; do
2843      if test "x$deplist" != x ; then      if test "x$deplist" != x ; then
2844        if test "$d" != "." ; then        if test "$d" != "." ; then
2845          echo "" >> $TMP.srclinks          echo "" >> $TMP.srclinks
2846          echo "#  These files are linked from $d" >> $TMP.srclinks          echo "#  These files are linked from $dmk ( aka $d )" >> $TMP.srclinks
2847          echo "$deplist :" >> $TMP.srclinks          echo "$deplist :" >> $TMP.srclinks
2848  # We need to make sure that the link isn't already there.  # We need to make sure that the link isn't already there.
2849  # This may happen when make thinks that a header file has to be "remade"  # This may happen when make thinks that a header file has to be "remade"
2850  # because a module it depends on has changed.  In this case we do nothing.  # because a module it depends on has changed.  In this case we do nothing.
2851          printf "\tif [ ! -L \$@ ]; then \$(LN) %s/\$@ \$@; fi\n" $d >> $TMP.srclinks          printf "\tif [ ! -L \$@ ]; then \$(LN) %s/\$@ \$@; fi\n" $dmk >> $TMP.srclinks
2852        fi        fi
2853      fi      fi
2854  done  done
# Line 2832  cat >>$MAKEFILE <<EOF Line 2905  cat >>$MAKEFILE <<EOF
2905    
2906  ROOTDIR     = ${ROOTDIR}  ROOTDIR     = ${ROOTDIR}
2907  BUILDDIR    = ${BUILDDIR}  BUILDDIR    = ${BUILDDIR}
2908  SOURCEDIRS  = ${SOURCEDIRS}  SOURCEDIRS  = ${SOURCEDIRSMK}
2909  INCLUDEDIRS = ${INCLUDEDIRS}  INCLUDEDIRS = ${INCLUDEDIRSMK}
2910  EXEDIR      = ${EXEDIR}  EXEDIR      = ${EXEDIR}
2911  EXECUTABLE  = \$(EXEDIR)/${EXECUTABLE}  EXECUTABLE  = \$(EXEDIR)/${EXECUTABLE}
2912  TOOLSDIR    = ${TOOLSDIR}  TOOLSDIR    = ${TOOLSDIRMK}
2913  OADTOOLS    = ${OADTOOLS}  OADTOOLS    = ${OADTOOLSMK}
2914    
2915  #eh3  new defines for the adjoint work  #eh3  new defines for the adjoint work
2916  AUTODIFF    = ${ROOTDIR}/pkg/autodiff  AUTODIFF    = \$(ROOTDIR)/pkg/autodiff
2917  EXE_AD      = ${EXE_AD}  EXE_AD      = ${EXE_AD}
2918  EXE_FTL     = ${EXE_FTL}  EXE_FTL     = ${EXE_FTL}
2919  EXE_SVD     = ${EXE_SVD}  EXE_SVD     = ${EXE_SVD}
# Line 2887  CPPINCLUDES = ${CPPINCLUDES} Line 2960  CPPINCLUDES = ${CPPINCLUDES}
2960  KFLAGS1 = ${KFLAGS1}  KFLAGS1 = ${KFLAGS1}
2961  KFLAGS2 = ${KFLAGS2}  KFLAGS2 = ${KFLAGS2}
2962  # Optim./debug for FC  # Optim./debug for FC
2963  FFLAGS = ${FFLAGS} ${FEXTRAFLAGS}  FFLAGS = ${FFLAGS}
2964  FOPTIM = ${FOPTIM}  FOPTIM = ${FOPTIM} ${FEXTRAFLAGS}
2965  # Optim./debug for FC  # Optim./debug for FC
2966  F90FLAGS = ${F90FLAGS}  F90FLAGS = ${F90FLAGS}
2967  F90OPTIM = ${F90OPTIM}  F90OPTIM = ${F90OPTIM}
# Line 2954  depend: Line 3027  depend:
3027    
3028  lib: libmitgcmuv.a  lib: libmitgcmuv.a
3029    
3030  libmitgcmuv.a: \$(OBJFILES)  libmitgcmuv.a: \$(SPECIAL_FILES) \$(OBJFILES)
3031          ar rcv libmitgcmuv.a \$(OBJFILES)          ar rcv libmitgcmuv.a \$(OBJFILES)
3032          ar d   libmitgcmuv.a main.o          ar d   libmitgcmuv.a main.o
3033    
# Line 2964  links: \$(F77_SRC_FILES) \$(C_SRC_FILES) Line 3037  links: \$(F77_SRC_FILES) \$(C_SRC_FILES)
3037    
3038  small_f: \$(F77_PP_SRC_FILES) \$(F90_PP_SRC_FILES)  small_f: \$(F77_PP_SRC_FILES) \$(F90_PP_SRC_FILES)
3039    
 output.txt: \$(EXECUTABLE)  
         @printf 'running ... '  
         @\$(EXECUTABLE) > \$@  
   
3040  # remove most of the files that "make" generates  # remove most of the files that "make" generates
3041  clean:  clean:
3042          -rm -rf *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template          -rm -rf *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template
# Line 3119  done Line 3188  done
3188  echo >> $MAKEFILE  echo >> $MAKEFILE
3189  rm -f $TMP.adSrcFiles  rm -f $TMP.adSrcFiles
3190    
3191    if test $CAT_SRC_FOR_TAF = 0 ; then
3192    cat >>$MAKEFILE <<EOF
3193    
3194    # ... Utilities ...
3195    remove_comments:
3196            sed -i.bak -f \$(TOOLSDIR)/remove_comments_sed \$(AD_FILES)
3197            @-rm -f \$(AD_FILES:.$FS=.$FS.bak)
3198    adj_sed:
3199            sed -i.bak -f \$(TOOLSDIR)/adjoint_sed \$(AD_FILES:.$FS=_ad.$FS)
3200            @-rm -f \$(AD_FILES:.$FS=_ad.$FS.bak)
3201    ftl_sed:
3202            sed -i.bak -f \$(TOOLSDIR)/adjoint_sed \$(AD_FILES:.$FS=_tl.$FS)
3203            @-rm -f \$(AD_FILES:.$FS=_tl.$FS.bak)
3204    adobjfiles: \$(AD_FILES:.$FS=_ad.o)
3205    ftlobjfiles: \$(AD_FILES:.$FS=_tl.o)
3206    EOF
3207    fi
3208    
3209  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
3210    
3211  # ... AD ...  # ... AD ...
# Line 3141  ad_input_code.$FS: \$(AD_FILES) \$(AD_FL Line 3228  ad_input_code.$FS: \$(AD_FILES) \$(AD_FL
3228          @\$(MAKE) -f \$(MAKEFILE) \$(FLOWFILES)          @\$(MAKE) -f \$(MAKEFILE) \$(FLOWFILES)
3229          cat \$(FLOWFILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ad_input_code.$FS          cat \$(FLOWFILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ad_input_code.$FS
3230    
3231  ad_taf_output.$FS: ad_input_code.$FS  adtafonly:
         @-rm -f ad_input_code_ad.$FS ; echo ''  
3232          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
3233          ls -l ad_input_code_ad.$FS          ls -l ad_input_code_ad.$FS
3234          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.$FS          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.$FS
3235    
3236  adtafonly:  EOF
3237    
3238    if test $CAT_SRC_FOR_TAF = 1 ; then
3239    cat >>$MAKEFILE <<EOF
3240    # ... send 1 file to TAF ...
3241    ad_taf_output.$FS: ad_input_code.$FS
3242            @-rm -f ad_input_code_ad.$FS ; echo ''
3243          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
3244          ls -l ad_input_code_ad.$FS          ls -l ad_input_code_ad.$FS
3245          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.$FS          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.$FS
# Line 3155  adtafonly: Line 3247  adtafonly:
3247  \$(EXE_AD): \$(SPECIAL_FILES) \$(H_SRC_FILES) ad_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(EMBEDDED_FILES)  \$(EXE_AD): \$(SPECIAL_FILES) \$(H_SRC_FILES) ad_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(EMBEDDED_FILES)
3248          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) ad_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(LIBS)          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) ad_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(LIBS)
3249    
3250  ad_tamc_output.$FS: ad_input_code.$FS  adobj: ad_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o)
         \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS  
         cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_tamc_output.$FS  
3251    
3252  ad_tamc: ad_tamc_output.o \$(OBJFILES)  EOF
3253          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)  
3254    else
3255    cat >>$MAKEFILE <<EOF
3256    # ... send multiple files to TAF ...
3257    ad_taf_output.$FS: \$(AD_FLOW_FILES) \$(AD_FILES)
3258            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Adjoint version" -bAD_CONFIG_H -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template
3259            cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
3260            @-rm -f ad_config.template
3261            @\$(MAKE) -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)
3262            @\$(MAKE) -f \$(MAKEFILE) \$(FLOWFILES)
3263            @-rm -f \$(AD_FILES:.$FS=_ad.$FS) \$(AD_FILES:.$FS=_ad.o); echo ''
3264            \$(MAKE) -f \$(MAKEFILE) remove_comments
3265            \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) \$(FLOWFILES) \$(AD_FILES)
3266            \$(MAKE) -f \$(MAKEFILE) adj_sed
3267            cat \$(AD_FILES:.$FS=_ad.$FS) > ad_taf_output.$FS
3268    
3269    \$(EXE_AD): \$(SPECIAL_FILES) \$(H_SRC_FILES) ad_taf_output.$FS \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(EMBEDDED_FILES)
3270            \$(MAKE) -f \$(MAKEFILE) adobjfiles
3271            \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(AD_FILES:.$FS=_ad.o) \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(LIBS)
3272    
3273    adobj: ad_taf_output.$FS \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o)
3274            \$(MAKE) -f \$(MAKEFILE) adobjfiles
3275    
3276    EOF
3277    fi
3278    
3279    cat >>$MAKEFILE <<EOF
3280  adonlyfwd:  adonlyfwd:
3281          patch < \$(TOOLSDIR)/ad_taf_output.f.onlyfwd.diff          patch < \$(TOOLSDIR)/ad_taf_output.f.onlyfwd.diff
3282    
3283  adtrick:  adtrick:
3284          patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff          patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff
3285    
3286  adobj: ad_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o)  ad_tamc_output.$FS: ad_input_code.$FS
3287            \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS
3288            cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_tamc_output.$FS
3289    
3290    ad_tamc: ad_tamc_output.o \$(OBJFILES)
3291            \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)
3292    
3293  # ... FTL ...  # ... FTL ...
3294  ftlall: ftl_exe_target  ftlall: ftl_exe_target
# Line 3190  ftl_input_code.$FS: \$(AD_FILES) Line 3310  ftl_input_code.$FS: \$(AD_FILES)
3310          @\$(MAKE) -f \$(MAKEFILE) \$(AD_FLOW_FILES)          @\$(MAKE) -f \$(MAKEFILE) \$(AD_FLOW_FILES)
3311          cat \$(AD_FLOW_FILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ftl_input_code.$FS          cat \$(AD_FLOW_FILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ftl_input_code.$FS
3312    
3313  ftl_taf_output.$FS: ftl_input_code.$FS  ftltafonly:
         @-rm -f ftl_input_code_tl.$FS ; echo ''  
3314          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
3315          ls -l ftl_input_code_tl.$FS          ls -l ftl_input_code_tl.$FS
3316          cat ftl_input_code_tl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS          cat ftl_input_code_tl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS
3317    
3318  ftltafonly:  EOF
3319    
3320    if test $CAT_SRC_FOR_TAF = 1 ; then
3321    cat >>$MAKEFILE <<EOF
3322    # ... send 1 file to TAF ...
3323    ftl_taf_output.$FS: ftl_input_code.$FS
3324            @-rm -f ftl_input_code_tl.$FS ; echo ''
3325          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
3326          ls -l ftl_input_code_tl.$FS          ls -l ftl_input_code_tl.$FS
3327          cat ftl_input_code_tl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS          cat ftl_input_code_tl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS
# Line 3204  ftltafonly: Line 3329  ftltafonly:
3329  \$(EXE_FTL): \$(SPECIAL_FILES) \$(H_SRC_FILES) ftl_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(EMBEDDED_FILES)  \$(EXE_FTL): \$(SPECIAL_FILES) \$(H_SRC_FILES) ftl_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(EMBEDDED_FILES)
3330          \$(LINK) -o \${EXE_FTL} \$(FFLAGS) \$(FOPTIM) ftl_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(LIBS)          \$(LINK) -o \${EXE_FTL} \$(FFLAGS) \$(FOPTIM) ftl_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(LIBS)
3331    
3332    EOF
3333    
3334    else
3335    cat >>$MAKEFILE <<EOF
3336    # ... send multiple files to TAF ...
3337    ftl_taf_output.$FS: \$(AD_FLOW_FILES) \$(AD_FILES)
3338            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "TangLin version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ad_config.template
3339            cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
3340            @-rm -f ad_config.template
3341            @\$(MAKE) -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)
3342            @\$(MAKE) -f \$(MAKEFILE) \$(AD_FLOW_FILES)
3343            @-rm -f \$(AD_FILES:.$FS=_tl.$FS) \$(AD_FILES:.$FS=_tl.o); echo ''
3344            \$(MAKE) -f \$(MAKEFILE) remove_comments
3345            \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) \$(AD_FLOW_FILES) \$(AD_FILES)
3346            \$(MAKE) -f \$(MAKEFILE) ftl_sed
3347            cat \$(AD_FILES:.$FS=_tl.$FS) > ftl_taf_output.$FS
3348    
3349    \$(EXE_FTL): \$(SPECIAL_FILES) \$(H_SRC_FILES) ftl_taf_output.$FS \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(EMBEDDED_FILES)
3350            \$(MAKE) -f \$(MAKEFILE) ftlobjfiles
3351            \$(LINK) -o \${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(AD_FILES:.$FS=_tl.o) \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(LIBS)
3352    
3353    EOF
3354    fi
3355    
3356    cat >>$MAKEFILE <<EOF
3357  ftl_tamc_output.$FS: ftl_input_code.$FS  ftl_tamc_output.$FS: ftl_input_code.$FS
3358          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS
3359          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_tamc_output.$FS          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_tamc_output.$FS
# Line 3246  if test "x$OPENAD" != x ; then Line 3396  if test "x$OPENAD" != x ; then
3396  # ============ begin OpenAD specific section ==============  # ============ begin OpenAD specific section ==============
3397    
3398  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
3399    # ... OpenAD ...
3400    
3401  # all the source files linked from the various locations:  # all the source files linked from the various locations:
3402  ALL_LINKED_FILES= \  ALL_LINKED_FILES= \
# Line 3299  rm -f $TMP.adSrcFiles Line 3450  rm -f $TMP.adSrcFiles
3450    
3451  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
3452    
3453  adAll: \$(EXE_AD)  adAll: ad_exe_target
3454  .PHONY: adAll  .PHONY: adAll
3455    
3456    ad_exe_target:
3457            @echo Update AD_CONFIG.h and make \$(EXE_AD)
3458            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Adjoint version" -bAD_CONFIG_H -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template
3459            @cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
3460            @-rm -f ad_config.template
3461            \$(MAKE) -f \$(MAKEFILE) \$(EXE_AD)
3462    
3463  CB2M_F90_PP_SRC_FILES=\$(addsuffix _mod.f$FS90, \$(CB2M_F90_SRC_NAMES))  CB2M_F90_PP_SRC_FILES=\$(addsuffix _mod.f$FS90, \$(CB2M_F90_SRC_NAMES))
3464    
3465  .PRECIOUS: \$(CB2M_F90_PP_SRC_FILES) \$(NON_AD_F77_SRC_FILES:.F=_cb2m.f$FS90)  .PRECIOUS: \$(CB2M_F90_PP_SRC_FILES) \$(NON_AD_F77_SRC_FILES:.F=_cb2m.f$FS90)
# Line 3318  OAD_active.F90 \ Line 3476  OAD_active.F90 \
3476  OAD_cp.F90 \  OAD_cp.F90 \
3477  OAD_rev.F90 \  OAD_rev.F90 \
3478  OAD_tape.F90 \  OAD_tape.F90 \
3479    OAD_regular_cp.F90 \
3480  revolve.F90  revolve.F90
3481    
3482  OPENAD_SUPPORT_C_SRC_FILES = \  OPENAD_SUPPORT_C_SRC_FILES = \
# Line 3344  AD_OBJ_FILES_S2=\$(AD_OBJ_FILES_S1) \$(N Line 3503  AD_OBJ_FILES_S2=\$(AD_OBJ_FILES_S1) \$(N
3503          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES_S2) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES_S2) \$(LIBS)
3504    
3505  # create sources files modules from header files containing common blocks  # create sources files modules from header files containing common blocks
3506  %_mod.FF90 : %.h \${OADTOOLS}/cb2mGetModules.csh \${OADTOOLS}/cb2mGetModules.awk  %_mod.FF90 : %.h \$(OADTOOLS)/cb2mGetModules.csh \$(OADTOOLS)/cb2mGetModules.awk
3507          \${OADTOOLS}/cb2mGetModules.csh $< \${OADTOOLS}/cb2mGetModules.awk          \$(OADTOOLS)/cb2mGetModules.csh $< \$(OADTOOLS)/cb2mGetModules.awk
3508    
3509  # create new header files with USE statements for the new modules made above  # create new header files with USE statements for the new modules made above
3510  %_mod.h : %.h \${OADTOOLS}/cb2mGetHeaders.csh \${OADTOOLS}/cb2mGetHeaders.awk  %_mod.h : %.h \$(OADTOOLS)/cb2mGetHeaders.csh \$(OADTOOLS)/cb2mGetHeaders.awk
3511          \${OADTOOLS}/cb2mGetHeaders.csh $< \${OADTOOLS}/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)          \$(OADTOOLS)/cb2mGetHeaders.csh $< \$(OADTOOLS)/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)
3512    
3513  # change the include directives of everybody to refer to  the new header files with the USE statements  # change the include directives of everybody to refer to  the new header files with the USE statements
3514  %_cb2m.FF90 : %.F \${OADTOOLS}/cb2mUseModules.bash  %_cb2m.FF90 : %.F \$(OADTOOLS)/cb2mUseModules.bash
3515          \${OADTOOLS}/cb2mUseModules.bash $< ${MPI}          \$(OADTOOLS)/cb2mUseModules.bash $< ${MPI}
3516    
3517  # makefile debug rule  # makefile debug rule
3518  small_f: \$(CB2M_F90_PP_SRC_FILES)  small_f: \$(CB2M_F90_PP_SRC_FILES)
3519  .PHONY: small_f  .PHONY: small_f
3520    
 ad_output.txt: \$(EXE_AD)  
         @printf 'linking data files ... '  
         \$(LN) -f ../input_ad/data* ../input_ad/eedata .  
         \$(LN) -f ../../global_ocean.90x40x15/input/*.bin .  
         @printf 'running ... '  
         @./\$(EXE_AD) > \$@  
   
3521  ad_input_code.f$FS90:  \$(CB2M_AD_FILES)  ad_input_code.f$FS90:  \$(CB2M_AD_FILES)
3522          cat \$^ > \$@          cat \$^ > \$@
3523    
# Line 3375  ad_input_code_sf.pre.f90 : \$(CB2M_AD_FI Line 3527  ad_input_code_sf.pre.f90 : \$(CB2M_AD_FI
3527    
3528  # replace stop statements (to avoid the implied unstructured control flow)  with print statements  # replace stop statements (to avoid the implied unstructured control flow)  with print statements
3529  ad_input_code_sf.pre.s2p.f90 : ad_input_code_sf.pre.f90  ad_input_code_sf.pre.s2p.f90 : ad_input_code_sf.pre.f90
3530          cat \$< | sed -f \${OADTOOLS}/stop2print.sed > ad_input_code_sf.pre.s2p.f90          cat \$< | sed -f \$(OADTOOLS)/stop2print.sed > ad_input_code_sf.pre.s2p.f90
3531    
3532  # F -> WHIRL  # F -> WHIRL
3533  ad_input_code_sf.pre.s2p.B: ad_input_code_sf.pre.s2p.f90  ad_input_code_sf.pre.s2p.B: ad_input_code_sf.pre.s2p.f90
# Line 3398  ad_input_code_sf.pre.s2p.xb.x2w.w2f.f$FS Line 3550  ad_input_code_sf.pre.s2p.xb.x2w.w2f.f$FS
3550          \${OPEN64ROOT}/whirl2f/whirl2f -FLIST:ftn_file=\$@ -openad \$<          \${OPEN64ROOT}/whirl2f/whirl2f -FLIST:ftn_file=\$@ -openad \$<
3551    
3552  # insert template directives  # insert template directives
3553  ad_input_code_sf.pre.s2p.xb.x2w.w2f.td.f$FS90: ad_input_code_sf.pre.s2p.xb.x2w.w2f.f$FS90 \${OADTOOLS}/insertTemplateDir.bash  ad_input_code_sf.pre.s2p.xb.x2w.w2f.td.f$FS90: ad_input_code_sf.pre.s2p.xb.x2w.w2f.f$FS90 \$(OADTOOLS)/insertTemplateDir.bash
3554          \${OADTOOLS}/insertTemplateDir.bash \$< \$@          \$(OADTOOLS)/insertTemplateDir.bash \$< \$@
3555    
3556  PPEXTRAS=\$(notdir \$(wildcard \${OADTOOLS}/ad_template.*.F)) ad_inline.F  PPEXTRAS=\$(notdir \$(wildcard \$(OADTOOLS)/ad_template.*.F)) ad_inline.F
3557  # postprocess F'  # postprocess F'
3558  postProcess.tag: ad_input_code_sf.pre.s2p.xb.x2w.w2f.td.f$FS90 \$(PPEXTRAS:.F=.f) | w2f__types.f90  postProcess.tag: ad_input_code_sf.pre.s2p.xb.x2w.w2f.td.f$FS90 \$(PPEXTRAS:.F=.f) | w2f__types.f90
3559          \${OPENADFORTTK_BASE}/tools/SourceProcessing/postProcess.py --progress --timing --infoUnitFile w2f__types.f90 --outputFormat=fixed --separateOutput --pathSuffix "" --filenameSuffix "_oad" -m r -i ad_inline.f \$<          \${OPENADFORTTK_BASE}/tools/SourceProcessing/postProcess.py --progress --timing --infoUnitFile w2f__types.f90 --outputFormat=fixed --separateOutput --pathSuffix "" --filenameSuffix "_oad" -m r -i ad_inline.f \$<
# Line 3416  OAD_intrinsics_oad.f \$(CB2M_AD_FILES:.f Line 3568  OAD_intrinsics_oad.f \$(CB2M_AD_FILES:.f
3568    
3569  # link the support files:  # link the support files:
3570  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES) \$(PPEXTRAS):  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES) \$(PPEXTRAS):
3571          \$(LN) \${OADTOOLS}/\$@ .          \$(LN) \$(OADTOOLS)/\$@ .
3572    
3573  AD_CLEAN += *_mod.h *_mod.F90 *.FF90 *.mod-whirl temp.sed oad_cp.* postProcess.tag  AD_CLEAN += *_mod.h *_mod.F90 *.FF90 *.mod-whirl temp.sed oad_cp.* postProcess.tag
3574    

Legend:
Removed from v.1.263  
changed lines
  Added in v.1.282

  ViewVC Help
Powered by ViewVC 1.1.22