/[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.185 by jmc, Fri Mar 27 20:18:07 2009 UTC revision 1.207 by jmc, Wed May 26 00:08:18 2010 UTC
# Line 110  EOF Line 110  EOF
110              check_for_broken_Ff              check_for_broken_Ff
111          else          else
112              cat <<EOF 2>&1              cat <<EOF 2>&1
113  ERROR: Your file system cannot distinguish between *.F and *.f files  ERROR: Your file system cannot distinguish between *.F and *.f files
114    (fails the "cp" test) and this program cannot find a suitable    (fails the "cp" test) and this program cannot find a suitable
115    replacement extension.  Please try a different build environment or    replacement extension.  Please try a different build environment or
116    contact the <MITgcm-support@mitgcm.org> list for help.    contact the <MITgcm-support@mitgcm.org> list for help.
117    
118  EOF  EOF
# Line 146  EOF Line 146  EOF
146              check_for_broken_Ff              check_for_broken_Ff
147          else          else
148              cat <<EOF 2>&1              cat <<EOF 2>&1
149  ERROR: Your file system cannot distinguish between *.F and *.f files  ERROR: Your file system cannot distinguish between *.F and *.f files
150    (fails the "make/ln" test) and this program cannot find a suitable    (fails the "make/ln" test) and this program cannot find a suitable
151    replacement extension.  Please try a different build environment or    replacement extension.  Please try a different build environment or
152    contact the <MITgcm-support@mitgcm.org> list for help.    contact the <MITgcm-support@mitgcm.org> list for help.
153    
154  EOF  EOF
# Line 194  look_for_makedepend()  { Line 194  look_for_makedepend()  {
194          cat <<EOF >> $MAKEFILE          cat <<EOF >> $MAKEFILE
195  #   THIS IS A TEST MAKEFILE GENERATED BY "genmake2"  #   THIS IS A TEST MAKEFILE GENERATED BY "genmake2"
196  #  #
197  #   Some "makedepend" implementations will die if they cannot  #   Some "makedepend" implementations will die if they cannot
198  #   find a Makefile -- so this file is here to gives them an  #   find a Makefile -- so this file is here to gives them an
199  #   empty one to find and parse.  #   empty one to find and parse.
200  EOF  EOF
201          cat <<EOF >> genmake_tc.f          cat <<EOF >> genmake_tc.f
# Line 212  EOF Line 212  EOF
212              MAKEDEPEND=makedepend              MAKEDEPEND=makedepend
213          else          else
214              echo "    a system-default makedepend was not found."              echo "    a system-default makedepend was not found."
215                
216              #  Try to build the cyrus implementation              #  Try to build the cyrus implementation
217              build_cyrus_makedepend              build_cyrus_makedepend
218              RETVAL=$?              RETVAL=$?
# Line 269  build_embed_encode() Line 269  build_embed_encode()
269              return 1              return 1
270          fi          fi
271          clist="cc gcc c89 $CC"          clist="cc gcc c89 $CC"
272          for ic in $clist ; do          for ic in $clist ; do
273              comm="$ic -o encode_files encode_files.c"              comm="$ic -o encode_files encode_files.c"
274              ( cd $ROOTDIR/tools/embed_encode && $comm ) > /dev/null 2>&1              ( cd $ROOTDIR/tools/embed_encode && $comm ) > /dev/null 2>&1
275              RETVAL=$?              RETVAL=$?
# Line 304  find_possible_configs()  { Line 304  find_possible_configs()  {
304      echo $PLATFORM | grep cygwin > /dev/null 2>&1  &&  PLATFORM=cygwin_ia32      echo $PLATFORM | grep cygwin > /dev/null 2>&1  &&  PLATFORM=cygwin_ia32
305      OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`      OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`
306      echo "  The platform appears to be:  $PLATFORM"      echo "  The platform appears to be:  $PLATFORM"
307        
308      echo "test" > test      echo "test" > test
309      ln -s ./test link      ln -s ./test link
310      RETVAL=$?      RETVAL=$?
# Line 442  Error: No options file was found in:  $R Line 442  Error: No options file was found in:  $R
442  EOF  EOF
443          exit 1          exit 1
444      fi      fi
445        
446  #     # look for possible MPI libraries  #     # look for possible MPI libraries
447  #     mpi_libs=  #     mpi_libs=
448  #     mpi_fort=`which mpif77 2>/dev/null`  #     mpi_fort=`which mpif77 2>/dev/null`
# Line 461  EOF Line 461  EOF
461  #       if test "x${RETVAL}" = x0 ; then  #       if test "x${RETVAL}" = x0 ; then
462  #           a=`cat out`  #           a=`cat out`
463  #           for i in $a ; do  #           for i in $a ; do
464  #               case $i in  #               case $i in
465  #                   -*)  #                   -*)
466  #                       mpi_libs="$mpi_libs $i" ;;  #                       mpi_libs="$mpi_libs $i" ;;
467  #               esac  #               esac
# Line 480  get_pdepend_list()  { Line 480  get_pdepend_list()  {
480      #  strip the comments and then convert the dependency file into      #  strip the comments and then convert the dependency file into
481      #  two arrays: PNAME, DNAME      #  two arrays: PNAME, DNAME
482      cat $1 | sed -e 's/#.*$//g' \      cat $1 | sed -e 's/#.*$//g' \
483          | $AWK 'BEGIN{nn=0;} (NF>0){ for(i=2;i<=NF;i++){nn++; print "PNAME["nn"]="$1"\nDNAME["nn"]="$i} }' \          | $AWK 'BEGIN{nn=-1;} (NF>0){ for(i=2;i<=NF;i++){nn++; print "PNAME_"nn"="$1"\nDNAME_"nn"="$i}} END{print "nname="nn}' \
484          > ./.pd_tmp          > ./.pd_tmp
485        RETVAL=$?
486        if test ! "x${RETVAL}" = x0 ; then
487          echo "Error: unable to parse package dependencies -- please check PDEPEND=\"$1\""
488          exit 1
489        fi
490      . ./.pd_tmp      . ./.pd_tmp
491      rm -f ./.pd_tmp      rm -f ./.pd_tmp
492    
     printf "PNAME = "${}  
493  }  }
494    
495    
# Line 508  Usage: "$0" [OPTIONS] Line 512  Usage: "$0" [OPTIONS]
512        -optfile NAME | --optfile NAME | -of NAME | --of NAME        -optfile NAME | --optfile NAME | -of NAME | --of NAME
513        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME
514            Use "NAME" as the optfile.  By default, an attempt will be            Use "NAME" as the optfile.  By default, an attempt will be
515            made to find an appropriate "standard" optfile in the            made to find an appropriate "standard" optfile in the
516            tools/build_options/ directory.            tools/build_options/ directory.
517    
518      -pdepend NAME | --pdepend NAME      -pdepend NAME | --pdepend NAME
# Line 519  Usage: "$0" [OPTIONS] Line 523  Usage: "$0" [OPTIONS]
523        -pdefault=NAME | --pdefault=NAME        -pdefault=NAME | --pdefault=NAME
524            Get the default package list from "NAME".            Get the default package list from "NAME".
525    
526        -bash NAME
527              Explicitly specify the Bourne or BASH shell to use
528    
529      -make NAME | -m NAME      -make NAME | -m NAME
530        --make=NAME | -m=NAME        --make=NAME | -m=NAME
531            Use "NAME" for the MAKE program. The default is "make" but            Use "NAME" for the MAKE program. The default is "make" but
532            many platforms, "gmake" is the preferred choice.            many platforms, "gmake" is the preferred choice.
533    
534      -makefile NAME | -mf NAME      -makefile NAME | -mf NAME
# Line 535  Usage: "$0" [OPTIONS] Line 542  Usage: "$0" [OPTIONS]
542      -rootdir NAME | --rootdir NAME | -rd NAME | --rd NAME      -rootdir NAME | --rootdir NAME | -rd NAME | --rd NAME
543        -rootdir=NAME | --rootdir=NAME | -rd=NAME | --rd=NAME        -rootdir=NAME | --rootdir=NAME | -rd=NAME | --rd=NAME
544            Specify the location of the MITgcm ROOTDIR as "NAME".            Specify the location of the MITgcm ROOTDIR as "NAME".
545            By default, genamke will try to find the location by            By default, genamke will try to find the location by
546            looking in parent directories (up to the 5th parent).            looking in parent directories (up to the 5th parent).
547    
548      -mods NAME | --mods NAME | -mo NAME | --mo NAME      -mods NAME | --mods NAME | -mo NAME | --mo NAME
549        -mods=NAME | --mods=NAME | -mo=NAME | --mo=NAME        -mods=NAME | --mods=NAME | -mo=NAME | --mo=NAME
550            Here, "NAME" specifies a list of directories that are            Here, "NAME" specifies a list of directories that are
551            used for additional source code.  Files found in the            used for additional source code.  Files found in the
552            "mods list" are given preference over files of the same            "mods list" are given preference over files of the same
553            name found elsewhere.            name found elsewhere.
554    
555      -disable NAME | --disable NAME      -disable NAME | --disable NAME
556        -disable=NAME | --disable=NAME        -disable=NAME | --disable=NAME
557            Here "NAME" specifies a list of packages that we don't            Here "NAME" specifies a list of packages that we don't
558            want to use.  If this violates package dependencies,            want to use.  If this violates package dependencies,
559            genamke will exit with an error message.            genamke will exit with an error message.
560    
561      -enable NAME | --enable NAME      -enable NAME | --enable NAME
562        -enable=NAME | --enable=NAME        -enable=NAME | --enable=NAME
563            Here "NAME" specifies a list of packages that we wish            Here "NAME" specifies a list of packages that we wish
564            to specifically enable.  If this violates package            to specifically enable.  If this violates package
565            dependencies, genamke will exit with an error message.            dependencies, genamke will exit with an error message.
566    
567      -standarddirs NAME | --standarddirs NAME      -standarddirs NAME | --standarddirs NAME
568        -standarddirs=NAME | --standarddirs=NAME        -standarddirs=NAME | --standarddirs=NAME
569            Here, "NAME" specifies a list of directories to be            Here, "NAME" specifies a list of directories to be
570            used as the "standard" code.            used as the "standard" code.
571    
572      -fortran NAME | --fortran NAME | -fc NAME | --fc NAME      -fortran NAME | --fortran NAME | -fc NAME | --fc NAME
573        -fc=NAME | --fc=NAME        -fc=NAME | --fc=NAME
574            Use "NAME" as the fortran compiler.  By default, genmake            Use "NAME" as the fortran compiler.  By default, genmake
575            will search for a working compiler by trying a list of            will search for a working compiler by trying a list of
576            "usual suspects" such as g77, f77, etc.            "usual suspects" such as g77, f77, etc.
577    
578      -cc NAME | --cc NAME | -cc=NAME | --cc=NAME      -cc NAME | --cc NAME | -cc=NAME | --cc=NAME
579            Use "NAME" as the C compiler.  By default, genmake            Use "NAME" as the C compiler.  By default, genmake
580            will search for a working compiler by trying a list of            will search for a working compiler by trying a list of
581            "usual suspects" such as gcc, c89, cc, etc.            "usual suspects" such as gcc, c89, cc, etc.
582    
583      -[no]ieee | --[no]ieee      -[no]ieee | --[no]ieee
584            Do or don't use IEEE numerics.  Note that this option            Do or don't use IEEE numerics.  Note that this option
585            *only* works if it is supported by the OPTFILE that            *only* works if it is supported by the OPTFILE that
586            is being used.            is being used.
587    
588        -use_real4 | -use_r4 | -ur4 | --use_real4 | --use_r4 | --ur4
589              Use "real*4" type for _RS variable (#undef REAL4_IS_SLOW)
590              *only* works if CPP_EEOPTIONS.h allows this.
591    
592      -ignoretime | -ignore_time | --ignoretime | --ignore_time      -ignoretime | -ignore_time | --ignoretime | --ignore_time
593            Ignore all the "wall clock" routines entirely.  This will            Ignore all the "wall clock" routines entirely.  This will
594            not in any way hurt the model results -- it simply means            not in any way hurt the model results -- it simply means
595            that the code that checks how long the model spends in            that the code that checks how long the model spends in
596            various routines will give junk values.            various routines will give junk values.
597    
598      -ts | --ts      -ts | --ts
# Line 611  Usage: "$0" [OPTIONS] Line 622  Usage: "$0" [OPTIONS]
622            set to PATH. i.e. Include files from \$PATH/include, link to libraries            set to PATH. i.e. Include files from \$PATH/include, link to libraries
623            from \$PATH/lib and use binaries from \$PATH/bin.            from \$PATH/lib and use binaries from \$PATH/bin.
624    
625        -omp | --omp
626              Activate OpenMP code + use Compiler option OMPFLAG
627        -omp=OMPFLAG | --omp=OMPFLAG
628              Activate OpenMP code + use Compiler option OMPFLAG
629    
630      -es | --es | -embed-source | --embed-source      -es | --es | -embed-source | --embed-source
631            Embed a tarball containing the full source code            Embed a tarball containing the full source code
632            (including the Makefile, etc.) used to build the            (including the Makefile, etc.) used to build the
633            executable [off by default]            executable [off by default]
634    
635      -bash NAME    While it is most often a single word, the "NAME" variables specified
           Explicitly specify the Bourne or BASH shell to use  
   
   While it is most often a single word, the "NAME" variables specified  
636    above can in many cases be a space-delimited string such as:    above can in many cases be a space-delimited string such as:
637    
638      --enable pkg1   --enable 'pkg1 pkg2'   --enable 'pkg1 pkg2 pkg3'      --enable pkg1   --enable 'pkg1 pkg2'   --enable 'pkg1 pkg2 pkg3'
# Line 630  Usage: "$0" [OPTIONS] Line 643  Usage: "$0" [OPTIONS]
643    
644    For more detailed genmake documentation, please see:    For more detailed genmake documentation, please see:
645    
646      http://mitgcm.org/devel_HOWTO/      http://mitgcm.org/public/devel_HOWTO/
647    
648  EOF  EOF
649    
# Line 646  get_fortran_c_namemangling()  { Line 659  get_fortran_c_namemangling()  {
659      fi      fi
660    
661      default_nm="#define FC_NAMEMANGLE(X) X ## _"      default_nm="#define FC_NAMEMANGLE(X) X ## _"
662        
663      cat > genmake_test.c <<EOF      cat > genmake_test.c <<EOF
664  void tcall( char * string ) { tsub( string ); }  void tcall( char * string ) { tsub( string ); }
665  EOF  EOF
# Line 1058  NOOPTFILES= Line 1071  NOOPTFILES=
1071  NOOPTFLAGS=  NOOPTFLAGS=
1072  MPI=  MPI=
1073  MPIPATH=  MPIPATH=
1074    OMP=
1075    OMPFLAG=
1076    USE_R4=
1077  TS=  TS=
1078  PAPIS=  PAPIS=
1079  PCLS=  PCLS=
# Line 1125  TAMC_EXTRA= Line 1141  TAMC_EXTRA=
1141    
1142  #  The following state can be set directly by command-line switches  #  The following state can be set directly by command-line switches
1143  gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE"  gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE"
1144  gm_s2="FC CPP IEEE TS PAPIS PCLS PAPI PCL HPMT GSL DEVEL MPI JAM DUMPSTATE STANDARDDIRS"  gm_s2="FC IEEE USE_R4 TS PAPIS PCLS PAPI PCL HPMT GSL DEVEL MPI OMP DUMPSTATE STANDARDDIRS"
1145    
1146  #  The following state is not directly set by command-line switches  #  The following state is not directly set by command-line switches
1147  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPEND PDEPEND PDEFAULT INCLUDES FFLAGS FOPTIM FEXTRAFLAGS"  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPEND PDEPEND PDEFAULT INCLUDES FFLAGS FOPTIM FEXTRAFLAGS"
# Line 1166  else Line 1182  else
1182  fi  fi
1183    
1184  #echo "$0::$1:$2:$3:$4:$5:$6:$7:"  #echo "$0::$1:$2:$3:$4:$5:$6:$7:"
 #OPTIONS=  
 #n=0  
 #for i ; do  
 #   echo "$i  $n"  
 #   setvar="OPTIONS[$n]='$i'"  
 #   #  echo "  $setvar"  
 #   eval "$setvar"  
 #   n=$(( $n + 1 ))  
 #done  
1185  #parse_options  #parse_options
1186  ac_prev=  ac_prev=
1187  for ac_option in "$@" ; do  for ac_option in "$@" ; do
# Line 1187  for ac_option in "$@" ; do Line 1194  for ac_option in "$@" ; do
1194          ac_prev=          ac_prev=
1195          continue          continue
1196      fi      fi
1197        
1198      ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`      ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
1199        
1200      case $ac_option in      case $ac_option in
1201                    
1202          -help | --help | -h | --h)          -help | --help | -h | --h)
# Line 1299  for ac_option in "$@" ; do Line 1306  for ac_option in "$@" ; do
1306          -noieee | --noieee)          -noieee | --noieee)
1307              IEEE= ;;              IEEE= ;;
1308    
1309            -use_real4 | -use_r4 | -ur4 | --use_real4 | --use_r4 | --ur4 )
1310                USE_R4=true ;;
1311    
1312          -ts | --ts)          -ts | --ts)
1313              TS=true ;;              TS=true ;;
1314          -papis | --papis)          -papis | --papis)
# Line 1326  for ac_option in "$@" ; do Line 1336  for ac_option in "$@" ; do
1336              MPIPATH=$ac_optarg              MPIPATH=$ac_optarg
1337              MPI=true ;;              MPI=true ;;
1338                    
1339  #       -jam | --jam)          -omp | --omp)
1340  #           JAM=1 ;;              OMP=true ;;
1341  #       -nojam | --nojam)          -omp=* | --omp=*)
1342  #           JAM=0 ;;              OMPFLAG=$ac_optarg
1343                OMP=true ;;
1344                    
1345          -ds | --ds)          -ds | --ds)
1346              DUMPSTATE=t ;;              DUMPSTATE=t ;;
# Line 1361  for ac_option in "$@" ; do Line 1372  for ac_option in "$@" ; do
1372              ;;              ;;
1373                    
1374      esac      esac
1375        
1376  done  done
1377    
1378    
# Line 1373  if test -f ./.genmakerc ; then Line 1384  if test -f ./.genmakerc ; then
1384      echo "    http://mitgcm.org/devel_HOWTO/"      echo "    http://mitgcm.org/devel_HOWTO/"
1385      echo "  and send an email to MITgcm-support@mitgcm.org if you need help."      echo "  and send an email to MITgcm-support@mitgcm.org if you need help."
1386      echo "WARNING: ignore \"./.genmakerc\" and continue."      echo "WARNING: ignore \"./.genmakerc\" and continue."
1387      echo      echo
1388  fi  fi
1389    
1390  #  Find the MITgcm ${ROOTDIR}  #  Find the MITgcm ${ROOTDIR}
# Line 1406  fi Line 1417  fi
1417  #  Find the MITgcm ${THISVER}  #  Find the MITgcm ${THISVER}
1418  version_file="${ROOTDIR}/doc/tag-index"  version_file="${ROOTDIR}/doc/tag-index"
1419  if test -f $version_file ; then  if test -f $version_file ; then
1420      THISVER=`grep '^checkpoint' $version_file | head -1`      THISVER=`$AWK '/^checkpoint/{print $1; exit}' $version_file`
1421  #-  remove ./BUILD_INFO.h file if older than version_file  #-  remove ./BUILD_INFO.h file if older than version_file
1422      if test -f ./BUILD_INFO.h -a ./BUILD_INFO.h -ot $version_file ; then      if test -f ./BUILD_INFO.h -a ./BUILD_INFO.h -ot $version_file ; then
1423          echo "  remove ./BUILD_INFO.h (older than ${version_file})"          echo "  remove ./BUILD_INFO.h (older than ${version_file})"
# Line 1567  if test ! "x$MPI" = x ; then Line 1578  if test ! "x$MPI" = x ; then
1578        echo "  Turning on MPI cpp macros"        echo "  Turning on MPI cpp macros"
1579        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"
1580  fi  fi
1581    if test ! "x$OMP" = x ; then
1582          echo "  Add OMPFLAG and turn on OpenMP cpp macros"
1583          FFLAGS="$FFLAGS $OMPFLAG"
1584          F90FLAGS="$F90FLAGS $OMPFLAG"
1585          DEFINES="$DEFINES -DUSE_OMP_THREADING"
1586    fi
1587    
1588    if test ! "x$USE_R4" = x ; then
1589          echo "  Turning on LET_RS_BE_REAL4 cpp flag"
1590          DEFINES="$DEFINES -DLET_RS_BE_REAL4"
1591    fi
1592    
1593  if test ! "x$TS" = x ; then  if test ! "x$TS" = x ; then
1594        echo "  Turning on timing per timestep"        echo "  Turning on timing per timestep"
# Line 1776  fi Line 1798  fi
1798    
1799  printf "\n===  Setting defaults  ===\n"  printf "\n===  Setting defaults  ===\n"
1800  printf "  Adding MODS directories: "  printf "  Adding MODS directories: "
 MPI_LNKF=  
1801  for d in $MODS ; do  for d in $MODS ; do
1802      if test ! -d $d ; then      if test ! -d $d ; then
1803          echo          echo
# Line 1786  for d in $MODS ; do Line 1807  for d in $MODS ; do
1807          printf "$d "          printf "$d "
1808          SOURCEDIRS="$SOURCEDIRS $d"          SOURCEDIRS="$SOURCEDIRS $d"
1809          INCLUDEDIRS="$INCLUDEDIRS $d"          INCLUDEDIRS="$INCLUDEDIRS $d"
         #-------------------------------------------------------  
         # Put special links so that MPI specific files are used  
         MPI_FILES=`(cd $d ; find . -name "*_mpi" -print)`  
         for i in $MPI_FILES ; do  
           ii=`echo $i | sed 's:^\./::'`  
           name=`echo $ii | sed 's:_mpi::' `  
           if test "x$MPI" = x ; then  
           # NO: We undo an _mpi symbolically linked file  
             if test -L $name ; then  
               cmp $name "$d/$ii" > /dev/null 2>&1  
               RETVAL=$?  
               if test "x$RETVAL" = x0 ; then  
                 printf "Un-linking $name ; "  
                 rm -f $name  
               fi  
             fi  
           else  
           # YES: We symbolically link this file (with conditions if already there)  
             if test -L $name ; then  
               cmp $d/$ii $name > /dev/null 2>&1  
               RETVAL=$?  
               xx=`echo $MPI_LNKF | grep -c $name`  
               if test "x$RETVAL" != x0 -a $xx == 0 ; then  
               # remove sym-link if different and has not just been linked  
                 printf "Un-link + "  
                 rm -f $name  
               fi  
               if test "x$RETVAL" = x0 ; then  
               # if identical, keep sym-link and keep record of it  
                 MPI_LNKF="$MPI_LNKF $name"  
               fi  
             fi  
             if ! test -f $name ; then  
               # make sym-link and keep record of it  
                 printf "Linking $ii to $name ; "  
                 ln -s $d/$ii $name  
                 MPI_LNKF="$MPI_LNKF $name"  
             fi  
           fi  
         done  
         #-------------------------------------------------------  
1810      fi      fi
1811  done  done
1812  echo  echo
# Line 1873  ERROR: neither of the two default script Line 1853  ERROR: neither of the two default script
1853      ${TOOLSDIR}/set64bitConst.sh      ${TOOLSDIR}/set64bitConst.sh
1854      ${TOOLSDIR}/set64bitConst.csh      ${TOOLSDIR}/set64bitConst.csh
1855    
1856    are working so please check paths or specify (with \$S64) a    are working so please check paths or specify (with \$S64) a
1857    working version of this script.    working version of this script.
1858    
1859  EOF  EOF
# Line 1885  THIS_SCRIPT=`echo ${0} | sed 's:'$TOOLSD Line 1865  THIS_SCRIPT=`echo ${0} | sed 's:'$TOOLSD
1865    
1866  EXECUTABLE=${EXECUTABLE:-mitgcmuv}  EXECUTABLE=${EXECUTABLE:-mitgcmuv}
1867    
1868    #  Set Standard Code Directories:
1869    if test "x$STANDARDDIRS" = xUSE_THE_DEFAULT ; then
1870        STANDARDDIRS="eesupp model"
1871    fi
1872    #  if model in Standard-Code-Dir, add eesupp (needed to compile model)
1873    echo " $STANDARDDIRS " | grep ' model ' > /dev/null 2>&1
1874    ckM=$?
1875    echo " $STANDARDDIRS " | grep ' eesupp ' > /dev/null 2>&1
1876    ckE=$?
1877    if test $ckM = 0 -a $ckE = 1 ; then
1878        STANDARDDIRS="$STANDARDDIRS eesupp"
1879    fi
1880    
1881  #  We have a special set of source files in eesupp/src which are  #  We have a special set of source files in eesupp/src which are
1882  #  generated from some template source files. We'll make them first so  #  generated from some template source files. We'll make them first so
1883  #  they appear as regular source code  #  they appear as regular source code
1884  if test -r $ROOTDIR"/eesupp/src/Makefile" ; then  if test -r $ROOTDIR"/eesupp/src/Makefile" ; then
1885      echo "  Making source files in eesupp from templates"      echo "  Making source files in eesupp from templates"
1886      ( cd $ROOTDIR"/eesupp/src/" && $MAKE ) > make_eesupp.errors 2>&1      ( cd $ROOTDIR"/eesupp/src/" && $MAKE clean_old && $MAKE \
1887        ) > make_eesupp.errors 2>&1
1888      RETVAL=$?      RETVAL=$?
1889      if test "x${RETVAL}" = x0 ; then      if test "x${RETVAL}" = x0 ; then
1890          rm -f make_eesupp.errors          rm -f make_eesupp.errors
# Line 1905  fi Line 1899  fi
1899  for pdir in exch2 regrid ; do  for pdir in exch2 regrid ; do
1900      if test -r $ROOTDIR"/pkg/${pdir}/Makefile" ; then      if test -r $ROOTDIR"/pkg/${pdir}/Makefile" ; then
1901          echo "  Making source files in pkg/${pdir} from templates"          echo "  Making source files in pkg/${pdir} from templates"
1902          ( cd $ROOTDIR"/pkg/"${pdir} && $MAKE ) > make_${pdir}.errors 2>&1          ( cd $ROOTDIR"/pkg/"${pdir} && $MAKE clean_old && $MAKE \
1903            ) > make_${pdir}.errors 2>&1
1904          RETVAL=$?          RETVAL=$?
1905          if test "x${RETVAL}" = x0 ; then          if test "x${RETVAL}" = x0 ; then
1906              rm -f make_${pdir}.errors              rm -f make_${pdir}.errors
# Line 1935  fi Line 1930  fi
1930  echo "  getting package dependency info from  $PDEPEND"  echo "  getting package dependency info from  $PDEPEND"
1931  #  Strip the comments and then convert the dependency file into  #  Strip the comments and then convert the dependency file into
1932  #  two arrays: PNAME, DNAME  #  two arrays: PNAME, DNAME
1933  cat $PDEPEND | sed -e 's/#.*$//g' \  get_pdepend_list $PDEPEND
     | $AWK 'BEGIN{nn=-1;} (NF>0){ for(i=2;i<=NF;i++){nn++; print "PNAME_"nn"="$1"\nDNAME_"nn"="$i}} END{print "nname="nn}' \  
     > ./.pd_tmp  
 RETVAL=$?  
 if test ! "x${RETVAL}" = x0 ; then  
     echo "Error: unable to parse package dependencies -- please check PDEPEND=\"$PDEPEND\""  
     exit 1  
 fi  
 . ./.pd_tmp  
 rm -f ./.pd_tmp  
1934    
1935  #  Search for default packages.  Note that a "$ROOTDIR/pkg/pkg_groups"  #  Search for default packages.  Note that a "$ROOTDIR/pkg/pkg_groups"
1936  #  file should eventually be added so that, for convenience, one can  #  file has been added so that, for convenience, one can specify
1937  #  specify groups of packages using names like "ocean" and "atmosphere".  #  groups of packages using names like "ocean" and "atmosphere".
1938  echo "  checking default package list:  "  echo "  checking default package list:  "
1939  if test "x${PDEFAULT}" = x ; then  if test "x${PDEFAULT}" = x ; then
1940      for i in "." $MODS ; do      for i in "." $MODS ; do
# Line 1979  else Line 1965  else
1965          for i in $def ; do          for i in $def ; do
1966              PACKAGES="$PACKAGES $i"              PACKAGES="$PACKAGES $i"
1967          done          done
1968          echo "    before group expansion packages are: $PACKAGES"          echo "    before group expansion packages are:$PACKAGES"
1969          RET=1          RET=1
1970          while test $RET = 1 ; do expand_pkg_groups; RET=$?; done          while test $RET = 1 ; do expand_pkg_groups; RET=$?; done
1971          echo "    after group expansion packages are:  $PACKAGES"          echo "    after group expansion packages are: $PACKAGES"
1972      fi      fi
1973  fi  fi
1974    
1975  echo "  applying DISABLE settings"  echo "  applying DISABLE settings"
1976    echo "" > ./.tmp_pack
1977  for i in $PACKAGES ; do  for i in $PACKAGES ; do
1978      echo $i >> ./.tmp_pack      echo $i >> ./.tmp_pack
1979  done  done
# Line 2024  for i in `grep -v "-" ./.tmp_pack | sort Line 2011  for i in `grep -v "-" ./.tmp_pack | sort
2011      PACKAGES="$PACKAGES $i"      PACKAGES="$PACKAGES $i"
2012  done  done
2013  rm -f ./.tmp_pack  rm -f ./.tmp_pack
2014  echo "    packages are:  $PACKAGES"  echo "    packages are: $PACKAGES"
2015    
2016  #  Check for package MNC: if NetCDF is available, then build the MNC  #  Check for package MNC: if NetCDF is available, then build the MNC
2017  #  template files ; otherwise, delete mnc from the list of packages.  #  template files ; otherwise, delete mnc from the list of packages.
2018  echo $PACKAGES | grep ' mnc ' > /dev/null 2>&1  echo " $PACKAGES " | grep ' mnc ' > /dev/null 2>&1
2019  RETVAL=$?  mnc_in=$?
2020  if test "x$RETVAL" = x0 ; then  if test "x$HAVE_NETCDF" != xt ; then
2021      if test "x$HAVE_NETCDF" != xt ; then      if test "x$mnc_in" = x0 ; then
2022          cat <<EOF          cat <<EOF
2023    
2024  *********************************************************************  *********************************************************************
# Line 2039  WARNING: the "mnc" package was enabled b Line 2026  WARNING: the "mnc" package was enabled b
2026    NetCDF applications.  Please check that:    NetCDF applications.  Please check that:
2027    
2028    1) NetCDF is correctly installed for this compiler and    1) NetCDF is correctly installed for this compiler and
2029    2) the LIBS variable (within the "optfile") specifies the correct    2) the LIBS variable (within the "optfile") specifies the correct
2030         NetCDF library to link against.         NetCDF library to link against.
2031    
2032    Due to this failure, the "mnc" package is now DISABLED.    Due to this failure, the "mnc" package is now DISABLED.
# Line 2049  EOF Line 2036  EOF
2036          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`
2037          DISABLE="$DISABLE mnc"          DISABLE="$DISABLE mnc"
2038      else      else
2039          ( cd $ROOTDIR"/pkg/mnc" && $MAKE testclean && $MAKE templates ) > make_mnc.errors 2>&1      #  this prevent to add mnc (due to pdepend rules) if not available
2040          RETVAL=$?          DISABLE="$DISABLE mnc"
2041          if test "x${RETVAL}" = x0 ; then      fi
2042              rm -f make_mnc.errors  else
2043        # we have NetCDF, we try to build MNC template files
2044        ( cd $ROOTDIR"/pkg/mnc" && $MAKE testclean && $MAKE templates ) > make_mnc.errors 2>&1
2045        RETVAL=$?
2046        if test "x${RETVAL}" = x0 ; then
2047            rm -f make_mnc.errors
2048        else
2049            echo "Error: problem encountered while building source files in pkg/mnc:"
2050            cat make_mnc.errors 1>&2
2051            if test "x$mnc_in" = x0 ; then
2052                exit 1
2053          else          else
2054              echo "Error: problem encountered while building source files in pkg/mnc:"              DISABLE="$DISABLE mnc"
             cat make_mnc.errors 1>&2  
             exit 1  
2055          fi          fi
2056      fi      fi
2057  fi  fi
2058    
2059  #  Check for package PROFILES: if NetCDF is not available,  #  Check for package PROFILES: if NetCDF is not available,
2060  #  then delete profiles from the list of available packages.  #  then delete profiles from the list of available packages.
2061  echo $PACKAGES | grep ' profiles ' > /dev/null 2>&1  if test "x$HAVE_NETCDF" != xt ; then
2062  RETVAL=$?      echo " $PACKAGES " | grep ' profiles ' > /dev/null 2>&1
2063  if test "x$RETVAL" = x0 ; then      RETVAL=$?
2064      if test "x$HAVE_NETCDF" != xt ; then      if test "x$RETVAL" = x0 ; then
2065          cat <<EOF          cat <<EOF
2066    
2067  *********************************************************************  *********************************************************************
# Line 2074  WARNING: the "profiles" package was enab Line 2069  WARNING: the "profiles" package was enab
2069    compile NetCDF applications.  Please check that:    compile NetCDF applications.  Please check that:
2070    
2071    1) NetCDF is correctly installed for this compiler and    1) NetCDF is correctly installed for this compiler and
2072    2) the LIBS variable (within the "optfile") specifies the correct    2) the LIBS variable (within the "optfile") specifies the correct
2073         NetCDF library to link against.         NetCDF library to link against.
2074    
2075    Due to this failure, the "profiles" package is now DISABLED.    Due to this failure, the "profiles" package is now DISABLED.
# Line 2083  WARNING: the "profiles" package was enab Line 2078  WARNING: the "profiles" package was enab
2078  EOF  EOF
2079          PACKAGES=`echo $PACKAGES | sed -e 's/profiles//g'`          PACKAGES=`echo $PACKAGES | sed -e 's/profiles//g'`
2080          DISABLE="$DISABLE profiles"          DISABLE="$DISABLE profiles"
2081        else
2082        #  this prevent to add profiles (due to pdepend rules) if not available
2083            DISABLE="$DISABLE profiles"
2084      fi      fi
2085  fi  fi
2086    
# Line 2104  while test "x$ck" != xtt ; do Line 2102  while test "x$ck" != xtt ; do
2102                  pin="t"                  pin="t"
2103              fi              fi
2104          done          done
2105            #  or in the current $STANDARDDIRS list?
2106            for p in $STANDARDDIRS ; do
2107                if test "x$p" = "x$pname" ; then pin="t" ; fi
2108            done
2109    
2110          #  Is the DNAME entry a (+) or (-) rule ?          #  Is the DNAME entry a (+) or (-) rule ?
2111          tmp="dname=\"\$DNAME_$i\""          tmp="dname=\"\$DNAME_$i\""
# Line 2147  while test "x$ck" != xtt ; do Line 2149  while test "x$ck" != xtt ; do
2149          #  Do we need to get rid of $dname according to the dependency rules?          #  Do we need to get rid of $dname according to the dependency rules?
2150          if test "x$pin" = xt -a "x$plus" = "x-" -a "x$din" = xt; then          if test "x$pin" = xt -a "x$plus" = "x-" -a "x$din" = xt; then
2151              echo "Error: can't satisfy package dependencies:"              echo "Error: can't satisfy package dependencies:"
2152              echo "  \"$pname\" was requested but is disallowed by"              echo "  \"$pname\" was requested but is disallowed by"
2153              echo "  the dependency rules for \"$dname\""              echo "  the dependency rules for \"$dname\""
2154              exit 1              exit 1
2155          fi          fi
# Line 2156  while test "x$ck" != xtt ; do Line 2158  while test "x$ck" != xtt ; do
2158      done      done
2159      ck=$ck"t"      ck=$ck"t"
2160  done  done
2161  echo "    packages are:  $PACKAGES"  echo "    packages are: $PACKAGES"
2162  for i in $PACKAGES ; do  for i in $PACKAGES ; do
2163      adr="$ROOTDIR/pkg/$i"      adr="$ROOTDIR/pkg/$i"
2164      if test -d $adr ; then      if test -d $adr ; then
# Line 2173  done Line 2175  done
2175    
2176  # Create a list of #define and #undef to enable/disable packages  # Create a list of #define and #undef to enable/disable packages
2177  PACKAGES_DOT_H=PACKAGES_CONFIG.h  PACKAGES_DOT_H=PACKAGES_CONFIG.h
2178  #  The following UGLY HACK sets multiple "#undef"s and it needs to go  #  The following UGLY HACK sets multiple "#undef"s and it needs to go
2179  #  away.  On 2003-08-12, CNH, JMC, and EH3 agreed that the CPP_OPTIONS.h  #  away.  On 2003-08-12, CNH, JMC, and EH3 agreed that the CPP_OPTIONS.h
2180  #  file would eventually be split up so that all package-related #define  #  file would eventually be split up so that all package-related #define
2181  #  statements could be separated and handled only by genmake.  #  statements could be separated and handled only by genmake.
2182  names=`ls -1 "$ROOTDIR/pkg"`  names=`ls -1 "$ROOTDIR/pkg"`
# Line 2202  for i in $PACKAGES ; do Line 2204  for i in $PACKAGES ; do
2204  #eh3 DEFINES="$DEFINES -D$def"  #eh3 DEFINES="$DEFINES -D$def"
2205    
2206  #EH3  WARNING :  This is an UGLY HACK that needs to be removed!!!  #EH3  WARNING :  This is an UGLY HACK that needs to be removed!!!
2207      case $i in      case $i in
2208          aim_v23)          aim_v23)
2209              ENABLED_PACKAGES="$ENABLED_PACKAGES -DALLOW_AIM"              ENABLED_PACKAGES="$ENABLED_PACKAGES -DALLOW_AIM"
2210              echo "Warning: ALLOW_AIM is set to enable aim_v23."              echo "Warning: ALLOW_AIM is set to enable aim_v23."
# Line 2212  for i in $PACKAGES ; do Line 2214  for i in $PACKAGES ; do
2214    
2215  done  done
2216    
2217  echo "  Adding STANDARDDIRS"  echo "  Adding STANDARDDIRS='$STANDARDDIRS'"
2218  BUILDDIR=${BUILDDIR:-.}  BUILDDIR=${BUILDDIR:-.}
 if test "x$STANDARDDIRS" = xUSE_THE_DEFAULT ; then  
     STANDARDDIRS="eesupp model"  
 fi  
