/[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.187 by jmc, Wed Apr 15 22:21:03 2009 UTC revision 1.210 by jmc, Tue Nov 2 00:51:11 2010 UTC
# Line 56  test_for_string_in_file() { Line 56  test_for_string_in_file() {
56  # the package list.  # the package list.
57  expand_pkg_groups() {  expand_pkg_groups() {
58      new_packages=      new_packages=
     PKG_GROUPS=$ROOTDIR"/pkg/pkg_groups"  
59      if test -r $PKG_GROUPS ; then      if test -r $PKG_GROUPS ; then
60          cat $PKG_GROUPS | sed -e 's/#.*$//g' | sed -e 's/:/ : /g' > ./p1.tmp          cat $PKG_GROUPS | sed -e 's/#.*$//g' | sed -e 's/:/ : /g' > ./p1.tmp
61          cat ./p1.tmp | $AWK '(NF>2 && $2==":"){ print $0 }' > ./p2.tmp          cat ./p1.tmp | $AWK '(NF>2 && $2==":"){ print $0 }' > ./p2.tmp
# Line 67  expand_pkg_groups() { Line 66  expand_pkg_groups() {
66              if test "x$RETVAL" = x0 ; then              if test "x$RETVAL" = x0 ; then
67                  matched=1                  matched=1
68                  replace=`echo $line | $AWK '{ $1=""; $2=""; print $0 }'`                  replace=`echo $line | $AWK '{ $1=""; $2=""; print $0 }'`
69                  echo "    replacing \"$i\" with: $replace"                  echo "    replacing \"$i\" with:$replace"
70                  new_packages="$new_packages $replace"                  new_packages="$new_packages $replace"
71              else              else
72                  new_packages="$new_packages $i"                  new_packages="$new_packages $i"
# Line 110  EOF Line 109  EOF
109              check_for_broken_Ff              check_for_broken_Ff
110          else          else
111              cat <<EOF 2>&1              cat <<EOF 2>&1
112  ERROR: Your file system cannot distinguish between *.F and *.f files  ERROR: Your file system cannot distinguish between *.F and *.f files
113    (fails the "cp" test) and this program cannot find a suitable    (fails the "cp" test) and this program cannot find a suitable
114    replacement extension.  Please try a different build environment or    replacement extension.  Please try a different build environment or
115    contact the <MITgcm-support@mitgcm.org> list for help.    contact the <MITgcm-support@mitgcm.org> list for help.
116    
117  EOF  EOF
# Line 146  EOF Line 145  EOF
145              check_for_broken_Ff              check_for_broken_Ff
146          else          else
147              cat <<EOF 2>&1              cat <<EOF 2>&1
148  ERROR: Your file system cannot distinguish between *.F and *.f files  ERROR: Your file system cannot distinguish between *.F and *.f files
149    (fails the "make/ln" test) and this program cannot find a suitable    (fails the "make/ln" test) and this program cannot find a suitable
150    replacement extension.  Please try a different build environment or    replacement extension.  Please try a different build environment or
151    contact the <MITgcm-support@mitgcm.org> list for help.    contact the <MITgcm-support@mitgcm.org> list for help.
152    
153  EOF  EOF
# Line 194  look_for_makedepend()  { Line 193  look_for_makedepend()  {
193          cat <<EOF >> $MAKEFILE          cat <<EOF >> $MAKEFILE
194  #   THIS IS A TEST MAKEFILE GENERATED BY "genmake2"  #   THIS IS A TEST MAKEFILE GENERATED BY "genmake2"
195  #  #
196  #   Some "makedepend" implementations will die if they cannot  #   Some "makedepend" implementations will die if they cannot
197  #   find a Makefile -- so this file is here to gives them an  #   find a Makefile -- so this file is here to gives them an
198  #   empty one to find and parse.  #   empty one to find and parse.
199  EOF  EOF
200          cat <<EOF >> genmake_tc.f          cat <<EOF >> genmake_tc.f
# Line 212  EOF Line 211  EOF
211              MAKEDEPEND=makedepend              MAKEDEPEND=makedepend
212          else          else
213              echo "    a system-default makedepend was not found."              echo "    a system-default makedepend was not found."
214                
215              #  Try to build the cyrus implementation              #  Try to build the cyrus implementation
216              build_cyrus_makedepend              build_cyrus_makedepend
217              RETVAL=$?              RETVAL=$?
# Line 269  build_embed_encode() Line 268  build_embed_encode()
268              return 1              return 1
269          fi          fi
270          clist="cc gcc c89 $CC"          clist="cc gcc c89 $CC"
271          for ic in $clist ; do          for ic in $clist ; do
272              comm="$ic -o encode_files encode_files.c"              comm="$ic -o encode_files encode_files.c"
273              ( cd $ROOTDIR/tools/embed_encode && $comm ) > /dev/null 2>&1              ( cd $ROOTDIR/tools/embed_encode && $comm ) > /dev/null 2>&1
274              RETVAL=$?              RETVAL=$?
# Line 304  find_possible_configs()  { Line 303  find_possible_configs()  {
303      echo $PLATFORM | grep cygwin > /dev/null 2>&1  &&  PLATFORM=cygwin_ia32      echo $PLATFORM | grep cygwin > /dev/null 2>&1  &&  PLATFORM=cygwin_ia32
304      OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`      OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`
305      echo "  The platform appears to be:  $PLATFORM"      echo "  The platform appears to be:  $PLATFORM"
306        
307      echo "test" > test      echo "test" > test
308      ln -s ./test link      ln -s ./test link
309      RETVAL=$?      RETVAL=$?
# Line 442  Error: No options file was found in:  $R Line 441  Error: No options file was found in:  $R
441  EOF  EOF
442          exit 1          exit 1
443      fi      fi
444        
445  #     # look for possible MPI libraries  #     # look for possible MPI libraries
446  #     mpi_libs=  #     mpi_libs=
447  #     mpi_fort=`which mpif77 2>/dev/null`  #     mpi_fort=`which mpif77 2>/dev/null`
# Line 461  EOF Line 460  EOF
460  #       if test "x${RETVAL}" = x0 ; then  #       if test "x${RETVAL}" = x0 ; then
461  #           a=`cat out`  #           a=`cat out`
462  #           for i in $a ; do  #           for i in $a ; do
463  #               case $i in  #               case $i in
464  #                   -*)  #                   -*)
465  #                       mpi_libs="$mpi_libs $i" ;;  #                       mpi_libs="$mpi_libs $i" ;;
466  #               esac  #               esac
# Line 480  get_pdepend_list()  { Line 479  get_pdepend_list()  {
479      #  strip the comments and then convert the dependency file into      #  strip the comments and then convert the dependency file into
480      #  two arrays: PNAME, DNAME      #  two arrays: PNAME, DNAME
481      cat $1 | sed -e 's/#.*$//g' \      cat $1 | sed -e 's/#.*$//g' \
482          | $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}' \
483          > ./.pd_tmp          > ./.pd_tmp
484        RETVAL=$?
485        if test ! "x${RETVAL}" = x0 ; then
486          echo "Error: unable to parse package dependencies -- please check PKG_DEPEND=\"$1\""
487          exit 1
488        fi
489      . ./.pd_tmp      . ./.pd_tmp
490      rm -f ./.pd_tmp      rm -f ./.pd_tmp
491    
     printf "PNAME = "${}  
492  }  }
493    
494    
# Line 508  Usage: "$0" [OPTIONS] Line 511  Usage: "$0" [OPTIONS]
511        -optfile NAME | --optfile NAME | -of NAME | --of NAME        -optfile NAME | --optfile NAME | -of NAME | --of NAME
512        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME
513            Use "NAME" as the optfile.  By default, an attempt will be            Use "NAME" as the optfile.  By default, an attempt will be
514            made to find an appropriate "standard" optfile in the            made to find an appropriate "standard" optfile in the
515            tools/build_options/ directory.            tools/build_options/ directory.
516    
517      -pdepend NAME | --pdepend NAME      -pdepend NAME | --pdepend NAME
518        -pdepend=NAME | --pdepend=NAME        -pdepend=NAME | --pdepend=NAME
519            Get package dependency information from "NAME".            Get package dependency information from "NAME".
520    
521      -pdefault NAME | --pdefault NAME      -pgroups NAME | --pgroups NAME
522        -pdefault=NAME | --pdefault=NAME        -pgroups=NAME | --pgroups=NAME
523            Get the default package list from "NAME".            Get the package groups information from "NAME".
524    
525        -bash NAME
526              Explicitly specify the Bourne or BASH shell to use
527    
528      -make NAME | -m NAME      -make NAME | -m NAME
529        --make=NAME | -m=NAME        --make=NAME | -m=NAME
530            Use "NAME" for the MAKE program. The default is "make" but            Use "NAME" for the MAKE program. The default is "make" but
531            many platforms, "gmake" is the preferred choice.            many platforms, "gmake" is the preferred choice.
532    
533      -makefile NAME | -mf NAME      -makefile NAME | -mf NAME
# Line 535  Usage: "$0" [OPTIONS] Line 541  Usage: "$0" [OPTIONS]
541      -rootdir NAME | --rootdir NAME | -rd NAME | --rd NAME      -rootdir NAME | --rootdir NAME | -rd NAME | --rd NAME
542        -rootdir=NAME | --rootdir=NAME | -rd=NAME | --rd=NAME        -rootdir=NAME | --rootdir=NAME | -rd=NAME | --rd=NAME
543            Specify the location of the MITgcm ROOTDIR as "NAME".            Specify the location of the MITgcm ROOTDIR as "NAME".
544            By default, genamke will try to find the location by            By default, genamke will try to find the location by
545            looking in parent directories (up to the 5th parent).            looking in parent directories (up to the 5th parent).
546    
547      -mods NAME | --mods NAME | -mo NAME | --mo NAME      -mods NAME | --mods NAME | -mo NAME | --mo NAME
548        -mods=NAME | --mods=NAME | -mo=NAME | --mo=NAME        -mods=NAME | --mods=NAME | -mo=NAME | --mo=NAME
549            Here, "NAME" specifies a list of directories that are            Here, "NAME" specifies a list of directories that are
550            used for additional source code.  Files found in the            used for additional source code.  Files found in the
551            "mods list" are given preference over files of the same            "mods list" are given preference over files of the same
552            name found elsewhere.            name found elsewhere.
553    
554      -disable NAME | --disable NAME      -disable NAME | --disable NAME
555        -disable=NAME | --disable=NAME        -disable=NAME | --disable=NAME
556            Here "NAME" specifies a list of packages that we don't            Here "NAME" specifies a list of packages that we don't
557            want to use.  If this violates package dependencies,            want to use.  If this violates package dependencies,
558            genamke will exit with an error message.            genamke will exit with an error message.
559    
560      -enable NAME | --enable NAME      -enable NAME | --enable NAME
561        -enable=NAME | --enable=NAME        -enable=NAME | --enable=NAME
562            Here "NAME" specifies a list of packages that we wish            Here "NAME" specifies a list of packages that we wish
563            to specifically enable.  If this violates package            to specifically enable.  If this violates package
564            dependencies, genamke will exit with an error message.            dependencies, genamke will exit with an error message.
565    
566      -standarddirs NAME | --standarddirs NAME      -standarddirs NAME | --standarddirs NAME
567        -standarddirs=NAME | --standarddirs=NAME        -standarddirs=NAME | --standarddirs=NAME
568            Here, "NAME" specifies a list of directories to be            Here, "NAME" specifies a list of directories to be
569            used as the "standard" code.            used as the "standard" code.
570    
571      -fortran NAME | --fortran NAME | -fc NAME | --fc NAME      -fortran NAME | --fortran NAME | -fc NAME | --fc NAME
572        -fc=NAME | --fc=NAME        -fc=NAME | --fc=NAME
573            Use "NAME" as the fortran compiler.  By default, genmake            Use "NAME" as the fortran compiler.  By default, genmake
574            will search for a working compiler by trying a list of            will search for a working compiler by trying a list of
575            "usual suspects" such as g77, f77, etc.            "usual suspects" such as g77, f77, etc.
576    
577      -cc NAME | --cc NAME | -cc=NAME | --cc=NAME      -cc NAME | --cc NAME | -cc=NAME | --cc=NAME
578            Use "NAME" as the C compiler.  By default, genmake            Use "NAME" as the C compiler.  By default, genmake
579            will search for a working compiler by trying a list of            will search for a working compiler by trying a list of
580            "usual suspects" such as gcc, c89, cc, etc.            "usual suspects" such as gcc, c89, cc, etc.
581    
582      -[no]ieee | --[no]ieee      -[no]ieee | --[no]ieee
583            Do or don't use IEEE numerics.  Note that this option            Do or don't use IEEE numerics.  Note that this option
584            *only* works if it is supported by the OPTFILE that            *only* works if it is supported by the OPTFILE that
585            is being used.            is being used.
586    
587        -use_real4 | -use_r4 | -ur4 | --use_real4 | --use_r4 | --ur4
588              Use "real*4" type for _RS variable (#undef REAL4_IS_SLOW)
589              *only* works if CPP_EEOPTIONS.h allows this.
590    
591      -ignoretime | -ignore_time | --ignoretime | --ignore_time      -ignoretime | -ignore_time | --ignoretime | --ignore_time
592            Ignore all the "wall clock" routines entirely.  This will            Ignore all the "wall clock" routines entirely.  This will
593            not in any way hurt the model results -- it simply means            not in any way hurt the model results -- it simply means
594            that the code that checks how long the model spends in            that the code that checks how long the model spends in
595            various routines will give junk values.            various routines will give junk values.
596    
597      -ts | --ts      -ts | --ts
# Line 617  Usage: "$0" [OPTIONS] Line 627  Usage: "$0" [OPTIONS]
627            Activate OpenMP code + use Compiler option OMPFLAG            Activate OpenMP code + use Compiler option OMPFLAG
628    
629      -es | --es | -embed-source | --embed-source      -es | --es | -embed-source | --embed-source
630            Embed a tarball containing the full source code            Embed a tarball containing the full source code
631            (including the Makefile, etc.) used to build the            (including the Makefile, etc.) used to build the
632            executable [off by default]            executable [off by default]
633    
634      -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  
635    above can in many cases be a space-delimited string such as:    above can in many cases be a space-delimited string such as:
636    
637      --enable pkg1   --enable 'pkg1 pkg2'   --enable 'pkg1 pkg2 pkg3'      --enable pkg1   --enable 'pkg1 pkg2'   --enable 'pkg1 pkg2 pkg3'
# Line 635  Usage: "$0" [OPTIONS] Line 642  Usage: "$0" [OPTIONS]
642    
643    For more detailed genmake documentation, please see:    For more detailed genmake documentation, please see:
644    
645      http://mitgcm.org/devel_HOWTO/      http://mitgcm.org/public/devel_HOWTO/
646    
647  EOF  EOF
648    
# Line 649  get_fortran_c_namemangling()  { Line 656  get_fortran_c_namemangling()  {
656      if test ! "x$FC_NAMEMANGLE" = x ; then      if test ! "x$FC_NAMEMANGLE" = x ; then
657          return 0          return 0
658      fi      fi
659        echo "running: get_fortran_c_namemangling()" >> genmake_warnings
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 735  EOF Line 743  EOF
743    
744    
745  check_HAVE_CLOC()  {  check_HAVE_CLOC()  {
746        echo >> genmake_warnings
747        echo "running: check_HAVE_CLOC()" >> genmake_warnings
748      get_fortran_c_namemangling      get_fortran_c_namemangling
749      cat <<EOF > genmake_tc_1.c      cat <<EOF > genmake_tc_1.c
750  $FC_NAMEMANGLE  $FC_NAMEMANGLE
# Line 781  check_HAVE_SIGREG()  { Line 791  check_HAVE_SIGREG()  {
791      if test ! "x$HAVE_SIGREG" = x ; then      if test ! "x$HAVE_SIGREG" = x ; then
792          return          return
793      fi      fi
794        echo >> genmake_warnings
795        echo "running: check_HAVE_SIGREG()" >> genmake_warnings
796      get_fortran_c_namemangling      get_fortran_c_namemangling
797      cat <<EOF > genmake_tc_1.c      cat <<EOF > genmake_tc_1.c
798  $FC_NAMEMANGLE  $FC_NAMEMANGLE
# Line 824  EOF Line 836  EOF
836        call sigreg(anint)        call sigreg(anint)
837        end        end
838  EOF  EOF
     echo >> genmake_warnings  
     echo "running: check_HAVE_SIGREG()" >> genmake_warnings  
839      cat genmake_tc_2.$FS >> genmake_warnings      cat genmake_tc_2.$FS >> genmake_warnings
840      COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"      COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"
841      echo $COMM >> genmake_warnings      echo $COMM >> genmake_warnings
# Line 847  check_HAVE_SETRLSTK()  { Line 857  check_HAVE_SETRLSTK()  {
857      if test ! "x$HAVE_SETRLSTK" = x ; then      if test ! "x$HAVE_SETRLSTK" = x ; then
858          return          return
859      fi      fi
860        echo >> genmake_warnings
861        echo "running: check_HAVE_SETRLSTK()" >> genmake_warnings
862      get_fortran_c_namemangling      get_fortran_c_namemangling
863      cat <<EOF > genmake_tc_1.c      cat <<EOF > genmake_tc_1.c
864  $FC_NAMEMANGLE  $FC_NAMEMANGLE
# Line 872  EOF Line 884  EOF
884        call setrlstk()        call setrlstk()
885        end        end
886  EOF  EOF
     echo >> genmake_warnings  
     echo "running: check_HAVE_SETRLSTK()" >> genmake_warnings  
887      cat genmake_tc_2.$FS >> genmake_warnings      cat genmake_tc_2.$FS >> genmake_warnings
888      COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"      COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"
889      echo $COMM >> genmake_warnings      echo $COMM >> genmake_warnings
# Line 888  EOF Line 898  EOF
898    
899    
900  check_HAVE_STAT()  {  check_HAVE_STAT()  {
901        echo >> genmake_warnings
902        echo "running: check_HAVE_STAT()" >> genmake_warnings
903      get_fortran_c_namemangling      get_fortran_c_namemangling
904      cat <<EOF > genmake_tc_1.c      cat <<EOF > genmake_tc_1.c
905  $FC_NAMEMANGLE  $FC_NAMEMANGLE
# Line 919  EOF Line 931  EOF
931        print *," HELLO WORLD", nbyte        print *," HELLO WORLD", nbyte
932        end        end
933  EOF  EOF
     echo >> genmake_warnings  
     echo "running: check_HAVE_STAT()" >> genmake_warnings  
934      cat genmake_tc_2.$FS >> genmake_warnings      cat genmake_tc_2.$FS >> genmake_warnings
935      COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"      COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"
936      echo $COMM >> genmake_warnings      echo $COMM >> genmake_warnings
# Line 957  EOF Line 967  EOF
967        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
968        end        end
969  EOF  EOF
970      echo "===  genmake_tnc.F  ===" > genmake_tnc.log      echo "===  genmake_tnc.F  >>>" > genmake_tnc.log
971      cat genmake_tnc.F >> genmake_tnc.log      cat genmake_tnc.F >> genmake_tnc.log
972      echo "===  genmake_tnc.F  ===" >> genmake_tnc.log      echo "<<<  genmake_tnc.F  ===" >> genmake_tnc.log
973      RET_CPP=f      RET_CPP=f
974      COMM="cat genmake_tnc.F | $CPP $DEFINES $INCLUDES"      COMM="cat genmake_tnc.F | $CPP $DEFINES $INCLUDES"
975      echo "$COMM" >> genmake_tnc.log      echo "$COMM" >> genmake_tnc.log
# Line 986  EOF Line 996  EOF
996    
997      if test "x$RET_COMPILE" = x0 ; then      if test "x$RET_COMPILE" = x0 ; then
998          HAVE_NETCDF=t          HAVE_NETCDF=t
999            echo "check_netcdf: successful" >> genmake_warnings
1000      else      else
1001          # try again with "-lnetcdf" added to the libs          # try again with "-lnetcdf" added to the libs
1002          echo "try again with added '-lnetcdf'" > genmake_tnc.log          echo "==> try again with added '-lnetcdf'" > genmake_tnc.log
1003          echo "cat genmake_tnc.F | $CPP $DEFINES $INCLUDES > genmake_tnc.$FS \ " >> genmake_tnc.log          echo "cat genmake_tnc.F | $CPP $DEFINES $INCLUDES > genmake_tnc.$FS \ " >> genmake_tnc.log
1004          echo " &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS \ " >> genmake_tnc.log          echo " &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS \ " >> genmake_tnc.log
1005          echo " &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf" >> genmake_tnc.log          echo " &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf" >> genmake_tnc.log
# Line 996  EOF Line 1007  EOF
1007              &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \              &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
1008              &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf >> genmake_tnc.log 2>&1              &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf >> genmake_tnc.log 2>&1
1009          RET_COMPILE=$?          RET_COMPILE=$?
1010            echo >> genmake_warnings
1011          cat genmake_tnc.log >> genmake_warnings          cat genmake_tnc.log >> genmake_warnings
1012          if test "x$RET_COMPILE" = x0 ; then          if test "x$RET_COMPILE" = x0 ; then
1013              LIBS="$LIBS -lnetcdf"              LIBS="$LIBS -lnetcdf"
1014              HAVE_NETCDF=t              HAVE_NETCDF=t
1015                echo "check_netcdf: successful" >> genmake_warnings
1016          else          else
1017          # try again with "-lnetcdff" added to the libs          # try again with "-lnetcdff" added to the libs
1018              echo "try again with added '-lnetcdff -lnetcdf'" > genmake_tnc.log              echo "==> try again with added '-lnetcdff -lnetcdf'" > genmake_tnc.log
1019              echo "cat genmake_tnc.F | $CPP $DEFINES $INCLUDES > genmake_tnc.$FS \ " >> genmake_tnc.log              echo "cat genmake_tnc.F | $CPP $DEFINES $INCLUDES > genmake_tnc.$FS \ " >> genmake_tnc.log
1020              echo " &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS \ " >> genmake_tnc.log              echo " &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS \ " >> genmake_tnc.log
1021              echo " &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf" >> genmake_tnc.log              echo " &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf" >> genmake_tnc.log
# Line 1010  EOF Line 1023  EOF
1023                  &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \                  &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
1024                  &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdff -lnetcdf >> genmake_tnc.log 2>&1                  &&  $LINK $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.o $LIBS -lnetcdff -lnetcdf >> genmake_tnc.log 2>&1
1025              RET_COMPILE=$?              RET_COMPILE=$?
1026                echo >> genmake_warnings
1027              cat genmake_tnc.log >> genmake_warnings              cat genmake_tnc.log >> genmake_warnings
1028              if test "x$RET_COMPILE" = x0 ; then              if test "x$RET_COMPILE" = x0 ; then
1029                  LIBS="$LIBS -lnetcdff -lnetcdf"                  LIBS="$LIBS -lnetcdff -lnetcdf"
1030                  HAVE_NETCDF=t                  HAVE_NETCDF=t
1031                    echo "check_netcdf: successful" >> genmake_warnings
1032              fi              fi
1033          fi          fi
1034      fi      fi
# Line 1043  ENABLE= Line 1058  ENABLE=
1058  DISABLE=  DISABLE=
1059  # MAKEFILE=  # MAKEFILE=
1060  # MAKEDEPEND=  # MAKEDEPEND=
1061  PDEPEND=  PKG_DEPEND=
1062    PKG_GROUPS=
1063  DUMPSTATE=t  DUMPSTATE=t
 PDEFAULT=  
1064  OPTFILE=  OPTFILE=
1065  INCLUDES="-I. $INCLUDES"  INCLUDES="-I. $INCLUDES"
1066  FFLAGS=  FFLAGS=
# Line 1065  MPI= Line 1080  MPI=
1080  MPIPATH=  MPIPATH=
1081  OMP=  OMP=
1082  OMPFLAG=  OMPFLAG=
1083    USE_R4=
1084  TS=  TS=
1085  PAPIS=  PAPIS=
1086  PCLS=  PCLS=
# Line 1129  FTL_TAF_FLAGS= Line 1145  FTL_TAF_FLAGS=
1145  SVD_TAMC_FLAGS=  SVD_TAMC_FLAGS=
1146  TAMC_EXTRA=  TAMC_EXTRA=
1147    
   
1148  #  The following state can be set directly by command-line switches  #  The following state can be set directly by command-line switches
1149  gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE"  gm_s1="OPTFILE PKG_DEPEND PKG_GROUPS MAKEFILE MAKEDEPEND PLATFORM ROOTDIR MODS DISABLE ENABLE"
1150  gm_s2="FC CPP IEEE TS PAPIS PCLS PAPI PCL HPMT GSL DEVEL MPI OMP DUMPSTATE STANDARDDIRS"  gm_s2="FC IEEE USE_R4 TS PAPIS PCLS PAPI PCL HPMT GSL DEVEL MPI OMP DUMPSTATE STANDARDDIRS"
1151    
1152  #  The following state is not directly set by command-line switches  #  The following state is not directly set by command-line switches
1153  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPEND PDEPEND PDEFAULT INCLUDES FFLAGS FOPTIM FEXTRAFLAGS"  gm_s3="LN S64 LINK MAKE PACKAGES INCLUDES FFLAGS FOPTIM FEXTRAFLAGS"
1154  gm_s4="CFLAGS KFLAGS1 KFLAGS2 LIBS KPPFILES NOOPTFILES NOOPTFLAGS"  gm_s4="CFLAGS LIBS KPP KFLAGS1 KFLAGS2 KPPFILES NOOPTFILES NOOPTFLAGS"
1155  gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD MAKE THISHOST THISUSER THISDATE THISVER MACHINE"  gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD THISHOST THISUSER THISDATE THISVER MACHINE"
1156  gm_s6="EXECUTABLE EXEHOOK EXEDIR PACKAGES_CONF"  gm_s6="EXECUTABLE EXEHOOK EXEDIR PACKAGES_CONF"
1157  gm_s7="HAVE_SYSTEM HAVE_FDATE FC_NAMEMANGLE HAVE_ETIME"  gm_s7="FC_NAMEMANGLE HAVE_NETCDF HAVE_SYSTEM HAVE_FDATE HAVE_ETIME"
1158    
1159  #  The following are all related to adjoint/tangent-linear stuff  #  The following are all related to adjoint/tangent-linear stuff
1160  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"
# Line 1160  quick list of options, use "genmake -h" Line 1175  quick list of options, use "genmake -h"
1175    
1176  EOF  EOF
1177    
1178    #- clean-up previous genmake logfiles:
1179    rm -f genmake_state genmake_*optfile genmake_warnings genmake_errors
1180    
1181  echo "===  Processing options files and arguments  ==="  echo "===  Processing options files and arguments  ==="
1182  gm_local="genmake_local"  gm_local="genmake_local"
1183  printf "  getting local config information:  "  printf "  getting local config information:  "
# Line 1173  else Line 1191  else
1191  fi  fi
1192    
1193  #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  
1194  #parse_options  #parse_options
1195  ac_prev=  ac_prev=
1196  for ac_option in "$@" ; do  for ac_option in "$@" ; do
# Line 1194  for ac_option in "$@" ; do Line 1203  for ac_option in "$@" ; do
1203          ac_prev=          ac_prev=
1204          continue          continue
1205      fi      fi
1206        
1207      ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`      ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
1208        
1209      case $ac_option in      case $ac_option in
1210                    
1211          -help | --help | -h | --h)          -help | --help | -h | --h)
# Line 1215  for ac_option in "$@" ; do Line 1224  for ac_option in "$@" ; do
1224              AD_OPTFILE=$ac_optarg ;;              AD_OPTFILE=$ac_optarg ;;
1225                    
1226          -pdepend | --pdepend)          -pdepend | --pdepend)
1227              ac_prev=PDEPEND ;;              ac_prev=PKG_DEPEND ;;
1228          -pdepend=* | --pdepend=*)          -pdepend=* | --pdepend=*)
1229              PDEPEND=$ac_optarg ;;              PKG_DEPEND=$ac_optarg ;;
1230                    
1231          -pdefault | --pdefault)          -pgroups | --pgroups)
1232              ac_prev=PDEFAULT ;;              ac_prev=PKG_GROUPS ;;
1233          -pdefault=* | --pdefault=*)          -pgroups=* | --pgroups=*)
1234              PDEFAULT=$ac_optarg ;;              PKG_GROUPS=$ac_optarg ;;
1235                    
1236          -make | --make | -m | --m)          -make | --make | -m | --m)
1237              ac_prev=MAKE ;;              ac_prev=MAKE ;;
# Line 1306  for ac_option in "$@" ; do Line 1315  for ac_option in "$@" ; do
1315          -noieee | --noieee)          -noieee | --noieee)
1316              IEEE= ;;              IEEE= ;;
1317    
1318            -use_real4 | -use_r4 | -ur4 | --use_real4 | --use_r4 | --ur4 )
1319                USE_R4=true ;;
1320    
1321          -ts | --ts)          -ts | --ts)
1322              TS=true ;;              TS=true ;;
1323          -papis | --papis)          -papis | --papis)
# Line 1369  for ac_option in "$@" ; do Line 1381  for ac_option in "$@" ; do
1381              ;;              ;;
1382                    
1383      esac      esac
1384        
1385  done  done
1386    
1387    
# Line 1381  if test -f ./.genmakerc ; then Line 1393  if test -f ./.genmakerc ; then
1393      echo "    http://mitgcm.org/devel_HOWTO/"      echo "    http://mitgcm.org/devel_HOWTO/"
1394      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."
1395      echo "WARNING: ignore \"./.genmakerc\" and continue."      echo "WARNING: ignore \"./.genmakerc\" and continue."
1396      echo      echo
1397  fi  fi
1398    
1399  #  Find the MITgcm ${ROOTDIR}  #  Find the MITgcm ${ROOTDIR}
# Line 1414  fi Line 1426  fi
1426  #  Find the MITgcm ${THISVER}  #  Find the MITgcm ${THISVER}
1427  version_file="${ROOTDIR}/doc/tag-index"  version_file="${ROOTDIR}/doc/tag-index"
1428  if test -f $version_file ; then  if test -f $version_file ; then
1429      THISVER=`grep '^checkpoint' $version_file | head -1`      THISVER=`$AWK '/^checkpoint/{print $1; exit}' $version_file`
1430  #-  remove ./BUILD_INFO.h file if older than version_file  #-  remove ./BUILD_INFO.h file if older than version_file
1431      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
1432          echo "  remove ./BUILD_INFO.h (older than ${version_file})"          echo "  remove ./BUILD_INFO.h (older than ${version_file})"
# Line 1582  if test ! "x$OMP" = x ; then Line 1594  if test ! "x$OMP" = x ; then
1594        DEFINES="$DEFINES -DUSE_OMP_THREADING"        DEFINES="$DEFINES -DUSE_OMP_THREADING"
1595  fi  fi
1596    
1597    if test ! "x$USE_R4" = x ; then
1598          echo "  Turning on LET_RS_BE_REAL4 cpp flag"
1599          DEFINES="$DEFINES -DLET_RS_BE_REAL4"
1600    fi
1601    
1602  if test ! "x$TS" = x ; then  if test ! "x$TS" = x ; then
1603        echo "  Turning on timing per timestep"        echo "  Turning on timing per timestep"
1604        if test ! "x$FOOLAD" = x ; then        if test ! "x$FOOLAD" = x ; then
# Line 1790  fi Line 1807  fi
1807    
1808  printf "\n===  Setting defaults  ===\n"  printf "\n===  Setting defaults  ===\n"
1809  printf "  Adding MODS directories: "  printf "  Adding MODS directories: "
 MPI_LNKF=  
1810  for d in $MODS ; do  for d in $MODS ; do
1811      if test ! -d $d ; then      if test ! -d $d ; then
1812          echo          echo
# Line 1800  for d in $MODS ; do Line 1816  for d in $MODS ; do
1816          printf "$d "          printf "$d "
1817          SOURCEDIRS="$SOURCEDIRS $d"          SOURCEDIRS="$SOURCEDIRS $d"
1818          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=$?  
               yy=0 ;  
               for xx in $MPI_LNKF ; do if test $xx = $name ; then yy=1 ; fi ; done  
               if test "x$RETVAL" != x0 -a $yy = 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 -sf $d/$ii $name  
                 MPI_LNKF="$MPI_LNKF $name"  
             fi  
           fi  
         done  
         #-------------------------------------------------------  
1819      fi      fi
1820  done  done
1821  echo  echo
 #echo "MPI_LNKF='$MPI_LNKF'"  
1822    
1823  if test "x${PLATFORM}" = x ; then  if test "x${PLATFORM}" = x ; then
1824      PLATFORM=$p_PLATFORM      PLATFORM=$p_PLATFORM
# Line 1889  ERROR: neither of the two default script Line 1862  ERROR: neither of the two default script
1862      ${TOOLSDIR}/set64bitConst.sh      ${TOOLSDIR}/set64bitConst.sh
1863      ${TOOLSDIR}/set64bitConst.csh      ${TOOLSDIR}/set64bitConst.csh
1864    
1865    are working so please check paths or specify (with \$S64) a    are working so please check paths or specify (with \$S64) a
1866    working version of this script.    working version of this script.
1867    
1868  EOF  EOF
# Line 1901  THIS_SCRIPT=`echo ${0} | sed 's:'$TOOLSD Line 1874  THIS_SCRIPT=`echo ${0} | sed 's:'$TOOLSD
1874    
1875  EXECUTABLE=${EXECUTABLE:-mitgcmuv}  EXECUTABLE=${EXECUTABLE:-mitgcmuv}
1876    
1877    #  Set Standard Code Directories:
1878    if test "x$STANDARDDIRS" = xUSE_THE_DEFAULT ; then
1879        STANDARDDIRS="eesupp model"
1880    fi
1881    #  if model in Standard-Code-Dir, add eesupp (needed to compile model)
1882    echo " $STANDARDDIRS " | grep ' model ' > /dev/null 2>&1
1883    ckM=$?
1884    echo " $STANDARDDIRS " | grep ' eesupp ' > /dev/null 2>&1
1885    ckE=$?
1886    if test $ckM = 0 -a $ckE = 1 ; then
1887        STANDARDDIRS="$STANDARDDIRS eesupp"
1888    fi
1889    
1890  #  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
1891  #  generated from some template source files. We'll make them first so  #  generated from some template source files. We'll make them first so
1892  #  they appear as regular source code  #  they appear as regular source code
1893  if test -r $ROOTDIR"/eesupp/src/Makefile" ; then  if test -r $ROOTDIR"/eesupp/src/Makefile" ; then
1894      echo "  Making source files in eesupp from templates"      echo "  Making source files in eesupp from templates"
1895      ( cd $ROOTDIR"/eesupp/src/" && $MAKE ) > make_eesupp.errors 2>&1      ( cd $ROOTDIR"/eesupp/src/" && $MAKE clean_old && $MAKE \
1896        ) > make_eesupp.errors 2>&1
1897      RETVAL=$?      RETVAL=$?
1898      if test "x${RETVAL}" = x0 ; then      if test "x${RETVAL}" = x0 ; then
1899          rm -f make_eesupp.errors          rm -f make_eesupp.errors
# Line 1921  fi Line 1908  fi
1908  for pdir in exch2 regrid ; do  for pdir in exch2 regrid ; do
1909      if test -r $ROOTDIR"/pkg/${pdir}/Makefile" ; then      if test -r $ROOTDIR"/pkg/${pdir}/Makefile" ; then
1910          echo "  Making source files in pkg/${pdir} from templates"          echo "  Making source files in pkg/${pdir} from templates"
1911          ( cd $ROOTDIR"/pkg/"${pdir} && $MAKE ) > make_${pdir}.errors 2>&1          ( cd $ROOTDIR"/pkg/"${pdir} && $MAKE clean_old && $MAKE \
1912            ) > make_${pdir}.errors 2>&1
1913          RETVAL=$?          RETVAL=$?
1914          if test "x${RETVAL}" = x0 ; then          if test "x${RETVAL}" = x0 ; then
1915              rm -f make_${pdir}.errors              rm -f make_${pdir}.errors
# Line 1934  for pdir in exch2 regrid ; do Line 1922  for pdir in exch2 regrid ; do
1922  done  done
1923    
1924  printf "\n===  Determining package settings  ===\n"  printf "\n===  Determining package settings  ===\n"
1925  if  test "x${PDEPEND}" = x ; then  if  test "x${PKG_DEPEND}" = x ; then
1926      tmp=$ROOTDIR"/pkg/pkg_depend"      tmp=$ROOTDIR"/pkg/pkg_depend"
1927      if test -r $tmp ; then      if test -r $tmp ; then PKG_DEPEND=$tmp ; fi
1928          PDEPEND=$tmp  fi
1929      else  if  test "x${PKG_DEPEND}" = x ; then
1930          echo "Warning:  No package dependency information was specified."          echo "Warning:  No package dependency information was specified."
1931          echo "  Please check that ROOTDIR/pkg/pkg_depend exists."          echo "  Please check that ROOTDIR/pkg/pkg_depend exists."
     fi  
1932  else  else
1933      if test ! -r ${PDEPEND} ; then      if test ! -r ${PKG_DEPEND} ; then
1934          echo "Error:  can't read package dependency info from PDEPEND=\"$PDEPEND\""          echo "Error:  can't read package dependency info from PKG_DEPEND=\"$PKG_DEPEND\""
1935          exit 1          exit 1
1936      fi      fi
1937        echo "  getting package dependency info from  $PKG_DEPEND"
1938    #  Strip the comments and then convert the dependency file into arrays: PNAME, DNAME
1939        get_pdepend_list $PKG_DEPEND
1940  fi  fi
1941  echo "  getting package dependency info from  $PDEPEND"  
1942  #  Strip the comments and then convert the dependency file into  # A default package groups file "$ROOTDIR/pkg/pkg_groups" is provided
1943  #  two arrays: PNAME, DNAME  #  to define the "default_pkg_list" and package groups (for convenience, one
1944  cat $PDEPEND | sed -e 's/#.*$//g' \  #  can specify a group of packages using names like "ocean" and "atmosphere").
1945      | $AWK 'BEGIN{nn=-1;} (NF>0){ for(i=2;i<=NF;i++){nn++; print "PNAME_"nn"="$1"\nDNAME_"nn"="$i}} END{print "nname="nn}' \  if test "x${PKG_GROUPS}" = x ; then
1946      > ./.pd_tmp      tmp=$ROOTDIR"/pkg/pkg_groups"
1947  RETVAL=$?      if test -r $tmp ; then PKG_GROUPS=$tmp ; fi
1948  if test ! "x${RETVAL}" = x0 ; then  fi
1949      echo "Error: unable to parse package dependencies -- please check PDEPEND=\"$PDEPEND\""  if test "x${PKG_GROUPS}" = x ; then
1950      exit 1          echo "Warning:  No package groups information was specified."
1951            echo "  Please check that ROOTDIR/pkg/pkg_groups exists."
1952    else
1953        if test ! -r ${PKG_GROUPS} ; then
1954            echo "Error:  can't read package groups info from PKG_GROUPS=\"$PKG_GROUPS\""
1955            exit 1
1956        fi
1957        echo "  getting package groups info from      $PKG_GROUPS"
1958  fi  fi
 . ./.pd_tmp  
 rm -f ./.pd_tmp  
1959    
1960  #  Search for default packages.  Note that a "$ROOTDIR/pkg/pkg_groups"  #  Search for packages to compile.
1961  #  file should eventually be added so that, for convenience, one can  echo "  checking list of packages to compile:"
1962  #  specify groups of packages using names like "ocean" and "atmosphere".  PKG_LIST=
1963  echo "  checking default package list:  "  if test "x${PKG_LIST}" = x ; then
 if test "x${PDEFAULT}" = x ; then  
1964      for i in "." $MODS ; do      for i in "." $MODS ; do
1965          if test -r $i"/packages.conf" ; then          if test -r $i"/packages.conf" ; then
1966                  PDEFAULT=$i"/packages.conf"                  PKG_LIST=$i"/packages.conf"
1967                  break                  break
1968          fi          fi
1969      done      done
1970  fi  fi
1971  if test "x${PDEFAULT}" = x ; then  if test "x${PKG_LIST}" = x ; then
1972      PDEFAULT="$ROOTDIR/pkg/pkg_default"      pkg_list='default_pkg_list'
1973  fi      if test "x${PKG_GROUPS}" = x ; then
1974  if test "x${PDEFAULT}" = xNONE ; then          echo "Error:  need package groups info to expand pkg_list=\"$pkg_list\""
1975      echo "    default packages file disabled"          exit 1
1976        fi
1977  else  else
1978      if test ! -r $PDEFAULT ; then      if test ! -r $PKG_LIST ; then
1979          echo "Warning:  can't read default packages from PDEFAULT=\"$PDEFAULT\""          echo "Error:  can't read package list from PKG_LIST=\"$PKG_LIST\""
1980            exit 1
1981      else      else
1982          echo "    using PDEFAULT=\"$PDEFAULT\""          echo "    using PKG_LIST=\"$PKG_LIST\""
1983          #  Strip the comments and add all the names          #  Strip the comments and add all the names
1984          def=`cat $PDEFAULT | sed -e 's/#.*$//g' | $AWK '(NF>0){print $0}'`          pkg_list=`cat $PKG_LIST | sed -e 's/#.*$//g' | $AWK '(NF>0){print $0}'`
1985          RETVAL=$?          RETVAL=$?
1986          if test "x${RETVAL}" != x0 ; then          if test "x${RETVAL}" != x0 ; then
1987              printf "Error: can't parse default package list "              printf "Error: can't parse package list "
1988              echo "-- please check PDEFAULT=\"$PDEFAULT\""              echo "-- please check PKG_LIST=\"$PKG_LIST\""
1989              exit 1              exit 1
1990          fi          fi
         for i in $def ; do  
             PACKAGES="$PACKAGES $i"  
         done  
         echo "    before group expansion packages are: $PACKAGES"  
         RET=1  
         while test $RET = 1 ; do expand_pkg_groups; RET=$?; done  
         echo "    after group expansion packages are:  $PACKAGES"  
1991      fi      fi
1992  fi  fi
1993    for i in $pkg_list ; do
1994        PACKAGES="$PACKAGES $i"
1995    done
1996    echo     "    before group expansion packages are:$PACKAGES"
1997    if test "x${PKG_GROUPS}" != x ; then
1998        RET=1
1999        while test $RET = 1 ; do expand_pkg_groups; RET=$?; done
2000        echo "    after group expansion packages are: $PACKAGES"
2001    fi
2002    
2003  echo "  applying DISABLE settings"  echo "  applying DISABLE settings"
2004    echo "" > ./.tmp_pack
2005  for i in $PACKAGES ; do  for i in $PACKAGES ; do
2006      echo $i >> ./.tmp_pack      echo $i >> ./.tmp_pack
2007  done  done
# Line 2030  PACKAGES="$PACKAGES $ENABLE" Line 2029  PACKAGES="$PACKAGES $ENABLE"
2029  for i in $PACKAGES ; do  for i in $PACKAGES ; do
2030      j=`echo $i | sed 's/[-+]//'`      j=`echo $i | sed 's/[-+]//'`
2031      if test ! -d "$ROOTDIR/pkg/$j" ; then      if test ! -d "$ROOTDIR/pkg/$j" ; then
2032          echo "Error: can't find package $i at \"$ROOTDIR/pkg/$i\""          echo "Error: dir '$ROOTDIR/pkg/$i' missing for package '$i'"
2033          exit 1          exit 1
2034      fi      fi
2035      echo $i >> ./.tmp_pack      echo $i >> ./.tmp_pack
# Line 2040  for i in `grep -v "-" ./.tmp_pack | sort Line 2039  for i in `grep -v "-" ./.tmp_pack | sort
2039      PACKAGES="$PACKAGES $i"      PACKAGES="$PACKAGES $i"
2040  done  done
2041  rm -f ./.tmp_pack  rm -f ./.tmp_pack
2042  echo "    packages are:  $PACKAGES"  echo "    packages are: $PACKAGES"
2043    
2044  #  Check for package MNC: if NetCDF is available, then build the MNC  #  Check for package MNC: if NetCDF is available, then build the MNC
2045  #  template files ; otherwise, delete mnc from the list of packages.  #  template files ; otherwise, delete mnc from the list of packages.
2046  echo $PACKAGES | grep ' mnc ' > /dev/null 2>&1  echo " $PACKAGES " | grep ' mnc ' > /dev/null 2>&1
2047  RETVAL=$?  mnc_in=$?
2048  if test "x$RETVAL" = x0 ; then  if test "x$HAVE_NETCDF" != xt ; then
2049      if test "x$HAVE_NETCDF" != xt ; then      if test "x$mnc_in" = x0 ; then
2050          cat <<EOF          cat <<EOF
   
2051  *********************************************************************  *********************************************************************
2052  WARNING: the "mnc" package was enabled but tests failed to compile  WARNING: the "mnc" package was enabled but tests failed to compile
2053    NetCDF applications.  Please check that:    NetCDF applications.  Please check that:
2054    
2055    1) NetCDF is correctly installed for this compiler and    1) NetCDF is correctly installed for this compiler and
2056    2) the LIBS variable (within the "optfile") specifies the correct    2) the LIBS variable (within the "optfile") specifies the correct
2057         NetCDF library to link against.         NetCDF library to link against.
2058    
2059    Due to this failure, the "mnc" package is now DISABLED.    Due to this failure, the "mnc" package is now DISABLED.
2060  *********************************************************************  *********************************************************************
   
2061  EOF  EOF
2062          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`
2063          DISABLE="$DISABLE mnc"          DISABLE="$DISABLE mnc"
2064      else      else
2065          ( 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
2066          RETVAL=$?          DISABLE="$DISABLE mnc"
2067          if test "x${RETVAL}" = x0 ; then      fi
2068              rm -f make_mnc.errors  else
2069        # we have NetCDF, we try to build MNC template files
2070        ( cd $ROOTDIR"/pkg/mnc" && $MAKE testclean && $MAKE templates ) > make_mnc.errors 2>&1
2071        RETVAL=$?
2072        if test "x${RETVAL}" = x0 ; then
2073            rm -f make_mnc.errors
2074        else
2075            echo "Error: problem encountered while building source files in pkg/mnc:"
2076            cat make_mnc.errors 1>&2
2077            if test "x$mnc_in" = x0 ; then
2078                exit 1
2079          else          else
2080              echo "Error: problem encountered while building source files in pkg/mnc:"              DISABLE="$DISABLE mnc"
             cat make_mnc.errors 1>&2  
             exit 1  
2081          fi          fi
2082      fi      fi
2083  fi  fi
2084    
2085  #  Check for package PROFILES: if NetCDF is not available,  #  Check for package PROFILES: if NetCDF is not available,
2086  #  then delete profiles from the list of available packages.  #  then delete profiles from the list of available packages.
2087  echo $PACKAGES | grep ' profiles ' > /dev/null 2>&1  if test "x$HAVE_NETCDF" != xt ; then
2088  RETVAL=$?      echo " $PACKAGES " | grep ' profiles ' > /dev/null 2>&1
2089  if test "x$RETVAL" = x0 ; then      RETVAL=$?
2090      if test "x$HAVE_NETCDF" != xt ; then      if test "x$RETVAL" = x0 ; then
2091          cat <<EOF          cat <<EOF
   
2092  *********************************************************************  *********************************************************************
2093  WARNING: the "profiles" package was enabled but tests failed to  WARNING: the "profiles" package was enabled but tests failed to
2094    compile NetCDF applications.  Please check that:    compile NetCDF applications.  Please check that:
2095    
2096    1) NetCDF is correctly installed for this compiler and    1) NetCDF is correctly installed for this compiler and
2097    2) the LIBS variable (within the "optfile") specifies the correct    2) the LIBS variable (within the "optfile") specifies the correct
2098         NetCDF library to link against.         NetCDF library to link against.
2099    
2100    Due to this failure, the "profiles" package is now DISABLED.    Due to this failure, the "profiles" package is now DISABLED.
2101  *********************************************************************  *********************************************************************
   
2102  EOF  EOF
2103          PACKAGES=`echo $PACKAGES | sed -e 's/profiles//g'`          PACKAGES=`echo $PACKAGES | sed -e 's/profiles//g'`
2104          DISABLE="$DISABLE profiles"          DISABLE="$DISABLE profiles"
2105        else
2106        #  this prevent to add profiles (due to pdepend rules) if not available
2107            DISABLE="$DISABLE profiles"
2108      fi      fi
2109  fi  fi
2110    
2111  echo "  applying package dependency rules"  if  test "x${PKG_DEPEND}" != x ; then
2112  ck=    echo "  applying package dependency rules"
2113  while test "x$ck" != xtt ; do    ck=
2114      while test "x$ck" != xtt ; do
2115      i=0      i=0
2116      # rtot=${#PNAME[@]}      # rtot=${#PNAME[@]}
2117      rtot=$nname      rtot=$nname
# Line 2120  while test "x$ck" != xtt ; do Line 2127  while test "x$ck" != xtt ; do
2127                  pin="t"                  pin="t"
2128              fi              fi
2129          done          done
2130            #  or in the current $STANDARDDIRS list?
2131            for p in $STANDARDDIRS ; do
2132                if test "x$p" = "x$pname" ; then pin="t" ; fi
2133            done
2134    
2135          #  Is the DNAME entry a (+) or (-) rule ?          #  Is the DNAME entry a (+) or (-) rule ?
2136          tmp="dname=\"\$DNAME_$i\""          tmp="dname=\"\$DNAME_$i\""
# Line 2163  while test "x$ck" != xtt ; do Line 2174  while test "x$ck" != xtt ; do
2174          #  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?
2175          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
2176              echo "Error: can't satisfy package dependencies:"              echo "Error: can't satisfy package dependencies:"
2177              echo "  \"$pname\" was requested but is disallowed by"              echo "  \"$pname\" was requested but is disallowed by"
2178              echo "  the dependency rules for \"$dname\""              echo "  the dependency rules for \"$dname\""
2179              exit 1              exit 1
2180          fi          fi
# Line 2171  while test "x$ck" != xtt ; do Line 2182  while test "x$ck" != xtt ; do
2182          #i=$(( $i + 1 ))          #i=$(( $i + 1 ))
2183      done      done
2184      ck=$ck"t"      ck=$ck"t"
2185  done    done
2186  echo "    packages are:  $PACKAGES"    echo "    packages are: $PACKAGES"
2187    fi
2188  for i in $PACKAGES ; do  for i in $PACKAGES ; do
2189      adr="$ROOTDIR/pkg/$i"      adr="$ROOTDIR/pkg/$i"
2190      if test -d $adr ; then      if test -d $adr ; then
# Line 2189  done Line 2201  done
2201    
2202  # Create a list of #define and #undef to enable/disable packages  # Create a list of #define and #undef to enable/disable packages
2203  PACKAGES_DOT_H=PACKAGES_CONFIG.h  PACKAGES_DOT_H=PACKAGES_CONFIG.h
2204  #  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
2205  #  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
2206  #  file would eventually be split up so that all package-related #define  #  file would eventually be split up so that all package-related #define
2207  #  statements could be separated and handled only by genmake.  #  statements could be separated and handled only by genmake.
2208  names=`ls -1 "$ROOTDIR/pkg"`  names=`ls -1 "$ROOTDIR/pkg"`
# Line 2218  for i in $PACKAGES ; do Line 2230  for i in $PACKAGES ; do
2230  #eh3 DEFINES="$DEFINES -D$def"  #eh3 DEFINES="$DEFINES -D$def"
2231    
2232  #EH3  WARNING :  This is an UGLY HACK that needs to be removed!!!  #EH3  WARNING :  This is an UGLY HACK that needs to be removed!!!
2233      case $i in      case $i in
2234          aim_v23)          aim_v23)
2235              ENABLED_PACKAGES="$ENABLED_PACKAGES -DALLOW_AIM"              ENABLED_PACKAGES="$ENABLED_PACKAGES -DALLOW_AIM"
2236              echo "Warning: ALLOW_AIM is set to enable aim_v23."              echo "Warning: ALLOW_AIM is set to enable aim_v23."
# Line 2228  for i in $PACKAGES ; do Line 2240  for i in $PACKAGES ; do
2240    
2241  done  done
2242    
2243  echo "  Adding STANDARDDIRS"  echo "  Adding STANDARDDIRS='$STANDARDDIRS'"
2244  BUILDDIR=${BUILDDIR:-.}  BUILDDIR=${BUILDDIR:-.}
 if test "x$STANDARDDIRS" = xUSE_THE_DEFAULT ; then  
     STANDARDDIRS="eesupp model"  
 fi  
