/[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.231 by jmc, Fri Jul 6 18:55:13 2012 UTC revision 1.250 by jmc, Fri Apr 5 21:10:55 2013 UTC
# Line 17  Usage: "$0" [OPTIONS] Line 17  Usage: "$0" [OPTIONS]
17    where [OPTIONS] can be:    where [OPTIONS] can be:
18    
19      -help | --help | -h | --h      -help | --help | -h | --h
20            Print this help message and exit.            Print this help message and exit.
21    
22      -adoptfile NAME | --adoptfile NAME | -adof NAME | --adof NAME      -adoptfile NAME | --adoptfile NAME | -adof NAME | --adof NAME
23        -adoptfile=NAME | --adoptfile=NAME | -adof=NAME | --adof=NAME        -adoptfile=NAME | --adoptfile=NAME | -adof=NAME | --adof=NAME
24            Use "NAME" as the adoptfile.  By default, the file at            Use "NAME" as the adoptfile.  By default, the file at
25            "tools/adjoint_options/adjoint_default" will be used.            "tools/adjoint_options/adjoint_default" will be used.
26    
27      -nooptfile | --nooptfile      -nooptfile | --nooptfile
28        -optfile NAME | --optfile NAME | -of NAME | --of NAME        -optfile NAME | --optfile NAME | -of NAME | --of NAME
29        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME
30            Use "NAME" as the optfile.  By default, an attempt will be            Use "NAME" as the optfile.  By default, an attempt will be
31            made to find an appropriate "standard" optfile in the            made to find an appropriate "standard" optfile in the
32            tools/build_options/ directory.            tools/build_options/ directory.
33    
34      -pdepend NAME | --pdepend NAME      -pdepend NAME | --pdepend NAME
35        -pdepend=NAME | --pdepend=NAME        -pdepend=NAME | --pdepend=NAME
36            Get package dependency information from "NAME".            Get package dependency information from "NAME".
37    
38      -pgroups NAME | --pgroups NAME      -pgroups NAME | --pgroups NAME
39        -pgroups=NAME | --pgroups=NAME        -pgroups=NAME | --pgroups=NAME
40            Get the package groups information from "NAME".            Get the package groups information from "NAME".
41    
42      -bash NAME      -bash NAME
43            Explicitly specify the Bourne or BASH shell to use            Explicitly specify the Bourne or BASH shell to use
44    
45      -make NAME | -m NAME      -make NAME | -m NAME
46        --make=NAME | -m=NAME        --make=NAME | -m=NAME
47            Use "NAME" for the MAKE program. The default is "make" but            Use "NAME" for the MAKE program. The default is "make" but
48            many platforms, "gmake" is the preferred choice.            many platforms, "gmake" is the preferred choice.
49    
50      -makefile NAME | -mf NAME      -makefile NAME | -mf NAME
51        --makefile=NAME | -mf=NAME        --makefile=NAME | -mf=NAME
52            Call the makefile "NAME".  The default is "Makefile".            Call the makefile "NAME".  The default is "Makefile".
53    
54      -makedepend NAME | -md NAME      -makedepend NAME | -md NAME
55        --makedepend=NAME | -md=NAME        --makedepend=NAME | -md=NAME
56            Use "NAME" for the MAKEDEPEND program.            Use "NAME" for the MAKEDEPEND program.
57    
58      -rootdir NAME | --rootdir NAME | -rd NAME | --rd NAME      -rootdir NAME | --rootdir NAME | -rd NAME | --rd NAME
59        -rootdir=NAME | --rootdir=NAME | -rd=NAME | --rd=NAME        -rootdir=NAME | --rootdir=NAME | -rd=NAME | --rd=NAME
60            Specify the location of the MITgcm ROOTDIR as "NAME".            Specify the location of the MITgcm ROOTDIR as "NAME".
61            By default, genamke will try to find the location by            By default, genamke will try to find the location by
62            looking in parent directories (up to the 5th parent).            looking in parent directories (up to the 5th parent).
63    
64      -mods NAME | --mods NAME | -mo NAME | --mo NAME      -mods NAME | --mods NAME | -mo NAME | --mo NAME
65        -mods=NAME | --mods=NAME | -mo=NAME | --mo=NAME        -mods=NAME | --mods=NAME | -mo=NAME | --mo=NAME
66            Here, "NAME" specifies a list of directories that are            Here, "NAME" specifies a list of directories that are
67            used for additional source code.  Files found in the            used for additional source code.  Files found in the
68            "mods list" are given preference over files of the same            "mods list" are given preference over files of the same
69            name found elsewhere.            name found elsewhere.
70    
71      -disable NAME | --disable NAME      -disable NAME | --disable NAME
72        -disable=NAME | --disable=NAME        -disable=NAME | --disable=NAME
73            Here "NAME" specifies a list of packages that we don't            Here "NAME" specifies a list of packages that we don't
74            want to use.  If this violates package dependencies,            want to use.  If this violates package dependencies,
75            genamke will exit with an error message.            genamke will exit with an error message.
76    
77      -enable NAME | --enable NAME      -enable NAME | --enable NAME
78        -enable=NAME | --enable=NAME        -enable=NAME | --enable=NAME
79            Here "NAME" specifies a list of packages that we wish            Here "NAME" specifies a list of packages that we wish
80            to specifically enable.  If this violates package            to specifically enable.  If this violates package
81            dependencies, genamke will exit with an error message.            dependencies, genamke will exit with an error message.
82    
83      -standarddirs NAME | --standarddirs NAME      -standarddirs NAME | --standarddirs NAME
84        -standarddirs=NAME | --standarddirs=NAME        -standarddirs=NAME | --standarddirs=NAME
85            Here, "NAME" specifies a list of directories to be            Here, "NAME" specifies a list of directories to be
86            used as the "standard" code.            used as the "standard" code.
87    
88      -fortran NAME | --fortran NAME | -fc NAME | --fc NAME      -fortran NAME | --fortran NAME | -fc NAME | --fc NAME
89        -fc=NAME | --fc=NAME        -fc=NAME | --fc=NAME
90            Use "NAME" as the fortran compiler.  By default, genmake            Use "NAME" as the fortran compiler.  By default, genmake
91            will search for a working compiler by trying a list of            will search for a working compiler by trying a list of
92            "usual suspects" such as g77, f77, etc.            "usual suspects" such as g77, f77, etc.
93    
94      -cc NAME | --cc NAME | -cc=NAME | --cc=NAME      -cc NAME | --cc NAME | -cc=NAME | --cc=NAME
95            Use "NAME" as the C compiler.  By default, genmake            Use "NAME" as the C compiler.  By default, genmake
96            will search for a working compiler by trying a list of            will search for a working compiler by trying a list of
97            "usual suspects" such as gcc, c89, cc, etc.            "usual suspects" such as gcc, c89, cc, etc.
98    
99      -use_real4 | -use_r4 | -ur4 | --use_real4 | --use_r4 | --ur4      -use_real4 | -use_r4 | -ur4 | --use_real4 | --use_r4 | --ur4
100            Use "real*4" type for _RS variable (#undef REAL4_IS_SLOW)            Use "real*4" type for _RS variable (#undef REAL4_IS_SLOW)
101            *only* works if CPP_EEOPTIONS.h allows this.            *only* works if CPP_EEOPTIONS.h allows this.
102    
103      -ignoretime | -ignore_time | --ignoretime | --ignore_time      -ignoretime | -ignore_time | --ignoretime | --ignore_time
104            Ignore all the "wall clock" routines entirely.  This will            Ignore all the "wall clock" routines entirely.  This will
105            not in any way hurt the model results -- it simply means            not in any way hurt the model results -- it simply means
106            that the code that checks how long the model spends in            that the code that checks how long the model spends in
107            various routines will give junk values.            various routines will give junk values.
108    
109      -ts | --ts      -ts | --ts
110            Produce timing information per timestep            Produce timing information per timestep
111      -papis | --papis      -papis | --papis
112            Produce summary MFlop/s (and IPC) with PAPI per timestep            Produce summary MFlop/s (and IPC) with PAPI per timestep
113      -pcls | --pcls      -pcls | --pcls
114            Produce summary MFlop/s etc. with PCL per timestep            Produce summary MFlop/s etc. with PCL per timestep
115      -foolad | --foolad      -foolad | --foolad
116            Fool the AD code generator            Fool the AD code generator
117      -papi | --papi      -papi | --papi
118            Performance analysis with PAPI            Performance analysis with PAPI
119      -pcl | --pcl      -pcl | --pcl
120            Performance analysis with PCL            Performance analysis with PCL
121      -hpmt | --hpmt      -hpmt | --hpmt
122            Performance analysis with the HPM Toolkit            Performance analysis with the HPM Toolkit
123    
124      -ieee | --ieee      -ieee | --ieee
125            use IEEE numerics.  Note that this option *only* works            use IEEE numerics.  Note that this option *only* works
126            if it is supported by the OPTFILE that is being used.            if it is supported by the OPTFILE that is being used.
127      -devel | --devel      -devel | --devel
128            Add additional warning and debugging flags for development            Add additional warning and debugging flags for development
129            (if supported by the OPTFILE); also switch to IEEE numerics.            (if supported by the OPTFILE); also switch to IEEE numerics.
130      -gsl | --gsl      -gsl | --gsl
131            Use GSL to control floating point rounding and precision            Use GSL to control floating point rounding and precision
132    
133      -mpi | --mpi      -mpi | --mpi
134            Include MPI header files and link to MPI libraries            Include MPI header files and link to MPI libraries
135      -mpi=PATH | --mpi=PATH      -mpi=PATH | --mpi=PATH
136            Include MPI header files and link to MPI libraries using MPI_ROOT            Include MPI header files and link to MPI libraries using MPI_ROOT
137            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
138            from \$PATH/lib and use binaries from \$PATH/bin.            from \$PATH/lib and use binaries from \$PATH/bin.
139    
140      -omp | --omp      -omp | --omp
141            Activate OpenMP code + use Compiler option OMPFLAG            Activate OpenMP code + use Compiler option OMPFLAG
142      -omp=OMPFLAG | --omp=OMPFLAG      -omp=OMPFLAG | --omp=OMPFLAG
143            Activate OpenMP code + use Compiler option OMPFLAG            Activate OpenMP code + use Compiler option OMPFLAG
144    
145      -es | --es | -embed-source | --embed-source      -es | --es | -embed-source | --embed-source
146            Embed a tarball containing the full source code            Embed a tarball containing the full source code
147            (including the Makefile, etc.) used to build the            (including the Makefile, etc.) used to build the
148            executable [off by default]            executable [off by default]
149    
150      -ds | --ds      -ds | --ds
151            Report genmake internal variables status (DUMPSTATE)            Report genmake internal variables status (DUMPSTATE)
152            to file "genmake_state" (for debug purpose)            to file "genmake_state" (for debug purpose)
153    
154    While it is most often a single word, the "NAME" variables specified    While it is most often a single word, the "NAME" variables specified
155    above can in many cases be a space-delimited string such as:    above can in many cases be a space-delimited string such as:
# Line 174  EOF Line 174  EOF
174  test_for_package_in_cpp_options() {  test_for_package_in_cpp_options() {
175      cpp_options=$1      cpp_options=$1
176      pkg=$2      pkg=$2
177      test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_$pkg[ ]"      test_for_string_in_file $cpp_options "^ *# *define *\<ALLOW_$pkg\>"
178      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_$pkg[ ]"      test_for_string_in_file $cpp_options "^ *# *undef *\<ALLOW_$pkg\>"
179      test_for_string_in_file $cpp_options "^[ ]*#define.*DISABLE_$pkg[ ]"      test_for_string_in_file $cpp_options "^ *# *define *\<DISABLE_$pkg\>"
180      test_for_string_in_file $cpp_options "^[ ]*#undef.*DISABLE_$pkg[ ]"      test_for_string_in_file $cpp_options "^ *# *undef *\<DISABLE_$pkg\>"
     test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_$pkg$"  
     test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_$pkg$"  
     test_for_string_in_file $cpp_options "^[ ]*#define.*DISABLE_$pkg$"  
     test_for_string_in_file $cpp_options "^[ ]*#undef.*DISABLE_$pkg$"  
181  }  }
182    
183  # Search for particular CPP #cmds associated with MPI  # Search for particular CPP #cmds associated with MPI
184  # usage: test_for_mpi_in_cpp_eeoptions CPP_file  # usage: test_for_mpi_in_cpp_eeoptions CPP_file
185  test_for_mpi_in_cpp_eeoptions() {  test_for_mpi_in_cpp_eeoptions() {
186      cpp_options=$1      cpp_options=$1
187      test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_USE_MPI[ ]"      test_for_string_in_file $cpp_options "^ *# *define *\<ALLOW_USE_MPI\>"
188      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_USE_MPI[ ]"      test_for_string_in_file $cpp_options "^ *# *undef *\<ALLOW_USE_MPI\>"
     test_for_string_in_file $cpp_options "^[ ]*#define.*ALWAYS_USE_MPI[ ]"  
     test_for_string_in_file $cpp_options "^[ ]*#undef.*ALWAYS_USE_MPI[ ]"  
     test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_USE_MPI$"  
     test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_USE_MPI$"  
     test_for_string_in_file $cpp_options "^[ ]*#define.*ALWAYS_USE_MPI$"  
     test_for_string_in_file $cpp_options "^[ ]*#undef.*ALWAYS_USE_MPI$"  
189  }  }
190    
191  # Search for particular string in a file. Return 1 if detected, 0 if not  # Search for particular string in a file. Return 1 if detected, 0 if not
# Line 203  test_for_mpi_in_cpp_eeoptions() { Line 193  test_for_mpi_in_cpp_eeoptions() {
193  test_for_string_in_file() {  test_for_string_in_file() {
194      file=$1      file=$1
195      strng=$2      strng=$2
196      grep -i "$strng" $file > /dev/null 2>&1      grep "$strng" $file > /dev/null 2>&1
197      RETVAL=$?      RETVAL=$?
198      if test "x${RETVAL}" = x0 ; then      if test "x${RETVAL}" = x0 ; then
199          printf "Error: In $file there is an illegal line: "          printf "Error: In $file there is an illegal line: "
200          grep -i "$strng" $file          grep -i "$strng" $file
201          exit 99          exit 99
202      fi      fi
203      return 0      return 0
# Line 305  EOF Line 295  EOF
295              FS90='fr9'              FS90='fr9'
296              check_for_broken_Ff              check_for_broken_Ff
297          else          else
298              cat <<EOF 2>&1              echo "ERROR: test: '$MAKE -f $MAKEFILE genmake_hello.$tfs' Failed"
299  ERROR: Your file system cannot distinguish between *.F and *.f files              echo "       see simple makefile: '$MAKEFILE' (left here)"
300    (fails the "make/ln" test) and this program cannot find a suitable              echo "  Please check (1) your '$MAKE' command, (2) your '$LN' command"
301    replacement extension.  Please try a different build environment or              echo "           and (3) the allowed sufix '.F' and '.$tfs' in makefile"
302    contact the <MITgcm-support@mitgcm.org> list for help.              echo "  or contact the <MITgcm-support@mitgcm.org> list for help."
303                echo ""
 EOF  
304              exit -1              exit -1
305              return              return
306          fi          fi
# Line 335  look_for_makedepend()  { Line 324  look_for_makedepend()  {
324      #      #
325      #    1) a makedepend implementation shipped with the cyrus-imapd      #    1) a makedepend implementation shipped with the cyrus-imapd
326      #       package:  ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/      #       package:  ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/
327      #      #    2) a local tools/xmakedepend shell script
     #    2) a known-buggy xmakedpend shell script  
328      #      #
329      #  So the choices are, in order:      #  So the choices are, in order:
     #  
330      #    1) use the user-specified program      #    1) use the user-specified program
331      #    2) use a system-wide default      #    2) use the local xmakedepend script (get all dependencies, but slower)
332      #    3) locally build and use the cyrus implementation      #    3) use a system-wide default
333      #    4) fall back to the buggy local xmakedpend script      #    4) locally build and use the cyrus makedepend
334        #             (faster, but can miss some dependencies)
335      #      #
336      echo >> $LOGFILE      echo >> $LOGFILE
337      echo "running: look_for_makedepend()" >> $LOGFILE      echo "running: look_for_makedepend()" >> $LOGFILE
# Line 354  look_for_makedepend()  { Line 342  look_for_makedepend()  {
342              build_cyrus_makedepend              build_cyrus_makedepend
343              RETVAL=$?              RETVAL=$?
344              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" != x0 ; then
345                  echo "WARNING: unable to build cyrus-makedepend. Try 'makedepend'"                  echo "WARNING: unable to build cyrus-makedepend. Try other 'makedepend'"
346                  MAKEDEPEND=                  MAKEDEPEND=
347              fi              fi
348          else          else
# Line 367  look_for_makedepend()  { Line 355  look_for_makedepend()  {
355          fi          fi
356      fi      fi
357      if test "x${MAKEDEPEND}" = x ; then      if test "x${MAKEDEPEND}" = x ; then
         which makedepend > /dev/null 2>&1  
         RV0=$?  
358          test -f $MAKEFILE  &&  mv -f $MAKEFILE $MAKEFILE".tst"          test -f $MAKEFILE  &&  mv -f $MAKEFILE $MAKEFILE".tst"
359          #  echo 'MAKEFILE="'$MAKEFILE'"'          #  echo 'MAKEFILE="'$MAKEFILE'"'
360          cat <<EOF >> $MAKEFILE          cat <<EOF >> $MAKEFILE
# Line 384  EOF Line 370  EOF
370        stop        stop
371        end        end
372  EOF  EOF
373          makedepend -f $MAKEFILE genmake_tc.f > /dev/null 2>&1          $ROOTDIR/tools/xmakedepend -f $MAKEFILE genmake_tc.f > /dev/null 2>&1
374          RV1=$?          RV1=$?
375            which makedepend > /dev/null 2>&1
376            RV2=$?
377            if test "x${RV2}" = x0 ; then
378                makedepend -f $MAKEFILE genmake_tc.f > /dev/null 2>&1
379                RV3=$? ; loc_msg='not working.'
380            else RV3=$RV2 ; loc_msg='not found.'
381            fi
382          test -f $MAKEFILE  &&  rm -f $MAKEFILE          test -f $MAKEFILE  &&  rm -f $MAKEFILE
383          test -f $MAKEFILE".tst"  &&  mv -f $MAKEFILE".tst" $MAKEFILE          test -f $MAKEFILE".tst"  &&  mv -f $MAKEFILE".tst" $MAKEFILE
384          if test "x${RV0}${RV1}" = x00 ; then          echo "  check makedepend (local: $RV1, system: $RV2, $RV3)"
385            if test "x${RV1}" = x0 ; then
386                MAKEDEPEND='$(TOOLSDIR)/xmakedepend'
387                echo " --> set MAKEDEPEND=${MAKEDEPEND}" >> $LOGFILE
388            elif test "x${RV3}" = x0 ; then
389                echo "    local tools/xmakedepend not working. Use system-default makedepend"
390              MAKEDEPEND=makedepend              MAKEDEPEND=makedepend
391              echo " --> set MAKEDEPEND=${MAKEDEPEND}" >> $LOGFILE              echo " --> set MAKEDEPEND=${MAKEDEPEND}" >> $LOGFILE
392          else          else
393              echo "    system-default makedepend not found. Try to build cyrus-makedepend"              echo "    local tools/xmakedepend not working; system-default makedepend $loc_msg"
394                echo -n "    Try to build cyrus-makedepend ..."
395              #  Try to build the cyrus implementation              #  Try to build the cyrus implementation
396              build_cyrus_makedepend              build_cyrus_makedepend
397              RETVAL=$?              RETVAL=$?
398              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" = x0 ; then
399                  echo "WARNING: unable to build cyrus-makedepend. Use local xmakedepend"                  echo "  Works"
400                  MAKEDEPEND='$(TOOLSDIR)/xmakedepend'              else
401                  echo " --> set MAKEDEPEND=${MAKEDEPEND}" >> $LOGFILE                  echo "  Fails" ; echo "" >> $LOGFILE
402                    echo "ERROR: no working makedepend found ; look_for_makedepend FAILED" | tee -a $LOGFILE
403                    echo ""
404                    exit -1
405                    return
406              fi              fi
407          fi          fi
408      fi      fi
# Line 412  build_cyrus_makedepend()  { Line 415  build_cyrus_makedepend()  {
415      (      (
416          cd $ROOTDIR/tools/cyrus-imapd-makedepend  \          cd $ROOTDIR/tools/cyrus-imapd-makedepend  \
417              &&  ./configure > /dev/null 2>&1  \              &&  ./configure > /dev/null 2>&1  \
418              &&  make > /dev/null 2>&1              &&  $MAKE > /dev/null 2>&1
419          if test -x ./makedepend.exe ; then          if test -x ./makedepend.exe ; then
420              $LN ./makedepend.exe ./makedepend              $LN ./makedepend.exe ./makedepend
421          fi          fi
# Line 436  build_embed_encode() Line 439  build_embed_encode()
439  {  {
440      printf "  building the embed-encode utility...  "      printf "  building the embed-encode utility...  "
441      if test ! -e "$ROOTDIR/tools/embed_encode/encode_files" ; then      if test ! -e "$ROOTDIR/tools/embed_encode/encode_files" ; then
442          if test ! -d "$ROOTDIR/tools/embed_encode" ; then          if test ! -d "$ROOTDIR/tools/embed_encode" ; then
443              echo              echo
444              echo "    Error: can't locate \"$ROOTDIR/tools/embed_encode\""              echo "    Error: can't locate \"$ROOTDIR/tools/embed_encode\""
445              echo              echo
446              EMBED_SRC=f              EMBED_SRC=f
447              return 1              return 1
448          fi          fi
449          clist="cc gcc c89 $CC"          clist="cc gcc c89 $CC"
450          for ic in $clist ; do          for ic in $clist ; do
451              comm="$ic -o encode_files encode_files.c"              comm="$ic -o encode_files encode_files.c"
# Line 578  EOF Line 581  EOF
581      if test "x$OPTFILE" = x ; then      if test "x$OPTFILE" = x ; then
582          OPTFILE=$ROOTDIR"/tools/build_options/"$PLATFORM"_"$FC          OPTFILE=$ROOTDIR"/tools/build_options/"$PLATFORM"_"$FC
583          if test ! -r $OPTFILE ; then          if test ! -r $OPTFILE ; then
584               echo "  I looked for the file "$OPTFILE" but did not find it"               echo "  I looked for the file "$OPTFILE" but did not find it"
585          fi          fi
586      fi      fi
587    
588      if test "x$OPTFILE" = x ; then      if test "x$OPTFILE" = x ; then
# Line 597  Error: No options file was found in:  $R Line 600  Error: No options file was found in:  $R
600  EOF  EOF
601          exit 1          exit 1
602      fi      fi
   
 #     # look for possible MPI libraries  
 #     mpi_libs=  
 #     mpi_fort=`which mpif77 2>/dev/null`  
 #     RETVAL=$?  
 #     if test "x${RETVAL}" = x0 ; then  
 #       cat >>test.f <<EOF  
 #       PROGRAM HELLO  
 #       DO 10, I=1,10  
 #       PRINT *,'Hello World'  
 #    10 CONTINUE  
 #       STOP  
 #       END  
 # EOF  
 #       eval "$mpi_fort -showme test.f > out"  
 #       RETVAL=$?  
 #       if test "x${RETVAL}" = x0 ; then  
 #           a=`cat out`  
 #           for i in $a ; do  
 #               case $i in  
 #                   -*)  
 #                       mpi_libs="$mpi_libs $i" ;;  
 #               esac  
 #           done  
 #           echo "The MPI libs appear to be:"  
 #           echo "  "$mpi_libs  
 #       fi  
 #       rm -f test.f out  
 #     fi  
603  }  }
604    
605  #  Parse the package dependency information  #  Parse the package dependency information
# Line 650  get_fortran_c_namemangling()  { Line 624  get_fortran_c_namemangling()  {
624    
625      #echo "FC_NAMEMANGLE = \"$FC_NAMEMANGLE\""      #echo "FC_NAMEMANGLE = \"$FC_NAMEMANGLE\""
626      if test ! "x$FC_NAMEMANGLE" = x ; then      if test ! "x$FC_NAMEMANGLE" = x ; then
627          return 0          return 0
628      fi      fi
629      echo " running: get_fortran_c_namemangling()" >> $LOGFILE      echo " running: get_fortran_c_namemangling()" >> $LOGFILE
630    
# Line 947  check_netcdf_libs()  { Line 921  check_netcdf_libs()  {
921        program fgennc        program fgennc
922  #include "netcdf.inc"  #include "netcdf.inc"
923  EOF  EOF
924      if test ! "x$MPI" = x ; then     #if test ! "x$MPI" = x ; then
925          echo '#include "mpif.h"' >> genmake_tnc.F     #    echo '#include "mpif.h"' >> genmake_tnc.F
926      fi     #fi
927      cat <<EOF >> genmake_tnc.F      cat <<EOF >> genmake_tnc.F
928        integer iret, ncid, xid        integer iret, ncid, xid
929        iret = nf_create('genmake_tnc.nc', NF_CLOBBER, ncid)        iret = nf_create('genmake_tnc.nc', NF_CLOBBER, ncid)
# Line 1029  EOF Line 1003  EOF
1003      echo " --> set HAVE_NETCDF='$HAVE_NETCDF'" >> $LOGFILE      echo " --> set HAVE_NETCDF='$HAVE_NETCDF'" >> $LOGFILE
1004  }  }
1005    
1006    check_lapack_libs()  {
1007        if test ! "x$SKIP_LAPACK_CHECK" = x ; then
1008            return
1009        fi
1010        echo >> $LOGFILE
1011        echo "running: check_lapack_libs()" >> $LOGFILE
1012        cat <<EOF > genmake_tla.F
1013          program fgenla
1014          integer info
1015          integer ipiv( 2 )
1016          double precision ab( 4, 2 ), b( 2 )
1017          data ab / 0., 0., 1., 2., 0., 2., 1., 0. /
1018          data b / 1., 1. /
1019          call dgbsv( 2, 1, 1, 1, ab, 4, ipiv, b, 2, info )
1020          IF (info .NE. 0) write(*,*) 'Error:', info
1021          write(*,*) b
1022          end
1023    EOF
1024        echo "===  genmake_tla.F  >>>" > genmake_tla.log
1025        cat genmake_tla.F >> genmake_tla.log
1026        echo "<<<  genmake_tla.F  ===" >> genmake_tla.log
1027        RET_CPP=f
1028        COMM="cat genmake_tla.F | $CPP $DEFINES $INCLUDES"
1029        echo "$COMM" >> genmake_tla.log
1030        eval $COMM > genmake_tla.$FS 2>/dev/null  &&  RET_CPP=t
1031        if test "x$RET_CPP" = xf ; then
1032            echo "  WARNING: CPP failed to pre-process the lapack test." \
1033                >> genmake_tla.log
1034            echo "    Please check that \$INCLUDES is properly set." \
1035                >> genmake_tla.log
1036        fi
1037        echo "$FC $FFLAGS $FOPTIM -c genmake_tla.$FS  \ " >> genmake_tla.log
1038        echo "  &&  $LINK $FFLAGS $FOPTIM -o genmake_tla.o $LIBS" >> genmake_tla.log
1039        $FC $FFLAGS $FOPTIM -c genmake_tla.$FS >> genmake_tla.log 2>&1  \
1040            &&  $LINK $FFLAGS $FOPTIM -o genmake_tla genmake_tla.o $LIBS >> genmake_tla.log 2>&1
1041        RET_COMPILE=$?
1042        cat genmake_tla.log >> $LOGFILE
1043    
1044        # test program execution not always possible (see check_netcdf_libs)
1045        #
1046        #test -x ./genmake_tla  &&  ./genmake_tla >> genmake_tla.log 2>&1
1047        #RETVAL=$?
1048        #if test "x$RET_COMPILE" = x0 -a "x$RETVAL" = x0 ; then
1049    
1050        if test "x$RET_COMPILE" = x0 ; then
1051            HAVE_LAPACK=t
1052            echo "check_lapack: successful" >> $LOGFILE
1053        else
1054            # try again with "-llapack" added to the libs
1055            echo "==> try again with added '-llapack'" > genmake_tla.log
1056            echo "cat genmake_tla.F | $CPP $DEFINES $INCLUDES > genmake_tla.$FS \ " >> genmake_tla.log
1057            echo " &&  $FC $FFLAGS $FOPTIM -c genmake_tla.$FS \ " >> genmake_tla.log
1058            echo " &&  $LINK $FFLAGS $FOPTIM -o genmake_tla genmake_tla.o $LIBS -llapack" >> genmake_tla.log
1059            cat genmake_tla.F | $CPP $DEFINES $INCLUDES > genmake_tla.$FS 2>/dev/null  \
1060                &&  $FC $FFLAGS $FOPTIM -c genmake_tla.$FS >> genmake_tla.log 2>&1  \
1061                &&  $LINK $FFLAGS $FOPTIM -o genmake_tla genmake_tla.o $LIBS -llapack >> genmake_tla.log 2>&1
1062            RET_COMPILE=$?
1063            echo >> $LOGFILE
1064            cat genmake_tla.log >> $LOGFILE
1065            if test "x$RET_COMPILE" = x0 ; then
1066                LIBS="$LIBS -llapack"
1067                HAVE_LAPACK=t
1068                echo "check_lapack: successful" >> $LOGFILE
1069            else
1070            # try again with "-lf77blas -lcblas" added to the libs
1071                echo "==> try again with added '-llapack -lf77blas -lcblas'" > genmake_tla.log
1072                echo "cat genmake_tla.F | $CPP $DEFINES $INCLUDES > genmake_tla.$FS \ " >> genmake_tla.log
1073                echo " &&  $FC $FFLAGS $FOPTIM -c genmake_tla.$FS \ " >> genmake_tla.log
1074                echo " &&  $LINK $FFLAGS $FOPTIM -o genmake_tla genmake_tla.o $LIBS -llapack -lf77blas -lcblas" >> genmake_tla.log
1075                cat genmake_tla.F | $CPP $DEFINES $INCLUDES > genmake_tla.$FS 2>/dev/null  \
1076                    &&  $FC $FFLAGS $FOPTIM -c genmake_tla.$FS >> genmake_tla.log 2>&1  \
1077                    &&  $LINK $FFLAGS $FOPTIM -o genmake_tla genmake_tla.o $LIBS -llapack -lf77blas -lcblas >> genmake_tla.log 2>&1
1078                RET_COMPILE=$?
1079                echo >> $LOGFILE
1080                cat genmake_tla.log >> $LOGFILE
1081                if test "x$RET_COMPILE" = x0 ; then
1082                    LIBS="$LIBS -llapack -lf77blas -lcblas"
1083                    HAVE_LAPACK=t
1084                    echo "check_lapack: successful" >> $LOGFILE
1085                else
1086                # try again with "-latlas" added to the libs
1087                    echo "==> try again with added '-llapack -lf77blas -lcblas -latlas'" > genmake_tla.log
1088                    echo "cat genmake_tla.F | $CPP $DEFINES $INCLUDES > genmake_tla.$FS \ " >> genmake_tla.log
1089                    echo " &&  $FC $FFLAGS $FOPTIM -c genmake_tla.$FS \ " >> genmake_tla.log
1090                    echo " &&  $LINK $FFLAGS $FOPTIM -o genmake_tla genmake_tla.o $LIBS -llapack -lf77blas -lcblas -latlas" >> genmake_tla.log
1091                    cat genmake_tla.F | $CPP $DEFINES $INCLUDES > genmake_tla.$FS 2>/dev/null  \
1092                        &&  $FC $FFLAGS $FOPTIM -c genmake_tla.$FS >> genmake_tla.log 2>&1  \
1093                        &&  $LINK $FFLAGS $FOPTIM -o genmake_tla genmake_tla.o $LIBS -llapack -lf77blas -lcblas -latlas >> genmake_tla.log 2>&1
1094                    RET_COMPILE=$?
1095                    echo >> $LOGFILE
1096                    cat genmake_tla.log >> $LOGFILE
1097                    if test "x$RET_COMPILE" = x0 ; then
1098                        LIBS="$LIBS -llapack -lf77blas -lcblas -latlas"
1099                        HAVE_LAPACK=t
1100                        echo "check_lapack: successful" >> $LOGFILE
1101                    fi
1102                fi
1103            fi
1104        fi
1105        rm -f genmake_tla*
1106        echo " --> set HAVE_LAPACK='$HAVE_LAPACK'" >> $LOGFILE
1107    }
1108    
1109    check_HAVE_FLUSH()  {
1110        if test ! "x$SKIP_CHECK_FLUSH" = x ; then
1111            return
1112        fi
1113        echo >> $LOGFILE
1114        echo "running: check_HAVE_FLUSH()" >> $LOGFILE
1115        cat <<EOF > genmake_tflsh.$FS
1116          program fgenflsh
1117          integer iounit
1118          character*9 fname
1119          iounit = 26
1120          fname = 'tmp.tflsh'
1121          open(iounit,FILE=fname,STATUS='unknown')
1122          write(iounit,*) 'genmake_tflsh: hello'
1123          call flush(iounit)
1124          close(iounit)
1125          end
1126    EOF
1127        echo "===  genmake_tflsh.$FS  >>>" > genmake_tflsh.log
1128        cat genmake_tflsh.$FS >> genmake_tflsh.log
1129        echo "<<<  genmake_tflsh.$FS  ===" >> genmake_tflsh.log
1130    
1131        echo "$FC $FFLAGS $FOPTIM -c genmake_tflsh.$FS  \ " >> genmake_tflsh.log
1132        echo "  &&  $LINK $FFLAGS $FOPTIM -o genmake_tflsh.o $LIBS" >> genmake_tflsh.log
1133        $FC $FFLAGS $FOPTIM -c genmake_tflsh.$FS >> genmake_tflsh.log 2>&1  \
1134            &&  $LINK $FFLAGS $FOPTIM -o genmake_tflsh genmake_tflsh.o $LIBS >> genmake_tflsh.log 2>&1
1135        RET_COMPILE=$?
1136    
1137        if test "x$RET_COMPILE" = x0 ; then
1138            HAVE_FLUSH=t
1139            #cat genmake_tflsh.log >> $LOGFILE
1140            echo "  check_HAVE_FLUSH: successful" >> $LOGFILE
1141        else
1142            HAVE_FLUSH=f
1143            cat genmake_tflsh.log >> $LOGFILE
1144        fi
1145        rm -f genmake_tflsh*
1146        echo " --> set HAVE_FLUSH='$HAVE_FLUSH'" >> $LOGFILE
1147    }
1148    
1149  ###############################################################################  ###############################################################################
1150  #   Sequential part of script starts here  #   Sequential part of script starts here
# Line 1086  GSL= Line 1202  GSL=
1202  DEVEL=  DEVEL=
1203  HAVE_TEST_L=  HAVE_TEST_L=
1204    
1205    # comment this line out to enable lapack test
1206    SKIP_LAPACK_CHECK=t
1207    
1208  # DEFINES checked by test compilation or command-line  # DEFINES checked by test compilation or command-line
1209  HAVE_SYSTEM=  HAVE_SYSTEM=
1210  HAVE_FDATE=  HAVE_FDATE=
# Line 1096  HAVE_STAT= Line 1215  HAVE_STAT=
1215  HAVE_NETCDF=  HAVE_NETCDF=
1216  HAVE_ETIME=  HAVE_ETIME=
1217  IGNORE_TIME=  IGNORE_TIME=
1218    HAVE_LAPACK=
1219    HAVE_FLUSH=
1220    
1221  MODS=  MODS=
1222  TOOLSDIR=  TOOLSDIR=
# Line 1103  SOURCEDIRS= Line 1224  SOURCEDIRS=
1224  INCLUDEDIRS=  INCLUDEDIRS=
1225  STANDARDDIRS="USE_THE_DEFAULT"  STANDARDDIRS="USE_THE_DEFAULT"
1226    
1227    #- local config file
1228    gm_local="genmake_local"
1229    
1230  G2ARGS=  G2ARGS=
1231  BASH=  BASH=
1232  PWD=`pwd`  PWD=`pwd`
# Line 1139  SVD_TAMC_FLAGS= Line 1263  SVD_TAMC_FLAGS=
1263  TAMC_EXTRA=  TAMC_EXTRA=
1264    
1265  #  The following state can be set directly by command-line switches  #  The following state can be set directly by command-line switches
1266  gm_s1="OPTFILE PKG_DEPEND PKG_GROUPS DISABLE ENABLE MAKEFILE MAKEDEPEND PLATFORM"  gm_s1="ROOTDIR STANDARDDIRS MODS PKG_DEPEND PKG_GROUPS DISABLE ENABLE"
1267  gm_s2="FC CC MPI OMP USE_R4 TS PAPIS PCLS PAPI PCL HPMT IEEE DEVEL GSL FEXTRAFLAGS"  gm_s2="PLATFORM OPTFILE MAKE MAKEFILE MAKEDEPEND FC CC MPI OMP USE_R4"
1268  gm_s3="ROOTDIR STANDARDDIRS MODS DUMPSTATE"  gm_s3="FEXTRAFLAGS IEEE DEVEL GSL TS PAPIS PCLS PAPI PCL HPMT DUMPSTATE"
1269    
1270  #  The following state is not directly set by command-line switches  #  The following state is not directly set by command-line switches
1271  gm_s4="LN S64 LINK MAKE PACKAGES INCLUDES FFLAGS FOPTIM"  gm_s4="LN S64 LINK PACKAGES INCLUDES FFLAGS FOPTIM"
1272  gm_s5="CFLAGS LIBS KPP KFLAGS1 KFLAGS2 KPPFILES NOOPTFILES NOOPTFLAGS"  gm_s5="CFLAGS LIBS KPP KFLAGS1 KFLAGS2 KPPFILES NOOPTFILES NOOPTFLAGS"
1273  gm_s6="TOOLSDIR SOURCEDIRS INCLUDEDIRS EXEDIR EXECUTABLE EXEHOOK"  gm_s6="PWD TOOLSDIR SOURCEDIRS INCLUDEDIRS EXEDIR EXECUTABLE EXEHOOK"
1274  gm_s7="PWD THISHOST THISUSER THISDATE THISVER MACHINE"  gm_s7="THISHOST THISUSER THISDATE THISVER MACHINE FC_NAMEMANGLE"
1275  gm_s8="FC_NAMEMANGLE HAVE_NETCDF HAVE_SYSTEM HAVE_FDATE HAVE_ETIME"  gm_s8="HAVE_NETCDF HAVE_SYSTEM HAVE_FDATE HAVE_ETIME HAVE_LAPACK HAVE_FLUSH"
1276    
1277  #  The following are all related to adjoint/tangent-linear stuff  #  The following are all related to adjoint/tangent-linear stuff
1278  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 1174  LOGFILE="genmake.log" Line 1298  LOGFILE="genmake.log"
1298  rm -f genmake_state genmake_*optfile $LOGFILE  rm -f genmake_state genmake_*optfile $LOGFILE
1299    
1300  echo "===  Processing options files and arguments  ==="  echo "===  Processing options files and arguments  ==="
 gm_local="genmake_local"  
 printf "  getting local config information:  "  
 if test -f $gm_local ; then  
     echo "using $gm_local"  
     . $gm_local  
     # echo "DISABLE=$DISABLE"  
     # echo "ENABLE=$ENABLE"  
 else  
     echo "none found"  
 fi  
1301    
1302  #echo "$0::$1:$2:$3:$4:$5:$6:$7:"  #echo "$0::$1:$2:$3:$4:$5:$6:$7:"
1303  #parse_options  #parse_options
# Line 1202  for ac_option in "$@" ; do Line 1316  for ac_option in "$@" ; do
1316      ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`      ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
1317    
1318      case $ac_option in      case $ac_option in
1319            
1320          -help | --help | -h | --h)          -help | --help | -h | --h)
1321              usage ;;              usage ;;
1322            
1323          -nooptfile | --nooptfile)          -nooptfile | --nooptfile)
1324              OPTFILE="NONE" ;;              OPTFILE="NONE" ;;
1325          -optfile | --optfile | -of | --of)          -optfile | --optfile | -of | --of)
1326              ac_prev=OPTFILE ;;              ac_prev=OPTFILE ;;
1327          -optfile=* | --optfile=* | -of=* | --of=*)          -optfile=* | --optfile=* | -of=* | --of=*)
1328              OPTFILE=$ac_optarg ;;              OPTFILE=$ac_optarg ;;
1329            
1330          -adoptfile | --adoptfile | -adof | --adof)          -adoptfile | --adoptfile | -adof | --adof)
1331              ac_prev=AD_OPTFILE ;;              ac_prev=AD_OPTFILE ;;
1332          -adoptfile=* | --adoptfile=* | -adof=* | --adof=*)          -adoptfile=* | --adoptfile=* | -adof=* | --adof=*)
1333              AD_OPTFILE=$ac_optarg ;;              AD_OPTFILE=$ac_optarg ;;
1334            
1335          -pdepend | --pdepend)          -pdepend | --pdepend)
1336              ac_prev=PKG_DEPEND ;;              ac_prev=PKG_DEPEND ;;
1337          -pdepend=* | --pdepend=*)          -pdepend=* | --pdepend=*)
1338              PKG_DEPEND=$ac_optarg ;;              PKG_DEPEND=$ac_optarg ;;
1339            
1340          -pgroups | --pgroups)          -pgroups | --pgroups)
1341              ac_prev=PKG_GROUPS ;;              ac_prev=PKG_GROUPS ;;
1342          -pgroups=* | --pgroups=*)          -pgroups=* | --pgroups=*)
1343              PKG_GROUPS=$ac_optarg ;;              PKG_GROUPS=$ac_optarg ;;
1344            
1345          -make | --make | -m | --m)          -make | --make | -m | --m)
1346              ac_prev=MAKE ;;              ac_prev=MAKE ;;
1347          -make=* | --make=* | -m=* | --m=*)          -make=* | --make=* | -m=* | --m=*)
1348              MAKE=$ac_optarg ;;              MAKE=$ac_optarg ;;
1349            
1350          -bash | --bash)          -bash | --bash)
1351              ac_prev=BASH ;;              ac_prev=BASH ;;
1352          -bash=* | --bash=*)          -bash=* | --bash=*)
1353              BASH=$ac_optarg ;;              BASH=$ac_optarg ;;
1354            
1355          -makedepend | --makedepend | -md | --md)          -makedepend | --makedepend | -md | --md)
1356              ac_prev=MAKEDEPEND ;;              ac_prev=MAKEDEPEND ;;
1357          -makedepend=* | --makedepend=* | -md=* | --md=*)          -makedepend=* | --makedepend=* | -md=* | --md=*)
1358              MAKEDEPEND=$ac_optarg ;;              MAKEDEPEND=$ac_optarg ;;
1359            
1360          -makefile | --makefile | -ma | --ma)          -makefile | --makefile | -mf | --mf)
1361              ac_prev=MAKEFILE ;;              ac_prev=MAKEFILE ;;
1362          -makefile=* | --makefile=* | -ma=* | --ma=*)          -makefile=* | --makefile=* | -mf=* | --mf=*)
1363              MAKEFILE=$ac_optarg ;;              MAKEFILE=$ac_optarg ;;
1364            
1365          -platform | --platform | -pl | --pl | -platform=* | --platform=* | -pl=* | --pl=*)          -platform | --platform | -pl | --pl | -platform=* | --platform=* | -pl=* | --pl=*)
1366              echo "ERROR: The platform option has been removed.  Please specify"              echo "ERROR: The platform option has been removed.  Please specify"
1367              echo "  the build options using the \"optfile\" mechanism."              echo "  the build options using the \"optfile\" mechanism."
1368              echo              echo
1369              usage              usage
1370              ;;              ;;
1371            
1372          -rootdir | --rootdir | -rd | --rd)          -rootdir | --rootdir | -rd | --rd)
1373              ac_prev=ROOTDIR ;;              ac_prev=ROOTDIR ;;
1374          -rootdir=* | --rootdir=* | -rd=* | --rd=*)          -rootdir=* | --rootdir=* | -rd=* | --rd=*)
1375              ROOTDIR=$ac_optarg ;;              ROOTDIR=$ac_optarg ;;
1376            
1377          -mods | --mods | -mo | --mo)          -mods | --mods | -mo | --mo)
1378              ac_prev=MODS ;;              ac_prev=MODS ;;
1379          -mods=* | --mods=* | -mo=* | --mo=*)          -mods=* | --mods=* | -mo=* | --mo=*)
1380              MODS=$ac_optarg ;;              MODS=$ac_optarg ;;
1381            
1382          -disable | --disable)          -disable | --disable)
1383              ac_prev=DISABLE ;;              ac_prev=DISABLE ;;
1384          -disable=* | --disable=*)          -disable=* | --disable=*)
1385              DISABLE=$ac_optarg ;;              DISABLE=$ac_optarg ;;
1386            
1387          -enable | --enable)          -enable | --enable)
1388              ac_prev=ENABLE ;;              ac_prev=ENABLE ;;
1389          -enable=* | --enable=*)          -enable=* | --enable=*)
1390              ENABLE=$ac_optarg ;;              ENABLE=$ac_optarg ;;
1391            
1392          -standarddirs | --standarddirs)          -standarddirs | --standarddirs)
1393              ac_prev=STANDARDDIRS ;;              ac_prev=STANDARDDIRS ;;
1394          -standarddirs=* | --standarddirs=*)          -standarddirs=* | --standarddirs=*)
# Line 1284  for ac_option in "$@" ; do Line 1398  for ac_option in "$@" ; do
1398  #               ac_prev=cpp ;;  #               ac_prev=cpp ;;
1399  #           -cpp=* | --cpp=*)  #           -cpp=* | --cpp=*)
1400  #               CPP=$ac_optarg ;;  #               CPP=$ac_optarg ;;
1401            
1402          -cc | --cc)          -cc | --cc)
1403              ac_prev=CC ;;              ac_prev=CC ;;
1404          -cc=* | --cc=*)          -cc=* | --cc=*)
1405              CC=$ac_optarg ;;              CC=$ac_optarg ;;
1406            
1407          -fortran | --fortran | -fc | --fc)          -fortran | --fortran | -fc | --fc)
1408              ac_prev=FC ;;              ac_prev=FC ;;
1409          -fc=* | --fc=*)          -fc=* | --fc=*)
1410              FC=$ac_optarg ;;              FC=$ac_optarg ;;
1411            
1412          -fs | --fs)          -fs | --fs)
1413              ac_prev=FS ;;              ac_prev=FS ;;
1414          -fs=* | --fs=*)          -fs=* | --fs=*)
1415              FS=$ac_optarg ;;              FS=$ac_optarg ;;
1416            
1417          -fs90 | --fs90)          -fs90 | --fs90)
1418              ac_prev=FS90 ;;              ac_prev=FS90 ;;
1419          -fs90=* | --fs90=*)          -fs90=* | --fs90=*)
1420              FS90=$ac_optarg ;;              FS90=$ac_optarg ;;
1421            
1422          -use_real4 | -use_r4 | -ur4 | --use_real4 | --use_r4 | --ur4 )          -use_real4 | -use_r4 | -ur4 | --use_real4 | --use_r4 | --ur4 )
1423              USE_R4=true ;;              USE_R4=true ;;
1424    
# Line 1312  for ac_option in "$@" ; do Line 1426  for ac_option in "$@" ; do
1426              IEEE=true ;;              IEEE=true ;;
1427          -noieee | --noieee)          -noieee | --noieee)
1428              echo "Warning: ignore option '$ac_option' (default is already without '-ieee')" ;;              echo "Warning: ignore option '$ac_option' (default is already without '-ieee')" ;;
1429          -devel | --devel)          -devel | --devel)
1430              IEEE=true ; DEVEL=true ;;              IEEE=true ; DEVEL=true ;;
1431          -gsl | --gsl)          -gsl | --gsl)
1432              GSL=true ;;              GSL=true ;;
1433    
1434          -ts | --ts)          -ts | --ts)
# Line 1337  for ac_option in "$@" ; do Line 1451  for ac_option in "$@" ; do
1451          -mpi=* | --mpi=*)          -mpi=* | --mpi=*)
1452              MPIPATH=$ac_optarg              MPIPATH=$ac_optarg
1453              MPI=true ;;              MPI=true ;;
1454            
1455          -omp | --omp)          -omp | --omp)
1456              OMP=true ;;              OMP=true ;;
1457          -omp=* | --omp=*)          -omp=* | --omp=*)
1458              OMPFLAG=$ac_optarg              OMPFLAG=$ac_optarg
1459              OMP=true ;;              OMP=true ;;
1460            
1461          -ds | --ds)          -ds | --ds)
1462              DUMPSTATE=t ;;              DUMPSTATE=t ;;
1463            
1464          -extra_flag | --extra_flag)          -extra_flag | --extra_flag)
1465              ac_prev=FEXTRAFLAGS ;;              ac_prev=FEXTRAFLAGS ;;
1466          -extra_flag=* | --extra_flag=*)          -extra_flag=* | --extra_flag=*)
1467              FEXTRAFLAGS=$ac_optarg ;;              FEXTRAFLAGS=$ac_optarg ;;
1468            
1469          -taf_extra | --taf_extra)          -taf_extra | --taf_extra)
1470              ac_prev=TAF_EXTRA ;;              ac_prev=TAF_EXTRA ;;
1471          -taf_extra=* | --taf_extra=*)          -taf_extra=* | --taf_extra=*)
# Line 1361  for ac_option in "$@" ; do Line 1475  for ac_option in "$@" ; do
1475              ac_prev=TAMC_EXTRA ;;              ac_prev=TAMC_EXTRA ;;
1476          -tamc_extra=* | --tamc_extra=*)          -tamc_extra=* | --tamc_extra=*)
1477              TAMC_EXTRA=$ac_optarg ;;              TAMC_EXTRA=$ac_optarg ;;
1478            
1479          -ignoretime | -ignore_time | --ignoretime | --ignore_time)          -ignoretime | -ignore_time | --ignoretime | --ignore_time)
1480              IGNORE_TIME="-DIGNORE_TIME" ;;              IGNORE_TIME="-DIGNORE_TIME" ;;
1481    
# Line 1372  for ac_option in "$@" ; do Line 1486  for ac_option in "$@" ; do
1486              echo "Error: unrecognized option: "$ac_option              echo "Error: unrecognized option: "$ac_option
1487              usage              usage
1488              ;;              ;;
1489            
1490          *)          *)
1491              echo "Error: unrecognized argument: "$ac_option              echo "Error: unrecognized argument: "$ac_option
1492              usage              usage
1493              ;;              ;;
1494            
1495      esac      esac
1496    
1497  done  done
1498    
1499    printf "  getting local config information:  "
1500    if test -f $gm_local ; then
1501        echo "using $gm_local"
1502        . $gm_local
1503    else
1504        echo "none found"
1505    fi
1506    
1507  if test -f ./.genmakerc ; then  if test -f ./.genmakerc ; then
1508      echo      echo
1509      echo "WARNING: genmake2 has detected a copy of the old-style \"./.genmakerc\""      echo "WARNING: genmake2 has detected a copy of the old-style \"./.genmakerc\""
# Line 1593  check_for_broken_Ff Line 1715  check_for_broken_Ff
1715    
1716  if test ! "x$MPI" = x ; then  if test ! "x$MPI" = x ; then
1717        echo "  Turning on MPI cpp macros"        echo "  Turning on MPI cpp macros"
1718        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"        DEFINES="$DEFINES -DALLOW_USE_MPI"
1719    #- To compile code older than checkpoint63s (2012/09/05), un-comment the following line:
1720    #     DEFINES="$DEFINES -DALWAYS_USE_MPI"
1721  fi  fi
1722  if test ! "x$OMP" = x ; then  if test ! "x$OMP" = x ; then
1723        echo "  Add OMPFLAG and turn on OpenMP cpp macros"        echo "  Add OMPFLAG and turn on OpenMP cpp macros"
# Line 1610  fi Line 1734  fi
1734  if test ! "x$TS" = x ; then  if test ! "x$TS" = x ; then
1735        echo "  Turning on timing per timestep"        echo "  Turning on timing per timestep"
1736        if test ! "x$FOOLAD" = x ; then        if test ! "x$FOOLAD" = x ; then
1737              DEFINES="$DEFINES -DTIME_PER_TIMESTEP_SFP"              DEFINES="$DEFINES -DTIME_PER_TIMESTEP_SFP"
1738        else        else
1739              DEFINES="$DEFINES -DTIME_PER_TIMESTEP"              DEFINES="$DEFINES -DTIME_PER_TIMESTEP"
1740        fi        fi
# Line 1646  if test ! "x$PAPI" = x ; then Line 1770  if test ! "x$PAPI" = x ; then
1770            echo "  Sticking with PAPI flop summary per timestep!"            echo "  Sticking with PAPI flop summary per timestep!"
1771        else        else
1772            echo "  Turning on performance analysis with PAPI"            echo "  Turning on performance analysis with PAPI"
1773            echo "  Please make sure PAPIINC, PAPILIB are defined"            echo "  Please make sure PAPIINC, PAPILIB are defined"
1774            DEFINES="$DEFINES -DUSE_PAPI"            DEFINES="$DEFINES -DUSE_PAPI"
1775            INCLUDES="$INCLUDES $PAPIINC"            INCLUDES="$INCLUDES $PAPIINC"
1776            LIBS="$LIBS $PAPILIB"            LIBS="$LIBS $PAPILIB"
# Line 1658  if test ! "x$PCL" = x ; then Line 1782  if test ! "x$PCL" = x ; then
1782            echo "  Sticking with PCL flop summary per timestep!"            echo "  Sticking with PCL flop summary per timestep!"
1783        else        else
1784            echo "  Turning on performance analysis with PCL"            echo "  Turning on performance analysis with PCL"
1785            echo "  Please make sure PCLINC, PCLLIB are defined"            echo "  Please make sure PCLINC, PCLLIB are defined"
1786            DEFINES="$DEFINES -DUSE_PCL"            DEFINES="$DEFINES -DUSE_PCL"
1787            INCLUDES="$INCLUDES $PCLINC"            INCLUDES="$INCLUDES $PCLINC"
1788            LIBS="$LIBS $PCLLIB"            LIBS="$LIBS $PCLLIB"
# Line 1668  if test ! "x$HPMT" = x ; then Line 1792  if test ! "x$HPMT" = x ; then
1792        if test ! "x$PAPI" = x ; then        if test ! "x$PAPI" = x ; then
1793            echo "  PAPI and the HPM Toolkit cannot co-exist!"            echo "  PAPI and the HPM Toolkit cannot co-exist!"
1794            echo "  Sticking with PAPI!"            echo "  Sticking with PAPI!"
1795        else if test ! "x$PCL" = x ; then        else
1796            if test ! "x$PCL" = x ; then
1797            echo "  PCL and the HPM Toolkit cannot co-exist!"            echo "  PCL and the HPM Toolkit cannot co-exist!"
1798            echo "  Sticking with PCL!"            echo "  Sticking with PCL!"
1799        else          else
1800            echo "  Turning on performance analysis with the HPM Toolkit"            echo "  Turning on performance analysis with the HPM Toolkit"
1801            echo "  Please make sure HPMTINC, HPMTLIB are defined"            echo "  Please make sure HPMTINC, HPMTLIB are defined"
1802            DEFINES="$DEFINES -DUSE_LIBHPM"            DEFINES="$DEFINES -DUSE_LIBHPM"
1803            INCLUDES="$INCLUDES $HPMTINC"            INCLUDES="$INCLUDES $HPMTINC"
1804            LIBS="$LIBS $HPMTLIB"            LIBS="$LIBS $HPMTLIB"
1805        fi          fi
1806        fi        fi
1807  fi  fi
1808  if test ! "x$GSL" = x ; then  if test ! "x$GSL" = x ; then
# Line 1808  if test "x$HAVE_NETCDF" != x ; then Line 1933  if test "x$HAVE_NETCDF" != x ; then
1933  else  else
1934      echo "no"      echo "no"
1935  fi  fi
 DEFINES="$DEFINES $IGNORE_TIME"  
1936    
1937    printf "  Can we create LAPACK-enabled binaries...  "
1938    check_lapack_libs
1939    if test "x$HAVE_LAPACK" != x ; then
1940        DEFINES="$DEFINES -DHAVE_LAPACK"
1941        echo "yes"
1942    else
1943        echo "no"
1944    fi
1945    
1946    printf "  Can we call FLUSH intrinsic subroutine...  "
1947    check_HAVE_FLUSH
1948    if test "x$HAVE_FLUSH" = xt ; then
1949        DEFINES="$DEFINES -DHAVE_FLUSH"
1950        echo "yes"
1951    else
1952        echo "no"
1953    fi
1954    
1955    DEFINES="$DEFINES $IGNORE_TIME"
1956  if test "x$EMBED_SRC" = xt ; then  if test "x$EMBED_SRC" = xt ; then
1957      build_embed_encode      build_embed_encode
1958  fi  fi
# Line 1993  else Line 2136  else
2136          exit 1          exit 1
2137      else      else
2138          echo "    using PKG_LIST=\"$PKG_LIST\""          echo "    using PKG_LIST=\"$PKG_LIST\""
2139          #  Strip the comments and add all the names          #  Strip the comments and add all the names
2140          pkg_list=`cat $PKG_LIST | sed -e 's/#.*$//g' | $AWK '(NF>0){print $0}'`          pkg_list=`cat $PKG_LIST | sed -e 's/#.*$//g' | $AWK '(NF>0){print $0}'`
2141          RETVAL=$?          RETVAL=$?
2142          if test "x${RETVAL}" != x0 ; then          if test "x${RETVAL}" != x0 ; then
# Line 2043  for i in $PACKAGES ; do Line 2186  for i in $PACKAGES ; do
2186      j=`echo $i | sed 's/[-+]//'`      j=`echo $i | sed 's/[-+]//'`
2187      if test ! -d "$ROOTDIR/pkg/$j" ; then      if test ! -d "$ROOTDIR/pkg/$j" ; then
2188          echo "Error: dir '$ROOTDIR/pkg/$i' missing for package '$i'"          echo "Error: dir '$ROOTDIR/pkg/$i' missing for package '$i'"
2189          exit 1          exit 1
2190      fi      fi
2191      echo $i >> ./.tmp_pack      echo $i >> ./.tmp_pack
2192  done  done
# Line 2088  else Line 2231  else
2231          echo "Error: problem encountered while building source files in pkg/mnc:"          echo "Error: problem encountered while building source files in pkg/mnc:"
2232          cat make_mnc.errors 1>&2          cat make_mnc.errors 1>&2
2233          if test "x$mnc_in" = x0 ; then          if test "x$mnc_in" = x0 ; then
2234              exit 1              exit 1
2235          else          else
2236              DISABLE="$DISABLE mnc"              DISABLE="$DISABLE mnc"
2237          fi          fi
# Line 2121  EOF Line 2264  EOF
2264      fi      fi
2265  fi  fi
2266    
2267    #  Check for package RADTRANS: if LAPACK is not available,
2268    #  then issue a warning that the direct radtrans solver is not available.
2269    if test "x$HAVE_LAPACK" != xt ; then
2270        echo " $PACKAGES " | grep ' radtrans ' > /dev/null 2>&1
2271        RETVAL=$?
2272        if test "x$RETVAL" = x0 ; then
2273            cat <<EOF
2274    *********************************************************************
2275    WARNING: the "radtrans" package was enabled but tests failed to
2276      compile LAPACK applications.  This means that the direct radtrans
2277      solver is not available and compilation will fail if it is enabled.
2278      If you want to use the direct solver, please check that:
2279    
2280      1) LAPACK is correctly installed for this compiler and
2281      2) the LIBS variable (within the "optfile") specifies the correct
2282         LAPACK library to link against.
2283    *********************************************************************
2284    EOF
2285        fi
2286    fi
2287    
2288  if  test "x${PKG_DEPEND}" != x ; then  if  test "x${PKG_DEPEND}" != x ; then
2289    echo "  applying package dependency rules"    echo "  applying package dependency rules"
2290    ck=    ck=
# Line 2166  if  test "x${PKG_DEPEND}" != x ; then Line 2330  if  test "x${PKG_DEPEND}" != x ; then
2330    
2331          #  Do we need to add $dname according to the dependency rules?          #  Do we need to add $dname according to the dependency rules?
2332          if test "x$pin" = xt -a "x$plus" = "x+" -a "x$din" = xf ; then          if test "x$pin" = xt -a "x$plus" = "x+" -a "x$din" = xf ; then
2333              #echo "   " $pname ": need to add :" $dname              #echo "   " $pname ": need to add :" $dname
2334              in_dis="f"              in_dis="f"
2335              for dis in $DISABLE ; do              for dis in $DISABLE ; do
2336                  if test "x$dis" = "x$dname" ; then                  if test "x$dis" = "x$dname" ; then
# Line 2191  if  test "x${PKG_DEPEND}" != x ; then Line 2355  if  test "x${PKG_DEPEND}" != x ; then
2355              echo "  the dependency rules for \"$dname\""              echo "  the dependency rules for \"$dname\""
2356              exit 1              exit 1
2357          fi          fi
2358          i=`echo "$i + 1" | bc -l`          i=`echo "$i + 1" | bc -l`
2359          #i=$(( $i + 1 ))          #i=$(( $i + 1 ))
2360      done      done
2361      ck=$ck"t"      ck=$ck"t"
# Line 2232  for n in $names ; do Line 2396  for n in $names ; do
2396          done          done
2397          if test "x$has_pack" = xf ; then          if test "x$has_pack" = xf ; then
2398              undef=`echo "ALLOW_$n" | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`              undef=`echo "ALLOW_$n" | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
2399              DISABLED_PACKAGES="$DISABLED_PACKAGES -U$undef"              DISABLED_PACKAGES="$DISABLED_PACKAGES -U$undef"
2400          fi          fi
2401      fi      fi
2402  done  done
# Line 2245  for i in $PACKAGES ; do Line 2409  for i in $PACKAGES ; do
2409  #EH3  WARNING :  This is an UGLY HACK that needs to be removed!!!  #EH3  WARNING :  This is an UGLY HACK that needs to be removed!!!
2410      case $i in      case $i in
2411          aim_v23)          aim_v23)
2412              ENABLED_PACKAGES="$ENABLED_PACKAGES -DALLOW_AIM"              ENABLED_PACKAGES="$ENABLED_PACKAGES -DALLOW_AIM"
2413              echo "Warning: ALLOW_AIM is set to enable aim_v23."              echo "Warning: ALLOW_AIM is set to enable aim_v23."
2414              ;;              ;;
2415      esac      esac
# Line 2287  for i in $spaths ; do Line 2451  for i in $spaths ; do
2451      if test -f $try -a -r $try -a "x$CPP_OPTIONS" = x ; then      if test -f $try -a -r $try -a "x$CPP_OPTIONS" = x ; then
2452          echo "    found CPP_OPTIONS=\"$try\""          echo "    found CPP_OPTIONS=\"$try\""
2453          CPP_OPTIONS="$try"          CPP_OPTIONS="$try"
2454          # New safety test: make sure packages are not mentioned in CPP_OPTIONS.h          # New safety test: make sure packages are not mentioned in CPP_OPTIONS.h
2455          for n in $names ; do          for n in $names ; do
2456              test_for_package_in_cpp_options $CPP_OPTIONS $n              test_for_package_in_cpp_options $CPP_OPTIONS $n
2457          done          done
2458      fi      fi
2459      try="$i/CPP_EEOPTIONS.h"      try="$i/CPP_EEOPTIONS.h"
2460      if test -f $try -a -r $try -a "x$CPP_EEOPTIONS" = x ; then      if test -f $try -a -r $try -a "x$CPP_EEOPTIONS" = x ; then
2461          echo "    found CPP_EEOPTIONS=\"$try\""          echo "    found CPP_EEOPTIONS=\"$try\""
2462          # New safety test: make sure MPI is not determined by CPP_EEOPTIONS.h          # New safety test: make sure MPI is not determined by CPP_EEOPTIONS.h
2463  #**** not yet enabled ****  #**** not yet enabled ****
2464  #        test_for_mpi_in_cpp_eeoptions $try  #        test_for_mpi_in_cpp_eeoptions $try
2465  #**** not yet enabled ****  #**** not yet enabled ****
# Line 2386  if test "x$OPENAD" != x ; then Line 2550  if test "x$OPENAD" != x ; then
2550      OAD_DONT_TRANSFORM="/dev/null"      OAD_DONT_TRANSFORM="/dev/null"
2551      OAD_KEEP_ORIGINAL="/dev/null"      OAD_KEEP_ORIGINAL="/dev/null"
2552      OAD_CB2M_FILES="/dev/null"      OAD_CB2M_FILES="/dev/null"
2553        OADTOOLS="$TOOLSDIR/OAD_support"
2554        test -f "oadtempflile"  &&  \rm -f "oadtempflile"
2555    cat >> "oadtempflile" <<EOF
2556    $OADTOOLS
2557    EOF
2558      echo "  looking for dontCompile file:  "      echo "  looking for dontCompile file:  "
2559      for i in "." $MODS ; do      for i in "." $MODS ; do
2560          if test -r $i"/dontCompile" ; then          if test -r $i"/dontCompile" ; then
# Line 2441  for d in $alldirs ; do Line 2610  for d in $alldirs ; do
2610          if test ! -r ".links.tmp/$sf" ; then          if test ! -r ".links.tmp/$sf" ; then
2611              if test -f "$d/$sf" ; then              if test -f "$d/$sf" ; then
2612                  ignore_f=f                  ignore_f=f
2613                  case $d/$sf in                  case $d/$sf in
2614                    ./$PACKAGES_DOT_H)                    ./$PACKAGES_DOT_H)
2615                          ignore_f=t                          ignore_f=t
2616                          ;;                          ;;
2617                    ./AD_CONFIG.h)                    ./AD_CONFIG.h)
2618                          ignore_f=t                          ignore_f=t
2619                          ;;                          ;;
2620                    ./FC_NAMEMANGLE.h)                    ./FC_NAMEMANGLE.h)
2621                          ignore_f=t                          ignore_f=t
2622                          ;;                          ;;
2623                    ./BUILD_INFO.h)                    ./BUILD_INFO.h)
2624                          ignore_f=t                          ignore_f=t
2625                          ;;                          ;;
2626                    ./EMBEDDED_FILES.h)                    ./EMBEDDED_FILES.h)
2627                          ignore_f=t                          ignore_f=t
2628                          ;;                          ;;
2629                    *)                    *)
2630                          #  For the local directory *ONLY*,                          #  For the local directory *ONLY*,
2631                          #  ignore all soft-links                          #  ignore all soft-links
2632                          if test "x$HAVE_TEST_L" = xt -a "x$d" = x. -a -L $sf ; then                          if test "x$HAVE_TEST_L" = xt -a "x$d" = x. -a -L $sf ; then
# Line 2467  for d in $alldirs ; do Line 2636  for d in $alldirs ; do
2636                              deplist="$deplist $sf"                              deplist="$deplist $sf"
2637                          fi                          fi
2638                          ;;                          ;;
2639                  esac                  esac
2640                  if test "x$ignore_f" = xf ; then                  if test "x$ignore_f" = xf ; then
2641                      extn=`echo $sf | $AWK -F. '{print $NF}'`                      extn=`echo $sf | $AWK -F. '{print $NF}'`
2642                      case $extn in                      case $extn in
# Line 2514  for d in $alldirs ; do Line 2683  for d in $alldirs ; do
2683                          echo    " \\"  >> hsrclist.tmp                          echo    " \\"  >> hsrclist.tmp
2684                          printf " $sf" >> hsrclist.tmp                          printf " $sf" >> hsrclist.tmp
2685                          ;;                          ;;
2686                      flow)                      flow)
2687                          echo    " \\"  >> ad_flow_files.tmp                          echo    " \\"  >> ad_flow_files.tmp
2688                          printf " $sf" >> ad_flow_files.tmp                          printf " $sf" >> ad_flow_files.tmp
2689                          ;;                          ;;
# Line 2525  for d in $alldirs ; do Line 2694  for d in $alldirs ; do
2694      done      done
2695      if test "x$deplist" != x ; then      if test "x$deplist" != x ; then
2696        if test "$d" != "." ; then        if test "$d" != "." ; then
2697          echo "" >> srclinks.tmp          echo "" >> srclinks.tmp
2698          echo "#  These files are linked from $d" >> srclinks.tmp          echo "#  These files are linked from $d" >> srclinks.tmp
2699          echo "$deplist :" >> srclinks.tmp          echo "$deplist :" >> srclinks.tmp
2700  # We need to make sure that the link isn't already there.  # We need to make sure that the link isn't already there.
# Line 2546  echo "" >> ad_flow_files.tmp Line 2715  echo "" >> ad_flow_files.tmp
2715  CMDLINE=$0  CMDLINE=$0
2716  for xx in "$@" ; do nw=`echo $xx | wc -w`  for xx in "$@" ; do nw=`echo $xx | wc -w`
2717      if test $nw = '1' ; then CMDLINE="$CMDLINE $xx"      if test $nw = '1' ; then CMDLINE="$CMDLINE $xx"
2718                          else CMDLINE="$CMDLINE '$xx'" ; fi                          else CMDLINE="$CMDLINE '$xx'" ; fi
2719  done  done
2720    
2721  if test -f $MAKEFILE ; then  if test -f $MAKEFILE ; then
# Line 2580  cat >>$MAKEFILE <<EOF Line 2749  cat >>$MAKEFILE <<EOF
2749  # INCLUDES     : Directories searched for header files  # INCLUDES     : Directories searched for header files
2750  # DEFINES      : Macro definitions for CPP  # DEFINES      : Macro definitions for CPP
2751  # MAKEDEPEND   : Dependency generator  # MAKEDEPEND   : Dependency generator
 # KPP          : Special preprocessor command (specific to platform)  
 # KFLAGS       : Flags for KPP  