2219  if test "x$STANDARDDIRS" != x ; then  if test "x$STANDARDDIRS" != x ; then
2220      for d in $STANDARDDIRS ; do      for d in $STANDARDDIRS ; do
2221          adr="$ROOTDIR/$d/src"          adr="$ROOTDIR/$d/src"
# Line 2275  if test -f ./adSrcFiles.tmp ; then Line 2274  if test -f ./adSrcFiles.tmp ; then
2274      rm -f ./adSrcFiles.tmp      rm -f ./adSrcFiles.tmp
2275  fi  fi
2276  echo "  Creating the list of files for the adjoint compiler."  echo "  Creating the list of files for the adjoint compiler."
2277    touch adSrcFiles.tmp
2278  for i in $SOURCEDIRS ; do  for i in $SOURCEDIRS ; do
2279      list_files=`( cd $i && ls -1 *.list 2>/dev/null )`      list_files=`( cd $i && ls -1 *.list 2>/dev/null )`
2280      for j in $list_files ; do      for j in $list_files ; do
# Line 2307  if test ! "x$DIVA" = x ; then Line 2307  if test ! "x$DIVA" = x ; then
2307          fi          fi
2308          MPIINCLUDEDIR='$MPIHOME/include'          MPIINCLUDEDIR='$MPIHOME/include'
2309      fi      fi
2310        
2311      if test -r $MPIINCLUDEDIR/mpif.h ; then      if test -r $MPIINCLUDEDIR/mpif.h ; then
2312          for i in $MPI_HEADER_FILES; do          for i in $MPI_HEADER_FILES; do
2313              cp -p $MPIINCLUDEDIR/$i ./mpi_headers              cp -p $MPIINCLUDEDIR/$i ./mpi_headers
# Line 2342  if test ! -r ".links.tmp/foo" ; then Line 2342  if test ! -r ".links.tmp/foo" ; then
2342  fi  fi
2343  rm -f .links.tmp/foo  rm -f .links.tmp/foo
2344    
2345  if test "x$OPENAD" != x ; then  if test "x$OPENAD" != x ; then
2346      OAD_DONT_COMPILE="/dev/null"      OAD_DONT_COMPILE="/dev/null"
2347      OAD_DONT_TRANSFORM="/dev/null"      OAD_DONT_TRANSFORM="/dev/null"
2348      OAD_KEEP_ORIGINAL="/dev/null"      OAD_KEEP_ORIGINAL="/dev/null"
# Line 2395  for d in $alldirs ; do Line 2395  for d in $alldirs ; do
2395      deplist=      deplist=
2396      sfiles=`( cd $d; echo *.[h,c,F] *.flow )`      sfiles=`( cd $d; echo *.[h,c,F] *.flow )`
2397      sfiles=`( echo $sfiles; cd $d; echo *.F90 )`      sfiles=`( echo $sfiles; cd $d; echo *.F90 )`
2398      if test "x$OPENAD" != x ; then      if test "x$OPENAD" != x ; then
2399          sfiles=`( echo $sfiles | grep -v _cb2m\. )`          sfiles=`( echo $sfiles | grep -v _cb2m\. )`
2400      fi      fi
2401      for sf in $sfiles ; do      for sf in $sfiles ; do
# Line 2435  for d in $alldirs ; do Line 2435  for d in $alldirs ; do
2435                        F)                        F)
2436                          echo    " \\"  >> F77srclist.tmp                          echo    " \\"  >> F77srclist.tmp
2437                          printf " $sf" >> F77srclist.tmp                          printf " $sf" >> F77srclist.tmp
2438                          if test "x$OPENAD" != x ; then                          if test "x$OPENAD" != x ; then
2439                              basename=${sf%%.F}                              basename=${sf%%.F}
2440                              isAD=`egrep ^$basename.f'[  ]*' adSrcFiles.tmp`                              isAD=`egrep ^$basename.f'[  ]*' adSrcFiles.tmp`
2441                              if test -z "$isAD" ; then                              if test -z "$isAD" ; then
2442                                  toBeIgnored=`egrep ^$basename'[      ]*' ${OAD_DONT_COMPILE}`                                  toBeIgnored=`egrep ^$basename'[      ]*' ${OAD_DONT_COMPILE}`
2443                                  if test -z "$toBeIgnored" ; then                                  if test -z "$toBeIgnored" ; then
2444                                      echo    " \\"  >> nonADF77srclist.tmp                                      echo    " \\"  >> nonADF77srclist.tmp
2445                                      printf " $sf" >> nonADF77srclist.tmp                                      printf " $sf" >> nonADF77srclist.tmp
2446                                  else                                  else
2447                                      echo "    not to be compiled   :  $sf"                                      echo "    not to be compiled   :  $sf"
2448                                  fi                                  fi
2449                              else # file is initially listed as an AD file we want to exclude it                              else # file is initially listed as an AD file we want to exclude it
2450                                   # or we want to retain the untransformed version                                   # or we want to retain the untransformed version
2451                                  notToBeTransformed=`egrep ^$basename'[      ]*' ${OAD_DONT_TRANSFORM}`                                  notToBeTransformed=`egrep ^$basename'[      ]*' ${OAD_DONT_TRANSFORM}`
2452                                  untransformedVersionToBeKept=`egrep ^$basename'[      ]*' ${OAD_KEEP_ORIGINAL}`                                  untransformedVersionToBeKept=`egrep ^$basename'[      ]*' ${OAD_KEEP_ORIGINAL}`
2453                                  if test -n "$notToBeTransformed"; then                                  if test -n "$notToBeTransformed"; then
2454                                      echo "    not to be transformed:  $sf"                                      echo "    not to be transformed:  $sf"
2455                                  fi                                  fi
2456                                  if test -n "$untransformedVersionToBeKept" ; then                                  if test -n "$untransformedVersionToBeKept" ; then
2457                                      echo "    original to be kept  :  $sf"                                      echo "    original to be kept  :  $sf"
2458                                  fi                                      fi
2459                                  if test -n "$notToBeTransformed" -o -n "$untransformedVersionToBeKept" ; then                                  if test -n "$notToBeTransformed" -o -n "$untransformedVersionToBeKept" ; then
2460                                      echo    " \\"  >> nonADF77srclist.tmp                                      echo    " \\"  >> nonADF77srclist.tmp
2461                                      printf " $sf" >> nonADF77srclist.tmp                                      printf " $sf" >> nonADF77srclist.tmp
# Line 2504  echo "" >> F90srclist.tmp Line 2504  echo "" >> F90srclist.tmp
2504  echo "" >> hsrclist.tmp  echo "" >> hsrclist.tmp
2505  echo "" >> ad_flow_files.tmp  echo "" >> ad_flow_files.tmp
2506    
2507    CMDLINE=$0
2508    for xx in "$@" ; do nw=`echo $xx | wc -w`
2509        if test $nw = '1' ; then CMDLINE="$CMDLINE $xx"
2510                            else CMDLINE="$CMDLINE '$xx'" ; fi
2511    done
2512    
2513  if test -f $MAKEFILE ; then  if test -f $MAKEFILE ; then
2514      mv -f $MAKEFILE "$MAKEFILE.bak"      mv -f $MAKEFILE "$MAKEFILE.old"
2515  fi  fi
2516  echo "  Writing makefile: $MAKEFILE"  echo "  Writing makefile: $MAKEFILE"
2517  echo "# Multithreaded + multi-processing makefile for:" > $MAKEFILE  echo "# Multithreaded + multi-processing makefile for:" > $MAKEFILE
# Line 2513  echo "#    $MACHINE" >> $MAKEFILE Line 2519  echo "#    $MACHINE" >> $MAKEFILE
2519  echo "# This makefile was generated automatically on" >> $MAKEFILE  echo "# This makefile was generated automatically on" >> $MAKEFILE
2520  echo "#    $THISDATE" >> $MAKEFILE  echo "#    $THISDATE" >> $MAKEFILE
2521  echo "# by the command:" >> $MAKEFILE  echo "# by the command:" >> $MAKEFILE
2522  echo "#    $0 $G2ARGS" >> $MAKEFILE  echo "#    $CMDLINE"  >> $MAKEFILE
2523  echo "# executed by:" >> $MAKEFILE  echo "# executed by:" >> $MAKEFILE
2524  echo "#    ${THISUSER}@${THISHOST}:${THISCWD}" >> $MAKEFILE  echo "#    ${THISUSER}@${THISHOST}:${THISCWD}" >> $MAKEFILE
2525    
# Line 2524  EXE_SVD=$EXECUTABLE"_svd" Line 2530  EXE_SVD=$EXECUTABLE"_svd"
2530  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2531  #  #
2532  # OPTFILE="$OPTFILE"  # OPTFILE="$OPTFILE"
2533  #  #
2534  # BUILDDIR     : Directory where object files are written  # BUILDDIR     : Directory where object files are written
2535  # SOURCEDIRS   : Directories containing the source (.F) files  # SOURCEDIRS   : Directories containing the source (.F) files
2536  # INCLUDEDIRS  : Directories containing the header-source (.h) files  # INCLUDEDIRS  : Directories containing the header-source (.h) files
# Line 2544  cat >>$MAKEFILE <<EOF Line 2550  cat >>$MAKEFILE <<EOF
2550  # LIBS         : Library flags /or/ additional optimization/debugging flags  # LIBS         : Library flags /or/ additional optimization/debugging flags
2551    
2552  ROOTDIR     = ${ROOTDIR}  ROOTDIR     = ${ROOTDIR}
2553  BUILDDIR    = ${BUILDDIR}    BUILDDIR    = ${BUILDDIR}
2554  SOURCEDIRS  = ${SOURCEDIRS}  SOURCEDIRS  = ${SOURCEDIRS}
2555  INCLUDEDIRS = ${INCLUDEDIRS}  INCLUDEDIRS = ${INCLUDEDIRS}
2556  EXEDIR      = ${EXEDIR}  EXEDIR      = ${EXEDIR}
# Line 2570  else Line 2576  else
2576      echo "EMBEDDED_FILES = " >>$MAKEFILE      echo "EMBEDDED_FILES = " >>$MAKEFILE
2577  fi  fi
2578    
 #  Note: figure out some way to add Hyades JAM libraries here  
