/[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.63 by edhill, Fri Jan 23 16:12:45 2004 UTC revision 1.86 by edhill, Sat Jul 17 02:52:14 2004 UTC
# Line 37  test_for_string_in_file() { Line 37  test_for_string_in_file() {
37      grep -i "$strng" $file > /dev/null 2>&1      grep -i "$strng" $file > /dev/null 2>&1
38      RETVAL=$?      RETVAL=$?
39      if test "x${RETVAL}" = x0 ; then      if test "x${RETVAL}" = x0 ; then
40          echo -n "Error: In $file there is an illegal line: "          printf "Error: In $file there is an illegal line: "
41          grep -i "$strng" $file          grep -i "$strng" $file
42          return 1          return 1
43      fi      fi
# Line 67  expand_pkg_groups() { Line 67  expand_pkg_groups() {
67          done          done
68          PACKAGES=$new_packages          PACKAGES=$new_packages
69          rm -f ./p[1,2].tmp          rm -f ./p[1,2].tmp
70            return $matched
71      else      else
72          echo "Warning: can't read package groups definition file: $PKG_GROUPS"          echo "Warning: can't read package groups definition file: $PKG_GROUPS"
73      fi      fi
74  }  }
75    
76    #  Check for broken environments (eg. cygwin, MacOSX w/HFS+) that
77    #  cannot distinguish [*.F/*.F90] from [*.f/*.f90] files.
78    check_for_broken_Ff()  {
79        #  Do we have defaults for $FS and/or $FS90 ?
80        tfs=f
81        tfs9=f90
82        if test "x$FS" != x ; then
83            tfs="$FS"
84        fi
85        if test "x$FS90" != x ; then
86            tfs9="$FS90"
87        fi
88    
89        #  First check the ability to create a *.F/.f pair.
90        cat <<EOF >> genmake_hello.F
91          program hello
92          write(*,*) 'hi'
93          stop
94          end
95    EOF
96        cp genmake_hello.F "genmake_hello."$tfs > /dev/null 2>&1
97        RETVAL=$?
98        if test "x$RETVAL" != x0 ; then
99            if test "x$FS" = x ; then
100                FS='for'
101                FS90='fr9'
102                check_for_broken_Ff
103            else
104                cat <<EOF 2>&1
105    ERROR: Your file system cannot distinguish between *.F and *.f files
106      (fails the "cp" test) and this program cannot find a suitable
107      replacement extension.  Please try a different build environment or
108      contact the <MITgcm-support@mitgcm.org> list for help.
109    
110    EOF
111                exit -1
112            fi
113            return
114        fi
115        rm -f genmake_hello.*
116    
117        #  Check the ability of ${MAKE} and ${LN} to use the current set
118        #  of extensions.
119        cat <<EOF >> genmake_hello.F
120          program hello
121          write(*,*) 'hi'
122          stop
123          end
124    EOF
125        test -e Makefile  &&  mv -f Makefile Makefile.bak
126        cat <<EOF >> Makefile
127    %.$tfs : %.F
128    .SUFFIXES:
129    genmake_hello.$tfs: genmake_hello.F
130            $LN genmake_hello.F genmake_hello.$tfs
131    EOF
132        $MAKE "genmake_hello."$tfs > /dev/null 2>&1
133        RETVAL=$?
134        if test "x$RETVAL" != x0 -o ! -e "genmake_hello."$tfs ; then
135            if test "x$FS" = x ; then
136                FS='for'
137                FS90='fr9'
138                check_for_broken_Ff
139            else
140                cat <<EOF 2>&1
141    ERROR: Your file system cannot distinguish between *.F and *.f files
142      (fails the "make/ln" test) and this program cannot find a suitable
143      replacement extension.  Please try a different build environment or
144      contact the <MITgcm-support@mitgcm.org> list for help.
145    
146    EOF
147                exit -1
148                return
149            fi
150        fi
151        rm -f genmake_hello.* Makefile
152        test -e Makefile  &&  mv -f Makefile.bak Makefile
153    
154        #  If we make it here, use the extensions
155        FS=$tfs
156        FS90=$tfs9
157        return
158    }
159    
160    
161    look_for_makedepend()  {
162    
163        #  The "original" makedepend is part of the Imake system that is
164        #  most often distributed with XFree86 or with an XFree86 source
165        #  package.  As a result, many machines (eg. generic Linux) do not
166        #  have a system-default "makedepend" available.  For those
167        #  systems, we have two fall-back options:
168        #
169        #    1) a makedepend implementation shipped with the cyrus-imapd
170        #       package:  ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/
171        #
172        #    2) a known-buggy xmakedpend shell script
173        #
174        #  So the choices are, in order:
175        #
176        #    1) use the user-specified program
177        #    2) use a system-wide default
178        #    3) locally build and use the cyrus implementation
179        #    4) fall back to the buggy local xmakedpend script
180        #
181        if test "x${MAKEDEPEND}" = x ; then
182            which makedepend > /dev/null 2>&1
183            RV0=$?
184            cat <<EOF >> genmake_tc.f
185          program test
186          write(*,*) 'test'
187          stop
188          end
189    EOF
190            makedepend genmake_tc.f > /dev/null 2>&1
191            RV1=$?
192            if test "x${RV0}${RV1}" = x00 ; then
193                MAKEDEPEND=makedepend
194            else
195                echo "    a system-default makedepend was not found."
196                
197                #  Try to build the cyrus implementation
198                rm -f ./genmake_cy_md
199                (
200                    cd $ROOTDIR/tools/cyrus-imapd-makedepend  \
201                        &&  ./configure > /dev/null 2>&1  \
202                        &&  make > /dev/null 2>&1
203                    if test -x ./makedepend.exe ; then
204                        $LN ./makedepend.exe ./makedepend
205                    fi
206                    ./makedepend ifparser.c > /dev/null 2>&1  \
207                        &&  echo "true"
208                ) > ./genmake_cy_md
209                grep true ./genmake_cy_md > /dev/null 2>&1
210                RETVAL=$?
211                if test "x$RETVAL" = x0 ; then
212                    MAKEDEPEND='$(TOOLSDIR)/cyrus-imapd-makedepend/makedepend'
213                else
214                    MAKEDEPEND='$(TOOLSDIR)/xmakedepend'
215                fi
216                rm -f ./genmake_cy_md
217            fi
218        fi
219    }
220    
221    
222  # Guess possible config options for this host  # Guess possible config options for this host
223  find_possible_configs()  {  find_possible_configs()  {
224    
# Line 80  find_possible_configs()  { Line 227  find_possible_configs()  {
227      tmp3=`echo $tmp2 | sed -e 's/power macintosh/ppc/'`      tmp3=`echo $tmp2 | sed -e 's/power macintosh/ppc/'`
228      tmp1=`echo $tmp3 | sed -e 's|x86_64|amd64|'`      tmp1=`echo $tmp3 | sed -e 's|x86_64|amd64|'`
229      tmp2=`echo $tmp1 | sed -e 's/i[3-6]86/ia32/' | sed -e 's/athlon/ia32/'`      tmp2=`echo $tmp1 | sed -e 's/i[3-6]86/ia32/' | sed -e 's/athlon/ia32/'`
230      PLATFORM=$tmp2      tmp3=`echo $tmp2 | sed -e 's/cray sv1/craysv1/'`
231        PLATFORM=$tmp3
232        echo $PLATFORM | grep cygwin > /dev/null 2>&1  &&  PLATFORM=cygwin_ia32
233      OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`      OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`
234      echo "  The platform appears to be:  $PLATFORM"      echo "  The platform appears to be:  $PLATFORM"
235            
# Line 100  find_possible_configs()  { Line 249  find_possible_configs()  {
249          CPP="cpp -traditional -P"          CPP="cpp -traditional -P"
250      fi      fi
251    
252      # makedepend is not always available      look_for_makedepend
     if test "x${MAKEDEPEND}" = x ; then  
       which makedepend >& /dev/null  
       RETVAL=$?  
       if test "x${RETVAL}" = x1 ; then  
          echo "    makedepend was not found. Using xmakedpend instead."  
          MAKEDEPEND='$(TOOLSDIR)/xmakedepend'  
       fi  
     fi  
253    
254      # look for possible fortran compilers      # look for possible fortran compilers
255      tmp="$MITGCM_FC $FC efc g77 f77 pgf77 pgf95 ifc f90 f95 mpif77 mpf77 mpxlf95"      tmp="$MITGCM_FC $FC efc g77 f77 pgf77 pgf95 ifc f90 f95 mpif77 mpf77 mpxlf95"
# Line 145  EOF Line 286  EOF
286          echo "   "$p_FC          echo "   "$p_FC
287          if test "x$FC" = x ; then          if test "x$FC" = x ; then
288              FC=`echo $p_FC | $AWK '{print $1}'`              FC=`echo $p_FC | $AWK '{print $1}'`
289                echo "  Setting FORTRAN compiler to: "$FC
290          fi          fi
291      fi      fi
292    
293      for i in $p_FC ; do      if test "x$OPTFILE" = x ; then
294          p_OF=$ROOTDIR"/tools/build_options/"$PLATFORM"_"$i          OPTFILE=$ROOTDIR"/tools/build_options/"$PLATFORM"_"$FC
295          if test -r $p_OF ; then          if test ! -r $OPTFILE ; then
296              OPTFILE=$p_OF               echo "  I looked for the file "$OPTFILE" but did not find it"
297              echo "  The options file:  $p_OF"          fi
298              echo "    appears to match so we'll use it."      fi
299              break  #    echo "  The options file:  $p_OF"
300          fi  #    echo "    appears to match so we'll use it."
301      done  #   for i in $p_FC ; do
302    #p_OF=$ROOTDIR"/tools/build_options/"$PLATFORM"_"$i
303    #if test -r $p_OF ; then
304    #    OPTFILE=$p_OF
305    #    echo "  The options file:  $p_OF"
306    #    echo "    appears to match so we'll use it."
307    #    break
308    #fi
309    #   done
310      if test "x$OPTFILE" = x ; then      if test "x$OPTFILE" = x ; then
311          cat 1>&2 <<EOF          cat 1>&2 <<EOF
312    
# Line 215  get_pdepend_list()  { Line 365  get_pdepend_list()  {
365      . ./.pd_tmp      . ./.pd_tmp
366      rm -f ./.pd_tmp      rm -f ./.pd_tmp
367    
368      echo -n "PNAME = "${}      printf "PNAME = "${}
369  }  }
370    
371    
# Line 229  Usage: "$0" [OPTIONS] Line 379  Usage: "$0" [OPTIONS]
379      -help | --help | -h | --h      -help | --help | -h | --h
380            Print this help message and exit.            Print this help message and exit.
381    
382        -adoptfile NAME | --adoptfile NAME | -adof NAME | --adof NAME
383          -adoptfile=NAME | --adoptfile=NAME | -adof=NAME | --adof=NAME
384              Use "NAME" as the adoptfile.  By default, the file at
385              "tools/adjoint_options/adjoint_default" will be used.
386    
387      -nooptfile | --nooptfile      -nooptfile | --nooptfile
388        -optfile NAME | --optfile NAME | -of NAME | --of NAME        -optfile NAME | --optfile NAME | -of NAME | --of NAME
389        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME
# Line 253  Usage: "$0" [OPTIONS] Line 408  Usage: "$0" [OPTIONS]
408        --makefile=NAME | -mf=NAME        --makefile=NAME | -mf=NAME
409            Call the makefile "NAME".  The default is "Makefile".            Call the makefile "NAME".  The default is "Makefile".
410    
411        -makedepend NAME | -md NAME
412          --makedepend=NAME | -md=NAME
413              Use "NAME" for the MAKEDEPEND program.
414    
415      -rootdir NAME | --rootdir NAME | -rd NAME | --rd NAME      -rootdir NAME | --rootdir NAME | -rd NAME | --rd NAME
416        -rootdir=NAME | --rootdir=NAME | -rd=NAME | --rd=NAME        -rootdir=NAME | --rootdir=NAME | -rd=NAME | --rd=NAME
417            Specify the location of the MITgcm ROOTDIR as "NAME".            Specify the location of the MITgcm ROOTDIR as "NAME".
# Line 294  Usage: "$0" [OPTIONS] Line 453  Usage: "$0" [OPTIONS]
453            *only* works if it is supported by the OPTFILE that            *only* works if it is supported by the OPTFILE that
454            is being used.            is being used.
455    
456        -mpi | --mpi
457              Include MPI header files and link to MPI libraries
458        -mpi=PATH | --mpi=PATH
459              Include MPI header files and link to MPI libraries using MPI_ROOT
460              set to PATH. i.e. Include files from $PATH/include, link to libraries
461              from $PATH/lib and use binaries from $PATH/bin.
462    
463        -bash NAME
464              Explicitly specify the Bourne or BASH shell to use
465    
466    While it is most often a single word, the "NAME" variables specified    While it is most often a single word, the "NAME" variables specified
467    above can in many cases be a space-delimited string such as:    above can in many cases be a space-delimited string such as:
468    
# Line 438  EOF Line 607  EOF
607    
608    
609  check_netcdf_libs()  {  check_netcdf_libs()  {
610      cat <<EOF > genmake_tnc.F      cat <<EOF > genmake_tnc.for
611        program fgennc        program fgennc
612  #include "netcdf.inc"  #include "netcdf.inc"
613        integer iret, ncid, xid        integer iret, ncid, xid
# Line 450  check_netcdf_libs()  { Line 619  check_netcdf_libs()  {
619        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
620        end        end
621  EOF  EOF
622      $CPP genmake_tnc.F > genmake_tnc.f  \      $CPP genmake_tnc.for > genmake_tnc.f  \
623          &&  $FC $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.f $LIBS >> genmake_tnc.log 2>&1          &&  $FC $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.f $LIBS >> genmake_tnc.log 2>&1
624      RET_COMPILE=$?      RET_COMPILE=$?
625      test -x ./genmake_tnc  &&  ./genmake_tnc >> genmake_tnc.log 2>&1      test -x ./genmake_tnc  &&  ./genmake_tnc >> genmake_tnc.log 2>&1
# Line 458  EOF Line 627  EOF
627      if test "x$RET_COMPILE" = x0 -a "x$RETVAL" = x0 ; then      if test "x$RET_COMPILE" = x0 -a "x$RETVAL" = x0 ; then
628          HAVE_NETCDF=t          HAVE_NETCDF=t
629      else      else
630          cat genmake_tnc.log >> genmake_warnings          # try again with "-lnetcdf" added to the libs
631            $CPP genmake_tnc.for > genmake_tnc.f  \
632                &&  $FC $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.f \
633                $LIBS -lnetcdf >> genmake_tnc_2.log 2>&1
634            RET_COMPILE=$?
635            test -x ./genmake_tnc  &&  ./genmake_tnc >> genmake_tnc.log 2>&1
636            RETVAL=$?
637            if test "x$RET_COMPILE" = x0 -a "x$RETVAL" = x0 ; then
638                LIBS="$LIBS -lnetcdf"
639                HAVE_NETCDF=t
640            else
641                cat genmake_tnc.log >> genmake_warnings
642            fi
643      fi      fi
644      rm -f genmake_tnc*      rm -f genmake_tnc*
645  }  }
646    
647    
648    
649    ###############################################################################
650    #   Sequential part of script starts here
651    ###############################################################################
652    
653  #  Set defaults here  #  Set defaults here
654  COMMANDL="$0 $@"  COMMANDL="$0 $@"
655    
# Line 474  KPP= Line 660  KPP=
660  FC=  FC=
661  CPP=  CPP=
662  LINK=  LINK=
 # DEFINES="-DWORDLENGTH=4"  
