/[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.2 by edhill, Fri Aug 22 04:07:00 2003 UTC revision 1.5 by edhill, Wed Aug 27 22:12:31 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 255  usage()  { Line 142  usage()  {
142      exit 1      exit 1
143  }  }
144    
 # 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  
 }  
   
   
145  #eh3 # This is the generic configuration.  #eh3 # This is the generic configuration.
146  #eh3 set LN         = ( 'ln -s' )  #eh3 set LN         = ( 'ln -s' )
147  #eh3 set CPP        = ( '/lib/cpp -P' )  #eh3 set CPP        = ( '/lib/cpp -P' )
# Line 288  dump_state()  { Line 162  dump_state()  {
162  #eh3 if (! $?NOOPTFLAGS ) set NOOPTFLAGS = (  )  #eh3 if (! $?NOOPTFLAGS ) set NOOPTFLAGS = (  )
163    
164  #  Set defaults here  #  Set defaults here
165    COMMANDL="$0 $@"
166    
167  PLATFORM=  PLATFORM=
168  LN=  LN=
169  S64=  S64=
# Line 300  DISABLE= Line 176  DISABLE=
176  MAKEFILE=  MAKEFILE=
177  MAKEDEPEND=  MAKEDEPEND=
178  PDEPEND=  PDEPEND=
179    DUMPSTATE=f
180  PDEFAULT=  PDEFAULT=
181  OPTFILE=  OPTFILE=
182  INCLUDES="-I."  INCLUDES="-I."
# Line 325  THISCWD=`pwd` Line 202  THISCWD=`pwd`
202  THISDATE=`date`  THISDATE=`date`
203  MACHINE=`uname -a`  MACHINE=`uname -a`
204    
205    #  The following state can be set directly by command-line switches
206    gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE NOOPT"
207    gm_s2="FC IEEE MPI JAM DUMPSTATE"
208    
209    #  The following state is not directly set by command-line switches
210    gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPEND PDEPEND PDEFAULT INCLUDES FFLAGS FOPTIM "
211    gm_s4="CFLAGS KFLAGS1 KFLAGS2 LIBS KPPFILES NOOPTFILES NOOPTFLAGS"
212    gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD MAKE THISHOSTNAME THISDATE MACHINE"
213    
214    gm_state="COMMANDL $gm_s1 $gm_s2 $gm_s3 $gm_s4 $gm_s5"
215    
216    
217  echo  echo
218  echo "===  Processing options files and arguments  ==="  echo "===  Processing options files and arguments  ==="
219  gm_local="./gm_local"  gm_local="./gm_local"
# Line 370  for ac_option ; do Line 259  for ac_option ; do
259          -nooptfile | --nooptfile)          -nooptfile | --nooptfile)
260              OPTFILE="NONE" ;;              OPTFILE="NONE" ;;
261          -optfile | --optfile | -of | --of)          -optfile | --optfile | -of | --of)
262              ac_prev=optfile ;;              ac_prev=OPTFILE ;;
263          -optfile=* | --optfile=* | -of=* | --of=*)          -optfile=* | --optfile=* | -of=* | --of=*)
264              OPTFILE=$ac_optarg ;;              OPTFILE=$ac_optarg ;;
265                    
266          -pdepend | --pdepend)          -pdepend | --pdepend)
267              ac_prev=pdepend ;;              ac_prev=PDEPEND ;;
268          -pdepend=* | --pdepend=*)          -pdepend=* | --pdepend=*)
269              PDEPEND=$ac_optarg ;;              PDEPEND=$ac_optarg ;;
270                    
271          -pdefault | --pdefault)          -pdefault | --pdefault)
272              ac_prev=pdefault ;;              ac_prev=PDEFAULT ;;
273          -pdefault=* | --pdefault=*)          -pdefault=* | --pdefault=*)
274              PDEFAULT=$ac_optarg ;;              PDEFAULT=$ac_optarg ;;
275                    
276          -makefile | -ma)          -makefile | -ma)
277              ac_prev=makefile ;;              ac_prev=MAKEFILE ;;
278          --makefile=* | -ma=*)          --makefile=* | -ma=*)
279              MAKEFILE=$ac_optarg ;;              MAKEFILE=$ac_optarg ;;
280                    
281          -platform | --platform | -pl | --pl)          -platform | --platform | -pl | --pl)
282              ac_prev=platform ;;              ac_prev=PLATFORM ;;
283          -platform=* | --platform=* | -pl=* | --pl=*)          -platform=* | --platform=* | -pl=* | --pl=*)
284              PLATFORM=$ac_optarg ;;              PLATFORM=$ac_optarg ;;
285                    
286          -rootdir | --rootdir | -rd | --rd)          -rootdir | --rootdir | -rd | --rd)
287              ac_prev=rootdir ;;              ac_prev=ROOTDIR ;;
288          -rootdir=* | --rootdir=* | -rd=* | --rd=*)          -rootdir=* | --rootdir=* | -rd=* | --rd=*)
289              ROOTDIR=$ac_optarg ;;              ROOTDIR=$ac_optarg ;;
290                    
291          -mods | --mods | -mo | --mo)          -mods | --mods | -mo | --mo)
292              ac_prev=mods ;;              ac_prev=MODS ;;
293          -mods=* | --mods=* | -mo=* | --mo=*)          -mods=* | --mods=* | -mo=* | --mo=*)
294              MODS=$ac_optarg ;;              MODS=$ac_optarg ;;
295                    
296          -disable | --disable)          -disable | --disable)
297              ac_prev=disable ;;              ac_prev=DISABLE ;;
298          -disable=* | --disable=*)          -disable=* | --disable=*)
299              DISABLE=$ac_optarg ;;              DISABLE=$ac_optarg ;;
300                    
301          -enable | --enable)          -enable | --enable)
302              ac_prev=enable ;;              ac_prev=ENABLE ;;
303          -enable=* | --enable=*)          -enable=* | --enable=*)
304              ENABLE=$ac_optarg ;;              ENABLE=$ac_optarg ;;
305                    
306          -noopt | --noopt)          -noopt | --noopt)
307              ac_prev=noopt ;;              ac_prev=NOOPT ;;
308          -noopt=* | --noopt=*)          -noopt=* | --noopt=*)
309              NOOPT=$ac_optarg ;;              NOOPT=$ac_optarg ;;
310                    
# Line 425  for ac_option ; do Line 314  for ac_option ; do
314  #               CPP=$ac_optarg ;;  #               CPP=$ac_optarg ;;
315                            
316          -fortran | --fortran | -fc | --fc)          -fortran | --fortran | -fc | --fc)
317              ac_prev=fc ;;              ac_prev=FC ;;
318          -fc=* | --fc=*)          -fc=* | --fc=*)
319              FC=$ac_optarg ;;              FC=$ac_optarg ;;
320                    
# Line 444  for ac_option ; do Line 333  for ac_option ; do
333          -nojam | --nojam)          -nojam | --nojam)
334              JAM=0 ;;              JAM=0 ;;
335                    
336            -ds | --ds)
337                DUMPSTATE=t ;;
338            
339          -*)          -*)
340              echo "Error: unrecognized option: "$ac_option              echo "Error: unrecognized option: "$ac_option
341              usage              usage
# Line 476  else Line 368  else
368                  echo "--please check that variable syntax is bash-compatible"                  echo "--please check that variable syntax is bash-compatible"
369                  exit 1                  exit 1
370              fi              fi
371                if test "x$DUMPSTATE" != xf ; then
372                    cp -f $OPTFILE "gm_optfile"
373                fi
374          else          else
375              echo "Error: can't read OPTFILE=\"$OPTFILE\""              echo "Error: can't read OPTFILE=\"$OPTFILE\""
376              exit 1              exit 1
# Line 757  done Line 652  done
652    
653  echo "  Setting package-specific CPP flags in CPP_OPTIONS.h:"  echo "  Setting package-specific CPP flags in CPP_OPTIONS.h:"
654  CPP_OPTIONS=  CPP_OPTIONS=
655  spaths=". $SOURCEDIRS"  spaths="$SOURCEDIRS"
656  for i in $spaths ; do  for i in $spaths ; do
657      try="$i/CPP_OPTIONS.h"      try="$i/CPP_OPTIONS.h"
658      #  echo -n "    trying $try : "      #  echo -n "    trying $try : "
# Line 888  rm -rf .links.tmp Line 783  rm -rf .links.tmp
783  mkdir .links.tmp  mkdir .links.tmp
784  echo "# This section creates symbolic links" > srclinks.tmp  echo "# This section creates symbolic links" > srclinks.tmp
785  echo "" >> srclinks.tmp  echo "" >> srclinks.tmp
786  echo -n 'SRCFILES = ' > srclist.inc  echo -n 'SRCFILES = '    > srclist.inc
787  echo -n 'CSRCFILES = ' > csrclist.inc  echo -n 'CSRCFILES = '   > csrclist.inc
788    echo -n 'F90SRCFILES = ' > f90srclist.inc
789  echo -n 'HEADERFILES = ' > hlist.inc  echo -n 'HEADERFILES = ' > hlist.inc
790  alldirs=". $SOURCEDIRS $INCLUDEDIRS"  alldirs=". $SOURCEDIRS $INCLUDEDIRS"
791  for d in $alldirs ; do  for d in $alldirs ; do
792      deplist=      deplist=
793      sfiles=`( cd $d; echo *.[h,c,F] )`      sfiles=`( cd $d; echo *.[h,c,F] )`
794        sfiles=`( echo $sfiles; cd $d; echo *.F90 )`
795      for sf in $sfiles ; do      for sf in $sfiles ; do
796          if test ! -r ".links.tmp/$sf" ; then          if test ! -r ".links.tmp/$sf" ; then
797              if test -f "$d/$sf" ; then              if test -f "$d/$sf" ; then
# Line 906  for d in $alldirs ; do Line 803  for d in $alldirs ; do
803                          echo    " \\"  >> srclist.inc                          echo    " \\"  >> srclist.inc
804                          echo -n " $sf" >> srclist.inc                          echo -n " $sf" >> srclist.inc
805                          ;;                          ;;
806                        F90)
807                            echo    " \\"  >> f90srclist.inc
808                            echo -n " $sf" >> f90srclist.inc
809                            ;;
810                      c)                      c)
811                          echo    " \\"  >> csrclist.inc                          echo    " \\"  >> csrclist.inc
812                          echo -n " $sf" >> csrclist.inc                          echo -n " $sf" >> csrclist.inc
# Line 928  done Line 829  done
829  rm -rf .links.tmp  rm -rf .links.tmp
830  echo "" >> srclist.inc  echo "" >> srclist.inc
831  echo "" >> csrclist.inc  echo "" >> csrclist.inc
832    echo "" >> f90srclist.inc
833  echo "" >> hlist.inc  echo "" >> hlist.inc
834    
835  if test -e $MAKEFILE ; then  if test -e $MAKEFILE ; then
# Line 985  MAKEDEPEND = ${MAKEDEPEND} Line 887  MAKEDEPEND = ${MAKEDEPEND}
887  KPP = ${KPP}  KPP = ${KPP}
888  # Fortran compiler  # Fortran compiler
889  FC = ${FC}  FC = ${FC}
890    # Fortran compiler
891    F90C = ${F90C}
892  # Link editor  # Link editor
893  LINK = ${LINK}  LINK = ${LINK}
894    
# Line 998  KFLAGS2 = ${KFLAGS2} Line 902  KFLAGS2 = ${KFLAGS2}
902  # Optim./debug for FC  # Optim./debug for FC
903  FFLAGS = ${FFLAGS}  FFLAGS = ${FFLAGS}
904  FOPTIM = ${FOPTIM}  FOPTIM = ${FOPTIM}
905    # Optim./debug for FC
906    F90FLAGS = ${F90FLAGS}
907    F90OPTIM = ${F90OPTIM}
908  # Flags for CC  # Flags for CC
909  CFLAGS = ${CFLAGS}  CFLAGS = ${CFLAGS}
910  # Files that should not be optimized  # Files that should not be optimized
# Line 1005  NOOPTFILES = ${NOOPTFILES} Line 912  NOOPTFILES = ${NOOPTFILES}
912  NOOPTFLAGS = ${NOOPTFLAGS}  NOOPTFLAGS = ${NOOPTFLAGS}
913  # Flags and libraries needed for linking  # Flags and libraries needed for linking
914  LIBS = ${LIBS} \$(XLIBS)  LIBS = ${LIBS} \$(XLIBS)
915    # Name of the Mekfile
916    MAKEFILE=${MAKEFILE}
917    
918  EOF  EOF
919    
920  cat srclist.inc  >> $MAKEFILE  cat srclist.inc    >> $MAKEFILE
921  cat csrclist.inc >> $MAKEFILE  cat csrclist.inc   >> $MAKEFILE
922  cat hlist.inc >> $MAKEFILE  cat f90srclist.inc >> $MAKEFILE
923  echo 'F77FILES =  $(SRCFILES:.F=.f)'                    >> $MAKEFILE  cat hlist.inc      >> $MAKEFILE
924  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o)' >> $MAKEFILE  echo 'F77FILES =  $(SRCFILES:.F=.f)'                                           >> $MAKEFILE
925    echo 'F90FILES =  $(F90SRCFILES:.F90=.f90)'                                    >> $MAKEFILE
926    echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE
927    
928  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
929    
930  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
931    
932  .SUFFIXES:  .SUFFIXES:
933  .SUFFIXES: .o .f .p .F .c  .SUFFIXES: .o .f .p .F .c .F90 .f90
934    
935  all: \$(EXECUTABLE)  all: \$(EXECUTABLE)
936  \$(EXECUTABLE): \$(OBJFILES)  \$(EXECUTABLE): \$(OBJFILES)
# Line 1027  all: \$(EXECUTABLE) Line 938  all: \$(EXECUTABLE)
938  depend:  depend:
939          @make links          @make links
940          \$(MAKEDEPEND) -o .f \$(DEFINES) \$(INCLUDES) \$(SRCFILES)          \$(MAKEDEPEND) -o .f \$(DEFINES) \$(INCLUDES) \$(SRCFILES)
941            ../../../tools/f90mkdepend >> \$(MAKEFILE)
942    
943  links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES)  links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES)
944    
945  small_f: \$(F77FILES)  small_f: \$(F77FILES) \$(F90FILES)
946    
947  output.txt: \$(EXECUTABLE)  output.txt: \$(EXECUTABLE)
948          @printf 'running ... '          @printf 'running ... '
949          @\$(EXECUTABLE) > \$@          @\$(EXECUTABLE) > \$@
950    
951  clean:  clean:
952          -rm -rf *.o *.f *.p ${RMFILES} work.{pc,pcl}          -rm -rf *.o *.f *.p *.f90 *.mod ${RMFILES} work.{pc,pcl}
953  Clean:  Clean:
954          @make clean          @make clean
955          @make cleanlinks          @make cleanlinks
# Line 1059  cleanlinks: Line 971  cleanlinks:
971          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
972  .f.o:  .f.o:
973          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<
974    .F90.f90:
975            \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@
976    .f90.o:
977            \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<
978  .c.o:  .c.o:
979          \$(CC) \$(CFLAGS) -c \$<          \$(CC) \$(CFLAGS) -c \$<
980    
# Line 1099  echo "  Adding makedepend marker" Line 1015  echo "  Adding makedepend marker"
1015  printf "\n\n# DO NOT DELETE\n" >> $MAKEFILE  printf "\n\n# DO NOT DELETE\n" >> $MAKEFILE
1016    
1017  printf "\n===  Done  ===\n"  printf "\n===  Done  ===\n"
1018    
1019    
1020    #  Write the "state" for future records
1021    if test "x$DUMPSTATE" != xf ; then
1022        echo -n "" > gm_state
1023        for i in $gm_state ; do
1024            t1="t2=\$$i"
1025            eval $t1
1026            echo "$i='$t2'" >> gm_state
1027        done
1028    fi

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.5

  ViewVC Help
Powered by ViewVC 1.1.22