2579  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2580  # Unix ln (link)  # Unix ln (link)
2581  LN = ${LN}  LN = ${LN}
# Line 2626  rm -f F77srclist.tmp nonADF77srclist.tmp Line 2631  rm -f F77srclist.tmp nonADF77srclist.tmp
2631    
2632  echo >> $MAKEFILE  echo >> $MAKEFILE
2633    
2634  # add definitions for preprocessed sources  # add definitions for preprocessed sources
2635  # and note that not all systems allow case sensitive extensions  # and note that not all systems allow case sensitive extensions
2636  # hence the $FS and $FS90 here.  # hence the $FS and $FS90 here.
2637  # for fixed format f90 files we use ff90 or FF90 resp  # for fixed format f90 files we use ff90 or FF90 resp
2638  # but these are not expected to be the original source files  # but these are not expected to be the original source files
2639    
2640  echo 'F77_PP_SRC_FILES = $(F77_SRC_FILES:.F=.'$FS')'      >> $MAKEFILE  echo 'F77_PP_SRC_FILES = $(F77_SRC_FILES:.F=.'$FS')'      >> $MAKEFILE
# Line 2670  clean: Line 2675  clean:
2675          -rm -rf *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template          -rm -rf *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template
2676          -rm -rf *.o          -rm -rf *.o
2677          -rm -rf *.$FS *.flowdir          -rm -rf *.$FS *.flowdir
2678          -rm -rf *.f$FS90 *_mod.h *_mod.F90 *.FF90 *.mod-whirl ad_input*          -rm -rf *.f$FS90 \$(AD_CLEAN) ad_input*
         -rm -rf temp.sed  