663  DEFINES=  DEFINES=
664  PACKAGES=  PACKAGES=
665  ENABLE=  ENABLE=
# Line 491  FOPTIM= Line 676  FOPTIM=
676  CFLAGS=  CFLAGS=
677  KFLAGS1=  KFLAGS1=
678  KFLAGS2=  KFLAGS2=
679    #LDADD=
680  LIBS=  LIBS=
681  KPPFILES=  KPPFILES=
682  NOOPTFILES=  NOOPTFILES=
683  NOOPTFLAGS=  NOOPTFLAGS=
684    MPI=
685    MPIPATH=
686    
687  # DEFINES checked by test compilation  # DEFINES checked by test compilation
688  HAVE_SYSTEM=  HAVE_SYSTEM=
# Line 502  HAVE_FDATE= Line 690  HAVE_FDATE=
690  FC_NAMEMANGLE=  FC_NAMEMANGLE=
691  HAVE_CLOC=  HAVE_CLOC=
692  HAVE_NETCDF=  HAVE_NETCDF=
693    HAVE_ETIME=
694    
695  MODS=  MODS=
696  TOOLSDIR=  TOOLSDIR=
# Line 509  SOURCEDIRS= Line 698  SOURCEDIRS=
698  INCLUDEDIRS=  INCLUDEDIRS=
699  STANDARDDIRS="USE_THE_DEFAULT"  STANDARDDIRS="USE_THE_DEFAULT"
700    
701    G2ARGS=
702    BASH=
703  PWD=`pwd`  PWD=`pwd`
704  MAKE=make  MAKE=make
705  AWK=awk  AWK=awk
# Line 524  IEEE= Line 715  IEEE=
715  if test "x$MITGCM_IEEE" != x ; then  if test "x$MITGCM_IEEE" != x ; then
716      IEEE=$MITGCM_IEEE      IEEE=$MITGCM_IEEE
717  fi  fi
718    FS=
719    FS90=
720    
721  AUTODIFF_PKG_USED=f  AUTODIFF_PKG_USED=f
722  AD_OPTFILE=  AD_OPTFILE=
# Line 548  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPE Line 741  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPE
741  gm_s4="CFLAGS KFLAGS1 KFLAGS2 LIBS KPPFILES NOOPTFILES NOOPTFLAGS"  gm_s4="CFLAGS KFLAGS1 KFLAGS2 LIBS KPPFILES NOOPTFILES NOOPTFLAGS"
742  gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD MAKE THISHOSTNAME THISDATE MACHINE"  gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD MAKE THISHOSTNAME THISDATE MACHINE"
743  gm_s6="EXECUTABLE EXEHOOK EXEDIR PACKAGES_CONF"  gm_s6="EXECUTABLE EXEHOOK EXEDIR PACKAGES_CONF"
744  gm_s7="HAVE_SYSTEM HAVE_FDATE FC_NAMEMANGLE"  gm_s7="HAVE_SYSTEM HAVE_FDATE FC_NAMEMANGLE HAVE_ETIME"
745    
746  #  The following are all related to adjoint/tangent-linear stuff  #  The following are all related to adjoint/tangent-linear stuff
747  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 577  for i in . $MODS ; do Line 770  for i in . $MODS ; do
770          break          break
771      fi      fi
772  done  done
773  echo -n "  getting local config information:  "  printf "  getting local config information:  "
774  if test -e $gm_local ; then  if test -e $gm_local ; then
775      echo "using $gm_local"      echo "using $gm_local"
776      . $gm_local      . $gm_local
# Line 601  fi Line 794  fi
794  ac_prev=  ac_prev=
795  for ac_option ; do  for ac_option ; do
796    
797        G2ARGS="$G2ARGS \"$ac_option\""
798    
799      # If the previous option needs an argument, assign it.      # If the previous option needs an argument, assign it.
800      if test -n "$ac_prev"; then      if test -n "$ac_prev"; then
801          eval "$ac_prev=\$ac_option"          eval "$ac_prev=\$ac_option"
# Line 642  for ac_option ; do Line 837  for ac_option ; do
837          -make=* | --make=* | -m=* | --m=*)          -make=* | --make=* | -m=* | --m=*)
838              MAKE=$ac_optarg ;;              MAKE=$ac_optarg ;;
839                    
840            -bash | --bash)
841                ac_prev=BASH ;;
842            -bash=* | --bash=*)
843                BASH=$ac_optarg ;;
844            
845            -makedepend | --makedepend | -md | --md)
846                ac_prev=MAKEDEPEND ;;
847            -makedepend=* | --makedepend=* | -md=* | --md=*)
848                MAKEDEPEND=$ac_optarg ;;
849            
850          -makefile | --makefile | -ma | --ma)          -makefile | --makefile | -ma | --ma)
851              ac_prev=MAKEFILE ;;              ac_prev=MAKEFILE ;;
852          -makefile=* | --makefile=* | -ma=* | --ma=*)          -makefile=* | --makefile=* | -ma=* | --ma=*)
# Line 689  for ac_option ; do Line 894  for ac_option ; do
894          -fc=* | --fc=*)          -fc=* | --fc=*)
895              FC=$ac_optarg ;;              FC=$ac_optarg ;;
896                    
897            -fs | --fs)
898                ac_prev=FS ;;
899            -fs=* | --fs=*)
900                FS=$ac_optarg ;;
901            
902            -fs90 | --fs90)
903                ac_prev=FS90 ;;
904            -fs90=* | --fs90=*)
905                FS90=$ac_optarg ;;
906            
907          -ieee | --ieee)          -ieee | --ieee)
908              IEEE=true ;;              IEEE=true ;;
909          -noieee | --noieee)          -noieee | --noieee)
910              IEEE= ;;              IEEE= ;;
911    
912            -mpi | --mpi)
913                MPI=true ;;
914            -mpi=* | --mpi=*)
915                MPIPATH=$ac_optarg
916                MPI=true ;;
917                    
918  #       -jam | --jam)  #       -jam | --jam)
919  #           JAM=1 ;;  #           JAM=1 ;;
# Line 745  if test "x${ROOTDIR}" = x ; then Line 966  if test "x${ROOTDIR}" = x ; then
966          for d in . .. ../.. ../../.. ../../../.. ../../../../.. ; do          for d in . .. ../.. ../../.. ../../../.. ../../../../.. ; do
967              if [ -d "$d/model" -a -d "$d/eesupp" -a -d "$d/pkg" ]; then              if [ -d "$d/model" -a -d "$d/eesupp" -a -d "$d/pkg" ]; then
968                  ROOTDIR=$d                  ROOTDIR=$d
969                  echo -n "Warning:  ROOTDIR was not specified but there appears to be"                  printf "Warning:  ROOTDIR was not specified but there appears to be"
970                  echo " a copy of MITgcm at \"$ROOTDIR\" so we'll try it."                  echo " a copy of MITgcm at \"$ROOTDIR\" so we'll try it."
971                  break                  break
972              fi              fi
# Line 779  if test "x$OPTFILE" != xNONE ; then Line 1000  if test "x$OPTFILE" != xNONE ; then
1000          . "$OPTFILE"          . "$OPTFILE"
1001          RETVAL=$?          RETVAL=$?
1002          if test "x$RETVAL" != x0 ; then          if test "x$RETVAL" != x0 ; then
1003              echo -n "Error: failed to source OPTFILE \"$OPTFILE\""              printf "Error: failed to source OPTFILE \"$OPTFILE\""
1004              echo "--please check that variable syntax is bash-compatible"              echo "--please check that variable syntax is bash-compatible"
1005              exit 1              exit 1
1006          fi          fi
# Line 792  if test "x$OPTFILE" != xNONE ; then Line 1013  if test "x$OPTFILE" != xNONE ; then
1013      fi      fi
1014  fi  fi
1015    
1016    #  Check for broken systems that cannot correctly distinguish *.F and *.f files
1017    # check_for_broken_Ff
1018    
1019  echo "  getting AD_OPTFILE information:  "  echo "  getting AD_OPTFILE information:  "
1020  if test "x${AD_OPTFILE}" = x ; then  if test "x${AD_OPTFILE}" = x ; then
1021      if test "x$MITGCM_AD_OF" = x ; then      if test "x$MITGCM_AD_OF" = x ; then
# Line 806  if test "x${AD_OPTFILE}" != xNONE ; then Line 1030  if test "x${AD_OPTFILE}" != xNONE ; then
1030          . "$AD_OPTFILE"          . "$AD_OPTFILE"
1031          RETVAL=$?          RETVAL=$?
1032          if test "x$RETVAL" != x0 ; then          if test "x$RETVAL" != x0 ; then
1033              echo -n "Error: failed to source AD_OPTFILE \"$AD_OPTFILE\""              printf "Error: failed to source AD_OPTFILE \"$AD_OPTFILE\""
1034              echo "--please check that variable syntax is bash-compatible"              echo "--please check that variable syntax is bash-compatible"
1035              exit 1              exit 1
1036          fi          fi
# Line 821  fi Line 1045  fi
1045    
1046  #  Check that FC, LINK, CPP, S64, LN, and MAKE are defined.  If not,  #  Check that FC, LINK, CPP, S64, LN, and MAKE are defined.  If not,
1047  #  either set defaults or complain and abort!  #  either set defaults or complain and abort!
1048    if test ! "x$BASH" = x ; then
1049        # add a trailing space so that it works within the Makefile syntax (see below)
1050        BASH="$BASH "
1051    fi
1052  if test "x$FC" = x ; then  if test "x$FC" = x ; then
1053      cat <<EOF 1>&2      cat <<EOF 1>&2
1054    
# Line 841  if test "x$CPP" = x ; then Line 1069  if test "x$CPP" = x ; then
1069      CPP=cpp      CPP=cpp
1070  fi  fi
1071  #EH3 === UGLY ===  #EH3 === UGLY ===
1072  #  The following an ugly little hack to check for $CPP in /lib/ and it  #  The following is an ugly little hack to check for $CPP in /lib/ and
1073  #  should eventually be replaced with a more general function that  #  it should eventually be replaced with a more general function that
1074  #  searches a combo of the user's path and a list of "usual suspects"  #  searches a combo of the user's path and a list of "usual suspects"
1075  #  to find the correct location for binaries such as $CPP.  #  to find the correct location for binaries such as $CPP.
1076  for i in " " "/lib/" ; do  for i in " " "/lib/" ; do
# Line 865  EOF Line 1093  EOF
1093  else  else
1094      rm -f test_cpp      rm -f test_cpp
1095  fi  fi
1096  if test "x$MAKEDEPEND" = x ; then  look_for_makedepend
     MAKEDEPEND=makedepend  
 fi  