2245  if test "x$STANDARDDIRS" != x ; then  if test "x$STANDARDDIRS" != x ; then
2246      for d in $STANDARDDIRS ; do      for d in $STANDARDDIRS ; do
2247          adr="$ROOTDIR/$d/src"          adr="$ROOTDIR/$d/src"
# Line 2291  if test -f ./adSrcFiles.tmp ; then Line 2300  if test -f ./adSrcFiles.tmp ; then
2300      rm -f ./adSrcFiles.tmp      rm -f ./adSrcFiles.tmp
2301  fi  fi
2302  echo "  Creating the list of files for the adjoint compiler."  echo "  Creating the list of files for the adjoint compiler."
2303    touch adSrcFiles.tmp
2304  for i in $SOURCEDIRS ; do  for i in $SOURCEDIRS ; do
2305      list_files=`( cd $i && ls -1 *.list 2>/dev/null )`      list_files=`( cd $i && ls -1 *.list 2>/dev/null )`
2306      for j in $list_files ; do      for j in $list_files ; do
# Line 2323  if test ! "x$DIVA" = x ; then Line 2333  if test ! "x$DIVA" = x ; then
2333          fi          fi
2334          MPIINCLUDEDIR='$MPIHOME/include'          MPIINCLUDEDIR='$MPIHOME/include'
2335      fi      fi
2336        
2337      if test -r $MPIINCLUDEDIR/mpif.h ; then      if test -r $MPIINCLUDEDIR/mpif.h ; then
2338          for i in $MPI_HEADER_FILES; do          for i in $MPI_HEADER_FILES; do
2339              cp -p $MPIINCLUDEDIR/$i ./mpi_headers              cp -p $MPIINCLUDEDIR/$i ./mpi_headers
# Line 2358  if test ! -r ".links.tmp/foo" ; then Line 2368  if test ! -r ".links.tmp/foo" ; then
2368  fi  fi
2369  rm -f .links.tmp/foo  rm -f .links.tmp/foo
2370    
2371  if test "x$OPENAD" != x ; then  if test "x$OPENAD" != x ; then
2372      OAD_DONT_COMPILE="/dev/null"      OAD_DONT_COMPILE="/dev/null"
2373      OAD_DONT_TRANSFORM="/dev/null"      OAD_DONT_TRANSFORM="/dev/null"
2374      OAD_KEEP_ORIGINAL="/dev/null"      OAD_KEEP_ORIGINAL="/dev/null"
# Line 2411  for d in $alldirs ; do Line 2421  for d in $alldirs ; do
2421      deplist=      deplist=
2422      sfiles=`( cd $d; echo *.[h,c,F] *.flow )`      sfiles=`( cd $d; echo *.[h,c,F] *.flow )`
2423      sfiles=`( echo $sfiles; cd $d; echo *.F90 )`      sfiles=`( echo $sfiles; cd $d; echo *.F90 )`
2424      if test "x$OPENAD" != x ; then      if test "x$OPENAD" != x ; then
2425          sfiles=`( echo $sfiles | grep -v _cb2m\. )`          sfiles=`( echo $sfiles | grep -v _cb2m\. )`
2426      fi      fi
2427      for sf in $sfiles ; do      for sf in $sfiles ; do
# Line 2451  for d in $alldirs ; do Line 2461  for d in $alldirs ; do
2461                        F)                        F)
2462                          echo    " \\"  >> F77srclist.tmp                          echo    " \\"  >> F77srclist.tmp
2463                          printf " $sf" >> F77srclist.tmp                          printf " $sf" >> F77srclist.tmp
2464                          if test "x$OPENAD" != x ; then                          if test "x$OPENAD" != x ; then
2465                              basename=${sf%%.F}                              basename=${sf%%.F}
2466                              isAD=`egrep ^$basename.f'[  ]*' adSrcFiles.tmp`                              isAD=`egrep ^$basename.f'[  ]*' adSrcFiles.tmp`
2467                              if test -z "$isAD" ; then                              if test -z "$isAD" ; then
2468                                  toBeIgnored=`egrep ^$basename'[      ]*' ${OAD_DONT_COMPILE}`                                  toBeIgnored=`egrep ^$basename'[      ]*' ${OAD_DONT_COMPILE}`
2469                                  if test -z "$toBeIgnored" ; then                                  if test -z "$toBeIgnored" ; then
2470                                      echo    " \\"  >> nonADF77srclist.tmp                                      echo    " \\"  >> nonADF77srclist.tmp
2471                                      printf " $sf" >> nonADF77srclist.tmp                                      printf " $sf" >> nonADF77srclist.tmp
2472                                  else                                  else
2473                                      echo "    not to be compiled   :  $sf"                                      echo "    not to be compiled   :  $sf"
2474                                  fi                                  fi
2475                              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
2476                                   # or we want to retain the untransformed version                                   # or we want to retain the untransformed version
2477                                  notToBeTransformed=`egrep ^$basename'[      ]*' ${OAD_DONT_TRANSFORM}`                                  notToBeTransformed=`egrep ^$basename'[      ]*' ${OAD_DONT_TRANSFORM}`
2478                                  untransformedVersionToBeKept=`egrep ^$basename'[      ]*' ${OAD_KEEP_ORIGINAL}`                                  untransformedVersionToBeKept=`egrep ^$basename'[      ]*' ${OAD_KEEP_ORIGINAL}`
2479                                  if test -n "$notToBeTransformed"; then                                  if test -n "$notToBeTransformed"; then
2480                                      echo "    not to be transformed:  $sf"                                      echo "    not to be transformed:  $sf"
2481                                  fi                                  fi
2482                                  if test -n "$untransformedVersionToBeKept" ; then                                  if test -n "$untransformedVersionToBeKept" ; then
2483                                      echo "    original to be kept  :  $sf"                                      echo "    original to be kept  :  $sf"
2484                                  fi                                      fi
2485                                  if test -n "$notToBeTransformed" -o -n "$untransformedVersionToBeKept" ; then                                  if test -n "$notToBeTransformed" -o -n "$untransformedVersionToBeKept" ; then
2486                                      echo    " \\"  >> nonADF77srclist.tmp                                      echo    " \\"  >> nonADF77srclist.tmp
2487                                      printf " $sf" >> nonADF77srclist.tmp                                      printf " $sf" >> nonADF77srclist.tmp
# Line 2520  echo "" >> F90srclist.tmp Line 2530  echo "" >> F90srclist.tmp
2530  echo "" >> hsrclist.tmp  echo "" >> hsrclist.tmp
2531  echo "" >> ad_flow_files.tmp  echo "" >> ad_flow_files.tmp
2532    
2533    CMDLINE=$0
2534    for xx in "$@" ; do nw=`echo $xx | wc -w`
2535        if test $nw = '1' ; then CMDLINE="$CMDLINE $xx"
2536                            else CMDLINE="$CMDLINE '$xx'" ; fi
2537    done
2538    
2539  if test -f $MAKEFILE ; then  if test -f $MAKEFILE ; then
2540      mv -f $MAKEFILE "$MAKEFILE.bak"      mv -f $MAKEFILE "$MAKEFILE.old"
2541  fi  fi
2542  echo "  Writing makefile: $MAKEFILE"  echo "  Writing makefile: $MAKEFILE"
2543  echo "# Multithreaded + multi-processing makefile for:" > $MAKEFILE  echo "# Multithreaded + multi-processing makefile for:" > $MAKEFILE
# Line 2529  echo "#    $MACHINE" >> $MAKEFILE Line 2545  echo "#    $MACHINE" >> $MAKEFILE
2545  echo "# This makefile was generated automatically on" >> $MAKEFILE  echo "# This makefile was generated automatically on" >> $MAKEFILE
2546  echo "#    $THISDATE" >> $MAKEFILE  echo "#    $THISDATE" >> $MAKEFILE
2547  echo "# by the command:" >> $MAKEFILE  echo "# by the command:" >> $MAKEFILE
2548  echo "#    $0 $G2ARGS" >> $MAKEFILE  echo "#    $CMDLINE"  >> $MAKEFILE
2549  echo "# executed by:" >> $MAKEFILE  echo "# executed by:" >> $MAKEFILE
2550  echo "#    ${THISUSER}@${THISHOST}:${THISCWD}" >> $MAKEFILE  echo "#    ${THISUSER}@${THISHOST}:${THISCWD}" >> $MAKEFILE
2551    
# Line 2540  EXE_SVD=$EXECUTABLE"_svd" Line 2556  EXE_SVD=$EXECUTABLE"_svd"
2556  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2557  #  #
2558  # OPTFILE="$OPTFILE"  # OPTFILE="$OPTFILE"
2559  #  #
2560  # BUILDDIR     : Directory where object files are written  # BUILDDIR     : Directory where object files are written
2561  # SOURCEDIRS   : Directories containing the source (.F) files  # SOURCEDIRS   : Directories containing the source (.F) files
2562  # INCLUDEDIRS  : Directories containing the header-source (.h) files  # INCLUDEDIRS  : Directories containing the header-source (.h) files
# Line 2560  cat >>$MAKEFILE <<EOF Line 2576  cat >>$MAKEFILE <<EOF
2576  # LIBS         : Library flags /or/ additional optimization/debugging flags  # LIBS         : Library flags /or/ additional optimization/debugging flags
2577    
2578  ROOTDIR     = ${ROOTDIR}  ROOTDIR     = ${ROOTDIR}
2579  BUILDDIR    = ${BUILDDIR}    BUILDDIR    = ${BUILDDIR}
2580  SOURCEDIRS  = ${SOURCEDIRS}  SOURCEDIRS  = ${SOURCEDIRS}
2581  INCLUDEDIRS = ${INCLUDEDIRS}  INCLUDEDIRS = ${INCLUDEDIRS}
2582  EXEDIR      = ${EXEDIR}  EXEDIR      = ${EXEDIR}
# Line 2641  rm -f F77srclist.tmp nonADF77srclist.tmp Line 2657  rm -f F77srclist.tmp nonADF77srclist.tmp
2657    
2658  echo >> $MAKEFILE  echo >> $MAKEFILE
2659    
2660  # add definitions for preprocessed sources  # add definitions for preprocessed sources
2661  # and note that not all systems allow case sensitive extensions  # and note that not all systems allow case sensitive extensions
2662  # hence the $FS and $FS90 here.  # hence the $FS and $FS90 here.
2663  # for fixed format f90 files we use ff90 or FF90 resp  # for fixed format f90 files we use ff90 or FF90 resp
2664  # but these are not expected to be the original source files  # but these are not expected to be the original source files
2665    
2666  echo 'F77_PP_SRC_FILES = $(F77_SRC_FILES:.F=.'$FS')'      >> $MAKEFILE  echo 'F77_PP_SRC_FILES = $(F77_SRC_FILES:.F=.'$FS')'      >> $MAKEFILE
# Line 2681  output.txt: \$(EXECUTABLE) Line 2697  output.txt: \$(EXECUTABLE)
2697          @printf 'running ... '          @printf 'running ... '
2698          @\$(EXECUTABLE) > \$@          @\$(EXECUTABLE) > \$@
2699    
2700    # remove most of the files that "make" generates
2701  clean:  clean:
2702          -rm -rf *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template          -rm -rf *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template
2703          -rm -rf *.o          -rm -rf *.o
2704          -rm -rf *.$FS *.flowdir          -rm -rf *.$FS *.flowdir
2705          -rm -rf *.f$FS90 *_mod.h *_mod.F90 *.FF90 *.mod-whirl ad_input*          -rm -rf *.f$FS90 \$(AD_CLEAN) ad_input*
2706          -rm -rf temp.sed  
2707    # remove most of the files that "make" and "make depend" generate
2708  Clean:  Clean:
2709          @make clean          @make clean
2710          @make cleanlinks          @make cleanlinks
2711          -rm -f \$(SPECIAL_FILES)          -rm -f \$(SPECIAL_FILES) f90mkdepend.log
         -rm -f genmake_state genmake_*optfile genmake_warnings make.log run.log f90mkdepend.log *.bak  
