/[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.53 by edhill, Fri Dec 5 15:08:33 2003 UTC revision 1.76 by edhill, Thu Apr 8 21:32:11 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='fs'
101                FS90='fs90'
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    .SUFFIXES:
128    genmake_hello.$tfs: genmake_hello.F
129            $LN genmake_hello.F genmake_hello.$tfs
130    EOF
131        $MAKE "genmake_hello."$tfs > /dev/null 2>&1
132        RETVAL=$?
133        if test "x$RETVAL" != x0 -o ! -e "genmake_hello."$tfs ; then
134            if test "x$FS" = x ; then
135                FS='fs'
136                FS90='fs9'
137                check_for_broken_Ff
138            else
139                cat <<EOF 2>&1
140    ERROR: Your file system cannot distinguish between *.F and *.f files
141      (fails the "make/ln" test) and this program cannot find a suitable
142      replacement extension.  Please try a different build environment or
143      contact the <MITgcm-support@mitgcm.org> list for help.
144    
145    EOF
146                exit -1
147                return
148            fi
149        fi
150        rm -f genmake_hello.* Makefile
151        test -e Makefile  &&  mv -f Makefile.bak Makefile
152    
153        #  If we make it here, use the extensions
154        FS=$tfs
155        FS90=$tfs9
156        return
157    }
158    
159    
160  # Guess possible config options for this host  # Guess possible config options for this host
161  find_possible_configs()  {  find_possible_configs()  {
162    
163      tmp1=`uname`"_"`uname -m`      tmp1=`uname`"_"`uname -m`
164      tmp2=`echo $tmp1 | sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`      tmp2=`echo $tmp1 | sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
165      tmp3=`echo $tmp2 | sed -e 's/power macintosh/ppc/'`      tmp3=`echo $tmp2 | sed -e 's/power macintosh/ppc/'`
166      PLATFORM=`echo $tmp3 | sed -e 's/i[3-6]86/ia32/' | sed -e 's/athlon/ia32/'`      tmp1=`echo $tmp3 | sed -e 's|x86_64|amd64|'`
167        tmp2=`echo $tmp1 | sed -e 's/i[3-6]86/ia32/' | sed -e 's/athlon/ia32/'`
168        tmp3=`echo $tmp2 | sed -e 's/cray sv1/craysv1/'`
169        PLATFORM=$tmp3
170      OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`      OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`
171      echo "  The platform appears to be:  $PLATFORM"      echo "  The platform appears to be:  $PLATFORM"
172            
# Line 98  find_possible_configs()  { Line 186  find_possible_configs()  {
186          CPP="cpp -traditional -P"          CPP="cpp -traditional -P"
187      fi      fi
188    
189      # makedepend is not always available      #  The "original" makedepend is part of the Imake system that is
190        #  most often distributed with XFree86 or with an XFree86 source
191        #  package.  As a result, many machines (eg. generic Linux) do not
192        #  have a system-default "makedepend" available.  For those
193        #  systems, we have two fall-back options:
194        #
195        #    1) a makedepend implementation shipped with the cyrus-imapd
196        #       package:  ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/
197        #
198        #    2) a known-buggy xmakedpend shell script
199        #
200        #  So the choices are, in order:
201        #
202        #    1) use the user-specified program
203        #    2) use a system-wide default
204        #    3) locally build and use the cyrus implementation
205        #    4) fall back to the buggy local xmakedpend script
206        #
207      if test "x${MAKEDEPEND}" = x ; then      if test "x${MAKEDEPEND}" = x ; then
208        which makedepend >& /dev/null        which makedepend > /dev/null 2>&1
209        RETVAL=$?        RETVAL=$?
210        if test "x${RETVAL}" = x1 ; then        if test ! "x${RETVAL}" = x0 ; then
211           echo "    makedepend was not found. Using xmakedpend instead."           echo "    a system-default makedepend was not found."
212           MAKEDEPEND='$(TOOLSDIR)/xmakedepend'  
213             #  Try to build the cyrus impl
214             rm -f ./genmake_cy_md
215             (
216                 cd $ROOTDIR/tools/cyrus-imapd-makedepend  \
217                     &&  ./configure > /dev/null 2>&1  \
218                     &&  make > /dev/null 2>&1  \
219                     &&  ./makedepend ifparser.c > /dev/null 2>&1  \
220                     &&  echo "true"
221             ) > ./genmake_cy_md
222             grep true ./genmake_cy_md > /dev/null 2>&1
223             RETVAL=$?
224             if test "x$RETVAL" = x0 ; then
225                 MAKEDEPEND='$(TOOLSDIR)/cyrus-imapd-makedepend/makedepend'
226             else
227                 MAKEDEPEND='$(TOOLSDIR)/xmakedepend'
228             fi
229             rm -f ./genmake_cy_md
230        fi        fi
231      fi      fi
232    
# Line 143  EOF Line 265  EOF
265          echo "   "$p_FC          echo "   "$p_FC
266          if test "x$FC" = x ; then          if test "x$FC" = x ; then
267              FC=`echo $p_FC | $AWK '{print $1}'`              FC=`echo $p_FC | $AWK '{print $1}'`
268                echo "  Setting FORTRAN compiler to: "$FC
269          fi          fi
270      fi      fi
271    
272      for i in $p_FC ; do      if test "x$OPTFILE" = x ; then
273          p_OF=$ROOTDIR"/tools/build_options/"$PLATFORM"_"$i          OPTFILE=$ROOTDIR"/tools/build_options/"$PLATFORM"_"$FC
274          if test -r $p_OF ; then          if test ! -r $OPTFILE ; then
275              OPTFILE=$p_OF               echo "  I looked for the file "$OPTFILE" but did not find it"
276              echo "  The options file:  $p_OF"          fi
277              echo "    appears to match so we'll use it."      fi
278              break  #    echo "  The options file:  $p_OF"
279          fi  #    echo "    appears to match so we'll use it."
280      done  #   for i in $p_FC ; do
281    #p_OF=$ROOTDIR"/tools/build_options/"$PLATFORM"_"$i
282    #if test -r $p_OF ; then
283    #    OPTFILE=$p_OF
284    #    echo "  The options file:  $p_OF"
285    #    echo "    appears to match so we'll use it."
286    #    break
287    #fi
288    #   done
289      if test "x$OPTFILE" = x ; then      if test "x$OPTFILE" = x ; then
290          cat 1>&2 <<EOF          cat 1>&2 <<EOF
291    
# Line 213  get_pdepend_list()  { Line 344  get_pdepend_list()  {
344      . ./.pd_tmp      . ./.pd_tmp
345      rm -f ./.pd_tmp      rm -f ./.pd_tmp
346    
347      echo -n "PNAME = "${}      printf "PNAME = "${}
348  }  }
349    
350    
# Line 251  Usage: "$0" [OPTIONS] Line 382  Usage: "$0" [OPTIONS]
382        --makefile=NAME | -mf=NAME        --makefile=NAME | -mf=NAME
383            Call the makefile "NAME".  The default is "Makefile".            Call the makefile "NAME".  The default is "Makefile".
384    
385        -makedepend NAME | -md NAME
386          --makedepend=NAME | -md=NAME
387              Use "NAME" for the MAKEDEPEND program.
388    
389      -rootdir NAME | --rootdir NAME | -rd NAME | --rd NAME      -rootdir NAME | --rootdir NAME | -rd NAME | --rd NAME
390        -rootdir=NAME | --rootdir=NAME | -rd=NAME | --rd=NAME        -rootdir=NAME | --rootdir=NAME | -rd=NAME | --rd=NAME
391            Specify the location of the MITgcm ROOTDIR as "NAME".            Specify the location of the MITgcm ROOTDIR as "NAME".
# Line 292  Usage: "$0" [OPTIONS] Line 427  Usage: "$0" [OPTIONS]
427            *only* works if it is supported by the OPTFILE that            *only* works if it is supported by the OPTFILE that
428            is being used.            is being used.
429    
430        -mpi | --mpi
431              Include MPI header files and link to MPI libraries
432        -mpi=PATH | --mpi=PATH
433              Include MPI header files and link to MPI libraries using MPI_ROOT
434              set to PATH. i.e. Include files from $PATH/include, link to libraries
435              from $PATH/lib and use binaries from $PATH/bin.
436    
437        -bash NAME
438              Explicitly specify the Bourne or BASH shell to use
439    
440    While it is most often a single word, the "NAME" variables specified    While it is most often a single word, the "NAME" variables specified
441    above can in many cases be a space-delimited string such as:    above can in many cases be a space-delimited string such as:
442    
# Line 435  EOF Line 580  EOF
580  }  }
581    
582    
583    check_netcdf_libs()  {
584        cat <<EOF > genmake_tnc.for
585          program fgennc
586    #include "netcdf.inc"
587          integer iret, ncid, xid
588          iret = nf_create('genmake_tnc.nc', NF_CLOBBER, ncid)
589          IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
590          iret = nf_def_dim(ncid, 'X', 11, xid)
591          IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
592          iret = nf_close(ncid)
593          IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
594          end
595    EOF
596        $CPP genmake_tnc.for > genmake_tnc.f  \
597            &&  $FC $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.f $LIBS >> genmake_tnc.log 2>&1
598        RET_COMPILE=$?
599        test -x ./genmake_tnc  &&  ./genmake_tnc >> genmake_tnc.log 2>&1
600        RETVAL=$?
601        if test "x$RET_COMPILE" = x0 -a "x$RETVAL" = x0 ; then
602            HAVE_NETCDF=t
603        else
604            # try again with "-lnetcdf" added to the libs
605            $CPP genmake_tnc.for > genmake_tnc.f  \
606                &&  $FC $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.f \
607                $LIBS -lnetcdf >> genmake_tnc_2.log 2>&1
608            RET_COMPILE=$?
609            test -x ./genmake_tnc  &&  ./genmake_tnc >> genmake_tnc.log 2>&1
610            RETVAL=$?
611            if test "x$RET_COMPILE" = x0 -a "x$RETVAL" = x0 ; then
612                LIBS="$LIBS -lnetcdf"
613                HAVE_NETCDF=t
614            else
615                cat genmake_tnc.log >> genmake_warnings
616            fi
617        fi
618        rm -f genmake_tnc*
619    }
620    
621    
622    
623    ###############################################################################
624    #   Sequential part of script starts here
625    ###############################################################################
626    
627  #  Set defaults here  #  Set defaults here
628  COMMANDL="$0 $@"  COMMANDL="$0 $@"
629    
# Line 443  LN= Line 632  LN=
632  S64=  S64=
633  KPP=  KPP=
634  FC=  FC=
635    CPP=
636  LINK=  LINK=
 # DEFINES="-DWORDLENGTH=4"  
637  DEFINES=  DEFINES=
638  PACKAGES=  PACKAGES=
639  ENABLE=  ENABLE=
# Line 461  FOPTIM= Line 650  FOPTIM=
650  CFLAGS=  CFLAGS=
651  KFLAGS1=  KFLAGS1=
652  KFLAGS2=  KFLAGS2=
653    #LDADD=
654  LIBS=  LIBS=
655  KPPFILES=  KPPFILES=
656  NOOPTFILES=  NOOPTFILES=
657  NOOPTFLAGS=  NOOPTFLAGS=
658    MPI=
659    MPIPATH=
660    
661  # DEFINES checked by test compilation  # DEFINES checked by test compilation
662  HAVE_SYSTEM=  HAVE_SYSTEM=
663  HAVE_FDATE=  HAVE_FDATE=
664  FC_NAMEMANGLE=  FC_NAMEMANGLE=
665  HAVE_CLOC=  HAVE_CLOC=
666    HAVE_NETCDF=
667    
668  MODS=  MODS=
669  TOOLSDIR=  TOOLSDIR=
670  SOURCEDIRS=  SOURCEDIRS=
671  INCLUDEDIRS=  INCLUDEDIRS=
672  STANDARDDIRS=  STANDARDDIRS="USE_THE_DEFAULT"
673    
674    G2ARGS=
675    BASH=
676  PWD=`pwd`  PWD=`pwd`
677  MAKE=make  MAKE=make
678  AWK=awk  AWK=awk
# Line 493  IEEE= Line 688  IEEE=
688  if test "x$MITGCM_IEEE" != x ; then  if test "x$MITGCM_IEEE" != x ; then
689      IEEE=$MITGCM_IEEE      IEEE=$MITGCM_IEEE
690  fi  fi
691    FS=
692    FS90=
693    
694  AUTODIFF_PKG_USED=f  AUTODIFF_PKG_USED=f
695  AD_OPTFILE=  AD_OPTFILE=
# Line 510  TAMC_EXTRA= Line 707  TAMC_EXTRA=
707    
708  #  The following state can be set directly by command-line switches  #  The following state can be set directly by command-line switches
709  gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE"  gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE"
710  gm_s2="FC IEEE MPI JAM DUMPSTATE STANDARDDIRS"  gm_s2="FC CPP IEEE MPI JAM DUMPSTATE STANDARDDIRS"
711    
712  #  The following state is not directly set by command-line switches  #  The following state is not directly set by command-line switches
713  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPEND PDEPEND PDEFAULT INCLUDES FFLAGS FOPTIM "  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPEND PDEPEND PDEFAULT INCLUDES FFLAGS FOPTIM "
# Line 546  for i in . $MODS ; do Line 743  for i in . $MODS ; do
743          break          break
744      fi      fi
745  done  done
746  echo -n "  getting local config information:  "  printf "  getting local config information:  "
747  if test -e $gm_local ; then  if test -e $gm_local ; then
748      echo "using $gm_local"      echo "using $gm_local"
749      . $gm_local      . $gm_local
# Line 570  fi Line 767  fi
767  ac_prev=  ac_prev=
768  for ac_option ; do  for ac_option ; do
769    
770        G2ARGS="$G2ARGS \"$ac_option\""
771    
772      # If the previous option needs an argument, assign it.      # If the previous option needs an argument, assign it.
773      if test -n "$ac_prev"; then      if test -n "$ac_prev"; then
774          eval "$ac_prev=\$ac_option"          eval "$ac_prev=\$ac_option"
# Line 611  for ac_option ; do Line 810  for ac_option ; do
810          -make=* | --make=* | -m=* | --m=*)          -make=* | --make=* | -m=* | --m=*)
811              MAKE=$ac_optarg ;;              MAKE=$ac_optarg ;;
812                    
813            -bash | --bash)
814                ac_prev=BASH ;;
815            -bash=* | --bash=*)
816                BASH=$ac_optarg ;;
817            
818            -makedepend | --makedepend | -md | --md)
819                ac_prev=MAKEDEPEND ;;
820            -makedepend=* | --makedepend=* | -md=* | --md=*)
821                MAKEDEPEND=$ac_optarg ;;
822            
823          -makefile | --makefile | -ma | --ma)          -makefile | --makefile | -ma | --ma)
824              ac_prev=MAKEFILE ;;              ac_prev=MAKEFILE ;;
825          -makefile=* | --makefile=* | -ma=* | --ma=*)          -makefile=* | --makefile=* | -ma=* | --ma=*)
# Line 658  for ac_option ; do Line 867  for ac_option ; do
867          -fc=* | --fc=*)          -fc=* | --fc=*)
868              FC=$ac_optarg ;;              FC=$ac_optarg ;;
869                    
870            -fs | --fs)
871                ac_prev=FS ;;
872            -fs=* | --fs=*)
873                FS=$ac_optarg ;;
874            
875            -fs90 | --fs90)
876                ac_prev=FS90 ;;
877            -fs90=* | --fs90=*)
878                FS90=$ac_optarg ;;
879            
880          -ieee | --ieee)          -ieee | --ieee)
881              IEEE=true ;;              IEEE=true ;;
882          -noieee | --noieee)          -noieee | --noieee)
883              IEEE= ;;              IEEE= ;;
884    
885            -mpi | --mpi)
886                MPI=true ;;
887            -mpi=* | --mpi=*)
888                MPIPATH=$ac_optarg
889                MPI=true ;;
890                    
891  #       -jam | --jam)  #       -jam | --jam)
892  #           JAM=1 ;;  #           JAM=1 ;;
# Line 714  if test "x${ROOTDIR}" = x ; then Line 939  if test "x${ROOTDIR}" = x ; then
939          for d in . .. ../.. ../../.. ../../../.. ../../../../.. ; do          for d in . .. ../.. ../../.. ../../../.. ../../../../.. ; do
940              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
941                  ROOTDIR=$d                  ROOTDIR=$d
942                  echo -n "Warning:  ROOTDIR was not specified but there appears to be"                  printf "Warning:  ROOTDIR was not specified but there appears to be"
943                  echo " a copy of MITgcm at \"$ROOTDIR\" so we'll try it."                  echo " a copy of MITgcm at \"$ROOTDIR\" so we'll try it."
944                  break                  break
945              fi              fi
# Line 748  if test "x$OPTFILE" != xNONE ; then Line 973  if test "x$OPTFILE" != xNONE ; then
973          . "$OPTFILE"          . "$OPTFILE"
974          RETVAL=$?          RETVAL=$?
975          if test "x$RETVAL" != x0 ; then          if test "x$RETVAL" != x0 ; then
976              echo -n "Error: failed to source OPTFILE \"$OPTFILE\""              printf "Error: failed to source OPTFILE \"$OPTFILE\""
977              echo "--please check that variable syntax is bash-compatible"              echo "--please check that variable syntax is bash-compatible"
978              exit 1              exit 1
979          fi          fi
# Line 761  if test "x$OPTFILE" != xNONE ; then Line 986  if test "x$OPTFILE" != xNONE ; then
986      fi      fi
987  fi  fi
988    
989    #  Check for broken systems that cannot correctly distinguish *.F and *.f files
990    check_for_broken_Ff
991    
992  echo "  getting AD_OPTFILE information:  "  echo "  getting AD_OPTFILE information:  "
993  if test "x${AD_OPTFILE}" = x ; then  if test "x${AD_OPTFILE}" = x ; then
994      if test "x$MITGCM_AD_OF" = x ; then      if test "x$MITGCM_AD_OF" = x ; then
# Line 775  if test "x${AD_OPTFILE}" != xNONE ; then Line 1003  if test "x${AD_OPTFILE}" != xNONE ; then
1003          . "$AD_OPTFILE"          . "$AD_OPTFILE"
1004          RETVAL=$?          RETVAL=$?
1005          if test "x$RETVAL" != x0 ; then          if test "x$RETVAL" != x0 ; then
1006              echo -n "Error: failed to source AD_OPTFILE \"$AD_OPTFILE\""              printf "Error: failed to source AD_OPTFILE \"$AD_OPTFILE\""
1007              echo "--please check that variable syntax is bash-compatible"              echo "--please check that variable syntax is bash-compatible"
1008              exit 1              exit 1
1009          fi          fi
# Line 790  fi Line 1018  fi
1018    
1019  #  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,
1020  #  either set defaults or complain and abort!  #  either set defaults or complain and abort!
1021    if test ! "x$BASH" = x ; then
1022        # add a trailing space so that it works within the Makefile syntax (see below)
1023        BASH="$BASH "
1024    fi
1025  if test "x$FC" = x ; then  if test "x$FC" = x ; then
1026      cat <<EOF 1>&2      cat <<EOF 1>&2
1027    
# Line 803  fi Line 1035  fi
1035  if test "x$LINK" = x ; then  if test "x$LINK" = x ; then
1036      LINK=$FC      LINK=$FC
1037  fi  fi
 if test "x$CPP" = x ; then  
     CPP="cpp"  
 fi  
1038  if test "x$MAKE" = x ; then  if test "x$MAKE" = x ; then
1039      MAKE="make"      MAKE="make"
1040  fi  fi
1041    if test "x$CPP" = x ; then
1042        CPP=cpp
1043    fi
1044    #EH3 === UGLY ===
1045    #  The following is an ugly little hack to check for $CPP in /lib/ and
1046    #  it should eventually be replaced with a more general function that
1047    #  searches a combo of the user's path and a list of "usual suspects"
1048    #  to find the correct location for binaries such as $CPP.
1049    for i in " " "/lib/" ; do
1050        echo "#define A a" | $i$CPP > test_cpp 2>&1 && CPP=$i$CPP
1051    done
1052    #EH3 === UGLY ===
1053  echo "#define A a" | $CPP > test_cpp 2>&1  echo "#define A a" | $CPP > test_cpp 2>&1
1054  RETVAL=$?  RETVAL=$?
1055  if test "x$RETVAL" != x0 ; then  if test "x$RETVAL" != x0 ; then
# Line 845  EOF Line 1086  EOF
1086  fi  fi
1087  rm -f genmake_test_ln genmake_tlink  rm -f genmake_test_ln genmake_tlink
1088    
1089    if test ! "x$MPI" = x ; then
1090          echo "  Turning on MPI cpp macros"
1091          DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"
1092    fi
1093    
1094  printf "\n===  Checking system libraries  ===\n"  printf "\n===  Checking system libraries  ===\n"
1095  echo -n "  Do we have the system() command using $FC...  "  printf "  Do we have the system() command using $FC...  "
1096  cat > genmake_tcomp.f <<EOF  cat > genmake_tcomp.f <<EOF
1097        program hello        program hello
1098        call system('echo hi')        call system('echo hi')
# Line 865  else Line 1110  else
1110  fi  fi
1111  rm -f genmake_tcomp*  rm -f genmake_tcomp*
1112    
1113  echo -n "  Do we have the fdate() command using $FC...  "  printf "  Do we have the fdate() command using $FC...  "
1114  cat > genmake_tcomp.f <<EOF  cat > genmake_tcomp.f <<EOF
1115        program hello        program hello
1116        CHARACTER(128) string        CHARACTER(128) string
# Line 886  else Line 1131  else
1131  fi  fi
1132  rm -f genmake_tcomp*  rm -f genmake_tcomp*
1133    
1134  echo -n "  Can we call simple C routines (here, \"cloc()\") using $FC...  "  printf "  Can we call simple C routines (here, \"cloc()\") using $FC...  "
1135  check_HAVE_CLOC  check_HAVE_CLOC
1136  if test "x$HAVE_CLOC" != x ; then  if test "x$HAVE_CLOC" != x ; then
1137      echo "yes"      echo "yes"
# Line 895  else Line 1140  else
1140  fi  fi
1141  rm -f genmake_t*  rm -f genmake_t*
1142    
1143    printf "  Can we create NetCDF-enabled binaries...  "
1144    check_netcdf_libs
1145    if test "x$HAVE_NETCDF" != x ; then
1146        echo "yes"
1147    else
1148        echo "no"
1149    fi
1150    
1151    
1152  printf "\n===  Setting defaults  ===\n"  printf "\n===  Setting defaults  ===\n"
1153  echo -n "  Adding MODS directories:  "  printf "  Adding MODS directories:  "
1154  for d in $MODS ; do  for d in $MODS ; do
1155      if test ! -d $d ; then      if test ! -d $d ; then
1156          echo          echo
1157          echo "Error: MODS directory \"$d\" not found!"          echo "Error: MODS directory \"$d\" not found!"
1158          exit 1          exit 1
1159      else      else
1160          echo -n " $d"          printf " $d"
1161          SOURCEDIRS="$SOURCEDIRS $d"          SOURCEDIRS="$SOURCEDIRS $d"
1162          INCLUDEDIRS="$INCLUDEDIRS $d"          INCLUDEDIRS="$INCLUDEDIRS $d"
1163      fi      fi
# Line 934  if test "x${TOOLSDIR}" = x ; then Line 1187  if test "x${TOOLSDIR}" = x ; then
1187      TOOLSDIR="$ROOTDIR/tools"      TOOLSDIR="$ROOTDIR/tools"
1188  fi  fi
1189  if test ! -d ${TOOLSDIR} ; then  if test ! -d ${TOOLSDIR} ; then
1190      echo "Error: the specified $TOOLSDIR (\"$TOOLSDIR\") does not exist!"      echo "Error: the specified TOOLSDIR (\"$TOOLSDIR\") does not exist!"
1191      exit 1      exit 1
1192  fi  fi
1193  if test "x$S64" = x ; then  if test "x$S64" = x ; then
# Line 955  if test -r $ROOTDIR"/eesupp/src/Makefile Line 1208  if test -r $ROOTDIR"/eesupp/src/Makefile
1208          rm -f make_eesupp.errors          rm -f make_eesupp.errors
1209      else      else
1210          echo "Error: problem encountered while building source files in eesupp:"          echo "Error: problem encountered while building source files in eesupp:"
1211          cat make_eesupp.errors          cat make_eesupp.errors 1>&2
1212          exit 1          exit 1
1213      fi      fi
1214  fi  fi
1215    
1216    #same for exch2
1217    if test -r $ROOTDIR"/pkg/exch2/Makefile" ; then
1218        echo "  Making source files in exch2 from  templates"
1219        ( cd $ROOTDIR"/pkg/exch2/" && $MAKE ) > make_exch2.errors 2>&1
1220        RETVAL=$?
1221        if test "x${RETVAL}" = x0 ; then
1222            rm -f make_exch2.errors
1223        else
1224            echo "Error: problem encountered while building source files in exch2:"
1225            cat make_exch2.errors 1>&2
1226            exit 1
1227        fi
1228    fi
1229    
1230  printf "\n===  Determining package settings  ===\n"  printf "\n===  Determining package settings  ===\n"
1231  if  test "x${PDEPEND}" = x ; then  if  test "x${PDEPEND}" = x ; then
1232      tmp=$ROOTDIR"/pkg/pkg_depend"      tmp=$ROOTDIR"/pkg/pkg_depend"
# Line 1015  else Line 1282  else
1282          def=`cat $PDEFAULT | sed -e 's/#.*$//g' | $AWK '(NF>0){print $0}'`          def=`cat $PDEFAULT | sed -e 's/#.*$//g' | $AWK '(NF>0){print $0}'`
1283          RETVAL=$?          RETVAL=$?
1284          if test "x${RETVAL}" != x0 ; then          if test "x${RETVAL}" != x0 ; then
1285              echo -n "Error: can't parse default package list "              printf "Error: can't parse default package list "
1286              echo "-- please check PDEFAULT=\"$PDEFAULT\""              echo "-- please check PDEFAULT=\"$PDEFAULT\""
1287              exit 1              exit 1
1288          fi          fi
# Line 1023  else Line 1290  else
1290              PACKAGES="$PACKAGES $i"              PACKAGES="$PACKAGES $i"
1291          done          done
1292          echo "    before group expansion packages are: $PACKAGES"          echo "    before group expansion packages are: $PACKAGES"
1293          expand_pkg_groups          while ! expand_pkg_groups; do echo > /dev/null; done
1294          echo "    after group expansion packages are:  $PACKAGES"          echo "    after group expansion packages are:  $PACKAGES"
1295      fi      fi
1296  fi  fi
1297    
1298  echo "  applying DISABLE settings"  echo "  applying DISABLE settings"
1299    for i in $PACKAGES ; do
1300        echo $i >> ./.tmp_pack
1301    done
1302    for i in `grep  "-" ./.tmp_pack` ; do
1303        j=`echo $i | sed 's/[-]//'`
1304        DISABLE="$DISABLE $j"
1305    done
1306  pack=  pack=
1307  for p in $PACKAGES ; do  for p in $PACKAGES ; do
1308      addit="t"      addit="t"
# Line 1045  PACKAGES="$pack" Line 1319  PACKAGES="$pack"
1319  echo "  applying ENABLE settings"  echo "  applying ENABLE settings"
1320  echo "" > ./.tmp_pack  echo "" > ./.tmp_pack
1321  PACKAGES="$PACKAGES $ENABLE"  PACKAGES="$PACKAGES $ENABLE"
1322    # Test if each explicitly referenced package exists
1323  for i in $PACKAGES ; do  for i in $PACKAGES ; do
1324      if test ! -d "$ROOTDIR/pkg/$i" ; then      j=`echo $i | sed 's/[-+]//'`
1325        if test ! -d "$ROOTDIR/pkg/$j" ; then
1326          echo "Error: can't find package $i at \"$ROOTDIR/pkg/$i\""          echo "Error: can't find package $i at \"$ROOTDIR/pkg/$i\""
1327          exit 1          exit 1
1328      fi      fi
1329      echo $i >> ./.tmp_pack      echo $i >> ./.tmp_pack
1330  done  done
 pack=`cat ./.tmp_pack | sort | uniq`  
 rm -f ./.tmp_pack  
1331  PACKAGES=  PACKAGES=
1332  for i in $pack ; do  for i in `grep -v "-" ./.tmp_pack | sort | uniq` ; do
1333      PACKAGES="$PACKAGES $i"      PACKAGES="$PACKAGES $i"
1334  done  done
1335    rm -f ./.tmp_pack
1336  echo "    packages are:  $PACKAGES"  echo "    packages are:  $PACKAGES"
1337    
1338  echo "  applying package dependency rules"  echo "  applying package dependency rules"
# Line 1143  for i in $PACKAGES ; do Line 1418  for i in $PACKAGES ; do
1418      fi      fi
1419  done  done
1420    
1421    #  Build MNC templates and check for ability to build and use NetCDF
1422    echo $PACKAGES | grep ' mnc ' > /dev/null 2>&1
1423    RETVAL=$?
1424    if test "x$RETVAL" = x0 ; then
1425        ( cd $ROOTDIR"/pkg/mnc" && $MAKE templates ) > make_mnc.errors 2>&1
1426        RETVAL=$?
1427        if test "x${RETVAL}" = x0 ; then
1428            rm -f make_mnc.errors
1429        else
1430            echo "Error: problem encountered while building source files in pkg/mnc:"
1431            cat make_mnc.errors 1>&2
1432            exit 1
1433        fi
1434        if test "x$HAVE_NETCDF" != xt ; then
1435            cat <<EOF
1436    
1437    WARNING: the "mnc" package has been enabled but tests failed to
1438      compile and/or execute NetCDF applications.  Please check that:
1439    
1440      1) NetCDF is installed for your compiler and
1441      2) the LIBS variable (within the 'optfile") specifies the correct
1442           NetCDF library to link against.
1443      
1444    EOF
1445        fi
1446    fi
1447    
1448  # Create a list of #define and #undef to enable/disable packages  # Create a list of #define and #undef to enable/disable packages
1449  PACKAGES_DOT_H=PACKAGES_CONFIG.h  PACKAGES_DOT_H=PACKAGES_CONFIG.h
# Line 1177  for i in $PACKAGES ; do Line 1478  for i in $PACKAGES ; do
1478  #EH3  WARNING :  This is an UGLY HACK that needs to be removed!!!  #EH3  WARNING :  This is an UGLY HACK that needs to be removed!!!
1479      case $i in      case $i in
1480          aim_v23)          aim_v23)
             DEFINES="$DEFINES -DALLOW_AIM"  
1481              ENABLED_PACKAGES="$ENABLED_PACKAGES -DALLOW_AIM"              ENABLED_PACKAGES="$ENABLED_PACKAGES -DALLOW_AIM"
1482              echo "Warning: ALLOW_AIM is set to enable aim_v23. This is REALLY ugly Jean-Michel :-)"              echo "Warning: ALLOW_AIM is set to enable aim_v23."
1483              ;;              ;;
1484      esac      esac
1485  #EH3  WARNING :  This is an UGLY HACK that needs to be removed!!!  #EH3  WARNING :  This is an UGLY HACK that needs to be removed!!!
# Line 1188  done Line 1488  done
1488    
1489  echo "  Adding STANDARDDIRS"  echo "  Adding STANDARDDIRS"
1490  BUILDDIR=${BUILDDIR:-.}  BUILDDIR=${BUILDDIR:-.}
1491  if test "x$STANDARDDIRS" = x ; then  if test "x$STANDARDDIRS" = xUSE_THE_DEFAULT ; then
1492      STANDARDDIRS="eesupp model"      STANDARDDIRS="eesupp model"
1493  fi  fi
1494  for d in $STANDARDDIRS ; do  if test "x$STANDARDDIRS" != x ; then
1495      adr="$ROOTDIR/$d/src"      for d in $STANDARDDIRS ; do
1496      if test ! -d $adr ; then          adr="$ROOTDIR/$d/src"
1497          echo "Error:  directory $adr not found -- please check that ROOTDIR=\"$ROOTDIR\""          if test ! -d $adr ; then
1498          echo "  is correct and that you correctly specified the STANDARDDIRS option"              echo "Error:  directory $adr not found -- please check that ROOTDIR=\"$ROOTDIR\""
1499          exit 1              echo "  is correct and that you correctly specified the STANDARDDIRS option"
1500      else              exit 1
1501          SOURCEDIRS="$SOURCEDIRS $adr"          else
1502      fi              SOURCEDIRS="$SOURCEDIRS $adr"
1503      adr="$ROOTDIR/$d/inc"          fi
1504      if test ! -d $adr ; then          adr="$ROOTDIR/$d/inc"
1505          echo "Error:  directory $adr not found -- please check that ROOTDIR=\"$ROOTDIR\""          if test ! -d $adr ; then
1506          echo "  is correct and that you correctly specified the STANDARDDIRS option"              echo "Error:  directory $adr not found -- please check that ROOTDIR=\"$ROOTDIR\""
1507          exit 1              echo "  is correct and that you correctly specified the STANDARDDIRS option"
1508      else              exit 1
1509          INCLUDEDIRS="$INCLUDEDIRS $adr"          else
1510      fi              INCLUDEDIRS="$INCLUDEDIRS $adr"
1511  done          fi
1512        done
1513    fi
1514    
1515  echo "  Searching for *OPTIONS.h files in order to warn about the presence"  echo "  Searching for *OPTIONS.h files in order to warn about the presence"
1516  echo "    of \"#define \"-type statements that are no longer allowed:"  echo "    of \"#define \"-type statements that are no longer allowed:"
# Line 1218  spaths=". $INCLUDEDIRS" Line 1520  spaths=". $INCLUDEDIRS"
1520  names=`ls -1 "$ROOTDIR/pkg"`  names=`ls -1 "$ROOTDIR/pkg"`
1521  for i in $spaths ; do  for i in $spaths ; do
1522      try="$i/CPP_OPTIONS.h"      try="$i/CPP_OPTIONS.h"
1523      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
1524          echo "    found CPP_OPTIONS=\"$try\""          echo "    found CPP_OPTIONS=\"$try\""
1525          CPP_OPTIONS="$try"          CPP_OPTIONS="$try"
1526          # 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
# Line 1227  for i in $spaths ; do Line 1529  for i in $spaths ; do
1529          done          done
1530      fi      fi
1531      try="$i/CPP_EEOPTIONS.h"      try="$i/CPP_EEOPTIONS.h"
1532      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
1533          echo "    found CPP_EEOPTIONS=\"$try\""          echo "    found CPP_EEOPTIONS=\"$try\""
1534          # 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
1535  #**** not yet enabled ****  #**** not yet enabled ****
# Line 1254  for i in $SOURCEDIRS ; do Line 1556  for i in $SOURCEDIRS ; do
1556      done      done
1557  done  done
1558    
1559    
1560  echo  echo
1561  echo "===  Creating the Makefile  ==="  echo "===  Creating the Makefile  ==="
1562  echo "  setting INCLUDES"  echo "  setting INCLUDES"
# Line 1270  rm -rf .links.tmp Line 1573  rm -rf .links.tmp
1573  mkdir .links.tmp  mkdir .links.tmp
1574  echo "# This section creates symbolic links" > srclinks.tmp  echo "# This section creates symbolic links" > srclinks.tmp
1575  echo "" >> srclinks.tmp  echo "" >> srclinks.tmp
1576  echo -n 'SRCFILES = '    > srclist.inc  printf 'SRCFILES = '    > srclist.inc
1577  echo -n 'CSRCFILES = '   > csrclist.inc  printf 'CSRCFILES = '   > csrclist.inc
1578  echo -n 'F90SRCFILES = ' > f90srclist.inc  printf 'F90SRCFILES = ' > f90srclist.inc
1579  echo -n 'HEADERFILES = ' > hlist.inc  printf 'HEADERFILES = ' > hlist.inc
1580  echo -n 'AD_FLOW_FILES = ' > ad_flow_files.inc  printf 'AD_FLOW_FILES = ' > ad_flow_files.inc
1581  alldirs="$SOURCEDIRS $INCLUDEDIRS ."  alldirs="$SOURCEDIRS $INCLUDEDIRS ."
1582  for d in $alldirs ; do  for d in $alldirs ; do
1583      deplist=      deplist=
# Line 1299  for d in $alldirs ; do Line 1602  for d in $alldirs ; do
1602                  case $extn in                  case $extn in
1603                      F)                      F)
1604                          echo    " \\"  >> srclist.inc                          echo    " \\"  >> srclist.inc
1605                          echo -n " $sf" >> srclist.inc                          printf " $sf" >> srclist.inc
1606                          ;;                          ;;
1607                      F90)                      F90)
1608                          echo    " \\"  >> f90srclist.inc                          echo    " \\"  >> f90srclist.inc
1609                          echo -n " $sf" >> f90srclist.inc                          printf " $sf" >> f90srclist.inc
1610                          ;;                          ;;
1611                      c)                      c)
1612                          echo    " \\"  >> csrclist.inc                          echo    " \\"  >> csrclist.inc
1613                          echo -n " $sf" >> csrclist.inc                          printf " $sf" >> csrclist.inc
1614                          ;;                          ;;
1615                      h)                      h)
1616                          echo    " \\"  >> hlist.inc                          echo    " \\"  >> hlist.inc
1617                          echo -n " $sf" >> hlist.inc                          printf " $sf" >> hlist.inc
1618                          ;;                          ;;
1619                      flow)                      flow)
1620                          echo    " \\"  >> ad_flow_files.inc                          echo    " \\"  >> ad_flow_files.inc
1621                          echo -n " $sf" >> ad_flow_files.inc                          printf " $sf" >> ad_flow_files.inc
1622                          ;;                          ;;
1623                  esac                  esac
1624              fi              fi
# Line 1344  echo "#    $MACHINE" >> $MAKEFILE Line 1647  echo "#    $MACHINE" >> $MAKEFILE
1647  echo "# This makefile was generated automatically on" >> $MAKEFILE  echo "# This makefile was generated automatically on" >> $MAKEFILE
1648  echo "#    $THISDATE" >> $MAKEFILE  echo "#    $THISDATE" >> $MAKEFILE
1649  echo "# by the command:" >> $MAKEFILE  echo "# by the command:" >> $MAKEFILE
1650  echo "#    $0 $@" >> $MAKEFILE  echo "#    $0 $G2ARGS" >> $MAKEFILE
1651  echo "# executed by:" >> $MAKEFILE  echo "# executed by:" >> $MAKEFILE
1652  echo "#    $USER@${THISHOSTNAME}:${THISCWD}" >> $MAKEFILE  echo "#    $USER@${THISHOSTNAME}:${THISCWD}" >> $MAKEFILE
1653    
# Line 1412  FC = ${FC} Line 1715  FC = ${FC}
1715  # Fortran compiler  # Fortran compiler
1716  F90C = ${F90C}  F90C = ${F90C}
1717  # Link editor  # Link editor
1718  LINK = ${LINK}  LINK = ${LINK} ${LDADD}
1719    
1720  # Defines for CPP  # Defines for CPP
1721  DEFINES = ${DEFINES}  DEFINES = ${DEFINES}
# Line 1444  cat csrclist.inc      >> $MAKEFILE Line 1747  cat csrclist.inc      >> $MAKEFILE
1747  cat f90srclist.inc    >> $MAKEFILE  cat f90srclist.inc    >> $MAKEFILE
1748  cat hlist.inc         >> $MAKEFILE  cat hlist.inc         >> $MAKEFILE
1749  cat ad_flow_files.inc >> $MAKEFILE  cat ad_flow_files.inc >> $MAKEFILE
1750  echo               >> $MAKEFILE  echo >> $MAKEFILE
1751  echo 'F77FILES =  $(SRCFILES:.F=.f)'                                           >> $MAKEFILE  echo 'F77FILES =  $(SRCFILES:.F=.'$FS')'      >> $MAKEFILE
1752  echo 'F90FILES =  $(F90SRCFILES:.F90=.f90)'                                    >> $MAKEFILE  echo 'F90FILES =  $(F90SRCFILES:.F=.'$FS90')' >> $MAKEFILE
1753  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE
1754    echo >> $MAKEFILE
1755    echo '.SUFFIXES:' >> $MAKEFILE
1756    echo '.SUFFIXES: .o .F .p .'$FS' .c .F90 .'$FS90 >> $MAKEFILE
1757  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
1758  rm -f ad_flow_files.inc  rm -f ad_flow_files.inc
1759    
1760  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
1761    
 .SUFFIXES:  
 .SUFFIXES: .o .f .p .F .c .F90 .f90  
   
1762  all: \$(EXECUTABLE)  all: \$(EXECUTABLE)
1763  \$(EXECUTABLE): \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(OBJFILES)  \$(EXECUTABLE): \$(SPECIAL_FILES) \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(OBJFILES)
1764          @echo Creating \$@ ...          @echo Creating \$@ ...
1765          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)
1766  depend:  depend:
1767          @make links          @make links
1768          \$(MAKEDEPEND) -o .f \$(DEFINES) \$(INCLUDES) \$(SRCFILES)          \$(MAKEDEPEND) -o .$FS \$(DEFINES) \$(INCLUDES) \$(SRCFILES)
1769          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)
1770            -rm -f makedepend.out
1771    
1772  links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(SPECIAL_FILES)  links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(SPECIAL_FILES)
1773    
# Line 1475  output.txt: \$(EXECUTABLE) Line 1778  output.txt: \$(EXECUTABLE)
1778          @\$(EXECUTABLE) > \$@          @\$(EXECUTABLE) > \$@
1779    
1780  clean:  clean:
1781          -rm -rf *.o *.f *.p *.f90 *.mod ${RMFILES} work.{pc,pcl} *.template          -rm -rf *.o *.$FS *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template
1782  Clean:  Clean:
1783          @make clean          @make clean
1784          @make cleanlinks          @make cleanlinks
# Line 1490  CLEAN: Line 1793  CLEAN:
1793    
1794  #eh3 Makefile: makefile  #eh3 Makefile: makefile
1795  makefile:  makefile:
1796          $THIS_SCRIPT $@          $THIS_SCRIPT $G2ARGS
1797  cleanlinks:  cleanlinks:
1798          -find . -type l -exec rm {} \;          -find . -type l -exec rm {} \;
1799    
1800  # Special targets ($SPECIAL_FILES) which are create by make  # Special targets ($SPECIAL_FILES) which are create by make
1801  ${PACKAGES_DOT_H}:  ${PACKAGES_DOT_H}:
1802          @echo Creating \$@ ...          @echo Creating \$@ ...
1803          @\$(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) > \$@
1804  AD_CONFIG.h:  AD_CONFIG.h:
1805          @echo Creating \$@ ...          @echo Creating \$@ ...
1806          @\$(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 > \$@
1807  FC_NAMEMANGLE.h:  FC_NAMEMANGLE.h:
1808          @echo Creating \$@ ...          @echo Creating \$@ ...
1809          echo "$FC_NAMEMANGLE" > \$@          echo "$FC_NAMEMANGLE" > \$@
1810    
1811  # The normal chain of rules is (  .F - .f - .o  )  # The normal chain of rules is (  .F - .$FS - .o  )
1812  .F.f:  
1813    %.o : %.F
1814    
1815    .F.$FS:
1816          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
1817  .f.o:  .$FS.o:
1818          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<
1819  .F90.f90:  .F90.$FS90:
1820          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
1821  .f90.o:  .$FS90.o:
1822          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<
1823  .c.o:  .c.o:
1824          \$(CC) \$(CFLAGS) -c \$<          \$(CC) \$(CFLAGS) -c \$<
1825    
1826  # Special exceptions that use the ( .F - .p - .f - .o ) rule-chain  # Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain
1827  .F.p:  .F.p:
1828          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
1829  .p.f:  .p.$FS:
1830          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<
1831    
1832  #=========================================  #=========================================
# Line 1547  done Line 1853  done
1853    
1854  echo "  Add the source list for AD code generation"  echo "  Add the source list for AD code generation"
1855  echo >> $MAKEFILE  echo >> $MAKEFILE
1856  echo -n "AD_FILES = " >> $MAKEFILE  printf "AD_FILES = " >> $MAKEFILE
1857  AD_FILES=`cat ad_files`  AD_FILES=`cat ad_files`
1858  for i in $AD_FILES ; do  for i in $AD_FILES ; do
1859      echo    " \\" >> $MAKEFILE      echo    " \\" >> $MAKEFILE
1860      echo -n " $i" >> $MAKEFILE      printf " $i" >> $MAKEFILE
1861  done  done
1862  echo >> $MAKEFILE  echo >> $MAKEFILE
1863  rm -f ad_files  rm -f ad_files
# Line 1564  adtaf: ad_taf_output.f Line 1870  adtaf: ad_taf_output.f
1870  adtamc: ad_tamc_output.f  adtamc: ad_tamc_output.f
1871    
1872  ad_input_code.f: \$(AD_FILES) \$(HEADERFILES)  ad_input_code.f: \$(AD_FILES) \$(HEADERFILES)
1873          @\$(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
1874          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
1875          -rm -f ad_config.template          -rm -f ad_config.template
1876          @make \$(F77FILES)          @make \$(F77FILES)
# Line 1596  ftltaf: ftl_taf_output.f Line 1902  ftltaf: ftl_taf_output.f
1902  ftltamc: ftl_tamc_output.f  ftltamc: ftl_tamc_output.f
1903    
1904  ftl_input_code.f: \$(AD_FILES) \$(HEADERFILES)  ftl_input_code.f: \$(AD_FILES) \$(HEADERFILES)
1905          @\$(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
1906          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
1907          -rm -f ftl_config.template          -rm -f ftl_config.template
1908          @make \$(F77FILES)          @make \$(F77FILES)
# Line 1645  for i in $KPPFILES ; do Line 1951  for i in $KPPFILES ; do
1951      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
1952          echo "Error: unable to add file \"$i\" to the exceptions list"          echo "Error: unable to add file \"$i\" to the exceptions list"
1953      fi      fi
1954      echo "$base.f: $base.p" >> $MAKEFILE      echo "$base.$FS: $base.p" >> $MAKEFILE
1955  done  done
1956    
1957  echo "  Making list of NOOPTFILES"  echo "  Making list of NOOPTFILES"
# Line 1655  for i in $NOOPTFILES ; do Line 1961  for i in $NOOPTFILES ; do
1961      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
1962          echo "Error: unable to add file \"$i\" to the exceptions list"          echo "Error: unable to add file \"$i\" to the exceptions list"
1963      fi      fi
1964      echo "$base.o: $base.f" >> $MAKEFILE      echo "$base.o: $base.$FS" >> $MAKEFILE
1965      printf "\t\$(FC) \$(FFLAGS) \$(NOOPTFLAGS) -c \$<\n" >> $MAKEFILE      printf "\t\$(FC) \$(FFLAGS) \$(NOOPTFLAGS) -c \$<\n" >> $MAKEFILE
1966  done  done
1967    
# Line 1669  printf "\n\n# DO NOT DELETE\n" >> $MAKEF Line 1975  printf "\n\n# DO NOT DELETE\n" >> $MAKEF
1975  printf "\n===  Done  ===\n"  printf "\n===  Done  ===\n"
1976    
1977  # Create special header files  # Create special header files
1978  $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"
1979  if test ! -f $PACKAGES_DOT_H ; then  if test ! -f $PACKAGES_DOT_H ; then
1980      mv -f $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H      mv -f $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H
1981  else  else
1982      cmp $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H      cmp $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H > /dev/null 2>&1
1983      RETVAL=$?      RETVAL=$?
1984      if test "x$RETVAL" = x0 ; then      if test "x$RETVAL" = x0 ; then
1985          rm -f $PACKAGES_DOT_H".tmp"          rm -f $PACKAGES_DOT_H".tmp"
# Line 1683  else Line 1989  else
1989      fi      fi
1990  fi  fi
1991  if test ! -f AD_CONFIG.h ; then  if test ! -f AD_CONFIG.h ; then
1992      $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
1993  fi  fi
1994    
1995    
1996  #  Write the "state" for future records  #  Write the "state" for future records
1997  if test "x$DUMPSTATE" != xf ; then  if test "x$DUMPSTATE" != xf ; then
1998      echo -n "" > genmake_state      printf "" > genmake_state
1999      for i in $gm_state ; do      for i in $gm_state ; do
2000          t1="t2=\$$i"          t1="t2=\$$i"
2001          eval $t1          eval $t1

Legend:
Removed from v.1.53  
changed lines
  Added in v.1.76

  ViewVC Help
Powered by ViewVC 1.1.22