1097  if test "x$LN" = x ; then  if test "x$LN" = x ; then
1098      LN="ln -s"      LN="ln -s"
1099  fi  fi
# Line 885  EOF Line 1111  EOF
1111  fi  fi
1112  rm -f genmake_test_ln genmake_tlink  rm -f genmake_test_ln genmake_tlink
1113    
1114    #  Check for broken *.F/*.f handling and fix if possible
1115    check_for_broken_Ff
1116    
1117    if test ! "x$MPI" = x ; then
1118          echo "  Turning on MPI cpp macros"
1119          DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"
1120    fi
1121    
1122  printf "\n===  Checking system libraries  ===\n"  printf "\n===  Checking system libraries  ===\n"
1123  echo -n "  Do we have the system() command using $FC...  "  printf "  Do we have the system() command using $FC...  "
1124  cat > genmake_tcomp.f <<EOF  cat > genmake_tcomp.f <<EOF
1125        program hello        program hello
1126        call system('echo hi')        call system('echo hi')
# Line 905  else Line 1138  else
1138  fi  fi
1139  rm -f genmake_tcomp*  rm -f genmake_tcomp*
1140    
1141  echo -n "  Do we have the fdate() command using $FC...  "  printf "  Do we have the fdate() command using $FC...  "
1142  cat > genmake_tcomp.f <<EOF  cat > genmake_tcomp.f <<EOF
1143        program hello        program hello
1144        CHARACTER(128) string        CHARACTER(128) string
# Line 926  else Line 1159  else
1159  fi  fi
1160  rm -f genmake_tcomp*  rm -f genmake_tcomp*
1161    
1162  echo -n "  Can we call simple C routines (here, \"cloc()\") using $FC...  "  printf "  Do we have the etime() command using $FC...  "
1163    cat > genmake_tcomp.f <<EOF
1164          program hello
1165          REAL*4 ACTUAL, TARRAY(2)
1166          EXTERNAL ETIME
1167          REAL*4 ETIME
1168          actual = etime( tarray )
1169          print *, tarray
1170          end
1171    EOF
1172    $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.f > genmake_tcomp.log 2>&1
1173    RETVAL=$?
1174    if test "x$RETVAL" = x0 ; then
1175        HAVE_ETIME=t
1176        DEFINES="$DEFINES -DHAVE_ETIME"
1177        echo "yes"
1178    else
1179        HAVE_ETIME=
1180        echo "no"
1181    fi
1182    rm -f genmake_tcomp*
1183    
1184    printf "  Can we call simple C routines (here, \"cloc()\") using $FC...  "
1185  check_HAVE_CLOC  check_HAVE_CLOC
1186  if test "x$HAVE_CLOC" != x ; then  if test "x$HAVE_CLOC" != x ; then
1187      echo "yes"      echo "yes"
# Line 935  else Line 1190  else
1190  fi  fi
1191  rm -f genmake_t*  rm -f genmake_t*
1192    
1193  echo -n "  Can we create NetCDF-enabled binaries...  "  printf "  Can we create NetCDF-enabled binaries...  "
1194  check_netcdf_libs  check_netcdf_libs
1195  if test "x$HAVE_NETCDF" != x ; then  if test "x$HAVE_NETCDF" != x ; then
1196      echo "yes"      echo "yes"
# Line 945  fi Line 1200  fi
1200    
1201    
1202  printf "\n===  Setting defaults  ===\n"  printf "\n===  Setting defaults  ===\n"
1203  echo -n "  Adding MODS directories:  "  printf "  Adding MODS directories:  "
1204  for d in $MODS ; do  for d in $MODS ; do
1205      if test ! -d $d ; then      if test ! -d $d ; then
1206          echo          echo
1207          echo "Error: MODS directory \"$d\" not found!"          echo "Error: MODS directory \"$d\" not found!"
1208          exit 1          exit 1
1209      else      else
1210          echo -n " $d"          printf " $d"
1211          SOURCEDIRS="$SOURCEDIRS $d"          SOURCEDIRS="$SOURCEDIRS $d"
1212          INCLUDEDIRS="$INCLUDEDIRS $d"          INCLUDEDIRS="$INCLUDEDIRS $d"
1213      fi      fi
# Line 982  if test "x${TOOLSDIR}" = x ; then Line 1237  if test "x${TOOLSDIR}" = x ; then
1237      TOOLSDIR="$ROOTDIR/tools"      TOOLSDIR="$ROOTDIR/tools"
1238  fi  fi
1239  if test ! -d ${TOOLSDIR} ; then  if test ! -d ${TOOLSDIR} ; then
1240      echo "Error: the specified $TOOLSDIR (\"$TOOLSDIR\") does not exist!"      echo "Error: the specified TOOLSDIR (\"$TOOLSDIR\") does not exist!"
1241      exit 1      exit 1
1242  fi  fi
1243  if test "x$S64" = x ; then  if test "x$S64" = x ; then
# Line 1077  else Line 1332  else
1332          def=`cat $PDEFAULT | sed -e 's/#.*$//g' | $AWK '(NF>0){print $0}'`          def=`cat $PDEFAULT | sed -e 's/#.*$//g' | $AWK '(NF>0){print $0}'`
1333          RETVAL=$?          RETVAL=$?
1334          if test "x${RETVAL}" != x0 ; then          if test "x${RETVAL}" != x0 ; then
1335              echo -n "Error: can't parse default package list "              printf "Error: can't parse default package list "
1336              echo "-- please check PDEFAULT=\"$PDEFAULT\""              echo "-- please check PDEFAULT=\"$PDEFAULT\""
1337              exit 1              exit 1
1338          fi          fi
# Line 1085  else Line 1340  else
1340              PACKAGES="$PACKAGES $i"              PACKAGES="$PACKAGES $i"
1341          done          done
1342          echo "    before group expansion packages are: $PACKAGES"          echo "    before group expansion packages are: $PACKAGES"
1343          expand_pkg_groups          while ! expand_pkg_groups; do echo > /dev/null; done
1344          echo "    after group expansion packages are:  $PACKAGES"          echo "    after group expansion packages are:  $PACKAGES"
1345      fi      fi
1346  fi  fi
1347    
1348  echo "  applying DISABLE settings"  echo "  applying DISABLE settings"
1349    for i in $PACKAGES ; do
1350        echo $i >> ./.tmp_pack
1351    done
1352    for i in `grep  "-" ./.tmp_pack` ; do
1353        j=`echo $i | sed 's/[-]//'`
1354        DISABLE="$DISABLE $j"
1355    done
1356  pack=  pack=
1357  for p in $PACKAGES ; do  for p in $PACKAGES ; do
1358      addit="t"      addit="t"
# Line 1107  PACKAGES="$pack" Line 1369  PACKAGES="$pack"
1369  echo "  applying ENABLE settings"  echo "  applying ENABLE settings"
1370  echo "" > ./.tmp_pack  echo "" > ./.tmp_pack
1371  PACKAGES="$PACKAGES $ENABLE"  PACKAGES="$PACKAGES $ENABLE"
1372    # Test if each explicitly referenced package exists
1373  for i in $PACKAGES ; do  for i in $PACKAGES ; do
1374      if test ! -d "$ROOTDIR/pkg/$i" ; then      j=`echo $i | sed 's/[-+]//'`
1375        if test ! -d "$ROOTDIR/pkg/$j" ; then
1376          echo "Error: can't find package $i at \"$ROOTDIR/pkg/$i\""          echo "Error: can't find package $i at \"$ROOTDIR/pkg/$i\""
1377          exit 1          exit 1
1378      fi      fi
1379      echo $i >> ./.tmp_pack      echo $i >> ./.tmp_pack
1380  done  done
 pack=`cat ./.tmp_pack | sort | uniq`  
 rm -f ./.tmp_pack  