2712          -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
2713    
2714    # remove also the executable, files that "genmake2" generates (except Makefile)
2715    #         and output from a run (plus output and log files from testreport)
2716  CLEAN:  CLEAN:
2717          @make Clean          @make Clean
2718            -rm -f \$(EXECUTABLE) \$(EXE_AD) *.bak "$MAKEFILE.old"
2719            -rm -f genmake_state genmake_*optfile genmake_warnings genmake_errors
2720            -rm -f genmake.log make.log run.log
2721          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;
2722          -find \$(EXEDIR) -name "*.data" -exec rm {} \;          -find \$(EXEDIR) -name "*.data" -exec rm {} \;
2723          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;
2724          -rm -f \$(EXECUTABLE) \$(EXE_AD) *.txt STD* *diagnostics.log datetime          -rm -f *.txt STD* *diagnostics.log datetime
2725          -rm -f *_MIT_CE_000.opt0000 costfunction*0000          -rm -f *_MIT_CE_000.opt0000 costfunction*0000
2726          -rm -rf mnc_test_*          -rm -rf mnc_test_*
2727    
# Line 2733  if test "x$EMBED_SRC" = xt ; then Line 2756  if test "x$EMBED_SRC" = xt ; then
2756    
2757  decode_files.o : EMBEDDED_FILES.h  decode_files.o : EMBEDDED_FILES.h
2758    
2759  ##  \$(F77_PP_SRC_FILES)  ##  \$(F77_PP_SRC_FILES)
2760  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
2761          @echo Creating \$@ ...          @echo Creating \$@ ...
2762          -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 2784  EOF Line 2807  EOF
2807  #===  Automatic Differentiation Rules  ===  #===  Automatic Differentiation Rules  ===
2808  #===  for TAMC/TAF  ======================  #===  for TAMC/TAF  ======================
2809    
2810  if test "x$OPENAD" = x ; then  if test "x$OPENAD" = x ; then
2811    
2812  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2813    
# Line 2825  adall: \$(EXE_AD) Line 2848  adall: \$(EXE_AD)
2848  adtaf: ad_taf_output.$FS  adtaf: ad_taf_output.$FS
2849  adtamc: ad_tamc_output.$FS  adtamc: ad_tamc_output.$FS
2850    
2851  ad_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES)  ad_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES) \$(AD_FLOW_FILES)
2852          @$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
2853          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
2854          -rm -f ad_config.template          -rm -f ad_config.template
2855          @make \$(F77_PP_SRC_FILES)          @make \$(F77_PP_SRC_FILES)
2856          @make \$(FLOFILES)          @make \$(FLOFILES)
2857          cat \$(FLOFILES) \$(AD_FILES) > ad_input_code.$FS          cat \$(FLOFILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ad_input_code.$FS
2858    
2859  ad_taf_output.$FS: ad_input_code.$FS  ad_taf_output.$FS: ad_input_code.$FS
2860          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
# Line 2844  adtafonly: Line 2867  adtafonly:
2867          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
2868    
2869  \${EXE_AD}: ad_taf_output.o \$(OBJFILES)  \${EXE_AD}: ad_taf_output.o \$(OBJFILES)
2870          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)
2871    
2872  ad_tamc_output.$FS: ad_input_code.$FS  ad_tamc_output.$FS: ad_input_code.$FS
2873          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS
2874          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
2875    
2876  ad_tamc: ad_tamc_output.o \$(OBJFILES)  ad_tamc: ad_tamc_output.o \$(OBJFILES)
2877          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)
2878    
2879  adonlyfwd:  adonlyfwd:
2880          patch < \$(TOOLSDIR)/ad_taf_output.f.onlyfwd.diff          patch < \$(TOOLSDIR)/ad_taf_output.f.onlyfwd.diff
2881    
2882  adtrick:  adtrick:
2883          patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff          patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff
2884    
# Line 2883  ftltafonly: Line 2906  ftltafonly:
2906          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
2907    
2908  ftl_taf: ftl_taf_output.o \$(OBJFILES)  ftl_taf: ftl_taf_output.o \$(OBJFILES)
2909          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)
2910    
2911  ftl_tamc_output.$FS: ftl_input_code.$FS  ftl_tamc_output.$FS: ftl_input_code.$FS
2912          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS
2913          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
2914    
2915  ftl_tamc: ftl_tamc_output.o \$(OBJFILES)  ftl_tamc: ftl_tamc_output.o \$(OBJFILES)
2916          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_tamc_output.o \$(LIBS)          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_tamc_output.o \$(LIBS)
2917    
2918    
2919  # ... SVD ...  # ... SVD ...
# Line 2919  svd_touch: Line 2942  svd_touch:
2942    
2943  EOF  EOF
2944    
2945  fi  fi
2946    
2947  #===  for OpenAD  ========================  #===  for OpenAD  ========================
2948    
2949  if test "x$OPENAD" != x ; then  if test "x$OPENAD" != x ; then
2950    
2951  # ============ begin OpenAD specific section ==============  # ============ begin OpenAD specific section ==============
2952    
2953  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2954    
2955  # all the source files linked from the various locations:  # all the source files linked from the various locations:
2956  ALL_LINKED_FILES= \  ALL_LINKED_FILES= \
2957  \$(F77_SRC_FILES) \  \$(F77_SRC_FILES) \
2958  \$(C_SRC_FILES) \  \$(C_SRC_FILES) \
# Line 2981  rm -f adSrcFiles.tmp Line 3004  rm -f adSrcFiles.tmp
3004    
3005  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
3006    
3007  adAll: \$(EXE_AD)  adAll: \$(EXE_AD)
3008  .PHONY: adAll  .PHONY: adAll
3009    
3010  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 2999  w2f__types.F90 \ Line 3022  w2f__types.F90 \
3022  OAD_active.F90 \  OAD_active.F90 \
3023  OAD_cp.F90 \  OAD_cp.F90 \
3024  OAD_rev.F90 \  OAD_rev.F90 \
3025  OAD_tape.F90          OAD_tape.F90
3026    
3027  OPENAD_SUPPORT_C_SRC_FILES = \  OPENAD_SUPPORT_C_SRC_FILES = \
3028  iaddr.c \  iaddr.c \
# Line 3008  timeRatio.c Line 3031  timeRatio.c
3031  f95_test_mods.f90: \$(OPENAD_SUPPORT_F90_SRC_FILES:F90=$FS90)  f95_test_mods.f90: \$(OPENAD_SUPPORT_F90_SRC_FILES:F90=$FS90)
3032          cat \$^ > \$@          cat \$^ > \$@
3033    
3034  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
3035          cat \$^ > \$@          cat \$^ > \$@
3036    
3037  f95_test.out: f95_test_mods.f90 f95_test.f90  f95_test.out: f95_test_mods.f90 f95_test.f90
3038          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
3039          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
3040    
3041  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
3042    # postProcessor and its inclusion sets the
3043    # variable POSTPROCESSEDFILES
3044    # used below. Because the file is made during
3045    # make it won't be read until the second (recursive)
3046    # invocation in the rule below
3047    -include postProcess.make
3048    
3049    AD_OBJ_FILES_S1=\$(OPENAD_SUPPORT_F90_SRC_FILES:.F90=.o) \$(OPENAD_SUPPORT_C_SRC_FILES:.c=.o) \$(POSTPROCESSEDFILES:.f$FS90=.o)
3050    
3051    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)
3052    
3053    postProcess.comp: \$(ALL_LINKED_FILES) \$(addsuffix _mod.h, \$(CB2M_F90_SRC_NAMES)) postProcess.tag \$(AD_OBJ_FILES_S1)
3054    ifeq (\$(MAKELEVEL),0)
3055            \$(MAKE) adAll
3056    else
3057            touch \$@
3058    endif
3059    
3060  \$(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)
3061          @echo Creating \$@ ...  ifeq (\$(MAKELEVEL),1)
3062          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES_S2) \$(LIBS)
3063    else
3064            touch \$@
3065    endif
3066    
3067  # makefile debug rule  # makefile debug rule
3068  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
3069  .PHONY: openad  .PHONY: openad
3070    
3071  # create the module files  # create the module files
3072  %_mod.FF90 : %.h ../OAD_support/cb2mGetModules.csh ../OAD_support/cb2mGetModules.awk  %_mod.FF90 : %.h ../OAD_support/cb2mGetModules.csh ../OAD_support/cb2mGetModules.awk
3073          ../OAD_support/cb2mGetModules.csh $< ../OAD_support/cb2mGetModules.awk          ../OAD_support/cb2mGetModules.csh $< ../OAD_support/cb2mGetModules.awk
3074    
3075  # create the header files  # create the header files
3076  %_mod.h : %.h ../OAD_support/cb2mGetHeaders.csh ../OAD_support/cb2mGetHeaders.awk  %_mod.h : %.h ../OAD_support/cb2mGetHeaders.csh ../OAD_support/cb2mGetHeaders.awk
3077          ../OAD_support/cb2mGetHeaders.csh $< ../OAD_support/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)          ../OAD_support/cb2mGetHeaders.csh $< ../OAD_support/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)
3078    
3079  # change everybody else to use the new module files:  # change everybody else to use the new module files:
# Line 3049  ad_output.txt: \$(EXE_AD) Line 3092  ad_output.txt: \$(EXE_AD)
3092          @./\$(EXE_AD) > \$@          @./\$(EXE_AD) > \$@
3093    
3094  CB2M_AD_FILES=\$(AD_FILES:.f=_cb2m.f$FS90)  CB2M_AD_FILES=\$(AD_FILES:.f=_cb2m.f$FS90)
3095  ad_input_code.f$FS90: ../OAD_support/maxMinDefs.f \$(CB2M_AD_FILES)  ad_input_code.f$FS90:  \$(CB2M_AD_FILES)
3096          cat \$^ > \$@          cat \$^ > \$@
3097    
3098  # strip all comments and blanks to reduce  # strip all comments and blanks to reduce
3099  # the file size in order to reduce perl's memory requirements  # the file size in order to reduce perl's memory requirements
3100  ad_input_code_sf.f$FS90 : ad_input_code.f$FS90  ad_input_code_sf.f$FS90 : ad_input_code.f$FS90
3101          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 > \$@
3102    
3103  # mfef90 preprocessing  # mfef90 preprocessing
3104  # expand statement functions  # expand statement functions
3105  # expose mfef90 specific substring handling  # expose mfef90 specific substring handling
3106  # add the w2f__types module  # add the w2f__types module
3107  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
3108          ./mfef90 -r8 -z -F -N132 \$<          ./mfef90 -r8 -z -F -N132 \$<
3109          mv \$<.B \$(basename \$<).B          mv \$<.B \$(basename \$<).B
3110          ./whirl2f -openad \$(basename \$<).B          ./whirl2f -openad \$(basename \$<).B
3111          cat w2f__types.f90 \$(basename \$<).w2f.f > \$@          cat w2f__types.f90 \$(basename \$<).w2f.f > \$@
3112    
3113  # canonicalizer  # canonicalizer
3114  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
3115          ./preProcess.py -H -S \$< -o \$@          ./preProcess.py --timing --r8 -H -S \$< -o \$@
3116    
3117  # F -> WHIRL  # F -> WHIRL
3118  # note that the canonicalized version cuts off at col 72  # note that the canonicalized version cuts off at col 72
3119  # doing this also for string constants which is ok as long  # doing this also for string constants which is ok as long
3120  # as we are in fixed mode and cut of exactly there.  # as we are in fixed mode and cut of exactly there.
3121  # Otherwise mfef90 patches in spaces to fill up to 72 (or 132)  # Otherwise mfef90 patches in spaces to fill up to 72 (or 132)
3122  # characters respectively.  # characters respectively.
3123  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
3124          ./mfef90 -r8 -z -F \$<          ./mfef90 -r8 -z -F \$<
# Line 3091  ad_input_code_sf.w2f.pre.xb.xaif : ad_in Line 3134  ad_input_code_sf.w2f.pre.xb.xaif : ad_in
3134    
3135  # XAIF' -> WHIRL'  # XAIF' -> WHIRL'
3136  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
3137          ./xaif2whirl --debug 1 --structured ad_input_code_sf.w2f.pre.B \$<          ./xaif2whirl --debug 1 ad_input_code_sf.w2f.pre.B \$<
3138    
3139  # WHIRL' -> F'  # WHIRL' -> F'
3140  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
3141          ./whirl2f -FLIST:ftn_file=\$@ -openad \$<          ./whirl2f -FLIST:ftn_file=\$@ -openad \$<
3142    
3143  # insert template directives  # insert template directives
3144  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 3103  ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f Line 3146  ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f
3146    
3147  PPEXTRAS=\$(wildcard ../OAD_support/ad_template.*.F) ../OAD_support/ad_inline.F  PPEXTRAS=\$(wildcard ../OAD_support/ad_template.*.F) ../OAD_support/ad_inline.F
3148  # postprocess F'  # postprocess F'
3149  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)
3150          perl multi-pp.pl -inline=../OAD_support/ad_inline.f \$<          # the target is a placeholder to signal execution of the rule
3151          # the postprocessor still gets the name wrong          touch \$@
3152          cat \$<.pp | sed 's/RETURN//' > \$@          # this step also creates the file postProcess.make but we cannot
3153            # name it as the target or else make will try to remake it for
3154  # extract all transformed modules          # the include directive above for any rule, e.g. make clean
3155  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' > \$@  
3156    
3157  # setup some links  # setup some links
3158  %.xsd:  %.xsd:
3159          \$(LN) \${XAIFSCHEMAROOT}/schema/\$@ .          \$(LN) \${XAIFSCHEMAROOT}/schema/\$@ .
3160    
3161  mfef90:  mfef90:
3162          \$(LN) \${OPEN64ROOT}/crayf90/sgi/mfef90 .          \$(LN) \${OPEN64ROOT}/crayf90/sgi/mfef90 .
3163    
3164  # link the support files:  # link the support files:
3165  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES):  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES):
3166          \$(LN) ../OAD_support/\$@ .          \$(LN) ../OAD_support/\$@ .
3167    
3168  whirl2xaif xaif2whirl:  whirl2xaif xaif2whirl:
3169          \$(LN) \${OPENADFORTTK}/bin/\$@ .          \$(LN) \${OPENADFORTTK}/bin/\$@ .
3170    
3171  %.pl:  preProcess.py postProcess.py:
         \$(LN) \${OPENADFORTTK}/bin/\$@ .  
   
 preProcess.py:  
