/[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.1 by edhill, Sat Aug 16 14:01:08 2003 UTC revision 1.10 by adcroft, Fri Sep 26 18:47:59 2003 UTC
# Line 80  EOF Line 80  EOF
80    
81  }  }
82    
 parse_options()  {  
   
     ac_prev=  
     for ac_option in "${OPTIONS[@]}" ; do  
   
         # echo "ac_option = :$ac_option:"  
           
         # If the previous option needs an argument, assign it.  
         if test -n "$ac_prev"; then  
             eval "$ac_prev=\$ac_option"  
             ac_prev=  
             continue  
         fi  
           
         ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`  
           
         case $ac_option in  
               
             -help | --help | -h | --h)  
                 usage ;;  
               
             -nooptfile | --nooptfile)  
                 OPTFILE="NONE" ;;  
             -optfile | --optfile | -of | --of)  
                 ac_prev=optfile ;;  
             -optfile=* | --optfile=* | -of=* | --of=*)  
                 OPTFILE=$ac_optarg ;;  
               
             -pdepend | --pdepend)  
                 ac_prev=pdepend ;;  
             -pdepend=* | --pdepend=*)  
                 PDEPEND=$ac_optarg ;;  
               
             -pdefault | --pdefault)  
                 ac_prev=pdefault ;;  
             -pdefault=* | --pdefault=*)  
                 PDEFAULT=$ac_optarg ;;  
               
             -makefile | -ma)  
                 ac_prev=makefile ;;  
             --makefile=* | -ma=*)  
                 MAKEFILE=$ac_optarg ;;  
               
             -platform | --platform | -pl | --pl)  
                 ac_prev=platform ;;  
             -platform=* | --platform=* | -pl=* | --pl=*)  
                 PLATFORM=$ac_optarg ;;  
   
             -rootdir | --rootdir | -rd | --rd)  
                 ac_prev=rootdir ;;  
             -rootdir=* | --rootdir=* | -rd=* | --rd=*)  
                 ROOTDIR=$ac_optarg ;;  
               
             -mods | --mods | -mo | --mo)  
                 ac_prev=mods ;;  
             -mods=* | --mods=* | -mo=* | --mo=*)  
                 MODS=$ac_optarg ;;  
               
             -disable | --disable)  
                 ac_prev=disable ;;  
             -disable=* | --disable=*)  
                 DISABLE=$ac_optarg ;;  
               
             -enable | --enable)  
                 ac_prev=enable ;;  
             -enable=* | --enable=*)  
                 ENABLE=$ac_optarg ;;  
               
             -noopt | --noopt)  
                 ac_prev=noopt ;;  
             -noopt=* | --noopt=*)  
                 NOOPT=$ac_optarg ;;  
               
 #           -cpp | --cpp)  
 #               ac_prev=cpp ;;  
 #           -cpp=* | --cpp=*)  
 #               CPP=$ac_optarg ;;  
               
             -fortran | --fortran | -fc | --fc)  
                 ac_prev=fc ;;  
             -fc=* | --fc=*)  
                 FC=$ac_optarg ;;  
               
             -ieee | --ieee)  
                 IEEE=1 ;;  
             -noieee | --noieee)  
                 IEEE=0 ;;  
               
             -mpi | --mpi)  
                 MPI=1 ;;  
             -nompi | --nompi)  
                 MPI=0 ;;  
               
             -jam | --jam)  
                 JAM=1 ;;  
             -nojam | --nojam)  
                 JAM=0 ;;  
               
             -*)  
                 echo "Error: unrecognized option: "$ac_option  
                 usage  
                 ;;  
               
             *)  
                 echo "Error: unrecognized argument: "$ac_option  
                 usage  
                 ;;  
               
         esac  
           
     done  
 }  
   
83  #  Parse the package dependency information  #  Parse the package dependency information
84  get_pdepend_list()  {  get_pdepend_list()  {
85    
# Line 210  get_pdepend_list()  { Line 97  get_pdepend_list()  {
97    
98  #  Explain usage  #  Explain usage
99  usage()  {  usage()  {
100      echo ""      echo
101      echo "Usage: "$0" [OPTIONS]"      echo "Usage: "$0" [OPTIONS]"
102      echo "  where [OPTIONS] can be:"$'\n'      echo "  where [OPTIONS] can be:"
103        echo
104      echo "    -help | --help | -h | --h"      echo "    -help | --help | -h | --h"
105      echo "    -nooptfile | --nooptfile"      echo "    -nooptfile | --nooptfile"
106      echo "      -optfile NAME | --optfile NAME | -of NAME | --of NAME"      echo "      -optfile NAME | --optfile NAME | -of NAME | --of NAME"
# Line 221  usage()  { Line 109  usage()  {
109      echo "      -pdepend=NAME | --pdepend=NAME"      echo "      -pdepend=NAME | --pdepend=NAME"
110      echo "    -pdefault NAME | --pdefault NAME"      echo "    -pdefault NAME | --pdefault NAME"
111      echo "      -pdefault=NAME | --pdefault=NAME"      echo "      -pdefault=NAME | --pdefault=NAME"
112      echo "    -makefile NAME | -ma NAME"      echo "    -make NAME | -m NAME"
113      echo "      --makefile=NAME | -ma=NAME"      echo "      --make=NAME | -m=NAME"
114        echo "    -makefile NAME | -mf NAME"
115        echo "      --makefile=NAME | -mf=NAME"
116      echo "    -platform NAME | --platform NAME | -pl NAME | --pl NAME"      echo "    -platform NAME | --platform NAME | -pl NAME | --pl NAME"
117      echo "      -platform=NAME | --platform=NAME | -pl=NAME | --pl=NAME"      echo "      -platform=NAME | --platform=NAME | -pl=NAME | --pl=NAME"
118      echo "    -rootdir NAME | --rootdir NAME | -rd NAME | --rd NAME"      echo "    -rootdir NAME | --rootdir NAME | -rd NAME | --rd NAME"
# Line 241  usage()  { Line 131  usage()  {
131      echo "      -fc=NAME | --fc=NAME"      echo "      -fc=NAME | --fc=NAME"
132      echo "    -[no]ieee | --[no]ieee"      echo "    -[no]ieee | --[no]ieee"
133      echo "    -[no]mpi | --[no]mpi"      echo "    -[no]mpi | --[no]mpi"
134      echo "    -[no]jam | --[no]jam"$'\n'      echo "    -[no]jam | --[no]jam"
135      echo "  and NAME is a string such as:"$'\n'      echo
136        echo "  and NAME is a string such as:"
137        echo
138      echo "    --enable pkg1   --enable 'pkg1 pkg2'   --enable 'pkg1 pkg2 pkg3'"      echo "    --enable pkg1   --enable 'pkg1 pkg2'   --enable 'pkg1 pkg2 pkg3'"
139      echo "    -mods=dir1   -mods='dir1'   -mods='dir1 dir2 dir3'"      echo "    -mods=dir1   -mods='dir1'   -mods='dir1 dir2 dir3'"
140      echo "    -foptim='-Mvect=cachesize:512000,transform -xtypemap=real:64,double:64,integer:32'"$'\n'      echo "    -foptim='-Mvect=cachesize:512000,transform -xtypemap=real:64,double:64,integer:32'"
141        echo
142      echo "  which, depending upon your shell, may need to be single-quoted"      echo "  which, depending upon your shell, may need to be single-quoted"
143      echo "  if it contains spaces, dashes, or other special characters."      echo "  if it contains spaces, dashes, or other special characters."
144      exit 1      exit 1
145  }  }
146    
 # Dump all important state  
 dump_state()  {  
     fname=$1  
     echo " " > $fname  
     RETVAL=$?  
     if test "x${RETVAL}" = x ; then  
         echo "Error: cannot write to $fname"  
         exit 1  
     fi  
     echo "makefile "$makefile > $fname  
 }  
   
   
147  #eh3 # This is the generic configuration.  #eh3 # This is the generic configuration.
148  #eh3 set LN         = ( 'ln -s' )  #eh3 set LN         = ( 'ln -s' )
149  #eh3 set CPP        = ( '/lib/cpp -P' )  #eh3 set CPP        = ( '/lib/cpp -P' )
# Line 284  dump_state()  { Line 164  dump_state()  {
164  #eh3 if (! $?NOOPTFLAGS ) set NOOPTFLAGS = (  )  #eh3 if (! $?NOOPTFLAGS ) set NOOPTFLAGS = (  )
165    
166  #  Set defaults here  #  Set defaults here
167    COMMANDL="$0 $@"
168    
169  PLATFORM=  PLATFORM=
170  LN=  LN=
171  S64=  S64=
# Line 296  DISABLE= Line 178  DISABLE=
178  MAKEFILE=  MAKEFILE=
179  MAKEDEPEND=  MAKEDEPEND=
180  PDEPEND=  PDEPEND=
181    DUMPSTATE=f
182  PDEFAULT=  PDEFAULT=
183  OPTFILE=  OPTFILE=
184  INCLUDES=-I.  INCLUDES="-I."
185  FFLAGS=  FFLAGS=
186  FOPTIM=  FOPTIM=
187  CFLAGS=  CFLAGS=
# Line 320  THISHOSTNAME=`hostname` Line 203  THISHOSTNAME=`hostname`
203  THISCWD=`pwd`  THISCWD=`pwd`
204  THISDATE=`date`  THISDATE=`date`
205  MACHINE=`uname -a`  MACHINE=`uname -a`
206    EXECUTABLE=
207    EXEHOOK=
208    EXEDIR=
209    
210    #  The following state can be set directly by command-line switches
211    gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE NOOPT"
212    gm_s2="FC IEEE MPI JAM DUMPSTATE"
213    
214    #  The following state is not directly set by command-line switches
215    gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPEND PDEPEND PDEFAULT INCLUDES FFLAGS FOPTIM "
216    gm_s4="CFLAGS KFLAGS1 KFLAGS2 LIBS KPPFILES NOOPTFILES NOOPTFLAGS"
217    gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD MAKE THISHOSTNAME THISDATE MACHINE"
218    gm_s6="EXECUTABLE EXEHOOK EXEDIR"
219    
220  echo $'\n'"===  Processing options files and arguments  ==="  gm_state="COMMANDL $gm_s1 $gm_s2 $gm_s3 $gm_s4 $gm_s5 $gm_s6"
221    
222    
223    echo
224    echo "===  Processing options files and arguments  ==="
225  gm_local="./gm_local"  gm_local="./gm_local"
226  echo -n "  getting local config information:  "  echo -n "  getting local config information:  "
227  if test -e $gm_local ; then  if test -e $gm_local ; then
228      echo "using $gm_local"      echo "using $gm_local"
229      source $gm_local      source $gm_local
230      echo "DISABLE=$DISABLE"$'\n'"ENABLE=$ENABLE"      # echo "DISABLE=$DISABLE"
231        # echo "ENABLE=$ENABLE"
232  else  else
233      echo "none found"      echo "none found"
234  fi  fi
235    
236  #  echo "$0::$1:$2:$3:$4:$5:$6:$7:"  #  echo "$0::$1:$2:$3:$4:$5:$6:$7:"
237  OPTIONS=()  #OPTIONS=
238  n=0  #n=0
239  for i ; do  #for i ; do
240     setvar="OPTIONS[$n]='$i'"  #   echo "$i  $n"
241     #  echo "  $setvar"  #   setvar="OPTIONS[$n]='$i'"
242     eval "$setvar"  #   #  echo "  $setvar"
243     n=$(( $n + 1 ))  #   eval "$setvar"
244    #   n=$(( $n + 1 ))
245    #done
246    #parse_options
247    
248    ac_prev=
249    for ac_option ; do
250    
251        # If the previous option needs an argument, assign it.
252        if test -n "$ac_prev"; then
253            eval "$ac_prev=\$ac_option"
254            ac_prev=
255            continue
256        fi
257        
258        ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'`
259        
260        case $ac_option in
261            
262            -help | --help | -h | --h)
263                usage ;;
264            
265            -nooptfile | --nooptfile)
266                OPTFILE="NONE" ;;
267            -optfile | --optfile | -of | --of)
268                ac_prev=OPTFILE ;;
269            -optfile=* | --optfile=* | -of=* | --of=*)
270                OPTFILE=$ac_optarg ;;
271            
272            -pdepend | --pdepend)
273                ac_prev=PDEPEND ;;
274            -pdepend=* | --pdepend=*)
275                PDEPEND=$ac_optarg ;;
276            
277            -pdefault | --pdefault)
278                ac_prev=PDEFAULT ;;
279            -pdefault=* | --pdefault=*)
280                PDEFAULT=$ac_optarg ;;
281            
282            -make | --make | -m | --m)
283                ac_prev=MAKE ;;
284            -make=* | --make=* | -m=* | --m=*)
285                MAKE=$ac_optarg ;;
286            
287            -makefile | --makefile | -ma | --ma)
288                ac_prev=MAKEFILE ;;
289            -makefile=* | --makefile=* | -ma=* | --ma=*)
290                MAKEFILE=$ac_optarg ;;
291            
292            -platform | --platform | -pl | --pl)
293                ac_prev=PLATFORM ;;
294            -platform=* | --platform=* | -pl=* | --pl=*)
295                PLATFORM=$ac_optarg ;;
296            
297            -rootdir | --rootdir | -rd | --rd)
298                ac_prev=ROOTDIR ;;
299            -rootdir=* | --rootdir=* | -rd=* | --rd=*)
300                ROOTDIR=$ac_optarg ;;
301            
302            -mods | --mods | -mo | --mo)
303                ac_prev=MODS ;;
304            -mods=* | --mods=* | -mo=* | --mo=*)
305                MODS=$ac_optarg ;;
306            
307            -disable | --disable)
308                ac_prev=DISABLE ;;
309            -disable=* | --disable=*)
310                DISABLE=$ac_optarg ;;
311            
312            -enable | --enable)
313                ac_prev=ENABLE ;;
314            -enable=* | --enable=*)
315                ENABLE=$ac_optarg ;;
316            
317            -noopt | --noopt)
318                ac_prev=NOOPT ;;
319            -noopt=* | --noopt=*)
320                NOOPT=$ac_optarg ;;
321            
322    #           -cpp | --cpp)
323    #               ac_prev=cpp ;;
324    #           -cpp=* | --cpp=*)
325    #               CPP=$ac_optarg ;;
326                
327            -fortran | --fortran | -fc | --fc)
328                ac_prev=FC ;;
329            -fc=* | --fc=*)
330                FC=$ac_optarg ;;
331            
332            -ieee | --ieee)
333                IEEE=1 ;;
334            -noieee | --noieee)
335                IEEE=0 ;;
336            
337            -mpi | --mpi)
338                MPI=1 ;;
339            -nompi | --nompi)
340                MPI=0 ;;
341            
342            -jam | --jam)
343                JAM=1 ;;
344            -nojam | --nojam)
345                JAM=0 ;;
346            
347            -ds | --ds)
348                DUMPSTATE=t ;;
349            
350            -*)
351                echo "Error: unrecognized option: "$ac_option
352                usage
353                ;;
354            
355            *)
356                echo "Error: unrecognized argument: "$ac_option
357                usage
358                ;;
359            
360        esac
361        
362  done  done
 parse_options  