2679  Clean:  Clean:
2680          @make clean          @make clean
2681          @make cleanlinks          @make cleanlinks
2682          -rm -f \$(SPECIAL_FILES)          -rm -f \$(SPECIAL_FILES)
2683          -rm -f genmake_state genmake_*optfile genmake_warnings make.log run.log f90mkdepend.log *.bak          -rm -f genmake_state genmake_*optfile genmake_warnings genmake_errors
2684            -rm -f make.log run.log f90mkdepend.log *.bak "$MAKEFILE.old"
2685          -rm -f taf_command taf_output taf_ad.log taf_ad_flow.log          -rm -f taf_command taf_output taf_ad.log taf_ad_flow.log
2686  CLEAN:  CLEAN:
2687          @make Clean          @make Clean
# Line 2718  if test "x$EMBED_SRC" = xt ; then Line 2723  if test "x$EMBED_SRC" = xt ; then
2723    
2724  decode_files.o : EMBEDDED_FILES.h  decode_files.o : EMBEDDED_FILES.h
2725    
2726  ##  \$(F77_PP_SRC_FILES)  ##  \$(F77_PP_SRC_FILES)
2727  all_fF.tar.gz : \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(F77_PP_SRC_FILES) Makefile  all_fF.tar.gz : \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(F77_PP_SRC_FILES) Makefile
2728          @echo Creating \$@ ...          @echo Creating \$@ ...
2729          -tar -hcf all_fF.tar \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(F77_PP_SRC_FILES) Makefile          -tar -hcf all_fF.tar \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(F77_PP_SRC_FILES) Makefile
# Line 2769  EOF Line 2774  EOF
2774  #===  Automatic Differentiation Rules  ===  #===  Automatic Differentiation Rules  ===
2775  #===  for TAMC/TAF  ======================  #===  for TAMC/TAF  ======================
2776    
2777  if test "x$OPENAD" == x ; then  if test "x$OPENAD" = x ; then
2778    
2779  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2780    
# Line 2810  adall: \$(EXE_AD) Line 2815  adall: \$(EXE_AD)
2815  adtaf: ad_taf_output.$FS  adtaf: ad_taf_output.$FS
2816  adtamc: ad_tamc_output.$FS  adtamc: ad_tamc_output.$FS
2817    
2818  ad_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES)  ad_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES) \$(AD_FLOW_FILES)
2819          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ad_config.template          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ad_config.template
2820          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
2821          -rm -f ad_config.template          -rm -f ad_config.template
2822          @make \$(F77_PP_SRC_FILES)          @make \$(F77_PP_SRC_FILES)
2823          @make \$(FLOFILES)          @make \$(FLOFILES)
2824          cat \$(FLOFILES) \$(AD_FILES) > ad_input_code.$FS          cat \$(FLOFILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ad_input_code.$FS
2825    
2826  ad_taf_output.$FS: ad_input_code.$FS  ad_taf_output.$FS: ad_input_code.$FS
2827          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
# Line 2829  adtafonly: Line 2834  adtafonly:
2834          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
2835    
2836  \${EXE_AD}: ad_taf_output.o \$(OBJFILES)  \${EXE_AD}: ad_taf_output.o \$(OBJFILES)
2837          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)
2838    
2839  ad_tamc_output.$FS: ad_input_code.$FS  ad_tamc_output.$FS: ad_input_code.$FS
2840          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS
2841          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_tamc_output.$FS          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_tamc_output.$FS
2842    
2843  ad_tamc: ad_tamc_output.o \$(OBJFILES)  ad_tamc: ad_tamc_output.o \$(OBJFILES)
2844          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)
2845    
2846  adonlyfwd:  adonlyfwd:
2847          patch < \$(TOOLSDIR)/ad_taf_output.f.onlyfwd.diff          patch < \$(TOOLSDIR)/ad_taf_output.f.onlyfwd.diff
2848    
2849  adtrick:  adtrick:
2850          patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff          patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff
2851    
# Line 2868  ftltafonly: Line 2873  ftltafonly:
2873          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS
2874    
2875  ftl_taf: ftl_taf_output.o \$(OBJFILES)  ftl_taf: ftl_taf_output.o \$(OBJFILES)
2876          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)
2877    
2878  ftl_tamc_output.$FS: ftl_input_code.$FS  ftl_tamc_output.$FS: ftl_input_code.$FS
2879          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS
2880          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_tamc_output.$FS          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_tamc_output.$FS
2881    
2882  ftl_tamc: ftl_tamc_output.o \$(OBJFILES)  ftl_tamc: ftl_tamc_output.o \$(OBJFILES)
2883          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_tamc_output.o \$(LIBS)          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_tamc_output.o \$(LIBS)
2884    
2885    
2886  # ... SVD ...  # ... SVD ...
# Line 2904  svd_touch: Line 2909  svd_touch:
2909    
2910  EOF  EOF
2911    
2912  fi  fi
2913    
2914  #===  for OpenAD  ========================  #===  for OpenAD  ========================
2915    
2916  if test "x$OPENAD" != x ; then  if test "x$OPENAD" != x ; then
2917    
2918  # ============ begin OpenAD specific section ==============  # ============ begin OpenAD specific section ==============
2919    
2920  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2921    
2922  # all the source files linked from the various locations:  # all the source files linked from the various locations:
2923  ALL_LINKED_FILES= \  ALL_LINKED_FILES= \
2924  \$(F77_SRC_FILES) \  \$(F77_SRC_FILES) \
2925  \$(C_SRC_FILES) \  \$(C_SRC_FILES) \
# Line 2966  rm -f adSrcFiles.tmp Line 2971  rm -f adSrcFiles.tmp
2971    
2972  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2973    
2974  adAll: \$(EXE_AD)  adAll: \$(EXE_AD)
2975  .PHONY: adAll  .PHONY: adAll
2976    
2977  CB2M_F90_PP_SRC_FILES=\$(addsuffix _mod.f$FS90, \$(CB2M_F90_SRC_NAMES))  CB2M_F90_PP_SRC_FILES=\$(addsuffix _mod.f$FS90, \$(CB2M_F90_SRC_NAMES))
# Line 2984  w2f__types.F90 \ Line 2989  w2f__types.F90 \
2989  OAD_active.F90 \  OAD_active.F90 \
2990  OAD_cp.F90 \  OAD_cp.F90 \
2991  OAD_rev.F90 \  OAD_rev.F90 \
2992  OAD_tape.F90          OAD_tape.F90
2993    
2994  OPENAD_SUPPORT_C_SRC_FILES = \  OPENAD_SUPPORT_C_SRC_FILES = \
2995  iaddr.c \  iaddr.c \
# Line 2993  timeRatio.c Line 2998  timeRatio.c
2998  f95_test_mods.f90: \$(OPENAD_SUPPORT_F90_SRC_FILES:F90=$FS90)  f95_test_mods.f90: \$(OPENAD_SUPPORT_F90_SRC_FILES:F90=$FS90)
2999          cat \$^ > \$@          cat \$^ > \$@
3000    
3001  f95_test.f90: all_mods.xb.x2w.w2f.pp.f$FS90 \$(NON_AD_F77_SRC_FILES:.F=_cb2m.f$FS90) ad_input_code.w2f.pre.xb.x2w.w2f.td.pp.f$FS90  f95_test.f90: all_mods.xb.x2w.w2f.pp.f$FS90 \$(NON_AD_F77_SRC_FILES:.F=_cb2m.f$FS90) ad_input_code.w2f.pre.xb.x2w.w2f.td.pp.f$FS90
3002          cat \$^ > \$@          cat \$^ > \$@
3003    
3004  f95_test.out: f95_test_mods.f90 f95_test.f90  f95_test.out: f95_test_mods.f90 f95_test.f90
3005          f95 -fixed -w=unused -maxcontin=132 -c f95_test_mods.f90 > \$@ 2>&1          f95 -fixed -w=unused -maxcontin=132 -c f95_test_mods.f90 > \$@ 2>&1
3006          f95 -fixed -w=unused -maxcontin=132 -c -fixed f95_test.f90 >> \$@ 2>&1          f95 -fixed -w=unused -maxcontin=132 -c -fixed f95_test.f90 >> \$@ 2>&1
3007    
3008  AD_OBJ_FILES=\$(OPENAD_SUPPORT_F90_SRC_FILES:.F90=.o) \$(OPENAD_SUPPORT_C_SRC_FILES:.c=.o) all_mods.xb.x2w.w2f.pp.o  ad_input_code.w2f.pre.xb.x2w.w2f.td.pp.o \$(NON_AD_F77_SRC_FILES:.F=_cb2m.o) \$(C_SRC_FILES:.c=.o) \$(F90_SRC_FILES:.F90=.o)  # the file included below is created by the
3009    # postProcessor and its inclusion sets the
3010    # variable POSTPROCESSEDFILES
3011    # used below. Because the file is made during
3012    # make it won't be read until the second (recursive)
3013    # invocation in the rule below
3014    -include postProcess.make
3015    
3016    AD_OBJ_FILES_S1=\$(OPENAD_SUPPORT_F90_SRC_FILES:.F90=.o) \$(OPENAD_SUPPORT_C_SRC_FILES:.c=.o) \$(POSTPROCESSEDFILES:.f$FS90=.o)
3017    
3018    AD_OBJ_FILES_S2=\$(AD_OBJ_FILES_S1) \$(NON_AD_F77_SRC_FILES:.F=_cb2m.o) \$(C_SRC_FILES:.c=.o) \$(F90_SRC_FILES:.F90=.o)
3019    
3020    postProcess.comp: \$(ALL_LINKED_FILES) \$(addsuffix _mod.h, \$(CB2M_F90_SRC_NAMES)) postProcess.tag \$(AD_OBJ_FILES_S1)
3021    ifeq (\$(MAKELEVEL),0)
3022            \$(MAKE) adAll
3023    else
3024            touch \$@
3025    endif
3026    
3027  \$(EXE_AD): \$(ALL_LINKED_FILES) \$(addsuffix _mod.h, \$(CB2M_F90_SRC_NAMES)) \$(AD_OBJ_FILES)  \$(EXE_AD): \$(ALL_LINKED_FILES) \$(addsuffix _mod.h, \$(CB2M_F90_SRC_NAMES)) postProcess.comp \$(AD_OBJ_FILES_S2)
3028          @echo Creating \$@ ...  ifeq (\$(MAKELEVEL),1)
3029          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES_S2) \$(LIBS)
3030    else
3031            touch \$@
3032    endif
3033    
3034  # makefile debug rule  # makefile debug rule
3035  openad: ad_input_code.w2f.pre.xb.x2w.w2f.td.pp.f$FS90  openad: ad_input_code.w2f.pre.xb.x2w.w2f.td.pp.f$FS90
3036  .PHONY: openad  .PHONY: openad
3037    
3038  # create the module files  # create the module files
3039  %_mod.FF90 : %.h ../OAD_support/cb2mGetModules.csh ../OAD_support/cb2mGetModules.awk  %_mod.FF90 : %.h ../OAD_support/cb2mGetModules.csh ../OAD_support/cb2mGetModules.awk
3040          ../OAD_support/cb2mGetModules.csh $< ../OAD_support/cb2mGetModules.awk          ../OAD_support/cb2mGetModules.csh $< ../OAD_support/cb2mGetModules.awk
3041    
3042  # create the header files  # create the header files
3043  %_mod.h : %.h ../OAD_support/cb2mGetHeaders.csh ../OAD_support/cb2mGetHeaders.awk  %_mod.h : %.h ../OAD_support/cb2mGetHeaders.csh ../OAD_support/cb2mGetHeaders.awk
3044          ../OAD_support/cb2mGetHeaders.csh $< ../OAD_support/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)          ../OAD_support/cb2mGetHeaders.csh $< ../OAD_support/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)
3045    
3046  # change everybody else to use the new module files:  # change everybody else to use the new module files:
# Line 3034  ad_output.txt: \$(EXE_AD) Line 3059  ad_output.txt: \$(EXE_AD)
3059          @./\$(EXE_AD) > \$@          @./\$(EXE_AD) > \$@
3060    
3061  CB2M_AD_FILES=\$(AD_FILES:.f=_cb2m.f$FS90)  CB2M_AD_FILES=\$(AD_FILES:.f=_cb2m.f$FS90)
3062  ad_input_code.f$FS90: ../OAD_support/maxMinDefs.f \$(CB2M_AD_FILES)  ad_input_code.f$FS90:  \$(CB2M_AD_FILES)
3063          cat \$^ > \$@          cat \$^ > \$@
3064    
3065  # strip all comments and blanks to reduce  # strip all comments and blanks to reduce
3066  # the file size in order to reduce perl's memory requirements  # the file size in order to reduce perl's memory requirements
3067  ad_input_code_sf.f$FS90 : ad_input_code.f$FS90  ad_input_code_sf.f$FS90 : ad_input_code.f$FS90
3068          cat \$^ | sed -f ../OAD_support/strip.sed | sed -f ../OAD_support/stop2print.sed > \$@          cat \$^ | sed -f ../OAD_support/strip.sed | sed -f ../OAD_support/stop2print.sed > \$@
3069    
3070  # mfef90 preprocessing  # mfef90 preprocessing
3071  # expand statement functions  # expand statement functions
3072  # expose mfef90 specific substring handling  # expose mfef90 specific substring handling
3073  # add the w2f__types module  # add the w2f__types module
3074  ad_input_code_sf.w2f.f$FS90: ad_input_code_sf.f$FS90 mfef90 whirl2f whirl2f_be w2f__types.f90  ad_input_code_sf.w2f.f$FS90: ad_input_code_sf.f$FS90 mfef90 whirl2f whirl2f_be w2f__types.f90
3075          ./mfef90 -r8 -z -F -N132 \$<          ./mfef90 -r8 -z -F -N132 \$<
3076          mv \$<.B \$(basename \$<).B          mv \$<.B \$(basename \$<).B
3077          ./whirl2f -openad \$(basename \$<).B          ./whirl2f -openad \$(basename \$<).B
3078          cat w2f__types.f90 \$(basename \$<).w2f.f > \$@          cat w2f__types.f90 \$(basename \$<).w2f.f > \$@
3079    
3080  # canonicalizer  # canonicalizer
3081  ad_input_code_sf.w2f.pre.f$FS90: ad_input_code_sf.w2f.f$FS90 preProcess.py  ad_input_code_sf.w2f.pre.f$FS90: ad_input_code_sf.w2f.f$FS90 preProcess.py
3082          ./preProcess.py -H -S \$< -o \$@          ./preProcess.py --timing --r8 -H -S \$< -o \$@
3083    
3084  # F -> WHIRL  # F -> WHIRL
3085  # note that the canonicalized version cuts off at col 72  # note that the canonicalized version cuts off at col 72
3086  # doing this also for string constants which is ok as long  # doing this also for string constants which is ok as long
3087  # as we are in fixed mode and cut of exactly there.  # as we are in fixed mode and cut of exactly there.
3088  # Otherwise mfef90 patches in spaces to fill up to 72 (or 132)  # Otherwise mfef90 patches in spaces to fill up to 72 (or 132)
3089  # characters respectively.  # characters respectively.
3090  ad_input_code_sf.w2f.pre.B: ad_input_code_sf.w2f.pre.f$FS90 mfef90  ad_input_code_sf.w2f.pre.B: ad_input_code_sf.w2f.pre.f$FS90 mfef90
3091          ./mfef90 -r8 -z -F \$<          ./mfef90 -r8 -z -F \$<
# Line 3076  ad_input_code_sf.w2f.pre.xb.xaif : ad_in Line 3101  ad_input_code_sf.w2f.pre.xb.xaif : ad_in
3101    
3102  # XAIF' -> WHIRL'  # XAIF' -> WHIRL'
3103  ad_input_code_sf.w2f.pre.xb.x2w.B : ad_input_code_sf.w2f.pre.xb.xaif xaif2whirl  ad_input_code_sf.w2f.pre.xb.x2w.B : ad_input_code_sf.w2f.pre.xb.xaif xaif2whirl
3104          ./xaif2whirl --debug 1 --structured ad_input_code_sf.w2f.pre.B \$<          ./xaif2whirl --debug 1 ad_input_code_sf.w2f.pre.B \$<
3105    
3106  # WHIRL' -> F'  # WHIRL' -> F'
3107  ad_input_code_sf.w2f.pre.xb.x2w.w2f.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.B whirl2f whirl2f_be  ad_input_code_sf.w2f.pre.xb.x2w.w2f.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.B whirl2f whirl2f_be
3108          ./whirl2f -FLIST:ftn_file=\$@ -openad \$<          ./whirl2f -FLIST:ftn_file=\$@ -openad \$<
3109    
3110  # insert template directives  # insert template directives
3111  ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.w2f.f$FS90 ../OAD_support/insertTemplateDir.bash  ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.w2f.f$FS90 ../OAD_support/insertTemplateDir.bash
# Line 3088  ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f Line 3113  ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f
3113    
3114  PPEXTRAS=\$(wildcard ../OAD_support/ad_template.*.F) ../OAD_support/ad_inline.F  PPEXTRAS=\$(wildcard ../OAD_support/ad_template.*.F) ../OAD_support/ad_inline.F
3115  # postprocess F'  # postprocess F'
3116  ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.pp.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f$FS90 multi-pp.pl \$(PPEXTRAS:.F=.f)  postProcess.tag: ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f$FS90 postProcess.py \$(PPEXTRAS:.F=.f)
3117          perl multi-pp.pl -inline=../OAD_support/ad_inline.f \$<          # the target is a placeholder to signal execution of the rule
3118          # the postprocessor still gets the name wrong          touch \$@
3119          cat \$<.pp | sed 's/RETURN//' > \$@          # this step also creates the file postProcess.make but we cannot
3120            # name it as the target or else make will try to remake it for
3121  # extract all transformed modules          # the include directive above for any rule, e.g. make clean
3122  all_mods.xb.x2w.w2f.pp.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.pp.f$FS90          ./postProcess.py --progress --timing --outputFormat=fixed -m r -i ../OAD_support/ad_inline.f --width 4 \$<
         cat \$< | sed -n '/MODULE /,/END MODULE/p' > \$@  
   
 # remove the transformed globals module from the  
 # transformed ad_input_code file  
 # and remove for now the duplicate variables  
 # and fix 2 data statements  
 ad_input_code.w2f.pre.xb.x2w.w2f.td.pp.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.pp.f$FS90  
         cat \$< | sed '/MODULE /,/END MODULE/d' | sed '/^      INTEGER(w2f__i4) DOLOOP_UB/d' > \$@  