2752  # FC           : Fortran compiler command  # FC           : Fortran compiler command
2753  # FFLAGS       : Configuration/debugging options for FC  # FFLAGS       : Configuration/debugging options for FC
2754  # FOPTIM       : Optimization options for FC  # FOPTIM       : Optimization options for FC
# Line 2595  INCLUDEDIRS = ${INCLUDEDIRS} Line 2762  INCLUDEDIRS = ${INCLUDEDIRS}
2762  EXEDIR      = ${EXEDIR}  EXEDIR      = ${EXEDIR}
2763  EXECUTABLE  = \$(EXEDIR)/${EXECUTABLE}  EXECUTABLE  = \$(EXEDIR)/${EXECUTABLE}
2764  TOOLSDIR    = ${TOOLSDIR}  TOOLSDIR    = ${TOOLSDIR}
2765    OADTOOLS    = ${OADTOOLS}
2766    
2767  #eh3  new defines for the adjoint work  #eh3  new defines for the adjoint work
2768  AUTODIFF    = ${ROOTDIR}/pkg/autodiff  AUTODIFF    = ${ROOTDIR}/pkg/autodiff
# Line 2615  else Line 2783  else
2783      echo "EMBEDDED_FILES = " >>$MAKEFILE      echo "EMBEDDED_FILES = " >>$MAKEFILE
2784  fi  fi
2785    
2786    # extract default cpp search path so we can pass it to makedepend
2787    CPPINCLUDES=`cat /dev/null | $CPP -v 2>&1 | awk '/^End of search/{f=0}!/^\#/{if(f){printf " -I%s", $1;}}/^\#include "..." search start/{f=1}'`
2788    
2789  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2790  # Unix ln (link)  # Unix ln (link)
2791  LN = ${LN}  LN = ${LN}
 # C preprocessor  
 CPP = cat \$< | ${S64} | ${CPP}  
