/[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.131 by edhill, Wed Sep 14 17:57:54 2005 UTC revision 1.138 by edhill, Sun Dec 4 13:57:08 2005 UTC
# Line 353  EOF Line 353  EOF
353      else      else
354          echo "  The possible FORTRAN compilers found in your path are:"          echo "  The possible FORTRAN compilers found in your path are:"
355          echo "   "$p_FC          echo "   "$p_FC
356          if test "x$FC" = x ; then      fi
357              FC=`echo $p_FC | $AWK '{print $1}'`  
358              echo "  Setting FORTRAN compiler to: "$FC      #  Use the first of the compilers found in the current PATH
359          fi      #  that has a correctly-named optfile
360        if test "x$OPTFILE" = x  -a  "x$FC" = x ; then
361            for i in $p_FC ; do
362                OPTFILE=$ROOTDIR"/tools/build_options/"$PLATFORM"_"$i
363                if test -r $OPTFILE ; then
364                    echo "  Setting OPTFILE to: "$OPTFILE
365                    break
366                fi
367            done
368      fi      fi
369    
370      if test "x$OPTFILE" = x ; then      if test "x$OPTFILE" = x ; then
# Line 601  EOF Line 609  EOF
609        call tsub( string )        call tsub( string )
610        end        end
611  EOF  EOF
612      $FC $FFLAGS $DEFINES -c genmake_tcomp.$FS >> genmake_warnings 2>&1      $FC $FFLAGS -c genmake_tcomp.$FS >> genmake_warnings 2>&1
613      RETVAL=$?      RETVAL=$?
614      if test "x$RETVAL" != x0 ; then      if test "x$RETVAL" != x0 ; then
615          FC_NAMEMANGLE=$default_nm          FC_NAMEMANGLE=$default_nm
# Line 689  EOF Line 697  EOF
697  }  }
698    
699    
700    check_HAVE_SIGREG()  {
701        get_fortran_c_namemangling
702        cat <<EOF > genmake_tc_1.c
703    $FC_NAMEMANGLE
704    #include <stdlib.h>
705    #include <stdio.h>
706    #include <signal.h>
707    #include <errno.h>
708    #include <ucontext.h>
709    
710    int * ip;
711    
712    static void killhandler(
713        unsigned int sn, siginfo_t  si, struct ucontext *sc )
714    {
715        *ip = *ip + 1;
716        return;
717    }
718    
719    void FC_NAMEMANGLE(sigreg) (int * aip)
720    {
721        struct sigaction s;
722        ip = aip;
723        s.sa_flags = SA_SIGINFO;
724        s.sa_sigaction = (void *)killhandler;
725        if(sigaction (SIGTERM,&s,(struct sigaction *)NULL)) {
726            printf("Sigaction returned error = %d\n", errno);
727            exit(0);
728        }
729        return;
730    }
731    EOF
732        make genmake_tc_1.o >> genmake_warnings 2>&1
733        RET_C=$?
734        cat <<EOF > genmake_tc_2.$FS
735          program hello
736          integer anint
737          common /iv/ anint
738          external sigreg
739          call sigreg(anint)
740          end
741    EOF
742        echo >> genmake_warnings
743        echo "running: check_HAVE_SIGREG()" >> genmake_warnings
744        cat genmake_tc_2.$FS >> genmake_warnings
745        COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"
746        echo $COMM >> genmake_warnings
747        $COMM >> genmake_warnings 2>&1
748        RETVAL=$?
749        if test "x$RETVAL" = x0 ; then
750            HAVE_SIGREG=t
751            DEFINES="$DEFINES -DHAVE_SIGREG"
752        fi
753        rm -f genmake_tc*
754    }
755    
756    
757  check_HAVE_SETRLSTK()  {  check_HAVE_SETRLSTK()  {
758      get_fortran_c_namemangling      get_fortran_c_namemangling
759      cat <<EOF > genmake_tc_1.c      cat <<EOF > genmake_tc_1.c
# Line 713  EOF Line 778  EOF
778        call setrlstk()        call setrlstk()
779        end        end
780  EOF  EOF
781      $FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o >> genmake_warnings 2>&1      echo >> genmake_warnings
782      RET_F=$?      echo "running: check_HAVE_SETRLSTK()" >> genmake_warnings
783      test -x ./genmake_tc  &&  ./genmake_tc >> genmake_warnings 2>&1      cat genmake_tc_2.$FS >> genmake_warnings
784        COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"
785        echo $COMM >> genmake_warnings
786        $COMM >> genmake_warnings 2>&1
787      RETVAL=$?      RETVAL=$?
788      if test "x$RETVAL" = x0 ; then      if test "x$RETVAL" = x0 ; then
789          HAVE_SETRLSTK=t          HAVE_SETRLSTK=t
# Line 755  EOF Line 823  EOF
823        print *," HELLO WORLD", nbyte        print *," HELLO WORLD", nbyte
824        end        end
825  EOF  EOF
826      $FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o >> genmake_tc.log 2>&1      echo >> genmake_warnings
827      RET_F=$?      echo "running: check_HAVE_STAT()" >> genmake_warnings
828      test -x ./genmake_tc  &&  ./genmake_tc >> genmake_tc.log 2>&1      cat genmake_tc_2.$FS >> genmake_warnings
829        COMM="$FC $FFLAGS -o genmake_tc genmake_tc_2.$FS genmake_tc_1.o"
830        echo $COMM >> genmake_warnings
831        $COMM >> genmake_tc.log 2>&1
832      RETVAL=$?      RETVAL=$?
833      if test "x$RETVAL" = x0 ; then      if test "x$RETVAL" = x0 ; then
834          HAVE_STAT=t          HAVE_STAT=t
# Line 771  check_netcdf_libs()  { Line 842  check_netcdf_libs()  {
842      if test ! "x$SKIP_NETCDF_CHECK" = x ; then      if test ! "x$SKIP_NETCDF_CHECK" = x ; then
843          return          return
844      fi      fi
845      echo "" > genmake_tnc.log      echo >> genmake_warnings
846        echo "running: check_netcdf_libs()" >> genmake_warnings
847      cat <<EOF > genmake_tnc.F      cat <<EOF > genmake_tnc.F
848        program fgennc        program fgennc
849  #include "netcdf.inc"  #include "netcdf.inc"
# Line 789  EOF Line 861  EOF
861        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
862        end        end
863  EOF  EOF
864      echo "Executing:" > genmake_tnc.log      echo "===  genmake_tnc.F  ===" > genmake_tnc.log
865      echo "  $CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS" \      cat genmake_tnc.F >> genmake_tnc.log
866          > genmake_tnc.log      echo "===  genmake_tnc.F  ===" >> genmake_tnc.log
867      RET_CPP=f      RET_CPP=f
868      $CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS 2>/dev/null  \      COMM="$CPP $DEFINES $INCLUDES genmake_tnc.F"
869          &&  RET_CPP=t      echo "$COMM" >> genmake_tnc.log
870        $COMM > genmake_tnc.$FS 2>/dev/null  &&  RET_CPP=t
871      if test "x$RET_CPP" = xf ; then      if test "x$RET_CPP" = xf ; then
872          echo "  WARNING: CPP failed to pre-process the netcdf test." \          echo "  WARNING: CPP failed to pre-process the netcdf test." \
873              > genmake_tnc.log              >> genmake_tnc.log
874          echo "    Please check that \$INCLUDES is properly set." \          echo "    Please check that \$INCLUDES is properly set." \
875              > genmake_tnc.log              >> genmake_tnc.log
876      fi      fi
877      echo "Executing:" > genmake_tnc.log      echo "$FC $FFLAGS $FOPTIM -c genmake_tnc.$FS  \ " >> genmake_tnc.log
878      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  
879      $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \      $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
880          &&  $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
881      RET_COMPILE=$?      RET_COMPILE=$?
882        cat genmake_tnc.log >> genmake_warnings
883    
884      #EH3  Remove test program execution for machines that either disallow      #EH3  Remove test program execution for machines that either disallow
885      #EH3  execution or cannot support it (eg. cross-compilers)      #EH3  execution or cannot support it (eg. cross-compilers)
# Line 819  EOF Line 892  EOF
892          HAVE_NETCDF=t          HAVE_NETCDF=t
893      else      else
894          # try again with "-lnetcdf" added to the libs          # try again with "-lnetcdf" added to the libs
895            echo "try again with added '-lnetcdf'" > genmake_tnc.log
896            echo "$CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS \ " >> genmake_tnc.log
897            echo " &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS \ " >> genmake_tnc.log
898            echo " &&  $LINK -o genmake_tnc genmake_tnc.o $LIBS -lnetcdf" >> genmake_tnc.log
899          $CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS 2>/dev/null  \          $CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS 2>/dev/null  \
900              &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \              &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
901              &&  $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
902          RET_COMPILE=$?          RET_COMPILE=$?
903            cat genmake_tnc.log >> genmake_warnings
904          if test "x$RET_COMPILE" = x0 ; then          if test "x$RET_COMPILE" = x0 ; then
905              LIBS="$LIBS -lnetcdf"              LIBS="$LIBS -lnetcdf"
906              HAVE_NETCDF=t              HAVE_NETCDF=t
         else  
             cat genmake_tnc.log >> genmake_warnings  
907          fi          fi
908      fi      fi
909      rm -f genmake_tnc*      rm -f genmake_tnc*
# Line 1366  cat > genmake_tcomp.$FS <<EOF Line 1442  cat > genmake_tcomp.$FS <<EOF
1442        call system('echo hi')        call system('echo hi')
1443        end        end
1444  EOF  EOF
1445  $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
1446  RETVAL=$?  RETVAL=$?
1447  if test "x$RETVAL" = x0 ; then  if test "x$RETVAL" = x0 ; then
1448      HAVE_SYSTEM=t      HAVE_SYSTEM=t
# Line 1387  cat > genmake_tcomp.$FS <<EOF Line 1463  cat > genmake_tcomp.$FS <<EOF
1463        print *, string        print *, string
1464        end        end
1465  EOF  EOF
1466  $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
1467  RETVAL=$?  RETVAL=$?
1468  if test "x$RETVAL" = x0 ; then  if test "x$RETVAL" = x0 ; then
1469      HAVE_FDATE=t      HAVE_FDATE=t
# Line 1409  cat > genmake_tcomp.$FS <<EOF Line 1485  cat > genmake_tcomp.$FS <<EOF
1485        print *, tarray        print *, tarray
1486        end        end
1487  EOF  EOF
1488  $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
1489  RETVAL=$?  RETVAL=$?
1490  if test "x$RETVAL" = x0 ; then  if test "x$RETVAL" = x0 ; then
1491      HAVE_ETIME=t      HAVE_ETIME=t
# Line 1439  else Line 1515  else
1515  fi  fi
1516  rm -f genmake_t*  rm -f genmake_t*
1517    
1518    printf "  Can we register a signal handler using $FC...  "
1519    check_HAVE_SIGREG
1520    if test "x$HAVE_SIGREG" != x ; then
1521        echo "yes"
1522    else
1523        echo "no"
1524    fi
1525    rm -f genmake_t*
1526    
1527  printf "  Can we use stat() through C calls...  "  printf "  Can we use stat() through C calls...  "
1528  check_HAVE_STAT  check_HAVE_STAT
1529  if test "x$HAVE_STAT" != x ; then  if test "x$HAVE_STAT" != x ; then
# Line 2122  depend: Line 2207  depend:
2207          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)
2208          -rm -f makedepend.out          -rm -f makedepend.out
2209    
2210    lib: libmitgcmuv.a
2211    
2212    libmitgcmuv.a: \$(OBJFILES)
2213            ar rcv libmitgcmuv.a \$(OBJFILES)
2214    
2215  links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(SPECIAL_FILES)  links: \$(SRCFILES) \$(CSRCFILES) \$(HEADERFILES) \$(F90SRCFILES) \$(SPECIAL_FILES)
2216    
2217  small_f: \$(F77FILES) \$(F90FILES)  small_f: \$(F77FILES) \$(F90FILES)

Legend:
Removed from v.1.131  
changed lines
  Added in v.1.138

  ViewVC Help
Powered by ViewVC 1.1.22