/[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.125 by edhill, Sun Jul 10 00:15:49 2005 UTC revision 1.135 by edhill, Thu Nov 17 20:06:08 2005 UTC
# Line 527  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 598  EOF Line 601  EOF
601        call tsub( string )        call tsub( string )
602        end        end
603  EOF  EOF
604      $FC $FFLAGS $DEFINES -c genmake_tcomp.$FS >> 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 668  EOF Line 671  EOF
671      RET_C=$?      RET_C=$?
672      cat <<EOF > genmake_tc_2.$FS      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.$FS genmake_tc_1.o >> genmake_warnings 2>&1      $FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o >> genmake_warnings 2>&1
681      RET_F=$?      RET_F=$?
# Line 686  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 714  EOF Line 756  EOF
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.$FS 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 732  check_netcdf_libs()  { Line 777  check_netcdf_libs()  {
777      if test ! "x$SKIP_NETCDF_CHECK" = x ; then      if test ! "x$SKIP_NETCDF_CHECK" = x ; then
778          return          return
779      fi      fi
780      echo "" > genmake_tnc.log      echo >> genmake_warnings
781        echo "running: check_netcdf_libs()" >> genmake_warnings
782      cat <<EOF > genmake_tnc.F      cat <<EOF > genmake_tnc.F
783        program fgennc        program fgennc
784  #include "netcdf.inc"  #include "netcdf.inc"
# Line 750  EOF Line 796  EOF
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 "Executing:" > genmake_tnc.log      echo "===  genmake_tnc.F  ===" > genmake_tnc.log
800      echo "  $CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS" \      cat genmake_tnc.F >> genmake_tnc.log
801          > genmake_tnc.log      echo "===  genmake_tnc.F  ===" >> genmake_tnc.log
802      RET_CPP=f      RET_CPP=f
803      $CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS 2>/dev/null  \      COMM="$CPP $DEFINES $INCLUDES genmake_tnc.F"
804          &&  RET_CPP=t      echo "$COMM" >> genmake_tnc.log
805        $COMM > genmake_tnc.$FS 2>/dev/null  &&  RET_CPP=t
806      if test "x$RET_CPP" = xf ; then      if test "x$RET_CPP" = xf ; then
807          echo "  WARNING: CPP failed to pre-process the netcdf test." \          echo "  WARNING: CPP failed to pre-process the netcdf test." \
808              > genmake_tnc.log              >> genmake_tnc.log
809          echo "    Please check that \$INCLUDES is properly set." \          echo "    Please check that \$INCLUDES is properly set." \
810              > genmake_tnc.log              >> genmake_tnc.log
811      fi      fi
812      echo "Executing:" > genmake_tnc.log      echo "$FC $FFLAGS $FOPTIM -c genmake_tnc.$FS  \ " >> genmake_tnc.log
813      echo "  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS" > genmake_tnc.log      echo "  &&  $LINK -o genmake_tnc.o $LIBS" >> genmake_tnc.log
     echo "  $LINK -o genmake_tnc.o $LIBS" > genmake_tnc.log  
814      $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \      $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 780  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            echo "try again with added '-lnetcdf'" > genmake_tnc.log
831            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  \          $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  \              &&  $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 834  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 or command-line  # 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=
# Line 889  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 1069  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 1294  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 1304  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.$FS <<EOF  cat > genmake_tcomp.$FS <<EOF
# Line 1311  cat > genmake_tcomp.$FS <<EOF Line 1377  cat > genmake_tcomp.$FS <<EOF
1377        call system('echo hi')        call system('echo hi')
1378        end        end
1379  EOF  EOF
1380  $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.$FS > 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 1326  rm -f genmake_tcomp* Line 1392  rm -f genmake_tcomp*
1392  printf "  Do we have the fdate() command using $FC...  "  printf "  Do we have the fdate() command using $FC...  "
1393  cat > genmake_tcomp.$FS <<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.$FS > 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 1354  cat > genmake_tcomp.$FS <<EOF Line 1420  cat > genmake_tcomp.$FS <<EOF
1420        print *, tarray        print *, tarray
1421        end        end
1422  EOF  EOF
1423  $FC $FFLAGS $DEFINES -o genmake_tcomp genmake_tcomp.$FS > 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 1375  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 1862  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 1872  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 2029  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 2049  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)

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

  ViewVC Help
Powered by ViewVC 1.1.22