/[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.109 by heimbach, Fri Oct 22 11:46:02 2004 UTC revision 1.135 by edhill, Thu Nov 17 20:06:08 2005 UTC
# Line 122  EOF Line 122  EOF
122        stop        stop
123        end        end
124  EOF  EOF
125      test -f Makefile  &&  mv -f Makefile Makefile.bak      test -f $MAKEFILE  &&  mv -f $MAKEFILE $MAKEFILE".tst"
126      cat <<EOF >> Makefile      cat <<EOF >> $MAKEFILE
127  .SUFFIXES:  .SUFFIXES:
128  .SUFFIXES: .$tfs .F  .SUFFIXES: .$tfs .F
129  .F.$tfs:  .F.$tfs:
# Line 148  EOF Line 148  EOF
148              return              return
149          fi          fi
150      fi      fi
151      rm -f genmake_hello.* Makefile      rm -f genmake_hello.* $MAKEFILE
152      test -f Makefile  &&  mv -f Makefile.bak Makefile      test -f $MAKEFILE".tst"  &&  mv -f $MAKEFILE".tst" $MAKEFILE
153    
154      #  If we make it here, use the extensions      #  If we make it here, use the extensions
155      FS=$tfs      FS=$tfs
# Line 181  look_for_makedepend()  { Line 181  look_for_makedepend()  {
181      if test "x${MAKEDEPEND}" = x ; then      if test "x${MAKEDEPEND}" = x ; then
182          which makedepend > /dev/null 2>&1          which makedepend > /dev/null 2>&1
183          RV0=$?          RV0=$?
184            test -f $MAKEFILE  &&  mv -f $MAKEFILE $MAKEFILE".tst"
185            #  echo 'MAKEFILE="'$MAKEFILE'"'
186            cat <<EOF >> $MAKEFILE
187    #   THIS IS A TEST MAKEFILE GENERATED BY "genmake2"
188    #
189    #   Some "makedepend" implementations will die if they cannot
190    #   find a Makefile -- so this file is here to gives them an
191    #   empty one to find and parse.
192    EOF
193          cat <<EOF >> genmake_tc.f          cat <<EOF >> genmake_tc.f
194        program test        program test
195        write(*,*) 'test'        write(*,*) 'test'
# Line 189  look_for_makedepend()  { Line 198  look_for_makedepend()  {
198  EOF  EOF
199          makedepend genmake_tc.f > /dev/null 2>&1          makedepend genmake_tc.f > /dev/null 2>&1
200          RV1=$?          RV1=$?
201            test -f $MAKEFILE  &&  rm -f $MAKEFILE
202            test -f $MAKEFILE".tst"  &&  mv -f $MAKEFILE".tst" $MAKEFILE
203          if test "x${RV0}${RV1}" = x00 ; then          if test "x${RV0}${RV1}" = x00 ; then
204              MAKEDEPEND=makedepend              MAKEDEPEND=makedepend
205          else          else
# Line 310  EOF Line 321  EOF
321    
322      #================================================================      #================================================================
323      #  look for possible FORTRAN compilers      #  look for possible FORTRAN compilers
324      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 gfortran"
325      p_FC=      p_FC=
326      for c in $tmp ; do      for c in $tmp ; do
327          rm -f ./hello.f ./hello          rm -f ./hello.f ./hello
# Line 516  Usage: "$0" [OPTIONS] Line 527  Usage: "$0" [OPTIONS]
527            *only* works if it is supported by the OPTFILE that            *only* works if it is supported by the OPTFILE that
528            is being used.            is being used.
529    
530        -ts | --ts
531              Produce timing information per timestep
532    
533      -mpi | --mpi      -mpi | --mpi
534            Include MPI header files and link to MPI libraries            Include MPI header files and link to MPI libraries
535      -mpi=PATH | --mpi=PATH      -mpi=PATH | --mpi=PATH
# Line 581  WARNING: Please contact <MITgcm-support@ Line 595  WARNING: Please contact <MITgcm-support@
595  EOF  EOF
596          return 1          return 1
597      fi      fi
598      cat > genmake_tcomp.f <<EOF      cat > genmake_tcomp.$FS <<EOF
599        subroutine tcall( string )        subroutine tcall( string )
600        character*(*) string        character*(*) string
601        call tsub( string )        call tsub( string )
602        end        end
603  EOF  EOF
604      $FC $FFLAGS $DEFINES -c genmake_tcomp.f >> genmake_warnings 2>&1      $FC $FFLAGS -c genmake_tcomp.$FS >> genmake_warnings 2>&1
605      RETVAL=$?      RETVAL=$?
606      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
607          FC_NAMEMANGLE=$default_nm          FC_NAMEMANGLE=$default_nm
# Line 653  void FC_NAMEMANGLE(cloc) ( double *curti Line 667  void FC_NAMEMANGLE(cloc) ( double *curti
667   *curtim = *curtim/1.E6;   *curtim = *curtim/1.E6;
668  }  }
669  EOF  EOF
670      make genmake_tc_1.o >> genmake_tc.log 2>&1      make genmake_tc_1.o >> genmake_warnings 2>&1
671      RET_C=$?      RET_C=$?
672      cat <<EOF > genmake_tc_2.f      cat <<EOF > genmake_tc_2.$FS
673        program hello        program hello
674        Real*8 wtime        REAL*8 wtime
675        external cloc        external cloc
676        call cloc(wtime)        call cloc(wtime)
677        print *," HELLO WORLD", wtime        print *," HELLO WORLD", wtime
678        end program hello        end
679  EOF  EOF
680      $FC $FFLAGS -o genmake_tc genmake_tc_2.f genmake_tc_1.o >> genmake_tc.log 2>&1      $FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o >> genmake_warnings 2>&1
681      RET_F=$?      RET_F=$?
682      test -x ./genmake_tc  &&  ./genmake_tc >> genmake_tc.log 2>&1      test -x ./genmake_tc  &&  ./genmake_tc >> genmake_warnings 2>&1
683      RETVAL=$?      RETVAL=$?
684      if test "x$RETVAL" = x0 ; then      if test "x$RETVAL" = x0 ; then
685          HAVE_CLOC=t          HAVE_CLOC=t
# Line 675  EOF Line 689  EOF
689  }  }
690    
691    
692    check_HAVE_SETRLSTK()  {
693        get_fortran_c_namemangling
694        cat <<EOF > genmake_tc_1.c
695    $FC_NAMEMANGLE
696    #include <sys/time.h>
697    #include <sys/resource.h>
698    #include <unistd.h>
699    void FC_NAMEMANGLE(setrlstk) ()
700    {
701        struct rlimit rls;
702        rls.rlim_cur = RLIM_INFINITY;
703        rls.rlim_max = RLIM_INFINITY;
704        setrlimit(RLIMIT_STACK, &rls);
705        return;
706    }
707    EOF
708        make genmake_tc_1.o >> genmake_warnings 2>&1
709        RET_C=$?
710        cat <<EOF > genmake_tc_2.$FS
711          program hello
712          external setrlstk
713          call setrlstk()
714          end
715    EOF
716        echo >> genmake_warnings
717        echo "running: check_HAVE_SETRLSTK()" >> genmake_warnings
718        cat genmake_tc_2.$FS >> genmake_warnings
719        COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"
720        echo $COMM >> genmake_warnings
721        $COMM >> genmake_warnings 2>&1
722        RETVAL=$?
723        if test "x$RETVAL" = x0 ; then
724            HAVE_SETRLSTK=t
725            DEFINES="$DEFINES -DHAVE_SETRLSTK"
726        fi
727        rm -f genmake_tc*
728    }
729    
730    
731  check_HAVE_STAT()  {  check_HAVE_STAT()  {
732      get_fortran_c_namemangling      get_fortran_c_namemangling
733      cat <<EOF > genmake_tc_1.c      cat <<EOF > genmake_tc_1.c
# Line 698  void FC_NAMEMANGLE(tfsize) ( int *nbyte Line 751  void FC_NAMEMANGLE(tfsize) ( int *nbyte
751  EOF  EOF
752      make genmake_tc_1.o >> genmake_tc.log 2>&1      make genmake_tc_1.o >> genmake_tc.log 2>&1
753      RET_C=$?      RET_C=$?
754      cat <<EOF > genmake_tc_2.f      cat <<EOF > genmake_tc_2.$FS
755        program hello        program hello
756        integer nbyte        integer nbyte
757        call tfsize(nbyte)        call tfsize(nbyte)
758        print *," HELLO WORLD", nbyte        print *," HELLO WORLD", nbyte
759        end program hello        end
760  EOF  EOF
761      $FC $FFLAGS -o genmake_tc genmake_tc_2.f genmake_tc_1.o >> genmake_tc.log 2>&1      echo >> genmake_warnings
762      RET_F=$?      echo "running: check_HAVE_STAT()" >> genmake_warnings
763      test -x ./genmake_tc  &&  ./genmake_tc >> genmake_tc.log 2>&1      cat genmake_tc_2.$FS >> genmake_warnings
764        COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"
765        echo $COMM >> genmake_warnings
766        $COMM >> genmake_tc.log 2>&1
767      RETVAL=$?      RETVAL=$?
768      if test "x$RETVAL" = x0 ; then      if test "x$RETVAL" = x0 ; then
769          HAVE_STAT=t          HAVE_STAT=t
# Line 718  EOF Line 774  EOF
774    
775    
776  check_netcdf_libs()  {  check_netcdf_libs()  {
777      echo "" > genmake_tnc.log      if test ! "x$SKIP_NETCDF_CHECK" = x ; then
778      cat <<EOF > genmake_tnc.for          return
779        fi
780        echo >> genmake_warnings
781        echo "running: check_netcdf_libs()" >> genmake_warnings
782        cat <<EOF > genmake_tnc.F
783        program fgennc        program fgennc
784  #include "netcdf.inc"  #include "netcdf.inc"
785    EOF
786        if test ! "x$MPI" = x ; then
787            echo '#include "mpif.h"' >> genmake_tnc.F
788        fi
789        cat <<EOF >> genmake_tnc.F
790        integer iret, ncid, xid        integer iret, ncid, xid
791        iret = nf_create('genmake_tnc.nc', NF_CLOBBER, ncid)        iret = nf_create('genmake_tnc.nc', NF_CLOBBER, ncid)
792        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
# Line 731  check_netcdf_libs()  { Line 796  check_netcdf_libs()  {
796        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
797        end        end
798  EOF  EOF
799      #echo "$CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f"      echo "===  genmake_tnc.F  ===" > genmake_tnc.log
800      #echo "$FC $FFLAGS $FOPTIM -c genmake_tnc.f"      cat genmake_tnc.F >> genmake_tnc.log
801      #echo "$LINK -o genmake_tnc.o $LIBS"      echo "===  genmake_tnc.F  ===" >> genmake_tnc.log
802      $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f 2>/dev/null  \      RET_CPP=f
803          &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.f >> genmake_tnc.log 2>&1  \      COMM="$CPP $DEFINES $INCLUDES genmake_tnc.F"
804        echo "$COMM" >> genmake_tnc.log
805        $COMM > genmake_tnc.$FS 2>/dev/null  &&  RET_CPP=t
806        if test "x$RET_CPP" = xf ; then
807            echo "  WARNING: CPP failed to pre-process the netcdf test." \
808                >> genmake_tnc.log
809            echo "    Please check that \$INCLUDES is properly set." \
810                >> genmake_tnc.log
811        fi
812        echo "$FC $FFLAGS $FOPTIM -c genmake_tnc.$FS  \ " >> genmake_tnc.log
813        echo "  &&  $LINK -o genmake_tnc.o $LIBS" >> genmake_tnc.log
814        $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
815          &&  $LINK -o genmake_tnc genmake_tnc.o $LIBS >> genmake_tnc.log 2>&1          &&  $LINK -o genmake_tnc genmake_tnc.o $LIBS >> genmake_tnc.log 2>&1
816      RET_COMPILE=$?      RET_COMPILE=$?
817        cat genmake_tnc.log >> genmake_warnings
818    
819      #EH3  Remove test program execution for machines that either disallow      #EH3  Remove test program execution for machines that either disallow
820      #EH3  execution or cannot support it (eg. cross-compilers)      #EH3  execution or cannot support it (eg. cross-compilers)
# Line 750  EOF Line 827  EOF
827          HAVE_NETCDF=t          HAVE_NETCDF=t
828      else      else
829          # try again with "-lnetcdf" added to the libs          # try again with "-lnetcdf" added to the libs
830          $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f 2>/dev/null  \          echo "try again with added '-lnetcdf'" > genmake_tnc.log
831              &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.f >> genmake_tnc.log 2>&1  \          echo "$CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS \ " >> genmake_tnc.log
832            echo " &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS \ " >> genmake_tnc.log
833            echo " &&  $LINK -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf" >> genmake_tnc.log
834            $CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS 2>/dev/null  \
835                &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
836              &&  $LINK -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf >> genmake_tnc.log 2>&1              &&  $LINK -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf >> genmake_tnc.log 2>&1
837          RET_COMPILE=$?          RET_COMPILE=$?
838            cat genmake_tnc.log >> genmake_warnings
839          if test "x$RET_COMPILE" = x0 ; then          if test "x$RET_COMPILE" = x0 ; then
840              LIBS="$LIBS -lnetcdf"              LIBS="$LIBS -lnetcdf"
841              HAVE_NETCDF=t              HAVE_NETCDF=t
         else  
             cat genmake_tnc.log >> genmake_warnings  
842          fi          fi
843      fi      fi
844      rm -f genmake_tnc*      rm -f genmake_tnc*
# Line 777  PLATFORM= Line 857  PLATFORM=
857  LN=  LN=
858  S64=  S64=
859  KPP=  KPP=
860  FC=  #FC=
861  #CC=gcc  #CC=gcc
862  CPP=  #CPP=
863  LINK=  LINK=
864  DEFINES=  DEFINES=
865  PACKAGES=  PACKAGES=
866  ENABLE=  ENABLE=
867  DISABLE=  DISABLE=
868  MAKEFILE=  # MAKEFILE=
869  #MAKEDEPEND=  # MAKEDEPEND=
870  PDEPEND=  PDEPEND=
871  DUMPSTATE=t  DUMPSTATE=t
872  PDEFAULT=  PDEFAULT=
873  OPTFILE=  OPTFILE=
874  INCLUDES="-I."  INCLUDES="-I. $INCLUDES"
875  FFLAGS=  FFLAGS=
876  FOPTIM=  FOPTIM=
877  CFLAGS=  CFLAGS=
# Line 804  NOOPTFILES= Line 884  NOOPTFILES=
884  NOOPTFLAGS=  NOOPTFLAGS=
885  MPI=  MPI=
886  MPIPATH=  MPIPATH=
887    TS=
888    HAVE_TEST_L=
889    
890  # DEFINES checked by test compilation  # DEFINES checked by test compilation or command-line
891  HAVE_SYSTEM=  HAVE_SYSTEM=
892  HAVE_FDATE=  HAVE_FDATE=
893  FC_NAMEMANGLE=  FC_NAMEMANGLE=
894  HAVE_CLOC=  HAVE_CLOC=
895    HAVE_SETRLSTK=
896  HAVE_STAT=  HAVE_STAT=
897  HAVE_NETCDF=  HAVE_NETCDF=
898  HAVE_ETIME=  HAVE_ETIME=
899    IGNORE_TIME=
900    
901  MODS=  MODS=
902  TOOLSDIR=  TOOLSDIR=
# Line 823  STANDARDDIRS="USE_THE_DEFAULT" Line 907  STANDARDDIRS="USE_THE_DEFAULT"
907  G2ARGS=  G2ARGS=
908  BASH=  BASH=
909  PWD=`pwd`  PWD=`pwd`
910  MAKE=make  test "x$MAKE" = x  &&  MAKE=make
911  AWK=awk  test "x$AWK" = x   &&  AWK=awk
912  THISHOST=`hostname`  THISHOST=`hostname`
913  THISCWD=`pwd`  THISCWD=`pwd`
914  THISDATE=`date`  THISDATE=`date`
# Line 858  TAMC_EXTRA= Line 942  TAMC_EXTRA=
942    
943  #  The following state can be set directly by command-line switches  #  The following state can be set directly by command-line switches
944  gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE"  gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE"
945  gm_s2="FC CPP IEEE MPI JAM DUMPSTATE STANDARDDIRS"  gm_s2="FC CPP IEEE TS MPI JAM DUMPSTATE STANDARDDIRS"
946    
947  #  The following state is not directly set by command-line switches  #  The following state is not directly set by command-line switches
948  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 1038  for ac_option in "$@" ; do Line 1122  for ac_option in "$@" ; do
1122          -noieee | --noieee)          -noieee | --noieee)
1123              IEEE= ;;              IEEE= ;;
1124    
1125            -ts | --ts)
1126                TS=true ;;
1127    
1128          -mpi | --mpi)          -mpi | --mpi)
1129              MPI=true ;;              MPI=true ;;
1130          -mpi=* | --mpi=*)          -mpi=* | --mpi=*)
# Line 1061  for ac_option in "$@" ; do Line 1148  for ac_option in "$@" ; do
1148              ac_prev=TAMC_EXTRA ;;              ac_prev=TAMC_EXTRA ;;
1149          -tamc_extra=* | --tamc_extra=*)          -tamc_extra=* | --tamc_extra=*)
1150              TAMC_EXTRA=$ac_optarg ;;              TAMC_EXTRA=$ac_optarg ;;
1151            
1152            -ignoretime | -ignore_time | --ignoretime | --ignore_time)
1153                IGNORE_TIME="-DIGNORE_TIME" ;;
1154    
1155          -*)          -*)
1156              echo "Error: unrecognized option: "$ac_option              echo "Error: unrecognized option: "$ac_option
# Line 1076  for ac_option in "$@" ; do Line 1166  for ac_option in "$@" ; do
1166            
1167  done  done
1168    
1169    
1170  if test -f ./.genmakerc ; then  if test -f ./.genmakerc ; then
1171      echo      echo
1172      echo "WARNING: genmake2 has detected a copy of the old-style \"./.genmakerc\""      echo "WARNING: genmake2 has detected a copy of the old-style \"./.genmakerc\""
# Line 1090  fi Line 1181  fi
1181    
1182  #  Find the MITgcm ${ROOTDIR}  #  Find the MITgcm ${ROOTDIR}
1183  if test "x${ROOTDIR}" = x ; then  if test "x${ROOTDIR}" = x ; then
1184      tmp=`echo $PWD | sed -e 's/\// /g' | awk '{print $NR}'`      tmp=`echo $PWD | sed -e 's/\// /g' | $AWK '{print $NR}'`
1185      if test "x$tmp" = "xbin" -a -d ../model -a -d ../eesup -a -d ../pkg ; then      if test "x$tmp" = "xbin" -a -d ../model -a -d ../eesup -a -d ../pkg ; then
1186          ROOTDIR=".."          ROOTDIR=".."
1187      else      else
# Line 1117  fi Line 1208  fi
1208    
1209  #  Find the MITgcm ${THISVER}  #  Find the MITgcm ${THISVER}
1210  if test -f "${ROOTDIR}/doc/tag-index" ; then  if test -f "${ROOTDIR}/doc/tag-index" ; then
1211      THISVER=`grep checkpoint ${ROOTDIR}/doc/tag-index | head -1`      THISVER=`grep '^checkpoint' ${ROOTDIR}/doc/tag-index | head -1`
1212    fi
1213    
1214    if test "x$MAKEFILE" = x ; then
1215        MAKEFILE="Makefile"
1216  fi  fi
1217    
1218  echo "  getting OPTFILE information:  "  echo "  getting OPTFILE information:  "
# Line 1149  if test "x$OPTFILE" != xNONE ; then Line 1244  if test "x$OPTFILE" != xNONE ; then
1244      fi      fi
1245  fi  fi
1246    
 #  Check for broken systems that cannot correctly distinguish *.F and *.f files  
 # check_for_broken_Ff  
   
