/[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.237 by jmc, Fri Aug 24 23:41:17 2012 UTC revision 1.255 by jmc, Thu Aug 8 17:34:27 2013 UTC
# Line 174  EOF Line 174  EOF
174  test_for_package_in_cpp_options() {  test_for_package_in_cpp_options() {
175      cpp_options=$1      cpp_options=$1
176      pkg=$2      pkg=$2
177      test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_$pkg[ ]"      test_for_string_in_file $cpp_options "^ *# *define *\<ALLOW_$pkg\>"
178      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_$pkg[ ]"      test_for_string_in_file $cpp_options "^ *# *undef *\<ALLOW_$pkg\>"
179      test_for_string_in_file $cpp_options "^[ ]*#define.*DISABLE_$pkg[ ]"      test_for_string_in_file $cpp_options "^ *# *define *\<DISABLE_$pkg\>"
180      test_for_string_in_file $cpp_options "^[ ]*#undef.*DISABLE_$pkg[ ]"      test_for_string_in_file $cpp_options "^ *# *undef *\<DISABLE_$pkg\>"
     test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_$pkg$"  
     test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_$pkg$"  
     test_for_string_in_file $cpp_options "^[ ]*#define.*DISABLE_$pkg$"  
     test_for_string_in_file $cpp_options "^[ ]*#undef.*DISABLE_$pkg$"  
181  }  }
182    
183  # Search for particular CPP #cmds associated with MPI  # Search for particular CPP #cmds associated with MPI
184  # usage: test_for_mpi_in_cpp_eeoptions CPP_file  # usage: test_for_mpi_in_cpp_eeoptions CPP_file
185  test_for_mpi_in_cpp_eeoptions() {  test_for_mpi_in_cpp_eeoptions() {
186      cpp_options=$1      cpp_options=$1
187      test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_USE_MPI[ ]"      test_for_string_in_file $cpp_options "^ *# *define *\<ALLOW_USE_MPI\>"
188      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_USE_MPI[ ]"      test_for_string_in_file $cpp_options "^ *# *undef *\<ALLOW_USE_MPI\>"
     test_for_string_in_file $cpp_options "^[ ]*#define.*ALWAYS_USE_MPI[ ]"  
     test_for_string_in_file $cpp_options "^[ ]*#undef.*ALWAYS_USE_MPI[ ]"  
     test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_USE_MPI$"  
     test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_USE_MPI$"  
     test_for_string_in_file $cpp_options "^[ ]*#define.*ALWAYS_USE_MPI$"  
     test_for_string_in_file $cpp_options "^[ ]*#undef.*ALWAYS_USE_MPI$"  
189  }  }
190    
191  # Search for particular string in a file. Return 1 if detected, 0 if not  # Search for particular string in a file. Return 1 if detected, 0 if not
# Line 203  test_for_mpi_in_cpp_eeoptions() { Line 193  test_for_mpi_in_cpp_eeoptions() {
193  test_for_string_in_file() {  test_for_string_in_file() {
194      file=$1      file=$1
195      strng=$2      strng=$2
196      grep -i "$strng" $file > /dev/null 2>&1      grep "$strng" $file > /dev/null 2>&1
197      RETVAL=$?      RETVAL=$?
198      if test "x${RETVAL}" = x0 ; then      if test "x${RETVAL}" = x0 ; then
199          printf "Error: In $file there is an illegal line: "          printf "Error: In $file there is an illegal line: "
# Line 334  look_for_makedepend()  { Line 324  look_for_makedepend()  {
324      #      #
325      #    1) a makedepend implementation shipped with the cyrus-imapd      #    1) a makedepend implementation shipped with the cyrus-imapd
326      #       package:  ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/      #       package:  ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/
327      #      #    2) a local tools/xmakedepend shell script
     #    2) a known-buggy xmakedpend shell script  
328      #      #
329      #  So the choices are, in order:      #  So the choices are, in order:
     #  
330      #    1) use the user-specified program      #    1) use the user-specified program
331      #    2) use a system-wide default      #    2) use the local xmakedepend script (get all dependencies, but slower)
332      #    3) locally build and use the cyrus implementation      #    3) use a system-wide default
333      #    4) fall back to the buggy local xmakedpend script      #    4) locally build and use the cyrus makedepend
334        #             (faster, but can miss some dependencies)
335      #      #
336      echo >> $LOGFILE      echo >> $LOGFILE
337      echo "running: look_for_makedepend()" >> $LOGFILE      echo "running: look_for_makedepend()" >> $LOGFILE
# Line 353  look_for_makedepend()  { Line 342  look_for_makedepend()  {
342              build_cyrus_makedepend              build_cyrus_makedepend
343              RETVAL=$?              RETVAL=$?
344              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" != x0 ; then
345                  echo "WARNING: unable to build cyrus-makedepend. Try 'makedepend'"                  echo "WARNING: unable to build cyrus-makedepend. Try other 'makedepend'"
346                  MAKEDEPEND=                  MAKEDEPEND=
347              fi              fi
348          else          else
# Line 366  look_for_makedepend()  { Line 355  look_for_makedepend()  {
355          fi          fi
356      fi      fi
357      if test "x${MAKEDEPEND}" = x ; then      if test "x${MAKEDEPEND}" = x ; then
         which makedepend > /dev/null 2>&1  
         RV0=$?  
358          test -f $MAKEFILE  &&  mv -f $MAKEFILE $MAKEFILE".tst"          test -f $MAKEFILE  &&  mv -f $MAKEFILE $MAKEFILE".tst"
359          #  echo 'MAKEFILE="'$MAKEFILE'"'          #  echo 'MAKEFILE="'$MAKEFILE'"'
360          cat <<EOF >> $MAKEFILE          cat <<EOF >> $MAKEFILE
# Line 383  EOF Line 370  EOF
370        stop        stop
371        end        end
372  EOF  EOF
373          makedepend -f $MAKEFILE genmake_tc.f > /dev/null 2>&1          $ROOTDIR/tools/xmakedepend -f $MAKEFILE genmake_tc.f > /dev/null 2>&1
374          RV1=$?          RV1=$?
375            which makedepend > /dev/null 2>&1
376            RV2=$?
377            if test "x${RV2}" = x0 ; then
378                makedepend -f $MAKEFILE genmake_tc.f > /dev/null 2>&1
379                RV3=$? ; loc_msg='not working.'
380            else RV3=$RV2 ; loc_msg='not found.'
381            fi
382          test -f $MAKEFILE  &&  rm -f $MAKEFILE          test -f $MAKEFILE  &&  rm -f $MAKEFILE
383          test -f $MAKEFILE".tst"  &&  mv -f $MAKEFILE".tst" $MAKEFILE          test -f $MAKEFILE".tst"  &&  mv -f $MAKEFILE".tst" $MAKEFILE
384          if test "x${RV0}${RV1}" = x00 ; then          echo "  check makedepend (local: $RV1, system: $RV2, $RV3)"
385            if test "x${RV1}" = x0 ; then
386                MAKEDEPEND='$(TOOLSDIR)/xmakedepend'
387                echo " --> set MAKEDEPEND=${MAKEDEPEND}" >> $LOGFILE
388            elif test "x${RV3}" = x0 ; then
389                echo "    local tools/xmakedepend not working. Use system-default makedepend"
390              MAKEDEPEND=makedepend              MAKEDEPEND=makedepend
391              echo " --> set MAKEDEPEND=${MAKEDEPEND}" >> $LOGFILE              echo " --> set MAKEDEPEND=${MAKEDEPEND}" >> $LOGFILE
392          else          else
393              echo "    system-default makedepend not found. Try to build cyrus-makedepend"              echo "    local tools/xmakedepend not working; system-default makedepend $loc_msg"
394                echo -n "    Try to build cyrus-makedepend ..."
395              #  Try to build the cyrus implementation              #  Try to build the cyrus implementation
396              build_cyrus_makedepend              build_cyrus_makedepend
397              RETVAL=$?              RETVAL=$?
398              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" = x0 ; then
399                  echo "WARNING: unable to build cyrus-makedepend. Use local xmakedepend"                  echo "  Works"
400                  MAKEDEPEND='$(TOOLSDIR)/xmakedepend'              else
401                  echo " --> set MAKEDEPEND=${MAKEDEPEND}" >> $LOGFILE                  echo "  Fails" ; echo "" >> $LOGFILE
402                    echo "ERROR: no working makedepend found ; look_for_makedepend FAILED" | tee -a $LOGFILE
403                    echo ""
404                    exit -1
405                    return
406              fi              fi
407          fi          fi
408      fi      fi
# Line 411  build_cyrus_makedepend()  { Line 415  build_cyrus_makedepend()  {
415      (      (
416          cd $ROOTDIR/tools/cyrus-imapd-makedepend  \          cd $ROOTDIR/tools/cyrus-imapd-makedepend  \
417              &&  ./configure > /dev/null 2>&1  \              &&  ./configure > /dev/null 2>&1  \
418              &&  make > /dev/null 2>&1              &&  $MAKE > /dev/null 2>&1
419          if test -x ./makedepend.exe ; then          if test -x ./makedepend.exe ; then
420              $LN ./makedepend.exe ./makedepend              $LN ./makedepend.exe ./makedepend
421          fi          fi
# Line 596  Error: No options file was found in:  $R Line 600  Error: No options file was found in:  $R
600  EOF  EOF
601          exit 1          exit 1
602      fi      fi
603    }
604    
605    #  Do a local copy of MPI headers files (in local dir ./mpi_headers/) after
606    #  checking for additional included headers (in case of chain of included header)
607    mpi_headers_do_local_copy() {
608    
609        dBug=0
610        rm -rf ./mpi_headers
611        if test -d $MPIINCLUDEDIR ; then
612    
613  #     # look for possible MPI libraries          #----- check for additional headers (chain of included headers)
614  #     mpi_libs=          echo -n '  Check MPI headers ... '
615  #     mpi_fort=`which mpif77 2>/dev/null`          listIni=$MPI_HEADER_FILES
616  #     RETVAL=$?          echo $listIni | grep "\<mpif.h\>" > /dev/null 2>&1
617  #     if test "x${RETVAL}" = x0 ; then          outp=$?
618  #       cat >>test.f <<EOF          #- always check mpif.h (the only mpi-header included in standard MITgcm code)
619  #       PROGRAM HELLO          if test $outp != 0 ; then listIni="mpif.h $listIni" ; fi
620  #       DO 10, I=1,10          if test $dBug = 1 ; then echo "listIni='$listIni'" ; fi
621  #       PRINT *,'Hello World'  
622  #    10 CONTINUE          doCheck=1 ; list2copy='' ; list2check=$listIni
623  #       STOP          while test $doCheck = 1 ; do
624  #       END            newList=''
625  # EOF            for i in $list2check ; do
626  #       eval "$mpi_fort -showme test.f > out"              if test -f $MPIINCLUDEDIR/$i ; then
627  #       RETVAL=$?                newInc=`grep '^ *include ' $MPIINCLUDEDIR/$i | \
628  #       if test "x${RETVAL}" = x0 ; then                  sed -e 's/^ *include //' -e 's/\!.*$//' -e "s/'//g"  -e 's/\"//g'`
629  #           a=`cat out`                if test $dBug = 1 ; then echo -n "checking $i : newInc='$newInc'" ; fi
630  #           for i in $a ; do                for j in $newInc ; do
631  #               case $i in                  echo $listIni $list2copy $newList | grep "\<$j\>" > /dev/null 2>&1
632  #                   -*)                  outp=$?
633  #                       mpi_libs="$mpi_libs $i" ;;                  if test $outp != 0 ; then
634  #               esac                    if test $dBug = 1 ; then echo -n " ; adding $j" ; fi
635  #           done                    newList="$newList $j"
636  #           echo "The MPI libs appear to be:"                  fi
637  #           echo "  "$mpi_libs                done
638  #       fi                if test $dBug = 1 ; then echo "" ; fi
639  #       rm -f test.f out              fi
640  #     fi            done
641              if test "x$newList" = x ; then doCheck=0
642              else list2check=$newList ; list2copy="$list2copy $newList"
643              fi
644            done
645            list2copy="$MPI_HEADER_FILES $list2copy"
646            if test $dBug = 1 ; then echo "list2copy='$list2copy'" ; fi
647    
648            #----- create local mpi_headers dir if we have files to copy
649            mkListInc=`echo $list2copy | wc -w`
650            if test $mkListInc != 0 ; then
651              echo 'create local "./mpi_headers" dir'
652              mkdir -p ./mpi_headers
653              INCLUDES="-I./mpi_headers $INCLUDES"
654              mkListInc=1
655            fi
656            if test "x$LOCAL_MPI_HEADERS" != x ; then mkListInc=0 ; fi
657    
658            #----- make local copy and update LOCAL_MPI_HEADERS (if not already set)
659            for i in $list2copy ; do
660              if test -f $MPIINCLUDEDIR/$i ; then
661                cp -p $MPIINCLUDEDIR/$i ./mpi_headers
662                if test $i = 'mpif.h' ; then
663                    perl -i -pe 's/MPI_DISPLACEMENT_CURRENT=-1_8/MPI_DISPLACEMENT_CURRENT=-1/g' mpi_headers/mpif.h
664                fi
665                if test $mkListInc = 2 ; then
666                    LOCAL_MPI_HEADERS="$LOCAL_MPI_HEADERS ./mpi_headers/$i"
667                fi
668                if test $mkListInc = 1 ; then
669                    LOCAL_MPI_HEADERS="./mpi_headers/$i" ; mkListInc=2
670                fi
671              fi
672            done
673        else
674            echo "WARNING: MPIINCLUDEDIR='$MPIINCLUDEDIR' is not a directory"
675            echo "WARNING: => skip checking for MPI headers (no ./mpi_headers dir)"
676    #       exit -1
677        fi
678  }  }
679    
680  #  Parse the package dependency information  #  Parse the package dependency information
# Line 946  check_netcdf_libs()  { Line 996  check_netcdf_libs()  {
996        program fgennc        program fgennc
997  #include "netcdf.inc"  #include "netcdf.inc"
998  EOF  EOF
999      if test ! "x$MPI" = x ; then     #if test ! "x$MPI" = x ; then
1000          echo '#include "mpif.h"' >> genmake_tnc.F     #    echo '#include "mpif.h"' >> genmake_tnc.F
1001      fi     #fi
1002      cat <<EOF >> genmake_tnc.F      cat <<EOF >> genmake_tnc.F
1003        integer iret, ncid, xid        integer iret, ncid, xid
1004        iret = nf_create('genmake_tnc.nc', NF_CLOBBER, ncid)        iret = nf_create('genmake_tnc.nc', NF_CLOBBER, ncid)
# Line 1131  EOF Line 1181  EOF
1181      echo " --> set HAVE_LAPACK='$HAVE_LAPACK'" >> $LOGFILE      echo " --> set HAVE_LAPACK='$HAVE_LAPACK'" >> $LOGFILE
1182  }  }
1183    
1184    check_HAVE_FLUSH()  {
1185        if test ! "x$SKIP_CHECK_FLUSH" = x ; then
1186            return
1187        fi
1188        echo >> $LOGFILE
1189        echo "running: check_HAVE_FLUSH()" >> $LOGFILE
1190        cat <<EOF > genmake_tflsh.$FS
1191          program fgenflsh
1192          integer iounit
1193          character*9 fname
1194          iounit = 26
1195          fname = 'tmp.tflsh'
1196          open(iounit,FILE=fname,STATUS='unknown')
1197          write(iounit,*) 'genmake_tflsh: hello'
1198          call flush(iounit)
1199          close(iounit)
1200          end
1201    EOF
1202        echo "===  genmake_tflsh.$FS  >>>" > genmake_tflsh.log
1203        cat genmake_tflsh.$FS >> genmake_tflsh.log
1204        echo "<<<  genmake_tflsh.$FS  ===" >> genmake_tflsh.log
1205    
1206        echo "$FC $FFLAGS $FOPTIM -c genmake_tflsh.$FS  \ " >> genmake_tflsh.log
1207        echo "  &&  $LINK $FFLAGS $FOPTIM -o genmake_tflsh.o $LIBS" >> genmake_tflsh.log
1208        $FC $FFLAGS $FOPTIM -c genmake_tflsh.$FS >> genmake_tflsh.log 2>&1  \
1209            &&  $LINK $FFLAGS $FOPTIM -o genmake_tflsh genmake_tflsh.o $LIBS >> genmake_tflsh.log 2>&1
1210        RET_COMPILE=$?
1211    
1212        if test "x$RET_COMPILE" = x0 ; then
1213            HAVE_FLUSH=t
1214            #cat genmake_tflsh.log >> $LOGFILE
1215            echo "  check_HAVE_FLUSH: successful" >> $LOGFILE
1216        else
1217            HAVE_FLUSH=f
1218            cat genmake_tflsh.log >> $LOGFILE
1219        fi
1220        rm -f genmake_tflsh*
1221        echo " --> set HAVE_FLUSH='$HAVE_FLUSH'" >> $LOGFILE
1222    }
1223    
1224  ###############################################################################  ###############################################################################
1225  #   Sequential part of script starts here  #   Sequential part of script starts here
# Line 1188  GSL= Line 1277  GSL=
1277  DEVEL=  DEVEL=
1278  HAVE_TEST_L=  HAVE_TEST_L=
1279    
1280    # comment this line out to enable lapack test
1281    SKIP_LAPACK_CHECK=t
1282    
1283  # DEFINES checked by test compilation or command-line  # DEFINES checked by test compilation or command-line
1284  HAVE_SYSTEM=  HAVE_SYSTEM=
1285  HAVE_FDATE=  HAVE_FDATE=
# Line 1199  HAVE_NETCDF= Line 1291  HAVE_NETCDF=
1291  HAVE_ETIME=  HAVE_ETIME=
1292  IGNORE_TIME=  IGNORE_TIME=
1293  HAVE_LAPACK=  HAVE_LAPACK=
1294    HAVE_FLUSH=
1295    
1296  MODS=  MODS=
1297  TOOLSDIR=  TOOLSDIR=
# Line 1244  FTL_TAF_FLAGS= Line 1337  FTL_TAF_FLAGS=
1337  SVD_TAMC_FLAGS=  SVD_TAMC_FLAGS=
1338  TAMC_EXTRA=  TAMC_EXTRA=
1339    
1340    DIVA=
1341    MPIINCLUDEDIR=
1342    MPI_HEADER_FILES=
1343    LOCAL_MPI_HEADERS=
1344    
1345  #  The following state can be set directly by command-line switches  #  The following state can be set directly by command-line switches
1346  gm_s1="OPTFILE PKG_DEPEND PKG_GROUPS DISABLE ENABLE MAKEFILE MAKEDEPEND PLATFORM"  gm_s1="ROOTDIR STANDARDDIRS MODS PKG_DEPEND PKG_GROUPS DISABLE ENABLE"
1347  gm_s2="FC CC MPI OMP USE_R4 TS PAPIS PCLS PAPI PCL HPMT IEEE DEVEL GSL FEXTRAFLAGS"  gm_s2="PLATFORM OPTFILE MAKE MAKEFILE MAKEDEPEND FC CC MPI OMP USE_R4"
1348  gm_s3="ROOTDIR STANDARDDIRS MODS DUMPSTATE"  gm_s3="FEXTRAFLAGS IEEE DEVEL GSL TS PAPIS PCLS PAPI PCL HPMT DUMPSTATE"
1349    
1350  #  The following state is not directly set by command-line switches  #  The following state is not directly set by command-line switches
1351  gm_s4="LN S64 LINK MAKE PACKAGES INCLUDES FFLAGS FOPTIM"  gm_s4="LN S64 LINK PACKAGES INCLUDES FFLAGS FOPTIM"
1352  gm_s5="CFLAGS LIBS KPP KFLAGS1 KFLAGS2 KPPFILES NOOPTFILES NOOPTFLAGS"  gm_s5="CFLAGS LIBS KPP KFLAGS1 KFLAGS2 KPPFILES NOOPTFILES NOOPTFLAGS"
1353  gm_s6="TOOLSDIR SOURCEDIRS INCLUDEDIRS EXEDIR EXECUTABLE EXEHOOK"  gm_s6="PWD TOOLSDIR SOURCEDIRS INCLUDEDIRS EXEDIR EXECUTABLE EXEHOOK"
1354  gm_s7="PWD THISHOST THISUSER THISDATE THISVER MACHINE"  gm_s7="THISHOST THISUSER THISDATE THISVER MACHINE FC_NAMEMANGLE"
1355  gm_s8="FC_NAMEMANGLE HAVE_NETCDF HAVE_SYSTEM HAVE_FDATE HAVE_ETIME HAVE_LAPACK"  gm_s8="HAVE_NETCDF HAVE_SYSTEM HAVE_FDATE HAVE_ETIME HAVE_LAPACK HAVE_FLUSH"
1356    
1357  #  The following are all related to adjoint/tangent-linear stuff  #  The following are all related to adjoint/tangent-linear stuff
1358  gm_s10="AUTODIFF_PKG_USED AD_OPTFILE TAMC TAF AD_TAMC_FLAGS AD_TAF_FLAGS"  gm_s10="AUTODIFF_PKG_USED AD_OPTFILE TAMC TAF AD_TAMC_FLAGS AD_TAF_FLAGS"
1359  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"
1360  gm_s12="TAF_EXTRA TAMC_EXTRA"  gm_s12="TAF_EXTRA TAMC_EXTRA DIVA MPIINCLUDEDIR MPI_HEADER_FILES"
1361    
1362  gm_state="COMMANDL $gm_s1 $gm_s2 $gm_s3 $gm_s4 $gm_s5 $gm_s6 $gm_s7 $gm_s8"  gm_state="COMMANDL $gm_s1 $gm_s2 $gm_s3 $gm_s4 $gm_s5 $gm_s6 $gm_s7 $gm_s8"
1363  gm_state="$gm_state $gm_s10 $gm_s11 $gm_s12"  gm_state="$gm_state $gm_s10 $gm_s11 $gm_s12"
# Line 1697  check_for_broken_Ff Line 1795  check_for_broken_Ff
1795    
1796  if test ! "x$MPI" = x ; then  if test ! "x$MPI" = x ; then
1797        echo "  Turning on MPI cpp macros"        echo "  Turning on MPI cpp macros"
1798        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"        DEFINES="$DEFINES -DALLOW_USE_MPI"
1799    #- To compile code older than checkpoint63s (2012/09/05), un-comment the following line:
1800    #     DEFINES="$DEFINES -DALWAYS_USE_MPI"
1801  fi  fi
1802  if test ! "x$OMP" = x ; then  if test ! "x$OMP" = x ; then
1803        echo "  Add OMPFLAG and turn on OpenMP cpp macros"        echo "  Add OMPFLAG and turn on OpenMP cpp macros"
# Line 1922  if test "x$HAVE_LAPACK" != x ; then Line 2022  if test "x$HAVE_LAPACK" != x ; then
2022  else  else
2023      echo "no"      echo "no"
2024  fi  fi
 DEFINES="$DEFINES $IGNORE_TIME"  
2025    
2026    printf "  Can we call FLUSH intrinsic subroutine...  "
2027    check_HAVE_FLUSH
2028    if test "x$HAVE_FLUSH" = xt ; then
2029        DEFINES="$DEFINES -DHAVE_FLUSH"
2030        echo "yes"
2031    else
2032        echo "no"
2033    fi
2034    
2035    DEFINES="$DEFINES $IGNORE_TIME"
2036  if test "x$EMBED_SRC" = xt ; then  if test "x$EMBED_SRC" = xt ; then
2037      build_embed_encode      build_embed_encode
2038  fi  fi
# Line 2469  for i in $INCLUDEDIRS ; do Line 2578  for i in $INCLUDEDIRS ; do
2578      fi      fi
2579  done  done
2580    
2581  if test ! "x$DIVA" = x ; then  #if test ! "x$DIVA" = x -a ! "x$MPI" = x ; then
2582      echo "  Creating the pseudo-MPI include directory"  if test ! "x$MPI" = x ; then
2583      INCLUDES="-I./mpi_headers $INCLUDES"      if test ! "x$MPIINCLUDEDIR" = x ; then
2584      rm -rf ./mpi_headers          #  Do a local copy of MPI headers files (in local dir ./mpi_headers/) after
2585      mkdir -p ./mpi_headers          #   checking for additional included headers (in case of chain of included
2586            #   header); also set LOCAL_MPI_HEADERS (if not already set)
2587      if test "x$MPIINCLUDEDIR" = x ; then          mpi_headers_do_local_copy
         if test "x$MPIHOME" = x ; then  
             MPIHOME='/usr'  
         fi  
         MPIINCLUDEDIR='$MPIHOME/include'  
     fi  
   
     if test -r $MPIINCLUDEDIR/mpif.h ; then  
         for i in $MPI_HEADER_FILES; do  
             cp -p $MPIINCLUDEDIR/$i ./mpi_headers  
         done  
   
         perl -i -pe 's/MPI_DISPLACEMENT_CURRENT=-1_8/MPI_DISPLACEMENT_CURRENT=-1/g' mpi_headers/mpif.h  
     else  
         echo " We cannot create a copy of mpif.h!"  
 #       exit -1  
2588      fi      fi
2589  fi  fi
2590    
# Line 2521  if test "x$OPENAD" != x ; then Line 2615  if test "x$OPENAD" != x ; then
2615      OAD_DONT_TRANSFORM="/dev/null"      OAD_DONT_TRANSFORM="/dev/null"
2616      OAD_KEEP_ORIGINAL="/dev/null"      OAD_KEEP_ORIGINAL="/dev/null"
2617      OAD_CB2M_FILES="/dev/null"      OAD_CB2M_FILES="/dev/null"
2618        OADTOOLS="$TOOLSDIR/OAD_support"
2619      echo "  looking for dontCompile file:  "      echo "  looking for dontCompile file:  "
2620      for i in "." $MODS ; do      for i in "." $MODS ; do
2621          if test -r $i"/dontCompile" ; then          if test -r $i"/dontCompile" ; then
# Line 2715  cat >>$MAKEFILE <<EOF Line 2810  cat >>$MAKEFILE <<EOF
2810  # INCLUDES     : Directories searched for header files  # INCLUDES     : Directories searched for header files
2811  # DEFINES      : Macro definitions for CPP  # DEFINES      : Macro definitions for CPP
2812  # MAKEDEPEND   : Dependency generator  # MAKEDEPEND   : Dependency generator
 # KPP          : Special preprocessor command (specific to platform)  
 # KFLAGS       : Flags for KPP  
2813  # FC           : Fortran compiler command  # FC           : Fortran compiler command
2814  # FFLAGS       : Configuration/debugging options for FC  # FFLAGS       : Configuration/debugging options for FC
2815  # FOPTIM       : Optimization options for FC  # FOPTIM       : Optimization options for FC
# Line 2730  INCLUDEDIRS = ${INCLUDEDIRS} Line 2823  INCLUDEDIRS = ${INCLUDEDIRS}
2823  EXEDIR      = ${EXEDIR}  EXEDIR      = ${EXEDIR}
2824  EXECUTABLE  = \$(EXEDIR)/${EXECUTABLE}  EXECUTABLE  = \$(EXEDIR)/${EXECUTABLE}
2825  TOOLSDIR    = ${TOOLSDIR}  TOOLSDIR    = ${TOOLSDIR}
2826    OADTOOLS    = ${OADTOOLS}
2827    
2828  #eh3  new defines for the adjoint work  #eh3  new defines for the adjoint work
2829  AUTODIFF    = ${ROOTDIR}/pkg/autodiff  AUTODIFF    = ${ROOTDIR}/pkg/autodiff
# Line 2750  else Line 2844  else
2844      echo "EMBEDDED_FILES = " >>$MAKEFILE      echo "EMBEDDED_FILES = " >>$MAKEFILE
2845  fi  fi
2846    
2847    # extract default cpp search path so we can pass it to makedepend
2848    CPPINCLUDES=`cat /dev/null | $CPP -v 2>&1 | awk '/^End of search/{f=0}!/^\#/{if(f){printf " -I%s", $1;}}/^\#include "..." search start/{f=1}'`
2849    
2850  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2851  # Unix ln (link)  # Unix ln (link)
2852  LN = ${LN}  LN = ${LN}
 # C preprocessor  
 CPP = cat \$< | ${S64} | ${CPP}  
2853  # Dependency generator  # Dependency generator
2854  MAKEDEPEND = ${MAKEDEPEND}  MAKEDEPEND = ${MAKEDEPEND}
2855  # Special preprocessor (KAP on DECs, FPP on Crays)  # Special preprocessor (KAP on DECs, FPP on Crays)
# Line 2772  LINK = ${LINK} ${LDADD} Line 2867  LINK = ${LINK} ${LDADD}
2867  DEFINES = ${DEFINES}  DEFINES = ${DEFINES}
2868  # Includes for CPP  # Includes for CPP
2869  INCLUDES = ${INCLUDES}  INCLUDES = ${INCLUDES}
2870    # default CPP includes for makedepend
2871    CPPINCLUDES = ${CPPINCLUDES}
2872  # Flags for KPP  # Flags for KPP
2873  KFLAGS1 = ${KFLAGS1}  KFLAGS1 = ${KFLAGS1}
2874  KFLAGS2 = ${KFLAGS2}  KFLAGS2 = ${KFLAGS2}
# Line 2790  NOOPTFLAGS = ${NOOPTFLAGS} Line 2887  NOOPTFLAGS = ${NOOPTFLAGS}
2887  # Flags and libraries needed for linking  # Flags and libraries needed for linking
2888  LIBS = ${LIBS}  LIBS = ${LIBS}
2889  # Name of the makefile  # Name of the makefile
2890  MAKEFILE=${MAKEFILE}  MAKEFILE = ${MAKEFILE}
2891    # Name of the make program
2892    MAKE = ${MAKE}
2893    
2894  EOF  EOF
2895    
# Line 2821  echo '.SUFFIXES: .o .'$FS' .p .F .c .f'$ Line 2920  echo '.SUFFIXES: .o .'$FS' .p .F .c .f'$
2920    
2921  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2922    
2923  all: \$(EXECUTABLE)  all: fwd_exe_target
2924    fwd_exe_target:
2925            @echo Update AD_CONFIG.h and make \$(EXECUTABLE)
2926            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Forward version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template
2927            @cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
2928            @-rm -f ad_config.template
2929            \$(MAKE) -f \$(MAKEFILE) \$(EXECUTABLE)
2930    
2931  \$(EXECUTABLE): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(OBJFILES) \$(EMBEDDED_FILES)  \$(EXECUTABLE): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(OBJFILES) \$(EMBEDDED_FILES)
2932          @echo Creating \$@ ...          @echo Creating \$@ ...
2933          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)
2934    
2935  depend:  depend:
2936          @make -f \$(MAKEFILE) links          @\$(MAKE) -f \$(MAKEFILE) links
2937          \$(MAKEDEPEND) -f \$(MAKEFILE) -o .$FS \$(DEFINES) \$(INCLUDES) \$(F77_SRC_FILES)          \$(MAKEDEPEND) -f \$(MAKEFILE) -o .$FS \$(DEFINES) \$(INCLUDES) \$(CPPINCLUDES) \$(F77_SRC_FILES)
2938          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)
2939          -rm -f makedepend.out          -rm -f makedepend.out
2940    
# Line 2857  clean: Line 2963  clean:
2963    
2964  # remove most of the files that "make" and "make depend" generate  # remove most of the files that "make" and "make depend" generate
2965  Clean:  Clean:
2966          @make -f \$(MAKEFILE) clean          @\$(MAKE) -f \$(MAKEFILE) clean
2967          @make -f \$(MAKEFILE) cleanlinks          @\$(MAKE) -f \$(MAKEFILE) cleanlinks
2968          -rm -f \$(SPECIAL_FILES) f90mkdepend.log $MAKEFILE.old          -rm -f \$(SPECIAL_FILES) f90mkdepend.log $MAKEFILE.old
2969          -rm -f taf_command taf_output taf_ad.log taf_ad_flow.log taf_ftl.log          -rm -f taf_command taf_output taf_ad.log taf_ad_flow.log taf_ftl.log
         -rm -f genmake_warnings genmake_errors make.log  