2792  # Dependency generator  # Dependency generator
2793  MAKEDEPEND = ${MAKEDEPEND}  MAKEDEPEND = ${MAKEDEPEND}
2794  # Special preprocessor (KAP on DECs, FPP on Crays)  # Special preprocessor (KAP on DECs, FPP on Crays)
# Line 2637  LINK = ${LINK} ${LDADD} Line 2806  LINK = ${LINK} ${LDADD}
2806  DEFINES = ${DEFINES}  DEFINES = ${DEFINES}
2807  # Includes for CPP  # Includes for CPP
2808  INCLUDES = ${INCLUDES}  INCLUDES = ${INCLUDES}
2809    # default CPP includes for makedepend
2810    CPPINCLUDES = ${CPPINCLUDES}
2811  # Flags for KPP  # Flags for KPP
2812  KFLAGS1 = ${KFLAGS1}  KFLAGS1 = ${KFLAGS1}
2813  KFLAGS2 = ${KFLAGS2}  KFLAGS2 = ${KFLAGS2}
# Line 2655  NOOPTFLAGS = ${NOOPTFLAGS} Line 2826  NOOPTFLAGS = ${NOOPTFLAGS}
2826  # Flags and libraries needed for linking  # Flags and libraries needed for linking
2827  LIBS = ${LIBS}  LIBS = ${LIBS}
2828  # Name of the makefile  # Name of the makefile
2829  MAKEFILE=${MAKEFILE}  MAKEFILE = ${MAKEFILE}
2830    # Name of the make program
2831    MAKE = ${MAKE}
2832    
2833  EOF  EOF
2834    
# Line 2679  echo >> $MAKEFILE Line 2852  echo >> $MAKEFILE
2852  echo 'F77_PP_SRC_FILES = $(F77_SRC_FILES:.F=.'$FS')'      >> $MAKEFILE  echo 'F77_PP_SRC_FILES = $(F77_SRC_FILES:.F=.'$FS')'      >> $MAKEFILE
2853  echo 'F90_PP_SRC_FILES = $(F90_SRC_FILES:.F90=.'$FS90')' >> $MAKEFILE  echo 'F90_PP_SRC_FILES = $(F90_SRC_FILES:.F90=.'$FS90')' >> $MAKEFILE
2854  echo 'OBJFILES= $(F77_SRC_FILES:.F=.o) $(C_SRC_FILES:.c=.o) $(F90_SRC_FILES:.F90=.o)' >> $MAKEFILE  echo 'OBJFILES= $(F77_SRC_FILES:.F=.o) $(C_SRC_FILES:.c=.o) $(F90_SRC_FILES:.F90=.o)' >> $MAKEFILE
2855  echo 'FLOFILES =  $(AD_FLOW_FILES:.flow=.flowdir)' >> $MAKEFILE  echo 'FLOWFILES =  $(AD_FLOW_FILES:.flow=.flowdir)' >> $MAKEFILE
2856  echo >> $MAKEFILE  echo >> $MAKEFILE
2857  echo '.SUFFIXES:' >> $MAKEFILE  echo '.SUFFIXES:' >> $MAKEFILE
2858  echo '.SUFFIXES: .o .'$FS' .p .F .c .f'$FS90' .'$FS90' .FF90 .F90 .flowdir .flow' >> $MAKEFILE  echo '.SUFFIXES: .o .'$FS' .p .F .c .f'$FS90' .'$FS90' .FF90 .F90 .flowdir .flow' >> $MAKEFILE
2859    
2860  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2861    
2862  all: \$(EXECUTABLE)  all: fwd_exe_target
2863    fwd_exe_target:
2864            @echo Update AD_CONFIG.h and make \$(EXECUTABLE)
2865            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Forward version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template
2866            @cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
2867            @-rm -f ad_config.template
2868            \$(MAKE) -f \$(MAKEFILE) \$(EXECUTABLE)
2869    
2870  \$(EXECUTABLE): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(OBJFILES) \$(EMBEDDED_FILES)  \$(EXECUTABLE): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(OBJFILES) \$(EMBEDDED_FILES)
2871          @echo Creating \$@ ...          @echo Creating \$@ ...
2872          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)
2873    
2874  depend:  depend:
2875          @make -f \$(MAKEFILE) links          @\$(MAKE) -f \$(MAKEFILE) links
2876          \$(MAKEDEPEND) -f \$(MAKEFILE) -o .$FS \$(DEFINES) \$(INCLUDES) \$(F77_SRC_FILES)          \$(MAKEDEPEND) -f \$(MAKEFILE) -o .$FS \$(DEFINES) \$(INCLUDES) \$(CPPINCLUDES) \$(F77_SRC_FILES)
2877          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)
2878          -rm -f makedepend.out          -rm -f makedepend.out
2879    
# Line 2722  clean: Line 2902  clean:
2902    
2903  # remove most of the files that "make" and "make depend" generate  # remove most of the files that "make" and "make depend" generate
2904  Clean:  Clean:
2905          @make -f \$(MAKEFILE) clean          @\$(MAKE) -f \$(MAKEFILE) clean
2906          @make -f \$(MAKEFILE) cleanlinks          @\$(MAKE) -f \$(MAKEFILE) cleanlinks
2907          -rm -f \$(SPECIAL_FILES) f90mkdepend.log $MAKEFILE.old          -rm -f \$(SPECIAL_FILES) f90mkdepend.log $MAKEFILE.old
2908          -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 taf_ftl.log
2909          -rm -f genmake_warnings genmake_errors make.log          -rm -f genmake_warnings genmake_errors make.log
2910    
2911  # remove also the executable, files that "genmake2" generates (except Makefile)  # remove also the executable, files that "genmake2" generates (except Makefile)
2912  #         and output from a run (plus log files from testreport)  #         and output from a run (plus log files from testreport)
2913  CLEAN:  CLEAN:
2914          @make -f \$(MAKEFILE) Clean          @\$(MAKE) -f \$(MAKEFILE) Clean
2915          -rm -f \$(EXECUTABLE) \$(EXE_AD) *.bak          -rm -f \$(EXECUTABLE) \$(EXE_AD) \$(EXE_FTL) *.bak
2916          -rm -f $LOGFILE genmake_state genmake_*optfile          -rm -f $LOGFILE genmake_state genmake_*optfile
2917          -rm -f SIZE.h.mpi genmake.tr_log make.tr_log          -rm -f SIZE.h.mpi genmake.tr_log make.tr_log
2918          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;
# Line 2750  cleanlinks: Line 2930  cleanlinks:
2930  # Special targets (SPECIAL_FILES) which are created by make  # Special targets (SPECIAL_FILES) which are created by make
2931  ${PACKAGES_DOT_H}:  ${PACKAGES_DOT_H}:
2932          @echo Creating \$@ ...          @echo Creating \$@ ...
2933          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bPACKAGES_CONFIG_H "Disabled packages:" \$(DISABLED_PACKAGES) " " "Enabled packages:" \$(ENABLED_PACKAGES) > \$@          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines -bPACKAGES_CONFIG_H "Disabled packages:" \$(DISABLED_PACKAGES) " " "Enabled packages:" \$(ENABLED_PACKAGES) > \$@
2934  AD_CONFIG.h:  AD_CONFIG.h:
2935          @echo Creating \$@ ...          @echo Creating \$@ ...
2936          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > \$@          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Default version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > \$@
2937  FC_NAMEMANGLE.h:  FC_NAMEMANGLE.h:
2938          @echo Creating \$@ ...          @echo Creating \$@ ...
2939          echo "$FC_NAMEMANGLE" > \$@          echo "$FC_NAMEMANGLE" > \$@
# Line 2793  cat >>$MAKEFILE <<EOF Line 2973  cat >>$MAKEFILE <<EOF
2973  ## This nullifies any default implicit rules concerning these two file types:  ## This nullifies any default implicit rules concerning these two file types:
2974  ## %.o : %.F  ## %.o : %.F
2975    
2976    # C preprocessing and replacing the _d in constants:
2977    CPPCMD = cat \$< | ${CPP} \$(DEFINES) \$(INCLUDES) | ${S64}
2978    
2979  .F.$FS:  .F.$FS:
2980          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD)  > \$@
2981  .$FS.o:  .$FS.o:
2982          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<
2983  .F.o:  .F.o:
2984          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<
2985  .F90.$FS90:  .F90.$FS90:
2986          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD)  > \$@
2987  .FF90.f$FS90:  .FF90.f$FS90:
2988          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD)  > \$@
2989  .$FS90.o:  .$FS90.o:
2990          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<
2991  .f$FS90.o:  .f$FS90.o:
# Line 2811  cat >>$MAKEFILE <<EOF Line 2994  cat >>$MAKEFILE <<EOF
2994  .c.o:  .c.o:
2995          \$(CC) \$(CFLAGS) \$(DEFINES) \$(INCLUDES) -c \$<          \$(CC) \$(CFLAGS) \$(DEFINES) \$(INCLUDES) -c \$<
2996  .flow.flowdir:  .flow.flowdir:
2997          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD) > \$@
2998    
2999  # Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain  # Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain
3000  .F.p:  .F.p:
3001          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD) > \$@
3002  .p.$FS:  .p.$FS:
3003          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<
3004    
# Line 2862  rm -f adSrcFiles.tmp Line 3045  rm -f adSrcFiles.tmp
3045  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
3046    
3047  # ... AD ...  # ... AD ...
3048  adall: \$(EXE_AD)  adall: ad_exe_target
3049  adtaf: ad_taf_output.$FS  adtaf: ad_taf_output.$FS
3050  adtamc: ad_tamc_output.$FS  adtamc: ad_tamc_output.$FS
3051    
3052  ad_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES) \$(AD_FLOW_FILES)  ad_exe_target:
3053          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template          @echo Update AD_CONFIG.h and make \$(EXE_AD)
3054            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Adjoint version" -bAD_CONFIG_H -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template
3055            @cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
3056            @-rm -f ad_config.template
3057            \$(MAKE) -f \$(MAKEFILE) \$(EXE_AD)
3058    
3059    ad_input_code.$FS: \$(AD_FILES) \$(AD_FLOW_FILES)
3060            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Adjoint version" -bAD_CONFIG_H -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template
3061          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
3062          -rm -f ad_config.template          @-rm -f ad_config.template
3063          @make -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)          @\$(MAKE) -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)
3064          @make -f \$(MAKEFILE) \$(FLOFILES)          @\$(MAKE) -f \$(MAKEFILE) \$(FLOWFILES)
3065          cat \$(FLOFILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ad_input_code.$FS          cat \$(FLOWFILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ad_input_code.$FS
3066    
3067  ad_taf_output.$FS: ad_input_code.$FS  ad_taf_output.$FS: ad_input_code.$FS
3068          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
# Line 2884  adtafonly: Line 3074  adtafonly:
3074          ls -l ad_input_code_ad.$FS          ls -l ad_input_code_ad.$FS
3075          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
3076    
3077  \${EXE_AD}: ad_taf_output.o \$(OBJFILES)  \$(EXE_AD): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) ad_taf_output.o \$(OBJFILES) \$(EMBEDDED_FILES)
3078          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)
3079    
3080  ad_tamc_output.$FS: ad_input_code.$FS  ad_tamc_output.$FS: ad_input_code.$FS
# Line 2903  adtrick: Line 3093  adtrick:
3093  adobj: ad_taf_output.o \$(OBJFILES)  adobj: ad_taf_output.o \$(OBJFILES)
3094    
3095  # ... FTL ...  # ... FTL ...
3096  ftlall: ftl_taf  ftlall: ftl_exe_target
3097  ftltaf: ftl_taf_output.$FS  ftltaf: ftl_taf_output.$FS
3098  ftltamc: ftl_tamc_output.$FS  ftltamc: ftl_tamc_output.$FS
3099    
3100  ftl_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES)  ftl_exe_target:
3101          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ftl_config.template          @echo Update AD_CONFIG.h and make \$(EXE_FTL)
3102          cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "TangLin version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ad_config.template
3103          -rm -f ftl_config.template          @cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
3104          @make -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)          @-rm -f ad_config.template
3105          @make -f \$(MAKEFILE) \$(AD_FLOW_FILES)          \$(MAKE) -f \$(MAKEFILE) \$(EXE_FTL)
3106          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ftl_input_code.$FS  
3107    ftl_input_code.$FS: \$(AD_FILES)
3108            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "TangLin version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ad_config.template
3109            cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
3110            @-rm -f ad_config.template
3111            @\$(MAKE) -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)
3112            @\$(MAKE) -f \$(MAKEFILE) \$(AD_FLOW_FILES)
3113            cat \$(AD_FLOW_FILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ftl_input_code.$FS
3114    
3115  ftl_taf_output.$FS: ftl_input_code.$FS  ftl_taf_output.$FS: ftl_input_code.$FS
3116          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
# Line 2925  ftltafonly: Line 3122  ftltafonly:
3122          ls -l ftl_input_code_ftl.$FS          ls -l ftl_input_code_ftl.$FS
3123          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
3124    
3125  ftl_taf: ftl_taf_output.o \$(OBJFILES)  \$(EXE_FTL): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) ftl_taf_output.o \$(OBJFILES) \$(EMBEDDED_FILES)
3126          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)          \$(LINK) -o \${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)
3127    
3128  ftl_tamc_output.$FS: ftl_input_code.$FS  ftl_tamc_output.$FS: ftl_input_code.$FS
3129          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS
# Line 2955  svd_touch: Line 3152  svd_touch:
3152          touch ad_taf_output.$FS ftl_taf_output.$FS          touch ad_taf_output.$FS ftl_taf_output.$FS
3153          \$(FC) \$(FFLAGS) \$(FOPTIM) -c ad_taf_output.$FS          \$(FC) \$(FFLAGS) \$(FOPTIM) -c ad_taf_output.$FS
3154          \$(FC) \$(FFLAGS) \$(FOPTIM) -c ftl_taf_output.$FS          \$(FC) \$(FFLAGS) \$(FOPTIM) -c ftl_taf_output.$FS
3155          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ftl_config.template          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "SVD version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ad_config.template
3156          cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h          cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
3157          -rm -f ftl_config.template          @-rm -f ad_config.template
3158    
3159  EOF  EOF
3160    
# Line 3041  w2f__types.F90 \ Line 3238  w2f__types.F90 \
3238  OAD_active.F90 \  OAD_active.F90 \
3239  OAD_cp.F90 \  OAD_cp.F90 \
3240  OAD_rev.F90 \  OAD_rev.F90 \
3241  OAD_tape.F90  OAD_tape.F90 \
3242    revolve.F90
3243    
3244  OPENAD_SUPPORT_C_SRC_FILES = \  OPENAD_SUPPORT_C_SRC_FILES = \
3245  iaddr.c \  iaddr.c \
# Line 3057  f95_test.out: f95_test_mods.f90 f95_test Line 3255  f95_test.out: f95_test_mods.f90 f95_test
3255          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
3256          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
3257    
3258  # the file included below is created by the  CB2M_AD_FILES=\$(AD_FILES:.f=_cb2m.f$FS90)
 # postProcessor and its inclusion sets the  
 # variable POSTPROCESSEDFILES  
 # used below. Because the file is made during  
 # make it won't be read until the second (recursive)  
 # invocation in the rule below  
 -include postProcess.make  