1247  echo "  getting AD_OPTFILE information:  "  echo "  getting AD_OPTFILE information:  "
1248  if test "x${AD_OPTFILE}" = x ; then  if test "x${AD_OPTFILE}" = x ; then
1249      if test "x$MITGCM_AD_OF" = x ; then      if test "x$MITGCM_AD_OF" = x ; then
# Line 1179  if test "x${AD_OPTFILE}" != xNONE ; then Line 1271  if test "x${AD_OPTFILE}" != xNONE ; then
1271      fi      fi
1272  fi  fi
1273    
1274    #====================================================================
1275    #  Set default values if not set by the optfile
1276    #
1277  #  Check that FC, CC, LINK, CPP, S64, LN, and MAKE are defined.  If not,  #  Check that FC, CC, LINK, CPP, S64, LN, and MAKE are defined.  If not,
1278  #  either set defaults or complain and abort!  #  either set defaults or complain and abort!
1279  if test ! "x$BASH" = x ; then  if test ! "x$BASH" = x ; then
# Line 1255  Error: The command "ln -s" failed -- ple Line 1350  Error: The command "ln -s" failed -- ple
1350  EOF  EOF
1351      exit 1      exit 1
1352  fi  fi
1353    test -L genmake_tlink > /dev/null 2>&1
1354    RETVAL=$?
1355    if test "x$RETVAL" = x0 ; then
1356        HAVE_TEST_L=t
1357    fi
1358  rm -f genmake_test_ln genmake_tlink  rm -f genmake_test_ln genmake_tlink
1359    
1360  #  Check for broken *.F/*.f handling and fix if possible  #  Check for broken *.F/*.f handling and fix if possible
# Line 1265  if test ! "x$MPI" = x ; then Line 1365  if test ! "x$MPI" = x ; then
1365        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"
1366  fi  fi
1367    
1368    if test ! "x$TS" = x ; then
1369          echo "  Turning on timing per timestep"
1370          DEFINES="$DEFINES -DTIME_PER_TIMESTEP"
1371    fi
1372    
1373  printf "\n===  Checking system libraries  ===\n"  printf "\n===  Checking system libraries  ===\n"
1374  printf "  Do we have the system() command using $FC...  "  printf "  Do we have the system() command using $FC...  "
1375  cat > genmake_tcomp.f <<EOF  cat > genmake_tcomp.$FS <<EOF
1376        program hello        program hello
1377        call system('echo hi')        call system('echo hi')
1378        end        end
1379  EOF  EOF
1380  $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.f > genmake_tcomp.log 2>&1  $FC $FFLAGS -o genmake_tcomp genmake_tcomp.$FS > genmake_tcomp.log 2>&1
1381  RETVAL=$?  RETVAL=$?
1382  if test "x$RETVAL" = x0 ; then  if test "x$RETVAL" = x0 ; then
1383      HAVE_SYSTEM=t      HAVE_SYSTEM=t
# Line 1285  fi Line 1390  fi
1390  rm -f genmake_tcomp*  rm -f genmake_tcomp*
1391    
1392  printf "  Do we have the fdate() command using $FC...  "  printf "  Do we have the fdate() command using $FC...  "
1393  cat > genmake_tcomp.f <<EOF  cat > genmake_tcomp.$FS <<EOF
1394        program hello        program hello
1395        CHARACTER(128) string        CHARACTER*(128) string
1396        string = ' '        string = ' '
1397        call fdate( string )        call fdate( string )
1398        print *, string        print *, string
1399        end        end
1400  EOF  EOF
1401  $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.f > genmake_tcomp.log 2>&1  $FC $FFLAGS -o genmake_tcomp genmake_tcomp.$FS > genmake_tcomp.log 2>&1
1402  RETVAL=$?  RETVAL=$?
1403  if test "x$RETVAL" = x0 ; then  if test "x$RETVAL" = x0 ; then
1404      HAVE_FDATE=t      HAVE_FDATE=t
# Line 1306  fi Line 1411  fi
1411  rm -f genmake_tcomp*  rm -f genmake_tcomp*
1412    
1413  printf "  Do we have the etime() command using $FC...  "  printf "  Do we have the etime() command using $FC...  "
1414  cat > genmake_tcomp.f <<EOF  cat > genmake_tcomp.$FS <<EOF
1415        program hello        program hello
1416        REAL*4 ACTUAL, TARRAY(2)        REAL*4 ACTUAL, TARRAY(2)
1417        EXTERNAL ETIME        EXTERNAL ETIME
# Line 1315  cat > genmake_tcomp.f <<EOF Line 1420  cat > genmake_tcomp.f <<EOF
1420        print *, tarray        print *, tarray
1421        end        end
1422  EOF  EOF
1423  $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.f > genmake_tcomp.log 2>&1  $FC $FFLAGS -o genmake_tcomp genmake_tcomp.$FS > genmake_tcomp.log 2>&1
1424  RETVAL=$?  RETVAL=$?
1425  if test "x$RETVAL" = x0 ; then  if test "x$RETVAL" = x0 ; then
1426      HAVE_ETIME=t      HAVE_ETIME=t
# Line 1336  else Line 1441  else
1441  fi  fi
1442  rm -f genmake_t*  rm -f genmake_t*
1443    
1444    printf "  Can we unlimit the stack size using $FC...  "
1445    check_HAVE_SETRLSTK
1446    if test "x$HAVE_SETRLSTK" != x ; then
1447        echo "yes"
1448    else
1449        echo "no"
1450    fi
1451    rm -f genmake_t*
1452    
1453  printf "  Can we use stat() through C calls...  "  printf "  Can we use stat() through C calls...  "
1454  check_HAVE_STAT  check_HAVE_STAT
1455  if test "x$HAVE_STAT" != x ; then  if test "x$HAVE_STAT" != x ; then
# Line 1352  if test "x$HAVE_NETCDF" != x ; then Line 1466  if test "x$HAVE_NETCDF" != x ; then
1466  else  else
1467      echo "no"      echo "no"
1468  fi  fi
1469    DEFINES="$DEFINES $IGNORE_TIME"
1470    
1471  printf "\n===  Setting defaults  ===\n"  printf "\n===  Setting defaults  ===\n"
1472  printf "  Adding MODS directories:  "  printf "  Adding MODS directories:  "
# Line 1369  for d in $MODS ; do Line 1483  for d in $MODS ; do
1483  done  done
1484  echo  echo
1485    
 if test "x$MAKEFILE" = x ; then  
     MAKEFILE="Makefile"  
 fi  