1381  PACKAGES=  PACKAGES=
1382  for i in $pack ; do  for i in `grep -v "-" ./.tmp_pack | sort | uniq` ; do
1383      PACKAGES="$PACKAGES $i"      PACKAGES="$PACKAGES $i"
1384  done  done
1385    rm -f ./.tmp_pack
1386  echo "    packages are:  $PACKAGES"  echo "    packages are:  $PACKAGES"
1387    
1388  echo "  applying package dependency rules"  echo "  applying package dependency rules"
# Line 1218  if test "x$RETVAL" = x0 ; then Line 1481  if test "x$RETVAL" = x0 ; then
1481          cat make_mnc.errors 1>&2          cat make_mnc.errors 1>&2
1482          exit 1          exit 1
1483      fi      fi
1484      if test -a "x$HAVE_NETCDF" != xt ; then      if test "x$HAVE_NETCDF" != xt ; then
1485          cat <<EOF          cat <<EOF
1486    
1487  WARNING: the "mnc" package has been enabled but tests failed to  WARNING: the "mnc" package has been enabled but tests failed to
# Line 1360  rm -rf .links.tmp Line 1623  rm -rf .links.tmp
1623  mkdir .links.tmp  mkdir .links.tmp
1624  echo "# This section creates symbolic links" > srclinks.tmp  echo "# This section creates symbolic links" > srclinks.tmp
1625  echo "" >> srclinks.tmp  echo "" >> srclinks.tmp
1626  echo -n 'SRCFILES = '    > srclist.inc  printf 'SRCFILES = '    > srclist.inc
1627  echo -n 'CSRCFILES = '   > csrclist.inc  printf 'CSRCFILES = '   > csrclist.inc
1628  echo -n 'F90SRCFILES = ' > f90srclist.inc  printf 'F90SRCFILES = ' > f90srclist.inc
1629  echo -n 'HEADERFILES = ' > hlist.inc  printf 'HEADERFILES = ' > hlist.inc
1630  echo -n 'AD_FLOW_FILES = ' > ad_flow_files.inc  printf 'AD_FLOW_FILES = ' > ad_flow_files.inc
1631  alldirs="$SOURCEDIRS $INCLUDEDIRS ."  alldirs="$SOURCEDIRS $INCLUDEDIRS ."
1632  for d in $alldirs ; do  for d in $alldirs ; do
1633      deplist=      deplist=
# Line 1389  for d in $alldirs ; do Line 1652  for d in $alldirs ; do
1652                  case $extn in                  case $extn in
1653                      F)                      F)
1654                          echo    " \\"  >> srclist.inc                          echo    " \\"  >> srclist.inc
1655                          echo -n " $sf" >> srclist.inc                          printf " $sf" >> srclist.inc
1656                          ;;                          ;;
1657                      F90)                      F90)
1658                          echo    " \\"  >> f90srclist.inc                          echo    " \\"  >> f90srclist.inc
1659                          echo -n " $sf" >> f90srclist.inc                          printf " $sf" >> f90srclist.inc
1660                          ;;                          ;;
1661                      c)                      c)
1662                          echo    " \\"  >> csrclist.inc                          echo    " \\"  >> csrclist.inc
1663                          echo -n " $sf" >> csrclist.inc                          printf " $sf" >> csrclist.inc
1664                          ;;                          ;;
1665                      h)                      h)
1666                          echo    " \\"  >> hlist.inc                          echo    " \\"  >> hlist.inc
1667                          echo -n " $sf" >> hlist.inc                          printf " $sf" >> hlist.inc
1668                          ;;                          ;;
1669                      flow)                      flow)
1670                          echo    " \\"  >> ad_flow_files.inc                          echo    " \\"  >> ad_flow_files.inc
1671                          echo -n " $sf" >> ad_flow_files.inc                          printf " $sf" >> ad_flow_files.inc
1672                          ;;                          ;;
1673                  esac                  esac
1674              fi              fi
# Line 1434  echo "#    $MACHINE" >> $MAKEFILE Line 1697  echo "#    $MACHINE" >> $MAKEFILE
1697  echo "# This makefile was generated automatically on" >> $MAKEFILE  echo "# This makefile was generated automatically on" >> $MAKEFILE
1698  echo "#    $THISDATE" >> $MAKEFILE  echo "#    $THISDATE" >> $MAKEFILE
1699  echo "# by the command:" >> $MAKEFILE  echo "# by the command:" >> $MAKEFILE
1700  echo "#    $0 $@" >> $MAKEFILE  echo "#    $0 $G2ARGS" >> $MAKEFILE
1701  echo "# executed by:" >> $MAKEFILE  echo "# executed by:" >> $MAKEFILE
1702  echo "#    $USER@${THISHOSTNAME}:${THISCWD}" >> $MAKEFILE  echo "#    $USER@${THISHOSTNAME}:${THISCWD}" >> $MAKEFILE
1703    
# Line 1502  FC = ${FC} Line 1765  FC = ${FC}
1765  # Fortran compiler  # Fortran compiler
1766  F90C = ${F90C}  F90C = ${F90C}
1767  # Link editor  # Link editor
1768  LINK = ${LINK}  LINK = ${LINK} ${LDADD}
1769    
1770  # Defines for CPP  # Defines for CPP
1771  DEFINES = ${DEFINES}  DEFINES = ${DEFINES}
# Line 1534  cat csrclist.inc      >> $MAKEFILE Line 1797  cat csrclist.inc      >> $MAKEFILE
1797  cat f90srclist.inc    >> $MAKEFILE  cat f90srclist.inc    >> $MAKEFILE
1798  cat hlist.inc         >> $MAKEFILE  cat hlist.inc         >> $MAKEFILE
1799  cat ad_flow_files.inc >> $MAKEFILE  cat ad_flow_files.inc >> $MAKEFILE
1800  echo               >> $MAKEFILE  echo >> $MAKEFILE
1801  echo 'F77FILES =  $(SRCFILES:.F=.f)'                                           >> $MAKEFILE  echo 'F77FILES =  $(SRCFILES:.F=.'$FS')'      >> $MAKEFILE
1802  echo 'F90FILES =  $(F90SRCFILES:.F90=.f90)'                                    >> $MAKEFILE  echo 'F90FILES =  $(F90SRCFILES:.F=.'$FS90')' >> $MAKEFILE
1803  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE
1804    echo >> $MAKEFILE
1805    echo '.SUFFIXES:' >> $MAKEFILE
1806    echo '.SUFFIXES: .o .'$FS' .p .F .c .'$FS90' .F90' >> $MAKEFILE
1807  rm -f srclist.inc csrclist.inc hlist.inc flist.tmp clist.tmp f90srclist.inc  rm -f srclist.inc csrclist.inc hlist.inc flist.tmp clist.tmp f90srclist.inc
1808  rm -f ad_flow_files.inc  rm -f ad_flow_files.inc
1809    
1810  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
1811    
 .SUFFIXES:  
 .SUFFIXES: .o .f .p .F .c .F90 .f90  
   