3259    
3260  AD_OBJ_FILES_S1=\$(OPENAD_SUPPORT_F90_SRC_FILES:.F90=.o) \$(OPENAD_SUPPORT_C_SRC_FILES:.c=.o) \$(POSTPROCESSEDFILES:.f$FS90=.o)  AD_OBJ_FILES_S1=\$(OPENAD_SUPPORT_F90_SRC_FILES:.F90=.o) \$(OPENAD_SUPPORT_C_SRC_FILES:.c=.o)  OAD_intrinsics_oad.o \$(CB2M_AD_FILES:.f$FS90=_oad.o)
3261    
3262  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)  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)
3263    
3264  postProcess.comp: \$(ALL_LINKED_FILES) \$(addsuffix _mod.h, \$(CB2M_F90_SRC_NAMES)) postProcess.tag \$(AD_OBJ_FILES_S1)  \$(EXE_AD): \$(ALL_LINKED_FILES) \$(addsuffix _mod.h, \$(CB2M_F90_SRC_NAMES)) postProcess.tag \$(AD_OBJ_FILES_S2)
 ifeq (\$(MAKELEVEL),0)  
         \$(MAKE) adAll  
 else  
         touch \$@  
 endif  
   
 \$(EXE_AD): \$(ALL_LINKED_FILES) \$(addsuffix _mod.h, \$(CB2M_F90_SRC_NAMES)) postProcess.comp \$(AD_OBJ_FILES_S2)  
 ifeq (\$(MAKELEVEL),1)  
