/[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.267 by heimbach, Tue Jul 15 23:05:54 2014 UTC revision 1.282 by jmc, Thu Mar 30 18:06:38 2017 UTC
# Line 22  Usage: "$0" [OPTIONS] Line 22  Usage: "$0" [OPTIONS]
22      -oad | --oad      -oad | --oad
23            Generate a Makefile for an OpenAD built            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            "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 142  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 694  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 1329  FS90= Line 1333  FS90=
1333  AUTODIFF_PKG_USED=f  AUTODIFF_PKG_USED=f
1334  OPENAD=  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 1403  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)          -oad | --oad)
1417              OPENAD="true" ;;              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 1583  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 1713  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 1957  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 2071  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 2094  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 2404  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 2424  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 2433  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 2446  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 2459  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 2517  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 2630  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 $OADTOOLS ; do      for i in "." $MODS $OADTOOLS ; do
2697          if test -r $i"/dontCompile" ; then          if test -r $i"/dontCompile" ; then
# Line 2674  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 2777  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 2839  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 2894  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 2961  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 3122  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 3144  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 3158  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
         \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)  
3253    
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 3193  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 3207  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 3329  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 3355  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)
# Line 3379  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 3402  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 3420  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.267  
changed lines
  Added in v.1.282

  ViewVC Help
Powered by ViewVC 1.1.22