1812  all: \$(EXECUTABLE)  all: \$(EXECUTABLE)
1813  \$(EXECUTABLE): \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(OBJFILES)  \$(EXECUTABLE): \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(OBJFILES)
1814          @echo Creating \$@ ...          @echo Creating \$@ ...
1815          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)
1816  depend:  depend:
1817          @make links          @make links
1818          \$(MAKEDEPEND) -o .f \$(DEFINES) \$(INCLUDES) \$(SRCFILES)          \$(MAKEDEPEND) -o .$FS \$(DEFINES) \$(INCLUDES) \$(SRCFILES)
1819          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)
1820            -rm -f makedepend.out
1821    
1822  links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(SPECIAL_FILES)  links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(SPECIAL_FILES)
1823    
# Line 1565  output.txt: \$(EXECUTABLE) Line 1828  output.txt: \$(EXECUTABLE)
1828          @\$(EXECUTABLE) > \$@          @\$(EXECUTABLE) > \$@
1829    
1830  clean:  clean:
1831          -rm -rf *.o *.f *.p *.f90 *.mod ${RMFILES} work.{pc,pcl} *.template          -rm -rf *.o *.$FS *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template
1832  Clean:  Clean:
1833          @make clean          @make clean
1834          @make cleanlinks          @make cleanlinks
# Line 1576  CLEAN: Line 1839  CLEAN:
1839          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;
1840          -find \$(EXEDIR) -name "*.data" -exec rm {} \;          -find \$(EXEDIR) -name "*.data" -exec rm {} \;
1841          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;
1842          -rm -f \$(EXECUTABLE) output.txt          -rm -f \$(EXECUTABLE) output.txt STD*
1843    
1844  #eh3 Makefile: makefile  #eh3 Makefile: makefile
1845  makefile:  makefile:
1846          $THIS_SCRIPT $@          $THIS_SCRIPT $G2ARGS
1847  cleanlinks:  cleanlinks:
1848          -find . -type l -exec rm {} \;          -find . -type l -exec rm {} \;
1849    
1850  # Special targets ($SPECIAL_FILES) which are create by make  # Special targets ($SPECIAL_FILES) which are create by make
1851  ${PACKAGES_DOT_H}:  ${PACKAGES_DOT_H}:
1852          @echo Creating \$@ ...          @echo Creating \$@ ...
1853          @\$(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 "Warning - this file is automatically generated - do NOT edit" -bPACKAGES_CONFIG_H "Disabled packages:" \$(DISABLED_PACKAGES) " " "Enabled packages:" \$(ENABLED_PACKAGES) > \$@
1854  AD_CONFIG.h:  AD_CONFIG.h:
1855          @echo Creating \$@ ...          @echo Creating \$@ ...
1856          @\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > \$@          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > \$@
1857  FC_NAMEMANGLE.h:  FC_NAMEMANGLE.h:
1858          @echo Creating \$@ ...          @echo Creating \$@ ...
1859          echo "$FC_NAMEMANGLE" > \$@          echo "$FC_NAMEMANGLE" > \$@
1860    
1861  # The normal chain of rules is (  .F - .f - .o  )  # The normal chain of rules is (  .F - .$FS - .o  )
1862  .F.f:  
1863    %.o : %.F
1864    
1865    .F.$FS:
1866          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
1867  .f.o:  .$FS.o:
1868          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<
1869  .F90.f90:  .F90.$FS90:
1870          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
1871  .f90.o:  .$FS90.o:
1872          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<
1873  .c.o:  .c.o:
1874          \$(CC) \$(CFLAGS) -c \$<          \$(CC) \$(CFLAGS) -c \$<
1875    
1876  # Special exceptions that use the ( .F - .p - .f - .o ) rule-chain  # Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain
1877  .F.p:  .F.p:
1878          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
1879  .p.f:  .p.$FS:
1880          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<
1881    
1882  #=========================================  #=========================================
# Line 1637  done Line 1903  done
1903    
1904  echo "  Add the source list for AD code generation"  echo "  Add the source list for AD code generation"
1905  echo >> $MAKEFILE  echo >> $MAKEFILE
1906  echo -n "AD_FILES = " >> $MAKEFILE  printf "AD_FILES = " >> $MAKEFILE
1907  AD_FILES=`cat ad_files`  AD_FILES=`cat ad_files`
1908  for i in $AD_FILES ; do  for i in $AD_FILES ; do
1909      echo    " \\" >> $MAKEFILE      echo    " \\" >> $MAKEFILE
1910      echo -n " $i" >> $MAKEFILE      printf " $i" >> $MAKEFILE
1911  done  done
1912  echo >> $MAKEFILE  echo >> $MAKEFILE
1913  rm -f ad_files  rm -f ad_files
# Line 1654  adtaf: ad_taf_output.f Line 1920  adtaf: ad_taf_output.f
1920  adtamc: ad_tamc_output.f  adtamc: ad_tamc_output.f
1921    
1922  ad_input_code.f: \$(AD_FILES) \$(HEADERFILES)  ad_input_code.f: \$(AD_FILES) \$(HEADERFILES)
1923          @\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ad_config.template          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ad_config.template
1924          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
1925          -rm -f ad_config.template          -rm -f ad_config.template
1926          @make \$(F77FILES)          @make \$(F77FILES)
# Line 1686  ftltaf: ftl_taf_output.f Line 1952  ftltaf: ftl_taf_output.f
1952  ftltamc: ftl_tamc_output.f  ftltamc: ftl_tamc_output.f
1953    
1954  ftl_input_code.f: \$(AD_FILES) \$(HEADERFILES)  ftl_input_code.f: \$(AD_FILES) \$(HEADERFILES)
1955          @\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ftl_config.template          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ftl_config.template
1956          cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h          cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h
1957          -rm -f ftl_config.template          -rm -f ftl_config.template
1958          @make \$(F77FILES)          @make \$(F77FILES)
# Line 1735  for i in $KPPFILES ; do Line 2001  for i in $KPPFILES ; do
2001      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
2002          echo "Error: unable to add file \"$i\" to the exceptions list"          echo "Error: unable to add file \"$i\" to the exceptions list"
2003      fi      fi
2004      echo "$base.f: $base.p" >> $MAKEFILE      echo "$base.$FS: $base.p" >> $MAKEFILE
2005  done  done
2006    
2007  echo "  Making list of NOOPTFILES"  echo "  Making list of NOOPTFILES"
# Line 1745  for i in $NOOPTFILES ; do Line 2011  for i in $NOOPTFILES ; do
2011      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
2012          echo "Error: unable to add file \"$i\" to the exceptions list"          echo "Error: unable to add file \"$i\" to the exceptions list"
2013      fi      fi
2014      echo "$base.o: $base.f" >> $MAKEFILE      echo "$base.o: $base.$FS" >> $MAKEFILE
2015      printf "\t\$(FC) \$(FFLAGS) \$(NOOPTFLAGS) -c \$<\n" >> $MAKEFILE      printf "\t\$(FC) \$(FFLAGS) \$(NOOPTFLAGS) -c \$<\n" >> $MAKEFILE
2016  done  done
2017    
# Line 1759  printf "\n\n# DO NOT DELETE\n" >> $MAKEF Line 2025  printf "\n\n# DO NOT DELETE\n" >> $MAKEF
2025  printf "\n===  Done  ===\n"  printf "\n===  Done  ===\n"
2026    
2027  # Create special header files  # Create special header files
2028  $TOOLSDIR/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bPACKAGES_CONFIG_H "Disabled packages:" $DISABLED_PACKAGES " " "Enabled packages:" $ENABLED_PACKAGES > $PACKAGES_DOT_H".tmp"  $BASH $TOOLSDIR/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bPACKAGES_CONFIG_H "Disabled packages:" $DISABLED_PACKAGES " " "Enabled packages:" $ENABLED_PACKAGES > $PACKAGES_DOT_H".tmp"
2029  if test ! -f $PACKAGES_DOT_H ; then  if test ! -f $PACKAGES_DOT_H ; then
2030      mv -f $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H      mv -f $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H
2031  else  else
# Line 1773  else Line 2039  else
2039      fi      fi
2040  fi  fi
2041  if test ! -f AD_CONFIG.h ; then  if test ! -f AD_CONFIG.h ; then
2042      $TOOLSDIR/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > AD_CONFIG.h      $BASH $TOOLSDIR/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > AD_CONFIG.h
2043  fi  fi
2044    
2045    
2046  #  Write the "state" for future records  #  Write the "state" for future records
2047  if test "x$DUMPSTATE" != xf ; then  if test "x$DUMPSTATE" != xf ; then
2048      echo -n "" > genmake_state      printf "" > genmake_state
2049      for i in $gm_state ; do      for i in $gm_state ; do
2050          t1="t2=\$$i"          t1="t2=\$$i"
2051          eval $t1          eval $t1

Legend:
Removed from v.1.63  
changed lines
  Added in v.1.86

  ViewVC Help
Powered by ViewVC 1.1.22