363    
364  echo "  getting OPTFILE information:  "  echo "  getting OPTFILE information:  "
365  if test "x${OPTFILE}" = x ; then  if test "x${OPTFILE}" = x ; then
366      echo "Warning: no OPTFILE specified so we'll look for possible settings"      echo "Warning: no OPTFILE specified so we'll look for possible settings"
367      echo $'\n'"===  Searching for possible settings for OPTFILE  ==="      printf "\n===  Searching for possible settings for OPTFILE  ===\n"
368      find_possible_configs      find_possible_configs
369  else  else
370      if test "x$OPTFILE" = xNONE ; then      if test "x$OPTFILE" = xNONE ; then
# Line 361  else Line 379  else
379                  echo "--please check that variable syntax is bash-compatible"                  echo "--please check that variable syntax is bash-compatible"
380                  exit 1                  exit 1
381              fi              fi
382                if test "x$DUMPSTATE" != xf ; then
383                    cp -f $OPTFILE "gm_optfile"
384                fi
385          else          else
386              echo "Error: can't read OPTFILE=\"$OPTFILE\""              echo "Error: can't read OPTFILE=\"$OPTFILE\""
387              exit 1              exit 1
# Line 368  else Line 389  else
389      fi      fi
390  fi  fi
391    
392  echo $'\n'"===  Setting defaults  ==="  #  Check that FC, LINK, CPP, and S64 are defined.  If not, complain
393    #  and abort!
394    if test "x$FC" = x ; then
395        cat <<EOF 1>&2
396    
397    Error: no Fortran compiler: please specify using one of the following:
398      1) within the options file ("FC=...") as specified by "-of=OPTFILE"
399      2) the "-fc=XXX" command-line option
400      3) the "./gm_local" file
401    EOF
402        exit 1
403    fi
404    if test "x$LINK" = x ; then
405        LINK=$FC
406    fi
407    if test "x$CPP" = x ; then
408        cat <<EOF 1>&2
409    
410    Error: no C pre-processor: please specify using one of the following:
411      1) within the options file ("CPP=...") as specified by "-of=OPTFILE"
412      2) the "./gm_local" file
413    EOF
414        exit 1
415    fi
416    if test "x$S64" = x ; then
417        cat <<EOF 1>&2
418    
419    Error: no C pre-processor: please specify using one of the following:
420      1) within the options file ("S64=...") as specified by "-of=OPTFILE"
421      2) the "./gm_local" file
422    EOF
423        exit 1
424    fi
425    
426    
427    printf "\n===  Setting defaults  ===\n"
428  echo -n "  Adding MODS directories:  "  echo -n "  Adding MODS directories:  "
429  for d in $MODS ; do  for d in $MODS ; do
430      if test ! -d $d ; then      if test ! -d $d ; then
431          echo $'\n\n'"Error: MODS directory \"$d\" not found!"          echo
432            echo "Error: MODS directory \"$d\" not found!"
433          exit 1          exit 1
434      else      else
435          echo -n " $d"          echo -n " $d"
# Line 443  if test -r $ROOTDIR"/eesupp/src/Makefile Line 500  if test -r $ROOTDIR"/eesupp/src/Makefile
500      echo "  Making source files in eesupp from templates"      echo "  Making source files in eesupp from templates"
501      $MAKE -C $ROOTDIR"/eesupp/src/" > make_eesupp.errors 2>&1      $MAKE -C $ROOTDIR"/eesupp/src/" > make_eesupp.errors 2>&1
502      RETVAL=$?      RETVAL=$?
503      if test "x${RETVAL}" == "x0" ; then      if test "x${RETVAL}" = x0 ; then
504          rm -f make_eesupp.errors          rm -f make_eesupp.errors
505      else      else
506          echo "Error: problem encountered while building source files in eesupp:"          echo "Error: problem encountered while building source files in eesupp:"
# Line 452  if test -r $ROOTDIR"/eesupp/src/Makefile Line 509  if test -r $ROOTDIR"/eesupp/src/Makefile
509      fi      fi
510  fi  fi
511    
512  echo $'\n'"===  Determining package settings  ==="  printf "\n===  Determining package settings  ===\n"
513  if  test "x${PDEPEND}" = x ; then  if  test "x${PDEPEND}" = x ; then
514      tmp=$ROOTDIR"/pkg/pkg_depend"      tmp=$ROOTDIR"/pkg/pkg_depend"
515      if test -r $tmp ; then      if test -r $tmp ; then
# Line 471  echo "  getting package dependency info Line 528  echo "  getting package dependency info
528  #  Strip the comments and then convert the dependency file into  #  Strip the comments and then convert the dependency file into
529  #  two arrays: PNAME, DNAME  #  two arrays: PNAME, DNAME
530  cat $PDEPEND | sed -e 's/#.*$//g' \  cat $PDEPEND | sed -e 's/#.*$//g' \
531      | awk 'BEGIN{nn=-1;} (NF>0){ for(i=2;i<=NF;i++){nn++; print "PNAME["nn"]="$1"\nDNAME["nn"]="$i} }' \      | awk 'BEGIN{nn=-1;} (NF>0){ for(i=2;i<=NF;i++){nn++; print "PNAME_"nn"="$1"\nDNAME_"nn"="$i}} END{print "nname="nn}' \
532      > ./.pd_tmp      > ./.pd_tmp
533  RETVAL=$?  RETVAL=$?
534  if test ! "x${RETVAL}" = x0 ; then  if test ! "x${RETVAL}" = x0 ; then
# Line 544  echo "  applying package dependency rule Line 601  echo "  applying package dependency rule
601  ck=  ck=
602  while test "x$ck" != xtt ; do  while test "x$ck" != xtt ; do
603      i=0      i=0
604      rtot=${#PNAME[@]}      # rtot=${#PNAME[@]}
605        rtot=$nname
606      while test $i -lt $rtot ; do      while test $i -lt $rtot ; do
607    
608          #  Is $pname in the current $PACKAGES list?          #  Is $pname in the current $PACKAGES list?
609          pname=${PNAME[$i]}          #  pname=${PNAME[$i]}
610            tmp="pname=\"\$PNAME_$i\""
611            eval $tmp
612          pin="f"          pin="f"
613          for p in $PACKAGES ; do          for p in $PACKAGES ; do
614              if test "x$p" = "x$pname" ; then              if test "x$p" = "x$pname" ; then
# Line 557  while test "x$ck" != xtt ; do Line 617  while test "x$ck" != xtt ; do
617          done          done
618    
619          #  Is the DNAME entry a (+) or (-) rule ?          #  Is the DNAME entry a (+) or (-) rule ?
620            tmp="dname=\"\$DNAME_$i\""
621            eval $tmp
622          plus="-"          plus="-"
623          echo "${DNAME[$i]}" | grep '^+' > /dev/null 2>&1          echo $dname | grep '^+' > /dev/null 2>&1
624          RETVAL=$?          RETVAL=$?
625          if test "x$RETVAL" = x0 ; then          if test "x$RETVAL" = x0 ; then
626              plus="+"              plus="+"
627          fi          fi
628    
629          #  Is $dname in the current $PACKAGES list?          #  Is $dname in the current $PACKAGES list?
630          dname=`echo ${DNAME[$i]} | sed -e 's/^[+-]//'`          dname=`echo $dname | sed -e 's/^[+-]//'`
631          din="f"          din="f"
632          for p in $PACKAGES ; do          for p in $PACKAGES ; do
633              if test "x$p" = "x$dname" ; then              if test "x$p" = "x$dname" ; then
# Line 634  done Line 696  done
696  # done  # done
697  # echo  # echo
698    
699  echo "  Setting package-specific CPP flags in CPP_OPTIONS.h:"  echo "  Searching for CPP_OPTIONS.h (macros and flags for configuring the model):"
700  CPP_OPTIONS=  CPP_OPTIONS=
701  spaths=". $SOURCEDIRS"  spaths="$MODS ./ $SOURCEDIRS"
702  for i in $spaths ; do  for i in $spaths ; do
703      try="$i/CPP_OPTIONS.h"      try="$i/CPP_OPTIONS.h"
704      #  echo -n "    trying $try : "      #  echo -n "    trying $try : "
# Line 751  for d in $STANDARDDIRS ; do Line 813  for d in $STANDARDDIRS ; do
813  done  done
814    
815    
816  echo $'\n'"===  Creating the Makefile  ==="  echo
817    echo "===  Creating the Makefile  ==="
818  echo "  setting INCLUDES"  echo "  setting INCLUDES"
819  for i in $INCLUDEDIRS ; do  for i in $INCLUDEDIRS ; do
820      if test -d $i ; then      if test -d $i ; then
# Line 766  rm -rf .links.tmp Line 829  rm -rf .links.tmp
829  mkdir .links.tmp  mkdir .links.tmp
830  echo "# This section creates symbolic links" > srclinks.tmp  echo "# This section creates symbolic links" > srclinks.tmp
831  echo "" >> srclinks.tmp  echo "" >> srclinks.tmp
832  echo -n 'SRCFILES = ' > srclist.inc  echo -n 'SRCFILES = '    > srclist.inc
833  echo -n 'CSRCFILES = ' > csrclist.inc  echo -n 'CSRCFILES = '   > csrclist.inc
834    echo -n 'F90SRCFILES = ' > f90srclist.inc
835  echo -n 'HEADERFILES = ' > hlist.inc  echo -n 'HEADERFILES = ' > hlist.inc
836  alldirs=". $SOURCEDIRS $INCLUDEDIRS"  alldirs="$SOURCEDIRS $INCLUDEDIRS ."
837  for d in $alldirs ; do  for d in $alldirs ; do
838      deplist=      deplist=
839      sfiles=`( cd $d; echo *.[h,c,F] )`      sfiles=`( cd $d; echo *.[h,c,F] )`
840        sfiles=`( echo $sfiles; cd $d; echo *.F90 )`
841      for sf in $sfiles ; do      for sf in $sfiles ; do
842          if test ! -r ".links.tmp/$sf" ; then          if test ! -r ".links.tmp/$sf" ; then
843              if test -f "$d/$sf" ; then              if test -f "$d/$sf" ; then
# Line 784  for d in $alldirs ; do Line 849  for d in $alldirs ; do
849                          echo    " \\"  >> srclist.inc                          echo    " \\"  >> srclist.inc
850                          echo -n " $sf" >> srclist.inc                          echo -n " $sf" >> srclist.inc
851                          ;;                          ;;
852                        F90)
853                            echo    " \\"  >> f90srclist.inc
854                            echo -n " $sf" >> f90srclist.inc
855                            ;;
856                      c)                      c)
857                          echo    " \\"  >> csrclist.inc                          echo    " \\"  >> csrclist.inc
858                          echo -n " $sf" >> csrclist.inc                          echo -n " $sf" >> csrclist.inc
# Line 797  for d in $alldirs ; do Line 866  for d in $alldirs ; do
866          fi          fi
867      done      done
868      if test "x$deplist" != x ; then      if test "x$deplist" != x ; then
869          echo $'\n'"#  These files are linked from $d" >> srclinks.tmp          echo "" >> srclinks.tmp
870            echo "#  These files are linked from $d" >> srclinks.tmp
871          echo "$deplist :" >> srclinks.tmp          echo "$deplist :" >> srclinks.tmp
872          echo $'\t$(LN) '$d'/$@ $@' >> srclinks.tmp          printf "\t\$(LN) %s/\$@ \$@\n" $d >> srclinks.tmp
873      fi      fi
874  done  done
875  rm -rf .links.tmp  rm -rf .links.tmp
876  echo "" >> srclist.inc  echo "" >> srclist.inc
877  echo "" >> csrclist.inc  echo "" >> csrclist.inc
878    echo "" >> f90srclist.inc
879  echo "" >> hlist.inc  echo "" >> hlist.inc
880    
881  if test -e $MAKEFILE ; then  if test -e $MAKEFILE ; then
# Line 862  MAKEDEPEND = ${MAKEDEPEND} Line 933  MAKEDEPEND = ${MAKEDEPEND}
933  KPP = ${KPP}  KPP = ${KPP}
934  # Fortran compiler  # Fortran compiler
935  FC = ${FC}  FC = ${FC}
936    # Fortran compiler
937    F90C = ${F90C}
938  # Link editor  # Link editor
939  LINK = ${LINK}  LINK = ${LINK}
940    
# Line 875  KFLAGS2 = ${KFLAGS2} Line 948  KFLAGS2 = ${KFLAGS2}
948  # Optim./debug for FC  # Optim./debug for FC
949  FFLAGS = ${FFLAGS}  FFLAGS = ${FFLAGS}
950  FOPTIM = ${FOPTIM}  FOPTIM = ${FOPTIM}
951    # Optim./debug for FC
952    F90FLAGS = ${F90FLAGS}
953    F90OPTIM = ${F90OPTIM}
954  # Flags for CC  # Flags for CC
955  CFLAGS = ${CFLAGS}  CFLAGS = ${CFLAGS}
956  # Files that should not be optimized  # Files that should not be optimized
# Line 882  NOOPTFILES = ${NOOPTFILES} Line 958  NOOPTFILES = ${NOOPTFILES}
958  NOOPTFLAGS = ${NOOPTFLAGS}  NOOPTFLAGS = ${NOOPTFLAGS}
959  # Flags and libraries needed for linking  # Flags and libraries needed for linking
960  LIBS = ${LIBS} \$(XLIBS)  LIBS = ${LIBS} \$(XLIBS)
961    # Name of the Mekfile
962    MAKEFILE=${MAKEFILE}
963    
964  EOF  EOF
965    
966  cat srclist.inc  >> $MAKEFILE  cat srclist.inc    >> $MAKEFILE
967  cat csrclist.inc >> $MAKEFILE  cat csrclist.inc   >> $MAKEFILE
968  cat hlist.inc >> $MAKEFILE  cat f90srclist.inc >> $MAKEFILE
969  echo 'F77FILES =  $(SRCFILES:.F=.f)'                    >> $MAKEFILE  cat hlist.inc      >> $MAKEFILE
970  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o)' >> $MAKEFILE  echo 'F77FILES =  $(SRCFILES:.F=.f)'                                           >> $MAKEFILE
971    echo 'F90FILES =  $(F90SRCFILES:.F90=.f90)'                                    >> $MAKEFILE
972    echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE
973    
974  rm -f srclist.inc csrclist.inc hlist.inc flist.tmp clist.tmp  rm -f srclist.inc csrclist.inc hlist.inc flist.tmp clist.tmp f90srclist.inc
975    
976  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
977    
978  .SUFFIXES:  .SUFFIXES:
979  .SUFFIXES: .o .f .p .F .c  .SUFFIXES: .o .f .p .F .c .F90 .f90
980    
981  all: \$(EXECUTABLE)  all: \$(EXECUTABLE)
982  \$(EXECUTABLE): \$(OBJFILES)  \$(EXECUTABLE): \$(OBJFILES)
# Line 904  all: \$(EXECUTABLE) Line 984  all: \$(EXECUTABLE)
984  depend:  depend:
985          @make links          @make links
986          \$(MAKEDEPEND) -o .f \$(DEFINES) \$(INCLUDES) \$(SRCFILES)          \$(MAKEDEPEND) -o .f \$(DEFINES) \$(INCLUDES) \$(SRCFILES)
987            ${TOOLSDIR}/f90mkdepend >> \$(MAKEFILE)
988    
989  links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES)  links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES)
990    
991  small_f: \$(F77FILES)  small_f: \$(F77FILES) \$(F90FILES)
992    
993  output.txt: \$(EXECUTABLE)  output.txt: \$(EXECUTABLE)
994          @printf 'running ... '          @printf 'running ... '
995          @\$(EXECUTABLE) > \$@          @\$(EXECUTABLE) > \$@
996    
997  clean:  clean:
998          -rm -rf *.o *.f *.p ${RMFILES} work.{pc,pcl}          -rm -rf *.o *.f *.p *.f90 *.mod ${RMFILES} work.{pc,pcl}
999  Clean:  Clean:
1000          @make clean          @make clean
1001          @make cleanlinks          @make cleanlinks
# Line 936  cleanlinks: Line 1017  cleanlinks:
1017          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
1018  .f.o:  .f.o:
1019          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<
1020    .F90.f90:
1021            \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
1022    .f90.o:
1023            \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<
1024  .c.o:  .c.o:
1025          \$(CC) \$(CFLAGS) -c \$<          \$(CC) \$(CFLAGS) -c \$<
1026    
# Line 947  cleanlinks: Line 1032  cleanlinks:
1032    
1033  EOF  EOF
1034    
1035    if test "x$EXEHOOK" != x ; then
1036        printf "\nexehook:\n\t%s\n" $EXEHOOK >> $MAKEFILE
1037    fi
1038    
1039  echo "  Making list of \"exceptions\" that need \".p\" files"  echo "  Making list of \"exceptions\" that need \".p\" files"
1040  for i in $KPPFILES ; do  for i in $KPPFILES ; do
1041      base=`echo $i | sed -e 's/\/.*\///g' | sed -e 's/\..*$//g'`      base=`echo $i | sed -e 's/\/.*\///g' | sed -e 's/\..*$//g'`
# Line 965  for i in $NOOPTFILES ; do Line 1054  for i in $NOOPTFILES ; do
1054          echo "Error: unable to add file \"$i\" to the exceptions list"          echo "Error: unable to add file \"$i\" to the exceptions list"
1055      fi      fi
1056      echo "$base.o: $base.f" >> $MAKEFILE      echo "$base.o: $base.f" >> $MAKEFILE
1057      echo $'\t$(FC) $(FFLAGS) $(NOOPTFLAGS) -c $<' >> $MAKEFILE      printf "\t\$(FC) \$(FFLAGS) \$(NOOPTFLAGS) -c \$<\n" >> $MAKEFILE
1058  done  done
1059    
1060  echo "  Add rules for links"  echo "  Add rules for links"
# Line 973  cat srclinks.tmp >> $MAKEFILE Line 1062  cat srclinks.tmp >> $MAKEFILE
1062  rm -f srclinks.tmp  rm -f srclinks.tmp
1063    
1064  echo "  Adding makedepend marker"  echo "  Adding makedepend marker"
1065  echo $'\n\n'"# DO NOT DELETE" >> $MAKEFILE  printf "\n\n# DO NOT DELETE\n" >> $MAKEFILE
1066    
1067    printf "\n===  Done  ===\n"
1068    
1069  echo $'\n'"===  Done  ==="  
1070    #  Write the "state" for future records
1071    if test "x$DUMPSTATE" != xf ; then
1072        echo -n "" > gm_state
1073        for i in $gm_state ; do
1074            t1="t2=\$$i"
1075            eval $t1
1076            echo "$i='$t2'" >> gm_state
1077        done
1078    fi

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.10

  ViewVC Help
Powered by ViewVC 1.1.22