3265          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES_S2) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES_S2) \$(LIBS)
 else  
         touch \$@  
 endif  
3266    
3267  # makefile debug rule  # create sources files modules from header files containing common blocks
3268  openad: ad_input_code.w2f.pre.xb.x2w.w2f.td.pp.f$FS90  %_mod.FF90 : %.h \${OADTOOLS}/cb2mGetModules.csh \${OADTOOLS}/cb2mGetModules.awk
3269  .PHONY: openad          \${OADTOOLS}/cb2mGetModules.csh $< \${OADTOOLS}/cb2mGetModules.awk
3270    
3271  # create the module files  # create new header files with USE statements for the new modules made above
3272  %_mod.FF90 : %.h ../OAD_support/cb2mGetModules.csh ../OAD_support/cb2mGetModules.awk  %_mod.h : %.h \${OADTOOLS}/cb2mGetHeaders.csh \${OADTOOLS}/cb2mGetHeaders.awk
3273          ../OAD_support/cb2mGetModules.csh $< ../OAD_support/cb2mGetModules.awk          \${OADTOOLS}/cb2mGetHeaders.csh $< \${OADTOOLS}/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)
3274    
3275  # create the header files  # change the include directives of everybody to refer to  the new header files with the USE statements
3276  %_mod.h : %.h ../OAD_support/cb2mGetHeaders.csh ../OAD_support/cb2mGetHeaders.awk  %_cb2m.FF90 : %.F \${OADTOOLS}/cb2mUseModules.bash
3277          ../OAD_support/cb2mGetHeaders.csh $< ../OAD_support/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)          \${OADTOOLS}/cb2mUseModules.bash $< ${MPI}
   
 # change everybody else to use the new module files:  
 %_cb2m.FF90 : %.F ../OAD_support/cb2mUseModules.bash  
         ../OAD_support/cb2mUseModules.bash $< ${MPI}  