3123    
3124  # setup some links  # setup some links
3125  %.xsd:  %.xsd:
3126          \$(LN) \${XAIFSCHEMAROOT}/schema/\$@ .          \$(LN) \${XAIFSCHEMAROOT}/schema/\$@ .
3127    
3128  mfef90:  mfef90:
3129          \$(LN) \${OPEN64ROOT}/crayf90/sgi/mfef90 .          \$(LN) \${OPEN64ROOT}/crayf90/sgi/mfef90 .
3130    
3131  # link the support files:  # link the support files:
3132  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES):  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES):
3133          \$(LN) ../OAD_support/\$@ .          \$(LN) ../OAD_support/\$@ .
3134    
3135  whirl2xaif xaif2whirl:  whirl2xaif xaif2whirl:
         \$(LN) \${OPENADFORTTK}/bin/\$@ .  
   
 %.pl:  
3136          \$(LN) \${OPENADFORTTK}/bin/\$@ .          \$(LN) \${OPENADFORTTK}/bin/\$@ .
3137    
3138  preProcess.py:  preProcess.py postProcess.py:
3139          \$(LN) \${OPENADFORTTK_BASE}/tools/SourceProcessing/\$@ .          \$(LN) \${OPENADFORTTK_BASE}/tools/SourceProcessing/\$@ .
3140    
3141  whirl2f whirl2f_be:  whirl2f whirl2f_be:
# Line 3130  whirl2f whirl2f_be: Line 3144  whirl2f whirl2f_be:
3144  oadDriver:  oadDriver:
3145          \$(LN) \${XAIFBOOSTERROOT}/xaifBooster/algorithms/BasicBlockPreaccumulationReverse/driver/oadDriver \$@          \$(LN) \${XAIFBOOSTERROOT}/xaifBooster/algorithms/BasicBlockPreaccumulationReverse/driver/oadDriver \$@
3146    
3147    AD_CLEAN += *_mod.h *_mod.F90 *.FF90 *.mod-whirl temp.sed oad_cp.* postProcess.make postProcess.tag postProcess.comp \$(PPEXTRAS:.F=.f)
3148    
3149  # ============ end OpenAD specific section ==============  # ============ end OpenAD specific section ==============
3150    
3151  EOF  EOF
# Line 3173  printf "\n\n# DO NOT DELETE\n" >> $MAKEF Line 3189  printf "\n\n# DO NOT DELETE\n" >> $MAKEF
3189  printf "\n===  Done  ===\n"  printf "\n===  Done  ===\n"
3190    
3191  # Create special header files  # Create special header files
3192  $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 "Warning - this file is automatically generated - do NOT edit" -bPACKAGES_CONFIG_H "Disabled packages:" $DISABLED_PACKAGES " " "Enabled packages:" $ENABLED_PACKAGES > $PACKAGES_DOT_H".tmp"
3193  if test ! -f $PACKAGES_DOT_H ; then  if test ! -f $PACKAGES_DOT_H ; then
3194      mv -f $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H      mv -f $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H
3195  else  else

Legend:
Removed from v.1.185  
changed lines
  Added in v.1.207

  ViewVC Help
Powered by ViewVC 1.1.22