/[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.241 by utke, Wed Sep 19 20:46:03 2012 UTC revision 1.260 by jmc, Thu Aug 22 01:10:53 2013 UTC
# Line 208  test_for_string_in_file() { Line 208  test_for_string_in_file() {
208  expand_pkg_groups() {  expand_pkg_groups() {
209      new_packages=      new_packages=
210      if test -r $PKG_GROUPS ; then      if test -r $PKG_GROUPS ; then
211          cat $PKG_GROUPS | sed -e 's/#.*$//g' | sed -e 's/:/ : /g' > ./p1.tmp          cat $PKG_GROUPS | sed -e 's/#.*$//g' | sed -e 's/:/ : /g' > $TMP.p1
212          cat ./p1.tmp | $AWK '(NF>2 && $2==":"){ print $0 }' > ./p2.tmp          cat $TMP.p1 | $AWK '(NF>2 && $2==":"){ print $0 }' > $TMP.p2
213          matched=0          matched=0
214          for i in $PACKAGES ; do          for i in $PACKAGES ; do
215              line=`grep "^ *$i" ./p2.tmp`              line=`grep "^ *$i" $TMP.p2`
216              RETVAL=$?              RETVAL=$?
217              if test "x$RETVAL" = x0 ; then              if test "x$RETVAL" = x0 ; then
218                  matched=1                  matched=1
# Line 224  expand_pkg_groups() { Line 224  expand_pkg_groups() {
224              fi              fi
225          done          done
226          PACKAGES=$new_packages          PACKAGES=$new_packages
227          rm -f ./p[1,2].tmp          rm -f $TMP.p[1,2]
228          return $matched          return $matched
229      else      else
230          echo "Warning: can't read package groups definition file: $PKG_GROUPS"          echo "Warning: can't read package groups definition file: $PKG_GROUPS"
# Line 324  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 343  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 356  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 373  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 588  EOF Line 602  EOF
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            #----- check for additional headers (chain of included headers)
614            echo -n '  Check MPI headers ... '
615            listIni=$MPI_HEADER_FILES
616            echo $listIni | grep "\<mpif.h\>" > /dev/null 2>&1
617            outp=$?
618            #- always check mpif.h (the only mpi-header included in standard MITgcm code)
619            if test $outp != 0 ; then listIni="mpif.h $listIni" ; fi
620            if test $dBug = 1 ; then echo "listIni='$listIni'" ; fi
621    
622            doCheck=1 ; list2copy='' ; list2check=$listIni
623            while test $doCheck = 1 ; do
624              newList=''
625              for i in $list2check ; do
626                if test -f $MPIINCLUDEDIR/$i ; then
627                  newInc=`grep '^ *include ' $MPIINCLUDEDIR/$i | \
628                    sed -e 's/^ *include //' -e 's/\!.*$//' -e "s/'//g"  -e 's/\"//g'`
629                  if test $dBug = 1 ; then echo -n "checking $i : newInc='$newInc'" ; fi
630                  for j in $newInc ; do
631                    echo $listIni $list2copy $newList | grep "\<$j\>" > /dev/null 2>&1
632                    outp=$?
633                    if test $outp != 0 ; then
634                      if test $dBug = 1 ; then echo -n " ; adding $j" ; fi
635                      newList="$newList $j"
636                    fi
637                  done
638                  if test $dBug = 1 ; then echo "" ; fi
639                fi
640              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
681  get_pdepend_list()  {  get_pdepend_list()  {
682    
# Line 907  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 1092  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 1149  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 1160  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 1205  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="ROOTDIR STANDARDDIRS MODS PKG_DEPEND PKG_GROUPS DISABLE ENABLE"  gm_s1="ROOTDIR STANDARDDIRS MODS PKG_DEPEND PKG_GROUPS DISABLE ENABLE"
1347  gm_s2="PLATFORM OPTFILE MAKE MAKEFILE MAKEDEPEND FC CC MPI OMP USE_R4"  gm_s2="PLATFORM OPTFILE MAKE MAKEFILE MAKEDEPEND FC CC MPI OMP USE_R4"
# Line 1213  gm_s3="FEXTRAFLAGS IEEE DEVEL GSL TS PAP Line 1350  gm_s3="FEXTRAFLAGS IEEE DEVEL GSL TS PAP
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 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="TMP 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 1439  for ac_option in "$@" ; do Line 1576  for ac_option in "$@" ; do
1576    
1577  done  done
1578    
1579    TMP=./genmk_$$
1580    #- try to put temporary files in system-local /tmp dir
1581    #TMP=/tmp/genmk_$$
1582    #touch $TMP ; retVal=$?
1583    #if [ $retVal -eq 0 ] ; then
1584    #  if test ! -r $TMP ; then TMP=./genmk_$$ ; fi
1585    #else
1586    #  TMP=./genmk_$$
1587    #fi
1588    #rm -f $TMP
1589    ##echo "  temp files: $TMP.*"
1590    
1591  printf "  getting local config information:  "  printf "  getting local config information:  "
1592  if test -f $gm_local ; then  if test -f $gm_local ; then
1593      echo "using $gm_local"      echo "using $gm_local"
# Line 1659  check_for_broken_Ff Line 1808  check_for_broken_Ff
1808  if test ! "x$MPI" = x ; then  if test ! "x$MPI" = x ; then
1809        echo "  Turning on MPI cpp macros"        echo "  Turning on MPI cpp macros"
1810        DEFINES="$DEFINES -DALLOW_USE_MPI"        DEFINES="$DEFINES -DALLOW_USE_MPI"
1811    #- To compile code older than checkpoint63s (2012/09/05), un-comment the following line:
1812    #     DEFINES="$DEFINES -DALWAYS_USE_MPI"
1813  fi  fi
1814  if test ! "x$OMP" = x ; then  if test ! "x$OMP" = x ; then
1815        echo "  Add OMPFLAG and turn on OpenMP cpp macros"        echo "  Add OMPFLAG and turn on OpenMP cpp macros"
# Line 1883  if test "x$HAVE_LAPACK" != x ; then Line 2034  if test "x$HAVE_LAPACK" != x ; then
2034  else  else
2035      echo "no"      echo "no"
2036  fi  fi
 DEFINES="$DEFINES $IGNORE_TIME"  
2037    
2038    printf "  Can we call FLUSH intrinsic subroutine...  "
2039    check_HAVE_FLUSH
2040    if test "x$HAVE_FLUSH" = xt ; then
2041        DEFINES="$DEFINES -DHAVE_FLUSH"
2042        echo "yes"
2043    else
2044        echo "no"
2045    fi
2046    
2047    DEFINES="$DEFINES $IGNORE_TIME"
2048  if test "x$EMBED_SRC" = xt ; then  if test "x$EMBED_SRC" = xt ; then
2049      build_embed_encode      build_embed_encode
2050  fi  fi
# Line 2089  if test "x${PKG_GROUPS}" != x ; then Line 2249  if test "x${PKG_GROUPS}" != x ; then
2249  fi  fi
2250    
2251  echo "  applying DISABLE settings"  echo "  applying DISABLE settings"
2252  echo "" > ./.tmp_pack  echo "" > $TMP.pack
2253  for i in $PACKAGES ; do  for i in $PACKAGES ; do
2254      echo $i >> ./.tmp_pack      echo $i >> $TMP.pack
2255  done  done
2256  for i in `grep  "-" ./.tmp_pack` ; do  for i in `grep  "-" $TMP.pack` ; do
2257      j=`echo $i | sed 's/[-]//'`      j=`echo $i | sed 's/[-]//'`
2258      DISABLE="$DISABLE $j"      DISABLE="$DISABLE $j"
2259  done  done
# Line 2111  for p in $PACKAGES ; do Line 2271  for p in $PACKAGES ; do
2271  done  done
2272  PACKAGES="$pack"  PACKAGES="$pack"
2273  echo "  applying ENABLE settings"  echo "  applying ENABLE settings"
2274  echo "" > ./.tmp_pack  echo "" > $TMP.pack
2275  PACKAGES="$PACKAGES $ENABLE"  PACKAGES="$PACKAGES $ENABLE"
2276  # Test if each explicitly referenced package exists  # Test if each explicitly referenced package exists
2277  for i in $PACKAGES ; do  for i in $PACKAGES ; do
# Line 2120  for i in $PACKAGES ; do Line 2280  for i in $PACKAGES ; do
2280          echo "Error: dir '$ROOTDIR/pkg/$i' missing for package '$i'"          echo "Error: dir '$ROOTDIR/pkg/$i' missing for package '$i'"
2281          exit 1          exit 1
2282      fi      fi
2283      echo $i >> ./.tmp_pack      echo $i >> $TMP.pack
2284  done  done
2285  PACKAGES=  PACKAGES=
2286  for i in `grep -v "-" ./.tmp_pack | sort | uniq` ; do  for i in `grep -v "-" $TMP.pack | sort | uniq` ; do
2287      PACKAGES="$PACKAGES $i"      PACKAGES="$PACKAGES $i"
2288  done  done
2289  rm -f ./.tmp_pack  rm -f $TMP.pack
2290  echo "    packages are: $PACKAGES"  echo "    packages are: $PACKAGES"
2291    
2292  #  Check for package MNC: if NetCDF is available, then build the MNC  #  Check for package MNC: if NetCDF is available, then build the MNC
# Line 2405  fi Line 2565  fi
2565    
2566  #  Here, we build the list of files to be "run through" the adjoint  #  Here, we build the list of files to be "run through" the adjoint
2567  #  compiler.  #  compiler.
2568  if test -f ./adSrcFiles.tmp ; then  if test -f $TMP.adSrcFiles ; then
2569      rm -f ./adSrcFiles.tmp      rm -f $TMP.adSrcFiles
2570  fi  fi
2571  echo "  Creating the list of files for the adjoint compiler."  echo "  Creating the list of files for the adjoint compiler."
2572  touch adSrcFiles.tmp  touch $TMP.adSrcFiles
2573  for i in $SOURCEDIRS ; do  for i in $SOURCEDIRS ; do
2574      list_files=`( cd $i && ls -1 *.list 2>/dev/null )`      list_files=`( cd $i && ls -1 *.list 2>/dev/null )`
2575      for j in $list_files ; do      for j in $list_files ; do
2576          cat $i/$j >> adSrcFiles.tmp          cat $i/$j >> $TMP.adSrcFiles
2577      done      done
2578  done  done
2579  if test ! "x"$FS = "x.f" ; then  if test ! "x"$FS = "x.f" ; then
2580      cat adSrcFiles.tmp | sed -e "s/\.f/.$FS/g" > adSrcFiles.tmp_f      cat $TMP.adSrcFiles | sed -e "s/\.f/.$FS/g" > $TMP.adSrcFiles_f
2581      mv -f adSrcFiles.tmp_f adSrcFiles.tmp      mv -f $TMP.adSrcFiles_f $TMP.adSrcFiles
2582  fi  fi
2583    
2584  echo  echo
# Line 2430  for i in $INCLUDEDIRS ; do Line 2590  for i in $INCLUDEDIRS ; do
2590      fi      fi
2591  done  done
2592    
2593  if test ! "x$DIVA" = x ; then  if test ! "x$DIVA" = x -a ! "x$MPI" = x ; then
2594      echo "  Creating the pseudo-MPI include directory"      if test ! "x$MPIINCLUDEDIR" = x ; then
2595      INCLUDES="-I./mpi_headers $INCLUDES"          #  Do a local copy of MPI headers files (in local dir ./mpi_headers/) after
2596      rm -rf ./mpi_headers          #   checking for additional included headers (in case of chain of included
2597      mkdir -p ./mpi_headers          #   header); also set LOCAL_MPI_HEADERS (if not already set)
2598            mpi_headers_do_local_copy
     if test "x$MPIINCLUDEDIR" = x ; then  
         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  
2599      fi      fi
2600  fi  fi
2601    
2602  echo "  Determining the list of source and include files"  echo "  Determining the list of source and include files"
2603  rm -rf .links.tmp  rm -rf $TMP.links
2604  mkdir .links.tmp  mkdir $TMP.links
2605  touch .links.tmp/foo  touch $TMP.links/foo
2606  if test ! -r ".links.tmp/foo" ; then  if test ! -r "$TMP.links/foo" ; then
2607      echo      echo
2608      echo "ERROR : something is wrong with your directory permissions or"      echo "ERROR : something is wrong with your directory permissions or"
2609      echo "   your user file-creation mask (\"umask\") since creating a"      echo "   your user file-creation mask (\"umask\") since creating a"
# Line 2475  if test ! -r ".links.tmp/foo" ; then Line 2619  if test ! -r ".links.tmp/foo" ; then
2619      echo      echo
2620      exit 1      exit 1
2621  fi  fi
2622  rm -f .links.tmp/foo  rm -f $TMP.links/foo
2623    
2624  if test "x$OPENAD" != x ; then  if test "x$OPENAD" != x ; then
2625      OAD_DONT_COMPILE="/dev/null"      OAD_DONT_COMPILE="/dev/null"
2626      OAD_DONT_TRANSFORM="/dev/null"      OAD_DONT_TRANSFORM="/dev/null"
2627      OAD_KEEP_ORIGINAL="/dev/null"      OAD_KEEP_ORIGINAL="/dev/null"
2628      OAD_CB2M_FILES="/dev/null"      OAD_CB2M_FILES="/dev/null"
2629        OADTOOLS="$TOOLSDIR/OAD_support"
2630      echo "  looking for dontCompile file:  "      echo "  looking for dontCompile file:  "
2631      for i in "." $MODS ; do      for i in "." $MODS ; do
2632          if test -r $i"/dontCompile" ; then          if test -r $i"/dontCompile" ; then
# Line 2517  if test "x$OPENAD" != x ; then Line 2662  if test "x$OPENAD" != x ; then
2662      echo "   OpenAD exceptions:  "      echo "   OpenAD exceptions:  "
2663  fi  fi
2664    
2665  echo "# This section creates symbolic links" > srclinks.tmp  echo "# This section creates symbolic links" > $TMP.srclinks
2666  echo "" >> srclinks.tmp  echo "" >> $TMP.srclinks
2667  printf 'F77_SRC_FILES = ' > F77srclist.tmp  printf 'F77_SRC_FILES = ' > $TMP.F77srclist
2668  printf 'NON_AD_F77_SRC_FILES = ' > nonADF77srclist.tmp  printf 'NON_AD_F77_SRC_FILES = ' > $TMP.nonADF77srclist
2669  printf 'C_SRC_FILES = '   > csrclist.tmp  printf 'C_SRC_FILES = '   > $TMP.csrclist
2670  printf 'F90_SRC_FILES = ' > F90srclist.tmp  printf 'F90_SRC_FILES = ' > $TMP.F90srclist
2671  printf 'H_SRC_FILES = '   > hsrclist.tmp  printf 'H_SRC_FILES = '   > $TMP.hsrclist
2672  printf 'AD_FLOW_FILES = ' > ad_flow_files.tmp  printf 'AD_FLOW_FILES = ' > $TMP.ad_flow_files
2673  alldirs="$SOURCEDIRS $INCLUDEDIRS ."  alldirs="$SOURCEDIRS $INCLUDEDIRS ."
2674  for d in $alldirs ; do  for d in $alldirs ; do
2675      deplist=      deplist=
# Line 2534  for d in $alldirs ; do Line 2679  for d in $alldirs ; do
2679          sfiles=`( echo $sfiles | grep -v _cb2m\. )`          sfiles=`( echo $sfiles | grep -v _cb2m\. )`
2680      fi      fi
2681      for sf in $sfiles ; do      for sf in $sfiles ; do
2682          if test ! -r ".links.tmp/$sf" ; then          if test ! -r "$TMP.links/$sf" ; then
2683              if test -f "$d/$sf" ; then              if test -f "$d/$sf" ; then
2684                  ignore_f=f                  ignore_f=f
2685                  case $d/$sf in                  case $d/$sf in
# Line 2559  for d in $alldirs ; do Line 2704  for d in $alldirs ; do
2704                          if test "x$HAVE_TEST_L" = xt -a "x$d" = x. -a -L $sf ; then                          if test "x$HAVE_TEST_L" = xt -a "x$d" = x. -a -L $sf ; then
2705                              ignore_f=t                              ignore_f=t
2706                          else                          else
2707                              touch .links.tmp/$sf                              touch $TMP.links/$sf
2708                              deplist="$deplist $sf"                              deplist="$deplist $sf"
2709                          fi                          fi
2710                          ;;                          ;;
# Line 2568  for d in $alldirs ; do Line 2713  for d in $alldirs ; do
2713                      extn=`echo $sf | $AWK -F. '{print $NF}'`                      extn=`echo $sf | $AWK -F. '{print $NF}'`
2714                      case $extn in                      case $extn in
2715                        F)                        F)
2716                          echo    " \\"  >> F77srclist.tmp                          echo    " \\"  >> $TMP.F77srclist
2717                          printf " $sf" >> F77srclist.tmp                          printf " $sf" >> $TMP.F77srclist
2718                          if test "x$OPENAD" != x ; then                          if test "x$OPENAD" = x ; then
2719                                basename=${sf%%.F}
2720                                isAD=`egrep ^$basename.f'[  ]*' $TMP.adSrcFiles`
2721                                if test -z "$isAD" ; then
2722                                    echo    " \\"  >> $TMP.nonADF77srclist
2723                                    printf " $sf" >> $TMP.nonADF77srclist
2724                                fi
2725                            else #- OpenAD case:
2726                              basename=${sf%%.F}                              basename=${sf%%.F}
2727                              isAD=`egrep ^$basename.f'[  ]*' adSrcFiles.tmp`                              isAD=`egrep ^$basename.f'[  ]*' $TMP.adSrcFiles`
2728                              if test -z "$isAD" ; then                              if test -z "$isAD" ; then
2729                                  toBeIgnored=`egrep ^$basename'[      ]*' ${OAD_DONT_COMPILE}`                                  toBeIgnored=`egrep ^$basename'[      ]*' ${OAD_DONT_COMPILE}`
2730                                  if test -z "$toBeIgnored" ; then                                  if test -z "$toBeIgnored" ; then
2731                                      echo    " \\"  >> nonADF77srclist.tmp                                      echo    " \\"  >> $TMP.nonADF77srclist
2732                                      printf " $sf" >> nonADF77srclist.tmp                                      printf " $sf" >> $TMP.nonADF77srclist
2733                                  else                                  else
2734                                      echo "    not to be compiled   :  $sf"                                      echo "    not to be compiled   :  $sf"
2735                                  fi                                  fi
# Line 2592  for d in $alldirs ; do Line 2744  for d in $alldirs ; do
2744                                      echo "    original to be kept  :  $sf"                                      echo "    original to be kept  :  $sf"
2745                                  fi                                  fi
2746                                  if test -n "$notToBeTransformed" -o -n "$untransformedVersionToBeKept" ; then                                  if test -n "$notToBeTransformed" -o -n "$untransformedVersionToBeKept" ; then
2747                                      echo    " \\"  >> nonADF77srclist.tmp                                      echo    " \\"  >> $TMP.nonADF77srclist
2748                                      printf " $sf" >> nonADF77srclist.tmp                                      printf " $sf" >> $TMP.nonADF77srclist
2749                                  fi                                  fi
2750                              fi                              fi
2751                          fi                          fi
2752                          ;;                          ;;
2753                      F90)                      F90)
2754                          echo    " \\"  >> F90srclist.tmp                          echo    " \\"  >> $TMP.F90srclist
2755                          printf " $sf" >> F90srclist.tmp                          printf " $sf" >> $TMP.F90srclist
2756                          ;;                          ;;
2757                      c)                      c)
2758                          echo    " \\"  >> csrclist.tmp                          echo    " \\"  >> $TMP.csrclist
2759                          printf " $sf" >> csrclist.tmp                          printf " $sf" >> $TMP.csrclist
2760                          ;;                          ;;
2761                      h)                      h)
2762                          echo    " \\"  >> hsrclist.tmp                          echo    " \\"  >> $TMP.hsrclist
2763                          printf " $sf" >> hsrclist.tmp                          printf " $sf" >> $TMP.hsrclist
2764                          ;;                          ;;
2765                      flow)                      flow)
2766                          echo    " \\"  >> ad_flow_files.tmp                          echo    " \\"  >> $TMP.ad_flow_files
2767                          printf " $sf" >> ad_flow_files.tmp                          printf " $sf" >> $TMP.ad_flow_files
2768                          ;;                          ;;
2769                     esac                     esac
2770                  fi                  fi
# Line 2621  for d in $alldirs ; do Line 2773  for d in $alldirs ; do
2773      done      done
2774      if test "x$deplist" != x ; then      if test "x$deplist" != x ; then
2775        if test "$d" != "." ; then        if test "$d" != "." ; then
2776          echo "" >> srclinks.tmp          echo "" >> $TMP.srclinks
2777          echo "#  These files are linked from $d" >> srclinks.tmp          echo "#  These files are linked from $d" >> $TMP.srclinks
2778          echo "$deplist :" >> srclinks.tmp          echo "$deplist :" >> $TMP.srclinks
2779  # We need to make sure that the link isn't already there.  # We need to make sure that the link isn't already there.
2780  # 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"
2781  # 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.
2782          printf "\tif [ ! -L \$@ ]; then \$(LN) %s/\$@ \$@; fi\n" $d >> srclinks.tmp          printf "\tif [ ! -L \$@ ]; then \$(LN) %s/\$@ \$@; fi\n" $d >> $TMP.srclinks
2783        fi        fi
2784      fi      fi
2785  done  done
2786  rm -rf .links.tmp  rm -rf $TMP.links
2787  echo "" >> F77srclist.tmp  echo "" >> $TMP.F77srclist
2788  echo "" >> nonADF77srclist.tmp  echo "" >> $TMP.nonADF77srclist
2789  echo "" >> csrclist.tmp  echo "" >> $TMP.csrclist
2790  echo "" >> F90srclist.tmp  echo "" >> $TMP.F90srclist
2791  echo "" >> hsrclist.tmp  echo "" >> $TMP.hsrclist
2792  echo "" >> ad_flow_files.tmp  echo "" >> $TMP.ad_flow_files
2793    
2794  CMDLINE=$0  CMDLINE=$0
2795  for xx in "$@" ; do nw=`echo $xx | wc -w`  for xx in "$@" ; do nw=`echo $xx | wc -w`
# Line 2689  INCLUDEDIRS = ${INCLUDEDIRS} Line 2841  INCLUDEDIRS = ${INCLUDEDIRS}
2841  EXEDIR      = ${EXEDIR}  EXEDIR      = ${EXEDIR}
2842  EXECUTABLE  = \$(EXEDIR)/${EXECUTABLE}  EXECUTABLE  = \$(EXEDIR)/${EXECUTABLE}
2843  TOOLSDIR    = ${TOOLSDIR}  TOOLSDIR    = ${TOOLSDIR}
2844    OADTOOLS    = ${OADTOOLS}
2845    
2846  #eh3  new defines for the adjoint work  #eh3  new defines for the adjoint work
2847  AUTODIFF    = ${ROOTDIR}/pkg/autodiff  AUTODIFF    = ${ROOTDIR}/pkg/autodiff
# Line 2709  else Line 2862  else
2862      echo "EMBEDDED_FILES = " >>$MAKEFILE      echo "EMBEDDED_FILES = " >>$MAKEFILE
2863  fi  fi
2864    
2865    # extract default cpp search path so we can pass it to makedepend
2866    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}'`
2867    
2868  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2869  # Unix ln (link)  # Unix ln (link)
2870  LN = ${LN}  LN = ${LN}
# Line 2729  LINK = ${LINK} ${LDADD} Line 2885  LINK = ${LINK} ${LDADD}
2885  DEFINES = ${DEFINES}  DEFINES = ${DEFINES}
2886  # Includes for CPP  # Includes for CPP
2887  INCLUDES = ${INCLUDES}  INCLUDES = ${INCLUDES}
2888    # default CPP includes for makedepend
2889    CPPINCLUDES = ${CPPINCLUDES}
2890  # Flags for KPP  # Flags for KPP
2891  KFLAGS1 = ${KFLAGS1}  KFLAGS1 = ${KFLAGS1}
2892  KFLAGS2 = ${KFLAGS2}  KFLAGS2 = ${KFLAGS2}
# Line 2753  MAKE = ${MAKE} Line 2911  MAKE = ${MAKE}
2911    
2912  EOF  EOF
2913    
2914  cat F77srclist.tmp      >> $MAKEFILE  cat $TMP.F77srclist      >> $MAKEFILE
2915  cat nonADF77srclist.tmp >> $MAKEFILE  cat $TMP.nonADF77srclist >> $MAKEFILE
2916  cat csrclist.tmp        >> $MAKEFILE  cat $TMP.csrclist        >> $MAKEFILE
2917  cat F90srclist.tmp      >> $MAKEFILE  cat $TMP.F90srclist      >> $MAKEFILE
2918  cat hsrclist.tmp        >> $MAKEFILE  cat $TMP.hsrclist        >> $MAKEFILE
2919  cat ad_flow_files.tmp   >> $MAKEFILE  cat $TMP.ad_flow_files   >> $MAKEFILE
2920    
2921  rm -f F77srclist.tmp nonADF77srclist.tmp csrclist.tmp F90srclist.tmp hsrclist.tmp ad_flow_files.tmp  rm -f $TMP.F77srclist $TMP.nonADF77srclist $TMP.csrclist $TMP.F90srclist $TMP.hsrclist $TMP.ad_flow_files
2922    
2923  echo >> $MAKEFILE  echo >> $MAKEFILE
2924    
# Line 2794  fwd_exe_target: Line 2952  fwd_exe_target:
2952    
2953  depend:  depend:
2954          @\$(MAKE) -f \$(MAKEFILE) links          @\$(MAKE) -f \$(MAKEFILE) links
2955          \$(MAKEDEPEND) -f \$(MAKEFILE) -o .$FS \$(DEFINES) \$(INCLUDES) \$(F77_SRC_FILES)          \$(MAKEDEPEND) -f \$(MAKEFILE) -o .$FS \$(DEFINES) \$(INCLUDES) \$(CPPINCLUDES) \$(F77_SRC_FILES)
2956          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)
2957          -rm -f makedepend.out          -rm -f makedepend.out
2958    
# Line 2827  Clean: Line 2985  Clean:
2985          @\$(MAKE) -f \$(MAKEFILE) cleanlinks          @\$(MAKE) -f \$(MAKEFILE) cleanlinks
2986          -rm -f \$(SPECIAL_FILES) f90mkdepend.log $MAKEFILE.old          -rm -f \$(SPECIAL_FILES) f90mkdepend.log $MAKEFILE.old
2987          -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  
2988    
2989  # remove also the executable, files that "genmake2" generates (except Makefile)  # remove also the executable, files that "genmake2" generates (except Makefile)
2990  #         and output from a run (plus log files from testreport)  #         and output from a run (plus log files from testreport)
# Line 2836  CLEAN: Line 2993  CLEAN:
2993          -rm -f \$(EXECUTABLE) \$(EXE_AD) \$(EXE_FTL) *.bak          -rm -f \$(EXECUTABLE) \$(EXE_AD) \$(EXE_FTL) *.bak
2994          -rm -f $LOGFILE genmake_state genmake_*optfile          -rm -f $LOGFILE genmake_state genmake_*optfile
2995          -rm -f SIZE.h.mpi genmake.tr_log make.tr_log          -rm -f SIZE.h.mpi genmake.tr_log make.tr_log
2996            -rm -rf mpi_headers mnc_test_*
2997          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;
2998          -find \$(EXEDIR) -name "*.data" -exec rm {} \;          -find \$(EXEDIR) -name "*.data" -exec rm {} \;
2999          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;
3000          -rm -f *.txt STD* *diagnostics.log datetime          -rm -f *.txt STDOUT.* STDERR.* *diagnostics.log *.[0-9][0-9][0-9][0-9].log
3001            -rm -f datetime costfinal divided.ctrl snapshot* output_adm.txt.diva_*
3002          -rm -f *_MIT_CE_000.opt0000 costfunction*0000          -rm -f *_MIT_CE_000.opt0000 costfunction*0000
3003          -rm -rf mnc_test_*          -rm -f oad_cp.[0-9][0-9][0-9].?????
3004    
3005  makefile:  makefile:
3006          $THIS_SCRIPT $G2ARGS          $THIS_SCRIPT $G2ARGS
# Line 2894  cat >>$MAKEFILE <<EOF Line 3053  cat >>$MAKEFILE <<EOF
3053  ## This nullifies any default implicit rules concerning these two file types:  ## This nullifies any default implicit rules concerning these two file types:
3054  ## %.o : %.F  ## %.o : %.F
3055    
3056  # C preprocessing and replacing the _d in constants:  # C preprocessing and replacing the _d in constants:
3057  CPPCMD = cat \$< | ${CPP} \$(DEFINES) \$(INCLUDES) | ${S64}  CPPCMD = cat \$< | ${CPP} \$(DEFINES) \$(INCLUDES) | ${S64}
3058    
3059  .F.$FS:  .F.$FS:
# Line 2938  TAF            = ${TAF} Line 3097  TAF            = ${TAF}
3097    
3098  TAF_EXTRA      = ${TAF_EXTRA}  TAF_EXTRA      = ${TAF_EXTRA}
3099  TAMC_EXTRA     = ${TAMC_EXTRA}  TAMC_EXTRA     = ${TAMC_EXTRA}
3100    LOCAL_MPI_HEADERS    = ${LOCAL_MPI_HEADERS}
3101    
3102  EOF  EOF
3103    
# Line 2955  done Line 3115  done
3115  echo "  Add the source list for AD code generation"  echo "  Add the source list for AD code generation"
3116  echo >> $MAKEFILE  echo >> $MAKEFILE
3117  printf "AD_FILES = " >> $MAKEFILE  printf "AD_FILES = " >> $MAKEFILE
3118  AD_FILES=`cat adSrcFiles.tmp`  AD_FILES=`cat $TMP.adSrcFiles`
3119  for i in $AD_FILES ; do  for i in $AD_FILES ; do
3120      echo    " \\" >> $MAKEFILE      echo    " \\" >> $MAKEFILE
3121      printf " $i" >> $MAKEFILE      printf " $i" >> $MAKEFILE
3122  done  done
3123  echo >> $MAKEFILE  echo >> $MAKEFILE
3124  rm -f adSrcFiles.tmp  rm -f $TMP.adSrcFiles
3125    
3126  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
3127    
# Line 2986  ad_input_code.$FS: \$(AD_FILES) \$(AD_FL Line 3146  ad_input_code.$FS: \$(AD_FILES) \$(AD_FL
3146          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
3147    
3148  ad_taf_output.$FS: ad_input_code.$FS  ad_taf_output.$FS: ad_input_code.$FS
3149            @-rm -f ad_input_code_ad.$FS ; echo ''
3150          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
3151          ls -l ad_input_code_ad.$FS          ls -l ad_input_code_ad.$FS
3152          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 2995  adtafonly: Line 3156  adtafonly:
3156          ls -l ad_input_code_ad.$FS          ls -l ad_input_code_ad.$FS
3157          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
3158    
3159  \$(EXE_AD): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) ad_taf_output.o \$(OBJFILES) \$(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)
3160          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.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)
3161    
3162  ad_tamc_output.$FS: ad_input_code.$FS  ad_tamc_output.$FS: ad_input_code.$FS
3163          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS
# Line 3011  adonlyfwd: Line 3172  adonlyfwd:
3172  adtrick:  adtrick:
3173          patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff          patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff
3174    
3175  adobj: ad_taf_output.o \$(OBJFILES)  adobj: ad_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o)
3176    
3177  # ... FTL ...  # ... FTL ...
3178  ftlall: ftl_exe_target  ftlall: ftl_exe_target
# Line 3034  ftl_input_code.$FS: \$(AD_FILES) Line 3195  ftl_input_code.$FS: \$(AD_FILES)
3195          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
3196    
3197  ftl_taf_output.$FS: ftl_input_code.$FS  ftl_taf_output.$FS: ftl_input_code.$FS
3198            @-rm -f ftl_input_code_tl.$FS ; echo ''
3199          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
3200          ls -l ftl_input_code_ftl.$FS          ls -l ftl_input_code_tl.$FS
3201          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
3202    
3203  ftltafonly:  ftltafonly:
3204          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
3205          ls -l ftl_input_code_ftl.$FS          ls -l ftl_input_code_tl.$FS
3206          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
3207    
3208  \$(EXE_FTL): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) ftl_taf_output.o \$(OBJFILES) \$(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)
3209          \$(LINK) -o \${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.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)
3210    
3211  ftl_tamc_output.$FS: ftl_input_code.$FS  ftl_tamc_output.$FS: ftl_input_code.$FS
3212          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS
# Line 3127  for i in `cat ${OAD_CB2M_FILES}` ; do Line 3289  for i in `cat ${OAD_CB2M_FILES}` ; do
3289    echo    " \\" >> $MAKEFILE    echo    " \\" >> $MAKEFILE
3290    printf " ${i}_mod.f$FS90" >> $MAKEFILE    printf " ${i}_mod.f$FS90" >> $MAKEFILE
3291  done  done
3292  AD_FILES=`cat adSrcFiles.tmp`  AD_FILES=`cat $TMP.adSrcFiles`
3293  for i in $AD_FILES ; do  for i in $AD_FILES ; do
3294    basename=${i%%.f}    basename=${i%%.f}
3295    toBeIgnored=`egrep ^$basename'[      ]*' ${OAD_DONT_COMPILE} ${OAD_DONT_TRANSFORM}`    toBeIgnored=`egrep ^$basename'[      ]*' ${OAD_DONT_COMPILE} ${OAD_DONT_TRANSFORM}`
# Line 3137  for i in $AD_FILES ; do Line 3299  for i in $AD_FILES ; do
3299    fi    fi
3300  done  done
3301  echo >> $MAKEFILE  echo >> $MAKEFILE
3302  rm -f adSrcFiles.tmp  rm -f $TMP.adSrcFiles
3303    
3304  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
3305    
# Line 3159  w2f__types.F90 \ Line 3321  w2f__types.F90 \
3321  OAD_active.F90 \  OAD_active.F90 \
3322  OAD_cp.F90 \  OAD_cp.F90 \
3323  OAD_rev.F90 \  OAD_rev.F90 \
3324  OAD_tape.F90  OAD_tape.F90 \
3325    revolve.F90
3326    
3327  OPENAD_SUPPORT_C_SRC_FILES = \  OPENAD_SUPPORT_C_SRC_FILES = \
3328  iaddr.c \  iaddr.c \
# Line 3185  AD_OBJ_FILES_S2=\$(AD_OBJ_FILES_S1) \$(N Line 3348  AD_OBJ_FILES_S2=\$(AD_OBJ_FILES_S1) \$(N
3348          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES_S2) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES_S2) \$(LIBS)
3349    
3350  # create sources files modules from header files containing common blocks  # create sources files modules from header files containing common blocks
3351  %_mod.FF90 : %.h ../OAD_support/cb2mGetModules.csh ../OAD_support/cb2mGetModules.awk  %_mod.FF90 : %.h \${OADTOOLS}/cb2mGetModules.csh \${OADTOOLS}/cb2mGetModules.awk
3352          ../OAD_support/cb2mGetModules.csh $< ../OAD_support/cb2mGetModules.awk          \${OADTOOLS}/cb2mGetModules.csh $< \${OADTOOLS}/cb2mGetModules.awk
3353    
3354  # 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
3355  %_mod.h : %.h ../OAD_support/cb2mGetHeaders.csh ../OAD_support/cb2mGetHeaders.awk  %_mod.h : %.h \${OADTOOLS}/cb2mGetHeaders.csh \${OADTOOLS}/cb2mGetHeaders.awk
3356          ../OAD_support/cb2mGetHeaders.csh $< ../OAD_support/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)          \${OADTOOLS}/cb2mGetHeaders.csh $< \${OADTOOLS}/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)
3357    
3358  # 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
3359  %_cb2m.FF90 : %.F ../OAD_support/cb2mUseModules.bash  %_cb2m.FF90 : %.F \${OADTOOLS}/cb2mUseModules.bash
3360          ../OAD_support/cb2mUseModules.bash $< ${MPI}          \${OADTOOLS}/cb2mUseModules.bash $< ${MPI}
3361    
3362  # makefile debug rule  # makefile debug rule
3363  small_f: \$(CB2M_F90_PP_SRC_FILES)  small_f: \$(CB2M_F90_PP_SRC_FILES)
# Line 3216  ad_input_code_sf.pre.f90 : \$(CB2M_AD_FI Line 3379  ad_input_code_sf.pre.f90 : \$(CB2M_AD_FI
3379    
3380  # 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
3381  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
3382          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
3383    
3384  # F -> WHIRL  # F -> WHIRL
3385  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 3239  ad_input_code_sf.pre.s2p.xb.x2w.w2f.f$FS Line 3402  ad_input_code_sf.pre.s2p.xb.x2w.w2f.f$FS
3402          \${OPEN64ROOT}/whirl2f/whirl2f -FLIST:ftn_file=\$@ -openad \$<          \${OPEN64ROOT}/whirl2f/whirl2f -FLIST:ftn_file=\$@ -openad \$<
3403    
3404  # insert template directives  # insert template directives
3405  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
3406          ../OAD_support/insertTemplateDir.bash \$< \$@          \${OADTOOLS}/insertTemplateDir.bash \$< \$@
3407    
3408  PPEXTRAS=\$(wildcard ../OAD_support/ad_template.*.F) ../OAD_support/ad_inline.F  PPEXTRAS=\$(notdir \$(wildcard \${OADTOOLS}/ad_template.*.F)) ad_inline.F
3409  # postprocess F'  # postprocess F'
3410  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
3411          \${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 ad_inline.f \$<
3412          # 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
3413          touch \$@          touch \$@
3414  # put this so make knows about the postprocessing output  # put this so make knows about the postprocessing output
# Line 3256  OAD_intrinsics_oad.f \$(CB2M_AD_FILES:.f Line 3419  OAD_intrinsics_oad.f \$(CB2M_AD_FILES:.f
3419          \$(LN) \${XAIFSCHEMAROOT}/schema/\$@ .          \$(LN) \${XAIFSCHEMAROOT}/schema/\$@ .
3420    
3421  # link the support files:  # link the support files:
3422  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES):  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES) \$(PPEXTRAS):
3423          \$(LN) ../OAD_support/\$@ .          \$(LN) \${OADTOOLS}/\$@ .
3424    
3425  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
3426    
3427  # ============ end OpenAD specific section ==============  # ============ end OpenAD specific section ==============
3428    
# Line 3295  for i in $NOOPTFILES ; do Line 3458  for i in $NOOPTFILES ; do
3458  done  done
3459    
3460  echo "  Add rules for links"  echo "  Add rules for links"
3461  cat srclinks.tmp >> $MAKEFILE  cat $TMP.srclinks >> $MAKEFILE
3462  rm -f srclinks.tmp  rm -f $TMP.srclinks
3463    
3464  echo "  Adding makedepend marker"  echo "  Adding makedepend marker"
3465  printf "\n\n# DO NOT DELETE\n" >> $MAKEFILE  printf "\n\n# DO NOT DELETE\n" >> $MAKEFILE

Legend:
Removed from v.1.241  
changed lines
  Added in v.1.260

  ViewVC Help
Powered by ViewVC 1.1.22