1486  if test "x${PLATFORM}" = x ; then  if test "x${PLATFORM}" = x ; then
1487      PLATFORM=$p_PLATFORM      PLATFORM=$p_PLATFORM
1488  fi  fi
1489    
1490  if test "x${EXEDIR}" = x ; then  if test "x${EXEDIR}" = x ; then
1491      tmp=`echo $PWD | sed -e 's/\// /g' | awk '{print $NR}'`      tmp=`echo $PWD | sed -e 's/\// /g' | $AWK '{print $NR}'`
1492      if test "x$tmp" = "xbin" -a -d ../exe -a $ROOTDIR = .. ; then      if test "x$tmp" = "xbin" -a -d ../exe -a $ROOTDIR = .. ; then
1493          EXEDIR=../exe          EXEDIR=../exe
1494      else      else
# Line 1588  EOF Line 1699  EOF
1699          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`
1700          DISABLE="$DISABLE mnc"          DISABLE="$DISABLE mnc"
1701      else      else
1702          ( cd $ROOTDIR"/pkg/mnc" && $MAKE templates ) > make_mnc.errors 2>&1          ( cd $ROOTDIR"/pkg/mnc" && $MAKE testclean && $MAKE templates ) > make_mnc.errors 2>&1
1703          RETVAL=$?          RETVAL=$?
1704          if test "x${RETVAL}" = x0 ; then          if test "x${RETVAL}" = x0 ; then
1705              rm -f make_mnc.errors              rm -f make_mnc.errors
# Line 1703  for n in $names ; do Line 1814  for n in $names ; do
1814              fi              fi
1815          done          done
1816          if test "x$has_pack" = xf ; then          if test "x$has_pack" = xf ; then
1817              undef=`echo "ALLOW_$n" | $AWK '{print toupper($0)}'`              undef=`echo "ALLOW_$n" | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
1818              DISABLED_PACKAGES="$DISABLED_PACKAGES -U$undef"              DISABLED_PACKAGES="$DISABLED_PACKAGES -U$undef"
1819          fi          fi
1820      fi      fi
1821  done  done
1822  ENABLED_PACKAGES=  ENABLED_PACKAGES=
1823  for i in $PACKAGES ; do  for i in $PACKAGES ; do
1824      def=`echo "ALLOW_$i" | $AWK '{print toupper($0)}'`      def=`echo "ALLOW_$i" | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
1825      ENABLED_PACKAGES="$ENABLED_PACKAGES -D$def"      ENABLED_PACKAGES="$ENABLED_PACKAGES -D$def"
1826  #eh3 DEFINES="$DEFINES -D$def"  #eh3 DEFINES="$DEFINES -D$def"
1827    
# Line 1794  for i in $SOURCEDIRS ; do Line 1905  for i in $SOURCEDIRS ; do
1905          cat $i/$j >> ad_files          cat $i/$j >> ad_files
1906      done      done
1907  done  done
1908    if test ! "x"$FS = "x.f" ; then
1909        cat ad_files | sed -e "s/\.f/.$FS/g" > ad_files_f
1910        mv -f ad_files_f ad_files
1911    fi
1912    
1913  echo  echo
1914  echo "===  Creating the Makefile  ==="  echo "===  Creating the Makefile  ==="
# Line 1823  for d in $alldirs ; do Line 1937  for d in $alldirs ; do
1937      for sf in $sfiles ; do      for sf in $sfiles ; do
1938          if test ! -r ".links.tmp/$sf" ; then          if test ! -r ".links.tmp/$sf" ; then
1939              if test -f "$d/$sf" ; then              if test -f "$d/$sf" ; then
1940                    ignore_f=f
1941                  case $d/$sf in                  case $d/$sf in
1942                    ./$PACKAGES_DOT_H)                    ./$PACKAGES_DOT_H)
1943                          ;;                          ;;
# Line 1833  for d in $alldirs ; do Line 1948  for d in $alldirs ; do
1948                    ./BUILD_INFO.h)                    ./BUILD_INFO.h)
1949                          ;;                          ;;
1950                    *)                    *)
1951                          touch .links.tmp/$sf                          #  For the local directory *ONLY*,
1952                          deplist="$deplist $sf"                          #  ignore all soft-links
1953                            if test "x$HAVE_TEST_L" = xt -a "x$d" = x. -a -L $sf ; then
1954                                ignore_f=t
1955                            else
1956                                touch .links.tmp/$sf
1957                                deplist="$deplist $sf"
1958                            fi
1959                          ;;                          ;;
1960                  esac                  esac
1961                  extn=`echo $sf | $AWK -F '.' '{print $NF}'`                  if test "x$ignore_f" = xf ; then
1962                  case $extn in                      extn=`echo $sf | $AWK -F. '{print $NF}'`
1963                      F)                      case $extn in
1964                          echo    " \\"  >> srclist.inc                          F)
1965                          printf " $sf" >> srclist.inc                              echo    " \\"  >> srclist.inc
1966                          ;;                              printf " $sf" >> srclist.inc
1967                      F90)                              ;;
1968                          echo    " \\"  >> f90srclist.inc                          F90)
1969                          printf " $sf" >> f90srclist.inc                              echo    " \\"  >> f90srclist.inc
1970                          ;;                              printf " $sf" >> f90srclist.inc
1971                      c)                              ;;
1972                          echo    " \\"  >> csrclist.inc                          c)
1973                          printf " $sf" >> csrclist.inc                              echo    " \\"  >> csrclist.inc
1974                          ;;                              printf " $sf" >> csrclist.inc
1975                      h)                              ;;
1976                          echo    " \\"  >> hlist.inc                          h)
1977                          printf " $sf" >> hlist.inc                              echo    " \\"  >> hlist.inc
1978                          ;;                              printf " $sf" >> hlist.inc
1979                      flow)                              ;;
1980                          echo    " \\"  >> ad_flow_files.inc                          flow)
1981                          printf " $sf" >> ad_flow_files.inc                              echo    " \\"  >> ad_flow_files.inc
1982                          ;;                              printf " $sf" >> ad_flow_files.inc
1983                  esac                              ;;
1984                        esac
1985                    fi
1986              fi              fi
1987          fi          fi
1988      done      done
# Line 1990  cat hlist.inc         >> $MAKEFILE Line 2113  cat hlist.inc         >> $MAKEFILE
2113  cat ad_flow_files.inc >> $MAKEFILE  cat ad_flow_files.inc >> $MAKEFILE
2114  echo >> $MAKEFILE  echo >> $MAKEFILE
2115  echo 'F77FILES =  $(SRCFILES:.F=.'$FS')'      >> $MAKEFILE  echo 'F77FILES =  $(SRCFILES:.F=.'$FS')'      >> $MAKEFILE
2116  echo 'F90FILES =  $(F90SRCFILES:.F=.'$FS90')' >> $MAKEFILE  echo 'F90FILES =  $(F90SRCFILES:.F90=.'$FS90')' >> $MAKEFILE
2117  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE  echo 'OBJFILES =  $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE
2118  echo >> $MAKEFILE  echo >> $MAKEFILE
2119  echo '.SUFFIXES:' >> $MAKEFILE  echo '.SUFFIXES:' >> $MAKEFILE
# Line 2010  depend: Line 2133  depend:
2133          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)
2134          -rm -f makedepend.out          -rm -f makedepend.out
2135    
2136    lib: libmitgcmuv.a
2137    
2138    libmitgcmuv.a: \$(OBJFILES)
2139            ar rcv libmitgcmuv.a \$(OBJFILES)
2140    
2141  links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(SPECIAL_FILES)  links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(SPECIAL_FILES)
2142    
2143  small_f: \$(F77FILES) \$(F90FILES)  small_f: \$(F77FILES) \$(F90FILES)
# Line 2119  cat >>$MAKEFILE <<EOF Line 2247  cat >>$MAKEFILE <<EOF
2247    
2248  # ... AD ...  # ... AD ...
2249  adall: ad_taf  adall: ad_taf
2250  adtaf: ad_taf_output.f  adtaf: ad_taf_output.$FS
2251  adtamc: ad_tamc_output.f  adtamc: ad_tamc_output.$FS
2252    
2253  ad_input_code.f: \$(AD_FILES) \$(HEADERFILES)  ad_input_code.$FS: \$(AD_FILES) \$(HEADERFILES)
2254          @$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          @$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
2255          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
2256          -rm -f ad_config.template          -rm -f ad_config.template
2257          @make \$(F77FILES)          @make \$(F77FILES)
2258          @make \$(AD_FLOW_FILES)          @make \$(AD_FLOW_FILES)
2259          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ad_input_code.f          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ad_input_code.$FS
2260    
2261  ad_taf_output.f: ad_input_code.f  ad_taf_output.$FS: ad_input_code.$FS
2262          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.f          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
2263          cat ad_input_code_ad.f | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.f          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.$FS
2264    
2265  adtafonly:  adtafonly:
2266          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.f          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
2267          cat ad_input_code_ad.f | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.f          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.$FS
2268    
2269  ad_taf: ad_taf_output.o \$(OBJFILES)  ad_taf: ad_taf_output.o \$(OBJFILES)
2270          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)
2271    
2272  ad_tamc_output.f: ad_input_code.f  ad_tamc_output.$FS: ad_input_code.$FS
2273          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.f          \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS
2274          cat ad_input_code_ad.f | sed -f \$(TOOLSDIR)/adjoint_sed > ad_tamc_output.f          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_tamc_output.$FS
2275    
2276  ad_tamc: ad_tamc_output.o \$(OBJFILES)  ad_tamc: ad_tamc_output.o \$(OBJFILES)
2277          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)
# Line 2156  adtrick: Line 2284  adtrick:
2284    
2285  # ... FTL ...  # ... FTL ...
2286  ftlall: ftl_taf  ftlall: ftl_taf
2287  ftltaf: ftl_taf_output.f  ftltaf: ftl_taf_output.$FS
2288  ftltamc: ftl_tamc_output.f  ftltamc: ftl_tamc_output.$FS
2289    
2290  ftl_input_code.f: \$(AD_FILES) \$(HEADERFILES)  ftl_input_code.$FS: \$(AD_FILES) \$(HEADERFILES)
2291          @$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          @$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
2292          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
2293          -rm -f ftl_config.template          -rm -f ftl_config.template
2294          @make \$(F77FILES)          @make \$(F77FILES)
2295          @make \$(AD_FLOW_FILES)          @make \$(AD_FLOW_FILES)
2296          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ftl_input_code.f          cat \$(AD_FLOW_FILES) \$(AD_FILES) > ftl_input_code.$FS
2297    
2298  ftl_taf_output.f: ftl_input_code.f  ftl_taf_output.$FS: ftl_input_code.$FS
2299          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.f          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
2300          cat ftl_input_code_ftl.f | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.f          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS
2301    
2302  ftltafonly:  ftltafonly:
2303          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.f          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
2304          cat ftl_input_code_ftl.f | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.f          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS
2305    
2306  ftl_taf: ftl_taf_output.o \$(OBJFILES)  ftl_taf: ftl_taf_output.o \$(OBJFILES)
2307          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)
2308    
2309  ftl_tamc_output.f: ftl_input_code.f  ftl_tamc_output.$FS: ftl_input_code.$FS
2310          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.f          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS
2311          cat ftl_input_code_ftl.f | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_tamc_output.f          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_tamc_output.$FS
2312    
2313  ftl_tamc: ftl_tamc_output.o \$(OBJFILES)  ftl_tamc: ftl_tamc_output.o \$(OBJFILES)
2314          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_tamc_output.o \$(LIBS)          \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_tamc_output.o \$(LIBS)
2315    
2316    
2317  # ... SVD ...  # ... SVD ...
2318  svdtaf: ad_taf_output.f ftl_taf_output.f  svdtaf: ad_taf_output.$FS ftl_taf_output.$FS
2319          @echo "--->>> Only ran TAF to generate SVD code!    <<<---"          @echo "--->>> Only ran TAF to generate SVD code!    <<<---"
2320          @echo "--->>> Do make svdall afterwards to compile. <<<---"          @echo "--->>> Do make svdall afterwards to compile. <<<---"
2321  svdall: svd_touch svd_taf  svdall: svd_touch svd_taf
# Line 2203  svd_touch: Line 2331  svd_touch:
2331          @echo "--->>> Only COMPILE svd code! <<<---"          @echo "--->>> Only COMPILE svd code! <<<---"
2332          @echo "--->>> Assumes you previously <<<---"          @echo "--->>> Assumes you previously <<<---"
2333          @echo "--->>> did make svdtaf        <<<---"          @echo "--->>> did make svdtaf        <<<---"
2334          touch ad_taf_output.f ftl_taf_output.f          touch ad_taf_output.$FS ftl_taf_output.$FS
2335          \$(FC) \$(FFLAGS) \$(FOPTIM) -c ad_taf_output.f          \$(FC) \$(FFLAGS) \$(FOPTIM) -c ad_taf_output.$FS
2336          \$(FC) \$(FFLAGS) \$(FOPTIM) -c ftl_taf_output.f          \$(FC) \$(FFLAGS) \$(FOPTIM) -c ftl_taf_output.$FS
2337          @$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          @$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
2338          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
2339          -rm -f ftl_config.template          -rm -f ftl_config.template

Legend:
Removed from v.1.109  
changed lines
  Added in v.1.135

  ViewVC Help
Powered by ViewVC 1.1.22