/[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.75 by edhill, Wed Apr 7 20:28:09 2004 UTC revision 1.90 by edhill, Tue Jul 27 20:59:19 2004 UTC
# Line 76  expand_pkg_groups() { Line 76  expand_pkg_groups() {
76  #  Check for broken environments (eg. cygwin, MacOSX w/HFS+) that  #  Check for broken environments (eg. cygwin, MacOSX w/HFS+) that
77  #  cannot distinguish [*.F/*.F90] from [*.f/*.f90] files.  #  cannot distinguish [*.F/*.F90] from [*.f/*.f90] files.
78  check_for_broken_Ff()  {  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.      #  First check the ability to create a *.F/.f pair.
90      cat <<EOF >> ./hello.F      cat <<EOF >> genmake_hello.F
91        program hello        program hello
92        write(*,*) 'hi'        write(*,*) 'hi'
93        stop        stop
94        end        end
95  EOF  EOF
96      cp ./hello.F ./hello.f      cp genmake_hello.F "genmake_hello."$tfs > /dev/null 2>&1
97      RETVAL=$?      RETVAL=$?
98      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
99          FEXT='fp'          if test "x$FS" = x ; then
100          F90EXT='fp90'              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          return
114      fi      fi
115      rm -f ./hello.f      rm -f genmake_hello.*
116    
117      #  Then check the ability of ${MAKE} to use the two.      #  Check the ability of ${MAKE} and ${LN} to use the current set
118      test -e Makefile  &&  mv -f Makefile Makefile.bak      #  of extensions.
119        cat <<EOF >> genmake_hello.F
120          program hello
121          write(*,*) 'hi'
122          stop
123          end
124    EOF
125        test -f Makefile  &&  mv -f Makefile Makefile.bak
126      cat <<EOF >> Makefile      cat <<EOF >> Makefile
127    %.$tfs : %.F
128  .SUFFIXES:  .SUFFIXES:
129  hello.f: hello.F  genmake_hello.$tfs: genmake_hello.F
130          cp -f hello.F hello.f          $LN genmake_hello.F genmake_hello.$tfs
131  EOF  EOF
132      ( $MAKE hello.f ) > /dev/null 2>&1      $MAKE "genmake_hello."$tfs > /dev/null 2>&1
133      RETVAL=$?      RETVAL=$?
134      if test "x$RETVAL" != x0 -o ! -f ./hello.f ; then      if test "x$RETVAL" != x0 -o ! -f "genmake_hello."$tfs ; then
135          FEXT='fp'          if test "x$FS" = x ; then
136          F90EXT='fp90'              FS='for'
137          return              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      fi
151      rm -f ./hello.f ./hello.F Makefile      rm -f genmake_hello.* Makefile
152      test -e Makefile  &&  mv -f Makefile.bak Makefile      test -f 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      #  Both tests passed, so use the default.  look_for_makedepend()  {
162      FEXT='F'  
163      F90EXT='F90'      #  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                build_cyrus_makedepend
199                RETVAL=$?
200                if test "x$RETVAL" != x0 ; then
201                    MAKEDEPEND='$(TOOLSDIR)/xmakedepend'
202                fi
203                rm -f ./genmake_cy_md
204            fi
205        else
206            #  echo "MAKEDEPEND=${MAKEDEPEND}"
207            echo "${MAKEDEPEND}" | grep -i cyrus > /dev/null 2>&1
208            RETVAL=$?
209            if test x"$RETVAL" = x0 ; then
210                build_cyrus_makedepend
211            fi
212        fi
213  }  }
214    
215    
216    build_cyrus_makedepend()  {
217        rm -f ./genmake_cy_md
218        (
219            cd $ROOTDIR/tools/cyrus-imapd-makedepend  \
220                &&  ./configure > /dev/null 2>&1  \
221                &&  make > /dev/null 2>&1
222            if test -x ./makedepend.exe ; then
223                $LN ./makedepend.exe ./makedepend
224            fi
225            ./makedepend ifparser.c > /dev/null 2>&1  \
226                &&  echo "true"
227        ) > ./genmake_cy_md
228        grep true ./genmake_cy_md > /dev/null 2>&1
229        RETVAL=$?
230        rm -f ./genmake_cy_md
231        if test "x$RETVAL" = x0 ; then
232            MAKEDEPEND='$(TOOLSDIR)/cyrus-imapd-makedepend/makedepend'
233            return 0
234        else
235            echo "WARNING: unable to build cyrus-imapd-makedepend"
236            return 1
237        fi
238    }
239    
240  # Guess possible config options for this host  # Guess possible config options for this host
241  find_possible_configs()  {  find_possible_configs()  {
242    
# Line 125  find_possible_configs()  { Line 247  find_possible_configs()  {
247      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/'`
248      tmp3=`echo $tmp2 | sed -e 's/cray sv1/craysv1/'`      tmp3=`echo $tmp2 | sed -e 's/cray sv1/craysv1/'`
249      PLATFORM=$tmp3      PLATFORM=$tmp3
250        echo $PLATFORM | grep cygwin > /dev/null 2>&1  &&  PLATFORM=cygwin_ia32
251      OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`      OFLIST=`(cd $ROOTDIR/tools/build_options; ls | grep "^$PLATFORM")`
252      echo "  The platform appears to be:  $PLATFORM"      echo "  The platform appears to be:  $PLATFORM"
253            
# Line 144  find_possible_configs()  { Line 267  find_possible_configs()  {
267          CPP="cpp -traditional -P"          CPP="cpp -traditional -P"
268      fi      fi
269    
270      #  The "original" makedepend is part of the Imake system that is      look_for_makedepend
     #  most often distributed with XFree86 or with an XFree86 source  
     #  package.  As a result, many machines (eg. generic Linux) do not  
     #  have a system-default "makedepend" available.  For those  
     #  systems, we have two fall-back options:  
     #  
     #    1) a makedepend implementation shipped with the cyrus-imapd  
     #       package:  ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/  
     #  
     #    2) a known-buggy xmakedpend shell script  
     #  
     #  So the choices are, in order:  
     #  
     #    1) use the user-specified program  
     #    2) use a system-wide default  
     #    3) locally build and use the cyrus implementation  
     #    4) fall back to the buggy local xmakedpend script  
     #  
     if test "x${MAKEDEPEND}" = x ; then  
       which makedepend > /dev/null 2>&1  
       RETVAL=$?  
       if test ! "x${RETVAL}" = x0 ; then  
          echo "    a system-default makedepend was not found."  
   
          #  Try to build the cyrus impl  
          rm -f ./genmake_cy_md  
          (  
              cd $ROOTDIR/tools/cyrus-imapd-makedepend  \  
                  &&  ./configure > /dev/null 2>&1  \  
                  &&  make > /dev/null 2>&1  \  
                  &&  ./makedepend ifparser.c > /dev/null 2>&1  \  
                  &&  echo "true"  
          ) > ./genmake_cy_md  
          grep true ./genmake_cy_md > /dev/null 2>&1  
          RETVAL=$?  
          if test "x$RETVAL" = x0 ; then  
              MAKEDEPEND='$(TOOLSDIR)/cyrus-imapd-makedepend/makedepend'  
          else  
              MAKEDEPEND='$(TOOLSDIR)/xmakedepend'  
          fi  
          rm -f ./genmake_cy_md  
       fi  
     fi  
271    
272      # look for possible fortran compilers      # look for possible fortran compilers
273      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 316  Usage: "$0" [OPTIONS] Line 397  Usage: "$0" [OPTIONS]
397      -help | --help | -h | --h      -help | --help | -h | --h
398            Print this help message and exit.            Print this help message and exit.
399    
400        -adoptfile NAME | --adoptfile NAME | -adof NAME | --adof NAME
401          -adoptfile=NAME | --adoptfile=NAME | -adof=NAME | --adof=NAME
402              Use "NAME" as the adoptfile.  By default, the file at
403              "tools/adjoint_options/adjoint_default" will be used.
404    
405      -nooptfile | --nooptfile      -nooptfile | --nooptfile
406        -optfile NAME | --optfile NAME | -of NAME | --of NAME        -optfile NAME | --optfile NAME | -of NAME | --of NAME
407        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME        -optfile=NAME | --optfile=NAME | -of=NAME | --of=NAME
# Line 415  EOF Line 501  EOF
501    
502  #  Build a CPP macro to automate calling C routines from FORTRAN  #  Build a CPP macro to automate calling C routines from FORTRAN
503  get_fortran_c_namemangling()  {  get_fortran_c_namemangling()  {
504    
505        #echo "FC_NAMEMANGLE = \"$FC_NAMEMANGLE\""
506        if test ! "x$FC_NAMEMANGLE" = x ; then
507            return 0
508        fi
509    
510      default_nm="#define FC_NAMEMANGLE(X) X ## _"      default_nm="#define FC_NAMEMANGLE(X) X ## _"
511            
512      cat > genmake_test.c <<EOF      cat > genmake_test.c <<EOF
# Line 551  check_netcdf_libs()  { Line 643  check_netcdf_libs()  {
643        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
644        end        end
645  EOF  EOF
646      $CPP genmake_tnc.for > genmake_tnc.f  \      #echo "$CPP $DEFINES $INCLUDES"
647        $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f  \
648          &&  $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
649      RET_COMPILE=$?      RET_COMPILE=$?
650      test -x ./genmake_tnc  &&  ./genmake_tnc >> genmake_tnc.log 2>&1      test -x ./genmake_tnc  &&  ./genmake_tnc >> genmake_tnc.log 2>&1
# Line 560  EOF Line 653  EOF
653          HAVE_NETCDF=t          HAVE_NETCDF=t
654      else      else
655          # try again with "-lnetcdf" added to the libs          # try again with "-lnetcdf" added to the libs
656          $CPP genmake_tnc.for > genmake_tnc.f  \          $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f  \
657              &&  $FC $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.f \              &&  $FC $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.f \
658              $LIBS -lnetcdf >> genmake_tnc_2.log 2>&1              $LIBS -lnetcdf >> genmake_tnc_2.log 2>&1
659          RET_COMPILE=$?          RET_COMPILE=$?
# Line 597  PACKAGES= Line 690  PACKAGES=
690  ENABLE=  ENABLE=
691  DISABLE=  DISABLE=
692  MAKEFILE=  MAKEFILE=
693  MAKEDEPEND=  #MAKEDEPEND=
694  PDEPEND=  PDEPEND=
695  DUMPSTATE=t  DUMPSTATE=t
696  PDEFAULT=  PDEFAULT=
# Line 622  HAVE_FDATE= Line 715  HAVE_FDATE=
715  FC_NAMEMANGLE=  FC_NAMEMANGLE=
716  HAVE_CLOC=  HAVE_CLOC=
717  HAVE_NETCDF=  HAVE_NETCDF=
718    HAVE_ETIME=
719    
720  MODS=  MODS=
721  TOOLSDIR=  TOOLSDIR=
# Line 646  IEEE= Line 740  IEEE=
740  if test "x$MITGCM_IEEE" != x ; then  if test "x$MITGCM_IEEE" != x ; then
741      IEEE=$MITGCM_IEEE      IEEE=$MITGCM_IEEE
742  fi  fi
743  FEXT=  FS=
744  F90EXT=  FS90=
745    
746  AUTODIFF_PKG_USED=f  AUTODIFF_PKG_USED=f
747  AD_OPTFILE=  AD_OPTFILE=
# Line 672  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPE Line 766  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPE
766  gm_s4="CFLAGS KFLAGS1 KFLAGS2 LIBS KPPFILES NOOPTFILES NOOPTFLAGS"  gm_s4="CFLAGS KFLAGS1 KFLAGS2 LIBS KPPFILES NOOPTFILES NOOPTFLAGS"
767  gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD MAKE THISHOSTNAME THISDATE MACHINE"  gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD MAKE THISHOSTNAME THISDATE MACHINE"
768  gm_s6="EXECUTABLE EXEHOOK EXEDIR PACKAGES_CONF"  gm_s6="EXECUTABLE EXEHOOK EXEDIR PACKAGES_CONF"
769  gm_s7="HAVE_SYSTEM HAVE_FDATE FC_NAMEMANGLE"  gm_s7="HAVE_SYSTEM HAVE_FDATE FC_NAMEMANGLE HAVE_ETIME"
770    
771  #  The following are all related to adjoint/tangent-linear stuff  #  The following are all related to adjoint/tangent-linear stuff
772  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 702  for i in . $MODS ; do Line 796  for i in . $MODS ; do
796      fi      fi
797  done  done
798  printf "  getting local config information:  "  printf "  getting local config information:  "
799  if test -e $gm_local ; then  if test -f $gm_local ; then
800      echo "using $gm_local"      echo "using $gm_local"
801      . $gm_local      . $gm_local
802      # echo "DISABLE=$DISABLE"      # echo "DISABLE=$DISABLE"
# Line 723  fi Line 817  fi
817  #done  #done
818  #parse_options  #parse_options
819  ac_prev=  ac_prev=
820  for ac_option ; do  for ac_option in $@ ; do
821    
822      G2ARGS="$G2ARGS \"$ac_option\""      G2ARGS="$G2ARGS \"$ac_option\""
823    
# Line 825  for ac_option ; do Line 919  for ac_option ; do
919          -fc=* | --fc=*)          -fc=* | --fc=*)
920              FC=$ac_optarg ;;              FC=$ac_optarg ;;
921                    
922            -fs | --fs)
923                ac_prev=FS ;;
924            -fs=* | --fs=*)
925                FS=$ac_optarg ;;
926            
927            -fs90 | --fs90)
928                ac_prev=FS90 ;;
929            -fs90=* | --fs90=*)
930                FS90=$ac_optarg ;;
931            
932          -ieee | --ieee)          -ieee | --ieee)
933              IEEE=true ;;              IEEE=true ;;
934          -noieee | --noieee)          -noieee | --noieee)
# Line 881  if test -f ./.genmakerc ; then Line 985  if test -f ./.genmakerc ; then
985  fi  fi
986    
987  if test "x${ROOTDIR}" = x ; then  if test "x${ROOTDIR}" = x ; then
988      if test "${PWD##/*/}" = "bin" -a -d ../model -a -d ../eesup -a -d ../pkg ; then      tmp=`echo $PWD | sed -e 's/\// /g' | awk '{print $NR}'`
989        if test "x$tmp" = "xbin" -a -d ../model -a -d ../eesup -a -d ../pkg ; then
990          ROOTDIR=".."          ROOTDIR=".."
991      else      else
992          for d in . .. ../.. ../../.. ../../../.. ../../../../.. ; do          for d in . .. ../.. ../../.. ../../../.. ../../../../.. ; do
# Line 935  if test "x$OPTFILE" != xNONE ; then Line 1040  if test "x$OPTFILE" != xNONE ; then
1040  fi  fi
1041    
1042  #  Check for broken systems that cannot correctly distinguish *.F and *.f files  #  Check for broken systems that cannot correctly distinguish *.F and *.f files
1043  if test "x$FEXT" = x -a "x$F90EXT" = x ; then  # check_for_broken_Ff
     check_for_broken_Ff  
 fi  
1044    
1045  echo "  getting AD_OPTFILE information:  "  echo "  getting AD_OPTFILE information:  "
1046  if test "x${AD_OPTFILE}" = x ; then  if test "x${AD_OPTFILE}" = x ; then
# Line 992  if test "x$CPP" = x ; then Line 1095  if test "x$CPP" = x ; then
1095      CPP=cpp      CPP=cpp
1096  fi  fi
1097  #EH3 === UGLY ===  #EH3 === UGLY ===
1098  #  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
1099  #  should eventually be replaced with a more general function that  #  it should eventually be replaced with a more general function that
1100  #  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"
1101  #  to find the correct location for binaries such as $CPP.  #  to find the correct location for binaries such as $CPP.
1102  for i in " " "/lib/" ; do  for i in " " "/lib/" ; do
# Line 1016  EOF Line 1119  EOF
1119  else  else
1120      rm -f test_cpp      rm -f test_cpp
1121  fi  fi
1122  if test "x$MAKEDEPEND" = x ; then  look_for_makedepend
     MAKEDEPEND=makedepend  
 fi  
1123  if test "x$LN" = x ; then  if test "x$LN" = x ; then
1124      LN="ln -s"      LN="ln -s"
1125  fi  fi
# Line 1036  EOF Line 1137  EOF
1137  fi  fi
1138  rm -f genmake_test_ln genmake_tlink  rm -f genmake_test_ln genmake_tlink
1139    
1140    #  Check for broken *.F/*.f handling and fix if possible
1141    check_for_broken_Ff
1142    
1143  if test ! "x$MPI" = x ; then  if test ! "x$MPI" = x ; then
1144        echo "  Turning on MPI cpp macros"        echo "  Turning on MPI cpp macros"
1145        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"
# Line 1081  else Line 1185  else
1185  fi  fi
1186  rm -f genmake_tcomp*  rm -f genmake_tcomp*
1187    
1188    printf "  Do we have the etime() command using $FC...  "
1189    cat > genmake_tcomp.f <<EOF
1190          program hello
1191          REAL*4 ACTUAL, TARRAY(2)
1192          EXTERNAL ETIME
1193          REAL*4 ETIME
1194          actual = etime( tarray )
1195          print *, tarray
1196          end
1197    EOF
1198    $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.f > genmake_tcomp.log 2>&1
1199    RETVAL=$?
1200    if test "x$RETVAL" = x0 ; then
1201        HAVE_ETIME=t
1202        DEFINES="$DEFINES -DHAVE_ETIME"
1203        echo "yes"
1204    else
1205        HAVE_ETIME=
1206        echo "no"
1207    fi
1208    rm -f genmake_tcomp*
1209    
1210  printf "  Can we call simple C routines (here, \"cloc()\") using $FC...  "  printf "  Can we call simple C routines (here, \"cloc()\") using $FC...  "
1211  check_HAVE_CLOC  check_HAVE_CLOC
1212  if test "x$HAVE_CLOC" != x ; then  if test "x$HAVE_CLOC" != x ; then
# Line 1122  if test "x${PLATFORM}" = x ; then Line 1248  if test "x${PLATFORM}" = x ; then
1248  fi  fi
1249    
1250  if test "x${EXEDIR}" = x ; then  if test "x${EXEDIR}" = x ; then
1251      if test "${PWD##/*/}" = "bin" -a -d ../exe -a $ROOTDIR = .. ; then      tmp=`echo $PWD | sed -e 's/\// /g' | awk '{print $NR}'`
1252        if test "x$tmp" = "xbin" -a -d ../exe -a $ROOTDIR = .. ; then
1253          EXEDIR=../exe          EXEDIR=../exe
1254      else      else
1255          EXEDIR=.          EXEDIR=.
# Line 1240  else Line 1367  else
1367              PACKAGES="$PACKAGES $i"              PACKAGES="$PACKAGES $i"
1368          done          done
1369          echo "    before group expansion packages are: $PACKAGES"          echo "    before group expansion packages are: $PACKAGES"
1370          while ! expand_pkg_groups; do echo > /dev/null; done          RET=1
1371            while test $RET = 1 ; do expand_pkg_groups; RET=$?; done
1372          echo "    after group expansion packages are:  $PACKAGES"          echo "    after group expansion packages are:  $PACKAGES"
1373      fi      fi
1374  fi  fi
# Line 1349  while test "x$ck" != xtt ; do Line 1477  while test "x$ck" != xtt ; do
1477              echo "  the dependency rules for \"$dname\""              echo "  the dependency rules for \"$dname\""
1478              exit 1              exit 1
1479          fi          fi
1480          i=$(( $i + 1 ))          i=`echo "$i + 1" | bc -l`
1481            #i=$(( $i + 1 ))
1482      done      done
1483      ck=$ck"t"      ck=$ck"t"
1484  done  done
# Line 1511  echo Line 1640  echo
1640  echo "===  Creating the Makefile  ==="  echo "===  Creating the Makefile  ==="
1641  echo "  setting INCLUDES"  echo "  setting INCLUDES"
1642  for i in $INCLUDEDIRS ; do  for i in $INCLUDEDIRS ; do
1643      if ! test -d $i ; then      if test ! -d $i ; then
 #       INCLUDES="$INCLUDES -I$i"  
 #   else  
1644          echo "Warning: can't find INCLUDEDIRS=\"$i\""          echo "Warning: can't find INCLUDEDIRS=\"$i\""
1645      fi      fi
1646  done  done
# Line 1588  echo "" >> f90srclist.inc Line 1715  echo "" >> f90srclist.inc
1715  echo "" >> hlist.inc  echo "" >> hlist.inc
1716  echo "" >> ad_flow_files.inc  echo "" >> ad_flow_files.inc
1717    
1718  if test -e $MAKEFILE ; then  if test -f $MAKEFILE ; then
1719      mv -f $MAKEFILE "$MAKEFILE.bak"      mv -f $MAKEFILE "$MAKEFILE.bak"
1720  fi  fi
1721  echo "  Writing makefile: $MAKEFILE"  echo "  Writing makefile: $MAKEFILE"
# Line 1698  cat f90srclist.inc    >> $MAKEFILE Line 1825  cat f90srclist.inc    >> $MAKEFILE
1825  cat hlist.inc         >> $MAKEFILE  cat hlist.inc         >> $MAKEFILE
1826  cat ad_flow_files.inc >> $MAKEFILE  cat ad_flow_files.inc >> $MAKEFILE
1827  echo >> $MAKEFILE  echo >> $MAKEFILE
1828  echo 'F77FILES =  $(SRCFILES:.'$FEXT'=.f)'        >> $MAKEFILE  echo 'F77FILES =  $(SRCFILES:.F=.'$FS')'      >> $MAKEFILE
1829  echo 'F90FILES =  $(F90SRCFILES:.'$F90EXT'=.f90)' >> $MAKEFILE  echo 'F90FILES =  $(F90SRCFILES:.F=.'$FS90')' >> $MAKEFILE
1830  echo 'OBJFILES =  $(SRCFILES:.'$FEXT'=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.'$F90EXT'=.o)' >> $MAKEFILE  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE
1831  echo >> $MAKEFILE  echo >> $MAKEFILE
1832  echo '.SUFFIXES:' >> $MAKEFILE  echo '.SUFFIXES:' >> $MAKEFILE
1833  echo '.SUFFIXES: .o .f .p .'$FEXT' .c .'$F90EXT' .f90' >> $MAKEFILE  echo '.SUFFIXES: .o .'$FS' .p .F .c .'$FS90' .F90' >> $MAKEFILE
   
1834  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
1835  rm -f ad_flow_files.inc  rm -f ad_flow_files.inc
1836    
# Line 1716  all: \$(EXECUTABLE) Line 1842  all: \$(EXECUTABLE)
1842          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)
1843  depend:  depend:
1844          @make links          @make links
1845          \$(MAKEDEPEND) -o .f \$(DEFINES) \$(INCLUDES) \$(SRCFILES)          \$(MAKEDEPEND) -o .$FS \$(DEFINES) \$(INCLUDES) \$(SRCFILES)
1846          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)
1847          -rm -f makedepend.out          -rm -f makedepend.out
1848    
# Line 1729  output.txt: \$(EXECUTABLE) Line 1855  output.txt: \$(EXECUTABLE)
1855          @\$(EXECUTABLE) > \$@          @\$(EXECUTABLE) > \$@
1856    
1857  clean:  clean:
1858          -rm -rf *.o *.f *.p *.f90 *.mod ${RMFILES} work.{pc,pcl} *.template          -rm -rf *.o *.$FS *.p *.$FS90 *.mod ${RMFILES} work.{pc,pcl} *.template
1859  Clean:  Clean:
1860          @make clean          @make clean
1861          @make cleanlinks          @make cleanlinks
# Line 1740  CLEAN: Line 1866  CLEAN:
1866          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;
1867          -find \$(EXEDIR) -name "*.data" -exec rm {} \;          -find \$(EXEDIR) -name "*.data" -exec rm {} \;
1868          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;
1869          -rm -f \$(EXECUTABLE) output.txt          -rm -f \$(EXECUTABLE) output.txt STD*
1870    
1871  #eh3 Makefile: makefile  #eh3 Makefile: makefile
1872  makefile:  makefile:
# Line 1759  FC_NAMEMANGLE.h: Line 1885  FC_NAMEMANGLE.h:
1885          @echo Creating \$@ ...          @echo Creating \$@ ...
1886          echo "$FC_NAMEMANGLE" > \$@          echo "$FC_NAMEMANGLE" > \$@
1887    
1888  # The normal chain of rules is (  .$FEXT - .f - .o  )  # The normal chain of rules is (  .F - .$FS - .o  )
1889  .$FEXT.f:  
1890    %.o : %.F
1891    
1892    .F.$FS:
1893          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
1894  .f.o:  .$FS.o:
1895          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<
1896  .$F90EXT.f90:  .F90.$FS90:
1897          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
1898  .f90.o:  .$FS90.o:
1899          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<
1900  .c.o:  .c.o:
1901          \$(CC) \$(CFLAGS) -c \$<          \$(CC) \$(CFLAGS) -c \$<
1902    
1903  # Special exceptions that use the ( .$FEXT - .p - .f - .o ) rule-chain  # Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain
1904  .$FEXT.p:  .F.p:
1905          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
1906  .p.f:  .p.$FS:
1907          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<
1908    
1909  #=========================================  #=========================================
# Line 1899  for i in $KPPFILES ; do Line 2028  for i in $KPPFILES ; do
2028      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
2029          echo "Error: unable to add file \"$i\" to the exceptions list"          echo "Error: unable to add file \"$i\" to the exceptions list"
2030      fi      fi
2031      echo "$base.f: $base.p" >> $MAKEFILE      echo "$base.$FS: $base.p" >> $MAKEFILE
2032  done  done
2033    
2034  echo "  Making list of NOOPTFILES"  echo "  Making list of NOOPTFILES"
# Line 1909  for i in $NOOPTFILES ; do Line 2038  for i in $NOOPTFILES ; do
2038      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
2039          echo "Error: unable to add file \"$i\" to the exceptions list"          echo "Error: unable to add file \"$i\" to the exceptions list"
2040      fi      fi
2041      echo "$base.o: $base.f" >> $MAKEFILE      echo "$base.o: $base.$FS" >> $MAKEFILE
2042      printf "\t\$(FC) \$(FFLAGS) \$(NOOPTFLAGS) -c \$<\n" >> $MAKEFILE      printf "\t\$(FC) \$(FFLAGS) \$(NOOPTFLAGS) -c \$<\n" >> $MAKEFILE
2043  done  done
2044    

Legend:
Removed from v.1.75  
changed lines
  Added in v.1.90

  ViewVC Help
Powered by ViewVC 1.1.22