3278    
3279  # makefile debug rule  # makefile debug rule
3280  small_f: \$(CB2M_F90_PP_SRC_FILES)  small_f: \$(CB2M_F90_PP_SRC_FILES)
# Line 3110  ad_output.txt: \$(EXE_AD) Line 3287  ad_output.txt: \$(EXE_AD)
3287          @printf 'running ... '          @printf 'running ... '
3288          @./\$(EXE_AD) > \$@          @./\$(EXE_AD) > \$@
3289    
 CB2M_AD_FILES=\$(AD_FILES:.f=_cb2m.f$FS90)  
3290  ad_input_code.f$FS90:  \$(CB2M_AD_FILES)  ad_input_code.f$FS90:  \$(CB2M_AD_FILES)
3291          cat \$^ > \$@          cat \$^ > \$@
3292    
 # strip all comments and blanks to reduce  
 # the file size in order to reduce perl's memory requirements  
 ad_input_code_sf.f$FS90 : ad_input_code.f$FS90  
         cat \$^ | sed -f ../OAD_support/strip.sed | sed -f ../OAD_support/stop2print.sed > \$@  
   
 # mfef90 preprocessing  
 # expand statement functions  
 # expose mfef90 specific substring handling  
 # add the w2f__types module  
 ad_input_code_sf.w2f.f$FS90: ad_input_code_sf.f$FS90 mfef90 whirl2f whirl2f_be w2f__types.f90  
         ./mfef90 -r8 -z -F -N132 \$<  
         mv \$<.B \$(basename \$<).B  
         ./whirl2f -openad \$(basename \$<).B  
         cat w2f__types.f90 \$(basename \$<).w2f.f > \$@  
   