2970    
2971  # remove also the executable, files that "genmake2" generates (except Makefile)  # remove also the executable, files that "genmake2" generates (except Makefile)
2972  #         and output from a run (plus log files from testreport)  #         and output from a run (plus log files from testreport)
2973  CLEAN:  CLEAN:
2974          @make -f \$(MAKEFILE) Clean          @\$(MAKE) -f \$(MAKEFILE) Clean
2975          -rm -f \$(EXECUTABLE) \$(EXE_AD) \$(EXE_FTL) *.bak          -rm -f \$(EXECUTABLE) \$(EXE_AD) \$(EXE_FTL) *.bak
2976          -rm -f $LOGFILE genmake_state genmake_*optfile          -rm -f $LOGFILE genmake_state genmake_*optfile
2977          -rm -f SIZE.h.mpi genmake.tr_log make.tr_log          -rm -f SIZE.h.mpi genmake.tr_log make.tr_log
2978            -rm -rf mpi_headers mnc_test_*
2979          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;
2980          -find \$(EXEDIR) -name "*.data" -exec rm {} \;          -find \$(EXEDIR) -name "*.data" -exec rm {} \;
2981          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;
2982          -rm -f *.txt STD* *diagnostics.log datetime          -rm -f *.txt STDOUT.* STDERR.* *diagnostics.log *.[0-9][0-9][0-9][0-9].log
2983            -rm -f datetime costfinal divided.ctrl snapshot* output_adm.txt.diva_*
2984          -rm -f *_MIT_CE_000.opt0000 costfunction*0000          -rm -f *_MIT_CE_000.opt0000 costfunction*0000
2985          -rm -rf mnc_test_*          -rm -f oad_cp.[0-9][0-9][0-9].?????
2986    
2987  makefile:  makefile:
2988          $THIS_SCRIPT $G2ARGS          $THIS_SCRIPT $G2ARGS
# Line 2885  cleanlinks: Line 2992  cleanlinks:
2992  # Special targets (SPECIAL_FILES) which are created by make  # Special targets (SPECIAL_FILES) which are created by make
2993  ${PACKAGES_DOT_H}:  ${PACKAGES_DOT_H}:
2994          @echo Creating \$@ ...          @echo Creating \$@ ...
2995          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bPACKAGES_CONFIG_H "Disabled packages:" \$(DISABLED_PACKAGES) " " "Enabled packages:" \$(ENABLED_PACKAGES) > \$@          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines -bPACKAGES_CONFIG_H "Disabled packages:" \$(DISABLED_PACKAGES) " " "Enabled packages:" \$(ENABLED_PACKAGES) > \$@
2996  AD_CONFIG.h:  AD_CONFIG.h:
2997          @echo Creating \$@ ...          @echo Creating \$@ ...
2998          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > \$@          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Default version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > \$@
2999  FC_NAMEMANGLE.h:  FC_NAMEMANGLE.h:
3000          @echo Creating \$@ ...          @echo Creating \$@ ...
3001          echo "$FC_NAMEMANGLE" > \$@          echo "$FC_NAMEMANGLE" > \$@
# Line 2928  cat >>$MAKEFILE <<EOF Line 3035  cat >>$MAKEFILE <<EOF
3035  ## This nullifies any default implicit rules concerning these two file types:  ## This nullifies any default implicit rules concerning these two file types:
3036  ## %.o : %.F  ## %.o : %.F
3037    
3038    # C preprocessing and replacing the _d in constants:
3039    CPPCMD = cat \$< | ${CPP} \$(DEFINES) \$(INCLUDES) | ${S64}
3040    
3041  .F.$FS:  .F.$FS:
3042          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD)  > \$@
3043  .$FS.o:  .$FS.o:
3044          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<
3045  .F.o:  .F.o:
3046          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<
3047  .F90.$FS90:  .F90.$FS90:
3048          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD)  > \$@
3049  .FF90.f$FS90:  .FF90.f$FS90:
3050          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD)  > \$@
3051  .$FS90.o:  .$FS90.o:
3052          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<
3053  .f$FS90.o:  .f$FS90.o:
# Line 2946  cat >>$MAKEFILE <<EOF Line 3056  cat >>$MAKEFILE <<EOF
3056  .c.o:  .c.o:
3057          \$(CC) \$(CFLAGS) \$(DEFINES) \$(INCLUDES) -c \$<          \$(CC) \$(CFLAGS) \$(DEFINES) \$(INCLUDES) -c \$<
3058  .flow.flowdir:  .flow.flowdir:
3059          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD) > \$@
3060    
3061  # Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain  # Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain
3062  .F.p:  .F.p:
3063          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD) > \$@
3064  .p.$FS:  .p.$FS:
3065          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<
3066    
# Line 2969  TAF            = ${TAF} Line 3079  TAF            = ${TAF}
3079    
3080  TAF_EXTRA      = ${TAF_EXTRA}  TAF_EXTRA      = ${TAF_EXTRA}
3081  TAMC_EXTRA     = ${TAMC_EXTRA}  TAMC_EXTRA     = ${TAMC_EXTRA}
3082    LOCAL_MPI_HEADERS    = ${LOCAL_MPI_HEADERS}
3083    
3084  EOF  EOF
3085    
# Line 2997  rm -f adSrcFiles.tmp Line 3108  rm -f adSrcFiles.tmp
3108  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
3109    
3110  # ... AD ...  # ... AD ...
3111  adall: \$(EXE_AD)  adall: ad_exe_target
3112  adtaf: ad_taf_output.$FS  adtaf: ad_taf_output.$FS
3113  adtamc: ad_tamc_output.$FS  adtamc: ad_tamc_output.$FS
3114    
3115  ad_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES) \$(AD_FLOW_FILES)  ad_exe_target:
3116          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template          @echo Update AD_CONFIG.h and make \$(EXE_AD)
3117            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Adjoint version" -bAD_CONFIG_H -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template
3118            @cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
3119            @-rm -f ad_config.template
3120            \$(MAKE) -f \$(MAKEFILE) \$(EXE_AD)
3121    
3122    ad_input_code.$FS: \$(F77_SRC_FILES) \$(AD_FLOW_FILES)
3123            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Adjoint version" -bAD_CONFIG_H -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template
3124          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
3125          -rm -f ad_config.template          @-rm -f ad_config.template
3126          @make -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)          @\$(MAKE) -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)
3127          @make -f \$(MAKEFILE) \$(FLOWFILES)          @\$(MAKE) -f \$(MAKEFILE) \$(FLOWFILES)
3128          cat \$(FLOWFILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ad_input_code.$FS          cat \$(FLOWFILES) \$(F77_PP_SRC_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ad_input_code.$FS
3129    
3130  ad_taf_output.$FS: ad_input_code.$FS  ad_taf_output.$FS: ad_input_code.$FS
3131          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
# Line 3019  adtafonly: Line 3137  adtafonly:
3137          ls -l ad_input_code_ad.$FS          ls -l ad_input_code_ad.$FS
3138          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
3139    
3140  \${EXE_AD}: ad_taf_output.o \$(OBJFILES)  \$(EXE_AD): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES:.c=.o) \$(H_SRC_FILES) \$(F90_SRC_FILES) ad_taf_output.o \$(EMBEDDED_FILES)
3141          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(C_SRC_FILES:.c=.o) ad_taf_output.o \$(LIBS)
3142    
3143  ad_tamc_output.$FS: ad_input_code.$FS  ad_tamc_output.$FS: ad_input_code.$FS
3144          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS
# Line 3038  adtrick: Line 3156  adtrick:
3156  adobj: ad_taf_output.o \$(OBJFILES)  adobj: ad_taf_output.o \$(OBJFILES)
3157    
3158  # ... FTL ...  # ... FTL ...
3159  ftlall: \$(EXE_FTL)  ftlall: ftl_exe_target
3160  ftltaf: ftl_taf_output.$FS  ftltaf: ftl_taf_output.$FS
3161  ftltamc: ftl_tamc_output.$FS  ftltamc: ftl_tamc_output.$FS
3162    
3163  ftl_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES)  ftl_exe_target:
3164          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ftl_config.template          @echo Update AD_CONFIG.h and make \$(EXE_FTL)
3165          cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "TangLin version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ad_config.template
3166          -rm -f ftl_config.template          @cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
3167          @make -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)          @-rm -f ad_config.template
3168          @make -f \$(MAKEFILE) \$(AD_FLOW_FILES)          \$(MAKE) -f \$(MAKEFILE) \$(EXE_FTL)
3169          cat \$(AD_FLOW_FILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ftl_input_code.$FS  
3170    ftl_input_code.$FS: \$(F77_SRC_FILES)
3171            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "TangLin version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ad_config.template
3172            cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
3173            @-rm -f ad_config.template
3174            @\$(MAKE) -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)
3175            @\$(MAKE) -f \$(MAKEFILE) \$(AD_FLOW_FILES)
3176            cat \$(AD_FLOW_FILES) \$(F77_PP_SRC_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ftl_input_code.$FS
3177    
3178  ftl_taf_output.$FS: ftl_input_code.$FS  ftl_taf_output.$FS: ftl_input_code.$FS
3179          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
3180          ls -l ftl_input_code_ftl.$FS          ls -l ftl_input_code_tl.$FS
3181          cat ftl_input_code_ftl.$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
3182    
3183  ftltafonly:  ftltafonly:
3184          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
3185          ls -l ftl_input_code_ftl.$FS          ls -l ftl_input_code_tl.$FS
3186          cat ftl_input_code_ftl.$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
3187    
3188  \${EXE_FTL}: ftl_taf_output.o \$(OBJFILES)  \$(EXE_FTL): ftl_taf_output.o \$(C_SRC_FILES:.c=.o)
3189          \$(LINK) -o \${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)          \$(LINK) -o \${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(C_SRC_FILES:.c=.o) ftl_taf_output.o \$(LIBS)
3190    
3191  ftl_tamc_output.$FS: ftl_input_code.$FS  ftl_tamc_output.$FS: ftl_input_code.$FS
3192          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS
# Line 3090  svd_touch: Line 3215  svd_touch:
3215          touch ad_taf_output.$FS ftl_taf_output.$FS          touch ad_taf_output.$FS ftl_taf_output.$FS
3216          \$(FC) \$(FFLAGS) \$(FOPTIM) -c ad_taf_output.$FS          \$(FC) \$(FFLAGS) \$(FOPTIM) -c ad_taf_output.$FS
3217          \$(FC) \$(FFLAGS) \$(FOPTIM) -c ftl_taf_output.$FS          \$(FC) \$(FFLAGS) \$(FOPTIM) -c ftl_taf_output.$FS
3218          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ftl_config.template          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "SVD version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ad_config.template
3219          cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h          cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
3220          -rm -f ftl_config.template          @-rm -f ad_config.template
3221    
3222  EOF  EOF
3223    
# Line 3176  w2f__types.F90 \ Line 3301  w2f__types.F90 \
3301  OAD_active.F90 \  OAD_active.F90 \
3302  OAD_cp.F90 \  OAD_cp.F90 \
3303  OAD_rev.F90 \  OAD_rev.F90 \
3304  OAD_tape.F90  OAD_tape.F90 \
3305    revolve.F90
3306    
3307  OPENAD_SUPPORT_C_SRC_FILES = \  OPENAD_SUPPORT_C_SRC_FILES = \
3308  iaddr.c \  iaddr.c \
# Line 3202  AD_OBJ_FILES_S2=\$(AD_OBJ_FILES_S1) \$(N Line 3328  AD_OBJ_FILES_S2=\$(AD_OBJ_FILES_S1) \$(N
3328          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES_S2) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES_S2) \$(LIBS)
3329    
3330  # create sources files modules from header files containing common blocks  # create sources files modules from header files containing common blocks
3331  %_mod.FF90 : %.h ../OAD_support/cb2mGetModules.csh ../OAD_support/cb2mGetModules.awk  %_mod.FF90 : %.h \${OADTOOLS}/cb2mGetModules.csh \${OADTOOLS}/cb2mGetModules.awk
3332          ../OAD_support/cb2mGetModules.csh $< ../OAD_support/cb2mGetModules.awk          \${OADTOOLS}/cb2mGetModules.csh $< \${OADTOOLS}/cb2mGetModules.awk
3333    
3334  # 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
3335  %_mod.h : %.h ../OAD_support/cb2mGetHeaders.csh ../OAD_support/cb2mGetHeaders.awk  %_mod.h : %.h \${OADTOOLS}/cb2mGetHeaders.csh \${OADTOOLS}/cb2mGetHeaders.awk
3336          ../OAD_support/cb2mGetHeaders.csh $< ../OAD_support/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)          \${OADTOOLS}/cb2mGetHeaders.csh $< \${OADTOOLS}/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)
3337    
3338  # 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
3339  %_cb2m.FF90 : %.F ../OAD_support/cb2mUseModules.bash  %_cb2m.FF90 : %.F \${OADTOOLS}/cb2mUseModules.bash
3340          ../OAD_support/cb2mUseModules.bash $< ${MPI}          \${OADTOOLS}/cb2mUseModules.bash $< ${MPI}
3341    
3342  # makefile debug rule  # makefile debug rule
3343  small_f: \$(CB2M_F90_PP_SRC_FILES)  small_f: \$(CB2M_F90_PP_SRC_FILES)
# Line 3233  ad_input_code_sf.pre.f90 : \$(CB2M_AD_FI Line 3359  ad_input_code_sf.pre.f90 : \$(CB2M_AD_FI
3359    
3360  # 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
3361  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
3362          cat \$< | sed -f ../OAD_support/stop2print.sed > ad_input_code_sf.pre.s2p.f90          cat \$< | sed -f \${OADTOOLS}/stop2print.sed > ad_input_code_sf.pre.s2p.f90
3363    
3364  # F -> WHIRL  # F -> WHIRL
3365  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 3256  ad_input_code_sf.pre.s2p.xb.x2w.w2f.f$FS Line 3382  ad_input_code_sf.pre.s2p.xb.x2w.w2f.f$FS
3382          \${OPEN64ROOT}/whirl2f/whirl2f -FLIST:ftn_file=\$@ -openad \$<          \${OPEN64ROOT}/whirl2f/whirl2f -FLIST:ftn_file=\$@ -openad \$<
3383    
3384  # insert template directives  # insert template directives
3385  ad_input_code_sf.pre.s2p.xb.x2w.w2f.td.f$FS90: ad_input_code_sf.pre.s2p.xb.x2w.w2f.f$FS90 ../OAD_support/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
3386          ../OAD_support/insertTemplateDir.bash \$< \$@          \${OADTOOLS}/insertTemplateDir.bash \$< \$@
3387    
3388  PPEXTRAS=\$(wildcard ../OAD_support/ad_template.*.F) ../OAD_support/ad_inline.F  PPEXTRAS=\$(wildcard \${OADTOOLS}/ad_template.*.F) \${OADTOOLS}/ad_inline.F
3389  # postprocess F'  # postprocess F'
3390  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
3391          \${OPENADFORTTK_BASE}/tools/SourceProcessing/postProcess.py --progress --timing --infoUnitFile w2f__types.f90 --outputFormat=fixed --separateOutput --pathSuffix "" --filenameSuffix "_oad" -m r -i ../OAD_support/ad_inline.f \$<          \${OPENADFORTTK_BASE}/tools/SourceProcessing/postProcess.py --progress --timing --infoUnitFile w2f__types.f90 --outputFormat=fixed --separateOutput --pathSuffix "" --filenameSuffix "_oad" -m r -i \${OADTOOLS}/ad_inline.f \$<
3392          # the target is a placeholder to trigger a single execution of the rule          # the target is a placeholder to trigger a single execution of the rule
3393          touch \$@          touch \$@
3394  # put this so make knows about the postprocessing output  # put this so make knows about the postprocessing output
# Line 3274  OAD_intrinsics_oad.f \$(CB2M_AD_FILES:.f Line 3400  OAD_intrinsics_oad.f \$(CB2M_AD_FILES:.f
3400    
3401  # link the support files:  # link the support files:
3402  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES):  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES):
3403          \$(LN) ../OAD_support/\$@ .          \$(LN) \${OADTOOLS}/\$@ .
3404    
3405  AD_CLEAN += *_mod.h *_mod.F90 *.FF90 *.mod-whirl temp.sed oad_cp.* postProcess.tag \$(PPEXTRAS:.F=.f)  AD_CLEAN += *_mod.h *_mod.F90 *.FF90 *.mod-whirl temp.sed oad_cp.* postProcess.tag \$(PPEXTRAS:.F=.f)
3406    
# Line 3321  printf "\n\n# DO NOT DELETE\n" >> $MAKEF Line 3447  printf "\n\n# DO NOT DELETE\n" >> $MAKEF
3447  printf "\n===  Done  ===\n"  printf "\n===  Done  ===\n"
3448    
3449  # Create special header files  # Create special header files
3450  $BASH $TOOLSDIR/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bPACKAGES_CONFIG_H "Disabled packages:" $DISABLED_PACKAGES " " "Enabled packages:" $ENABLED_PACKAGES > $PACKAGES_DOT_H".tmp"  $BASH $TOOLSDIR/convert_cpp_cmd2defines -bPACKAGES_CONFIG_H "Disabled packages:" $DISABLED_PACKAGES " " "Enabled packages:" $ENABLED_PACKAGES > $PACKAGES_DOT_H".tmp"
3451  if test ! -f $PACKAGES_DOT_H ; then  if test ! -f $PACKAGES_DOT_H ; then
3452      mv -f $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H      mv -f $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H
3453  else  else
# Line 3335  else Line 3461  else
3461      fi      fi
3462  fi  fi
3463  if test ! -f AD_CONFIG.h ; then  if test ! -f AD_CONFIG.h ; then
3464      $BASH $TOOLSDIR/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > AD_CONFIG.h      $BASH $TOOLSDIR/convert_cpp_cmd2defines "Default version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > AD_CONFIG.h
3465  fi  fi
3466    
3467  #  Write the "state" for future records  #  Write the "state" for future records

Legend:
Removed from v.1.237  
changed lines
  Added in v.1.255

  ViewVC Help
Powered by ViewVC 1.1.22