3172          \$(LN) \${OPENADFORTTK_BASE}/tools/SourceProcessing/\$@ .          \$(LN) \${OPENADFORTTK_BASE}/tools/SourceProcessing/\$@ .
3173    
3174  whirl2f whirl2f_be:  whirl2f whirl2f_be:
# Line 3145  whirl2f whirl2f_be: Line 3177  whirl2f whirl2f_be:
3177  oadDriver:  oadDriver:
3178          \$(LN) \${XAIFBOOSTERROOT}/xaifBooster/algorithms/BasicBlockPreaccumulationReverse/driver/oadDriver \$@          \$(LN) \${XAIFBOOSTERROOT}/xaifBooster/algorithms/BasicBlockPreaccumulationReverse/driver/oadDriver \$@
3179    
3180    AD_CLEAN += *_mod.h *_mod.F90 *.FF90 *.mod-whirl temp.sed oad_cp.* postProcess.make postProcess.tag postProcess.comp \$(PPEXTRAS:.F=.f)
3181    
3182  # ============ end OpenAD specific section ==============  # ============ end OpenAD specific section ==============
3183    
3184  EOF  EOF
# Line 3188  printf "\n\n# DO NOT DELETE\n" >> $MAKEF Line 3222  printf "\n\n# DO NOT DELETE\n" >> $MAKEF
3222  printf "\n===  Done  ===\n"  printf "\n===  Done  ===\n"
3223    
3224  # Create special header files  # Create special header files
3225  $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"
3226  if test ! -f $PACKAGES_DOT_H ; then  if test ! -f $PACKAGES_DOT_H ; then
3227      mv -f $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H      mv -f $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H
3228  else  else

Legend:
Removed from v.1.187  
changed lines
  Added in v.1.210

  ViewVC Help
Powered by ViewVC 1.1.22