3293  # canonicalizer  # canonicalizer
3294  ad_input_code_sf.w2f.pre.f$FS90: ad_input_code_sf.w2f.f$FS90 preProcess.py  ad_input_code_sf.pre.f90 : \$(CB2M_AD_FILES)
3295          ./preProcess.py --timing --r8 -H -S \$< -o \$@          \${OPENADFORTTK_BASE}/tools/SourceProcessing/preProcess.py --timing --r8 -H -S  -o \$@ \$^
3296    
3297    # replace stop statements (to avoid the implied unstructured control flow)  with print statements
3298    ad_input_code_sf.pre.s2p.f90 : ad_input_code_sf.pre.f90
3299            cat \$< | sed -f \${OADTOOLS}/stop2print.sed > ad_input_code_sf.pre.s2p.f90
3300    
3301  # F -> WHIRL  # F -> WHIRL
3302  # note that the canonicalized version cuts off at col 72  ad_input_code_sf.pre.s2p.B: ad_input_code_sf.pre.s2p.f90
3303  # doing this also for string constants which is ok as long          \${OPEN64ROOT}/crayf90/sgi/mfef90 -r8 -z -F ad_input_code_sf.pre.s2p.f90
 # as we are in fixed mode and cut of exactly there.  
 # Otherwise mfef90 patches in spaces to fill up to 72 (or 132)  
 # characters respectively.  
 ad_input_code_sf.w2f.pre.B: ad_input_code_sf.w2f.pre.f$FS90 mfef90  
         ./mfef90 -r8 -z -F \$<  
         mv \$<.B \$@  
3304    
3305  # WHIRL -> XAIF  # WHIRL -> XAIF
3306  ad_input_code_sf.w2f.pre.xaif : ad_input_code_sf.w2f.pre.B whirl2xaif  ad_input_code_sf.pre.s2p.xaif : ad_input_code_sf.pre.s2p.B
3307          ./whirl2xaif -s -n --debug 1 -o \$@ \$<          \${OPENADFORTTK}/bin/whirl2xaif -s -n --debug 1 -o \$@ \$<
3308    
3309  # XAIF -> XAIF'  # XAIF -> XAIF'
3310  ad_input_code_sf.w2f.pre.xb.xaif : ad_input_code_sf.w2f.pre.xaif xaif.xsd xaif_base.xsd xaif_inlinable_intrinsics.xsd xaif_derivative_propagator.xsd xaif_output.xsd oadDriver  ad_input_code_sf.pre.s2p.xb.xaif : ad_input_code_sf.pre.s2p.xaif xaif.xsd xaif_base.xsd xaif_inlinable_intrinsics.xsd xaif_derivative_propagator.xsd xaif_output.xsd
3311          ./oadDriver -f -t forward_step -i \$< -c \${XAIFSCHEMAROOT}/schema/examples/inlinable_intrinsics.xaif -o \$@ -I -r          \${XAIFBOOSTERROOT}/xaifBooster/algorithms/BasicBlockPreaccumulationReverse/driver/oadDriver -f -t forward_step -i \$< -c \${XAIFSCHEMAROOT}/schema/examples/inlinable_intrinsics.xaif -o \$@ -I -r
3312    
3313  # XAIF' -> WHIRL'  # XAIF' -> WHIRL'
3314  ad_input_code_sf.w2f.pre.xb.x2w.B : ad_input_code_sf.w2f.pre.xb.xaif xaif2whirl  ad_input_code_sf.pre.s2p.xb.x2w.B : ad_input_code_sf.pre.s2p.xb.xaif
3315          ./xaif2whirl --debug 1 ad_input_code_sf.w2f.pre.B \$<          \${OPENADFORTTK}/bin/xaif2whirl --debug 1 ad_input_code_sf.pre.s2p.B \$<
3316    
3317  # WHIRL' -> F'  # WHIRL' -> F'
3318  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.pre.s2p.xb.x2w.w2f.f$FS90: ad_input_code_sf.pre.s2p.xb.x2w.B
3319          ./whirl2f -FLIST:ftn_file=\$@ -openad \$<          \${OPEN64ROOT}/whirl2f/whirl2f -FLIST:ftn_file=\$@ -openad \$<
3320    
3321  # insert template directives  # insert template directives
3322  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.pre.s2p.xb.x2w.w2f.td.f$FS90: ad_input_code_sf.pre.s2p.xb.x2w.w2f.f$FS90 \${OADTOOLS}/insertTemplateDir.bash
3323          ../OAD_support/insertTemplateDir.bash \$< \$@          \${OADTOOLS}/insertTemplateDir.bash \$< \$@
3324    
3325  PPEXTRAS=\$(wildcard ../OAD_support/ad_template.*.F) ../OAD_support/ad_inline.F  PPEXTRAS=\$(wildcard \${OADTOOLS}/ad_template.*.F) \${OADTOOLS}/ad_inline.F
3326  # postprocess F'  # postprocess F'
3327  postProcess.tag: ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f$FS90 postProcess.py \$(PPEXTRAS:.F=.f)  postProcess.tag: ad_input_code_sf.pre.s2p.xb.x2w.w2f.td.f$FS90 \$(PPEXTRAS:.F=.f) | w2f__types.f90
3328          # the target is a placeholder to signal execution of the rule          \${OPENADFORTTK_BASE}/tools/SourceProcessing/postProcess.py --progress --timing --infoUnitFile w2f__types.f90 --outputFormat=fixed --separateOutput --pathSuffix "" --filenameSuffix "_oad" -m r -i \${OADTOOLS}/ad_inline.f \$<
3329            # the target is a placeholder to trigger a single execution of the rule
3330          touch \$@          touch \$@
3331          # this step also creates the file postProcess.make but we cannot  # put this so make knows about the postprocessing output
3332          # name it as the target or else make will try to remake it for  OAD_intrinsics_oad.f \$(CB2M_AD_FILES:.f$FS90=_oad.f): postProcess.tag
         # the include directive above for any rule, e.g. make clean  
         ./postProcess.py --progress --timing --infoUnitFile w2f__types.f90 --outputFormat=fixed -m r -i ../OAD_support/ad_inline.f --width 4 \$<  
3333    
3334  # setup some links  # link the XAIF schema files
3335  %.xsd:  %.xsd:
3336          \$(LN) \${XAIFSCHEMAROOT}/schema/\$@ .          \$(LN) \${XAIFSCHEMAROOT}/schema/\$@ .
3337    
 mfef90:  
         \$(LN) \${OPEN64ROOT}/crayf90/sgi/mfef90 .  
   
3338  # link the support files:  # link the support files:
3339  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES):  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES):
3340          \$(LN) ../OAD_support/\$@ .          \$(LN) \${OADTOOLS}/\$@ .
   
 whirl2xaif xaif2whirl:  
         \$(LN) \${OPENADFORTTK}/bin/\$@ .  
   
 preProcess.py postProcess.py:  
         \$(LN) \${OPENADFORTTK_BASE}/tools/SourceProcessing/\$@ .  
   
 whirl2f whirl2f_be:  
         \$(LN) \${OPEN64ROOT}/whirl2f/\$@ .  
   
 oadDriver:  
         \$(LN) \${XAIFBOOSTERROOT}/xaifBooster/algorithms/BasicBlockPreaccumulationReverse/driver/oadDriver \$@  
3341    
3342  AD_CLEAN += *_mod.h *_mod.F90 *.FF90 *.mod-whirl temp.sed oad_cp.* postProcess.make postProcess.tag postProcess.comp \$(PPEXTRAS:.F=.f)  AD_CLEAN += *_mod.h *_mod.F90 *.FF90 *.mod-whirl temp.sed oad_cp.* postProcess.tag \$(PPEXTRAS:.F=.f)
3343    
3344  # ============ end OpenAD specific section ==============  # ============ end OpenAD specific section ==============
3345    
# Line 3241  printf "\n\n# DO NOT DELETE\n" >> $MAKEF Line 3384  printf "\n\n# DO NOT DELETE\n" >> $MAKEF
3384  printf "\n===  Done  ===\n"  printf "\n===  Done  ===\n"
3385    
3386  # Create special header files  # Create special header files
3387  $BASH $TOOLSDIR/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bPACKAGES_CONFIG_H "Disabled packages:" $DISABLED_PACKAGES " " "Enabled packages:" $ENABLED_PACKAGES > $PACKAGES_DOT_H".tmp"  $BASH $TOOLSDIR/convert_cpp_cmd2defines -bPACKAGES_CONFIG_H "Disabled packages:" $DISABLED_PACKAGES " " "Enabled packages:" $ENABLED_PACKAGES > $PACKAGES_DOT_H".tmp"
3388  if test ! -f $PACKAGES_DOT_H ; then  if test ! -f $PACKAGES_DOT_H ; then
3389      mv -f $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H      mv -f $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H
3390  else  else
# Line 3255  else Line 3398  else
3398      fi      fi
3399  fi  fi
3400  if test ! -f AD_CONFIG.h ; then  if test ! -f AD_CONFIG.h ; then
3401      $BASH $TOOLSDIR/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > AD_CONFIG.h      $BASH $TOOLSDIR/convert_cpp_cmd2defines "Default version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > AD_CONFIG.h
3402  fi  fi
3403    
3404  #  Write the "state" for future records  #  Write the "state" for future records

Legend:
Removed from v.1.231  
changed lines
  Added in v.1.250

  ViewVC Help
Powered by ViewVC 1.1.22