/[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.101 by edhill, Thu Sep 30 21:37:40 2004 UTC revision 1.117 by edhill, Wed Feb 9 15:59:24 2005 UTC
# Line 675  EOF Line 675  EOF
675  }  }
676    
677    
678    check_HAVE_STAT()  {
679        get_fortran_c_namemangling
680        cat <<EOF > genmake_tc_1.c
681    $FC_NAMEMANGLE
682    #include <stdio.h>
683    #include <stdlib.h>
684    #include <unistd.h>
685    #include <sys/stat.h>
686    #include <sys/types.h>
687    void FC_NAMEMANGLE(tfsize) ( int *nbyte )
688    {
689        char name[512];
690        struct stat astat;
691    
692        name[0] = 'a'; name[1] = '\0';
693        if (! stat(name, &astat))
694            *nbyte = (int)(astat.st_size);
695        else
696            *nbyte = -1;
697    }
698    EOF
699        make genmake_tc_1.o >> genmake_tc.log 2>&1
700        RET_C=$?
701        cat <<EOF > genmake_tc_2.f
702          program hello
703          integer nbyte
704          call tfsize(nbyte)
705          print *," HELLO WORLD", nbyte
706          end program hello
707    EOF
708        $FC $FFLAGS -o genmake_tc genmake_tc_2.f genmake_tc_1.o >> genmake_tc.log 2>&1
709        RET_F=$?
710        test -x ./genmake_tc  &&  ./genmake_tc >> genmake_tc.log 2>&1
711        RETVAL=$?
712        if test "x$RETVAL" = x0 ; then
713            HAVE_STAT=t
714            DEFINES="$DEFINES -DHAVE_STAT"
715        fi
716        rm -f genmake_tc*
717    }
718    
719    
720  check_netcdf_libs()  {  check_netcdf_libs()  {
721        if test ! "x$SKIP_NETCDF_CHECK" = x ; then
722            return
723        fi
724      echo "" > genmake_tnc.log      echo "" > genmake_tnc.log
725      cat <<EOF > genmake_tnc.for      cat <<EOF > genmake_tnc.F
726        program fgennc        program fgennc
727  #include "netcdf.inc"  #include "netcdf.inc"
728    EOF
729        if test ! "x$MPI" = x ; then
730            echo '#include "mpif.h"' >> genmake_tnc.F
731        fi
732        cat <<EOF >> genmake_tnc.F
733        integer iret, ncid, xid        integer iret, ncid, xid
734        iret = nf_create('genmake_tnc.nc', NF_CLOBBER, ncid)        iret = nf_create('genmake_tnc.nc', NF_CLOBBER, ncid)
735        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
# Line 689  check_netcdf_libs()  { Line 739  check_netcdf_libs()  {
739        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
740        end        end
741  EOF  EOF
742      #echo "$CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f"      echo "Executing:" > genmake_tnc.log
743      #echo "$FC $FFLAGS $FOPTIM -c genmake_tnc.f"      echo "  $CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS" \
744      #echo "$LINK -o genmake_tnc.o $LIBS"          > genmake_tnc.log
745      $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f 2>/dev/null  \      RET_CPP=f
746          &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.f >> genmake_tnc.log 2>&1  \      $CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS 2>/dev/null  \
747            &&  RET_CPP=t
748        if test "x$RET_CPP" = xf ; then
749            echo "  WARNING: CPP failed to pre-process the netcdf test." \
750                > genmake_tnc.log
751            echo "    Please check that \$INCLUDES is properly set." \
752                > genmake_tnc.log
753        fi
754        echo "Executing:" > genmake_tnc.log
755        echo "  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS" > genmake_tnc.log
756        echo "  $LINK -o genmake_tnc.o $LIBS" > genmake_tnc.log
757        $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
758          &&  $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
759      RET_COMPILE=$?      RET_COMPILE=$?
760    
# Line 708  EOF Line 769  EOF
769          HAVE_NETCDF=t          HAVE_NETCDF=t
770      else      else
771          # try again with "-lnetcdf" added to the libs          # try again with "-lnetcdf" added to the libs
772          $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f 2>/dev/null  \          $CPP $DEFINES $INCLUDES genmake_tnc.F > genmake_tnc.$FS 2>/dev/null  \
773              &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.f >> genmake_tnc.log 2>&1  \              &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.$FS >> genmake_tnc.log 2>&1  \
774              &&  $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
775          RET_COMPILE=$?          RET_COMPILE=$?
776          if test "x$RET_COMPILE" = x0 ; then          if test "x$RET_COMPILE" = x0 ; then
# Line 735  PLATFORM= Line 796  PLATFORM=
796  LN=  LN=
797  S64=  S64=
798  KPP=  KPP=
799  FC=  #FC=
800  #CC=gcc  #CC=gcc
801  CPP=  #CPP=
802  LINK=  LINK=
803  DEFINES=  DEFINES=
804  PACKAGES=  PACKAGES=
# Line 749  PDEPEND= Line 810  PDEPEND=
810  DUMPSTATE=t  DUMPSTATE=t
811  PDEFAULT=  PDEFAULT=
812  OPTFILE=  OPTFILE=
813  INCLUDES="-I."  INCLUDES="-I. $INCLUDES"
814  FFLAGS=  FFLAGS=
815  FOPTIM=  FOPTIM=
816  CFLAGS=  CFLAGS=
# Line 768  HAVE_SYSTEM= Line 829  HAVE_SYSTEM=
829  HAVE_FDATE=  HAVE_FDATE=
830  FC_NAMEMANGLE=  FC_NAMEMANGLE=
831  HAVE_CLOC=  HAVE_CLOC=
832    HAVE_STAT=
833  HAVE_NETCDF=  HAVE_NETCDF=
834  HAVE_ETIME=  HAVE_ETIME=
835    
# Line 780  STANDARDDIRS="USE_THE_DEFAULT" Line 842  STANDARDDIRS="USE_THE_DEFAULT"
842  G2ARGS=  G2ARGS=
843  BASH=  BASH=
844  PWD=`pwd`  PWD=`pwd`
845  MAKE=make  test "x$MAKE" = x  &&  MAKE=make
846  AWK=awk  test "x$AWK" = x   &&  AWK=awk
847  THISHOST=`hostname`  THISHOST=`hostname`
848  THISCWD=`pwd`  THISCWD=`pwd`
849  THISDATE=`date`  THISDATE=`date`
# Line 861  else Line 923  else
923      echo "none found"      echo "none found"
924  fi  fi
925    
926  #  echo "$0::$1:$2:$3:$4:$5:$6:$7:"  #echo "$0::$1:$2:$3:$4:$5:$6:$7:"
927  #OPTIONS=  #OPTIONS=
928  #n=0  #n=0
929  #for i ; do  #for i ; do
# Line 873  fi Line 935  fi
935  #done  #done
936  #parse_options  #parse_options
937  ac_prev=  ac_prev=
938  for ac_option in $@ ; do  for ac_option in "$@" ; do
939    
940      G2ARGS="$G2ARGS \"$ac_option\""      G2ARGS="$G2ARGS \"$ac_option\""
941    
# Line 1047  fi Line 1109  fi
1109    
1110  #  Find the MITgcm ${ROOTDIR}  #  Find the MITgcm ${ROOTDIR}
1111  if test "x${ROOTDIR}" = x ; then  if test "x${ROOTDIR}" = x ; then
1112      tmp=`echo $PWD | sed -e 's/\// /g' | awk '{print $NR}'`      tmp=`echo $PWD | sed -e 's/\// /g' | $AWK '{print $NR}'`
1113      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
1114          ROOTDIR=".."          ROOTDIR=".."
1115      else      else
# Line 1293  else Line 1355  else
1355  fi  fi
1356  rm -f genmake_t*  rm -f genmake_t*
1357    
1358    printf "  Can we use stat() through C calls...  "
1359    check_HAVE_STAT
1360    if test "x$HAVE_STAT" != x ; then
1361        echo "yes"
1362    else
1363        echo "no"
1364    fi
1365    rm -f genmake_t*
1366    
1367  printf "  Can we create NetCDF-enabled binaries...  "  printf "  Can we create NetCDF-enabled binaries...  "
1368  check_netcdf_libs  check_netcdf_libs
1369  if test "x$HAVE_NETCDF" != x ; then  if test "x$HAVE_NETCDF" != x ; then
# Line 1325  if test "x${PLATFORM}" = x ; then Line 1396  if test "x${PLATFORM}" = x ; then
1396  fi  fi
1397    
1398  if test "x${EXEDIR}" = x ; then  if test "x${EXEDIR}" = x ; then
1399      tmp=`echo $PWD | sed -e 's/\// /g' | awk '{print $NR}'`      tmp=`echo $PWD | sed -e 's/\// /g' | $AWK '{print $NR}'`
1400      if test "x$tmp" = "xbin" -a -d ../exe -a $ROOTDIR = .. ; then      if test "x$tmp" = "xbin" -a -d ../exe -a $ROOTDIR = .. ; then
1401          EXEDIR=../exe          EXEDIR=../exe
1402      else      else
# Line 1345  if test ! -d ${TOOLSDIR} ; then Line 1416  if test ! -d ${TOOLSDIR} ; then
1416      exit 1      exit 1
1417  fi  fi
1418  if test "x$S64" = x ; then  if test "x$S64" = x ; then
1419      S64='$(TOOLSDIR)/set64bitConst.sh'      echo "3.0 _d 3" | ${TOOLSDIR}/set64bitConst.sh > /dev/null 2>&1
1420        RETVAL=$?
1421        if test "x${RETVAL}" = x0 ; then
1422            S64='$(TOOLSDIR)/set64bitConst.sh'
1423        else
1424            echo "3.0 _d 3" | ${TOOLSDIR}/set64bitConst.csh > /dev/null 2>&1
1425            RETVAL=$?
1426            if test "x${RETVAL}" = x0 ; then
1427                S64='$(TOOLSDIR)/set64bitConst.csh'
1428            else
1429                cat <<EOF
1430    
1431    ERROR: neither of the two default scripts:
1432    
1433        ${TOOLSDIR}/set64bitConst.sh
1434        ${TOOLSDIR}/set64bitConst.csh
1435    
1436      are working so please check paths or specify (with \$S64) a
1437      working version of this script.
1438    
1439    EOF
1440                exit 1
1441            fi
1442        fi
1443  fi  fi
1444  THIS_SCRIPT=`echo ${0} | sed 's:'$TOOLSDIR':\$(TOOLSDIR):'`  THIS_SCRIPT=`echo ${0} | sed 's:'$TOOLSDIR':\$(TOOLSDIR):'`
1445    
# Line 1513  EOF Line 1607  EOF
1607          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`
1608          DISABLE="$DISABLE mnc"          DISABLE="$DISABLE mnc"
1609      else      else
1610          ( cd $ROOTDIR"/pkg/mnc" && $MAKE templates ) > make_mnc.errors 2>&1          ( cd $ROOTDIR"/pkg/mnc" && $MAKE testclean && $MAKE templates ) > make_mnc.errors 2>&1
1611          RETVAL=$?          RETVAL=$?
1612          if test "x${RETVAL}" = x0 ; then          if test "x${RETVAL}" = x0 ; then
1613              rm -f make_mnc.errors              rm -f make_mnc.errors
# Line 1628  for n in $names ; do Line 1722  for n in $names ; do
1722              fi              fi
1723          done          done
1724          if test "x$has_pack" = xf ; then          if test "x$has_pack" = xf ; then
1725              undef=`echo "ALLOW_$n" | $AWK '{print toupper($0)}'`              undef=`echo "ALLOW_$n" | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
1726              DISABLED_PACKAGES="$DISABLED_PACKAGES -U$undef"              DISABLED_PACKAGES="$DISABLED_PACKAGES -U$undef"
1727          fi          fi
1728      fi      fi
1729  done  done
1730  ENABLED_PACKAGES=  ENABLED_PACKAGES=
1731  for i in $PACKAGES ; do  for i in $PACKAGES ; do
1732      def=`echo "ALLOW_$i" | $AWK '{print toupper($0)}'`      def=`echo "ALLOW_$i" | sed -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
1733      ENABLED_PACKAGES="$ENABLED_PACKAGES -D$def"      ENABLED_PACKAGES="$ENABLED_PACKAGES -D$def"
1734  #eh3 DEFINES="$DEFINES -D$def"  #eh3 DEFINES="$DEFINES -D$def"
1735    
# Line 1762  for d in $alldirs ; do Line 1856  for d in $alldirs ; do
1856                          deplist="$deplist $sf"                          deplist="$deplist $sf"
1857                          ;;                          ;;
1858                  esac                  esac
1859                  extn=`echo $sf | $AWK -F '.' '{print $NF}'`                  extn=`echo $sf | $AWK -F. '{print $NF}'`
1860                  case $extn in                  case $extn in
1861                      F)                      F)
1862                          echo    " \\"  >> srclist.inc                          echo    " \\"  >> srclist.inc
# Line 1902  CFLAGS = ${CFLAGS} Line 1996  CFLAGS = ${CFLAGS}
1996  NOOPTFILES = ${NOOPTFILES}  NOOPTFILES = ${NOOPTFILES}
1997  NOOPTFLAGS = ${NOOPTFLAGS}  NOOPTFLAGS = ${NOOPTFLAGS}
1998  # Flags and libraries needed for linking  # Flags and libraries needed for linking
1999  LIBS = ${LIBS} \$(XLIBS)  LIBS = ${LIBS}
2000  # Name of the Mekfile  # Name of the Mekfile
2001  MAKEFILE=${MAKEFILE}  MAKEFILE=${MAKEFILE}
2002    
# Line 2073  ad_tamc_output.f: ad_input_code.f Line 2167  ad_tamc_output.f: ad_input_code.f
2167  ad_tamc: ad_tamc_output.o \$(OBJFILES)  ad_tamc: ad_tamc_output.o \$(OBJFILES)
2168          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)
2169    
2170    adonlyfwd:
2171            patch < \$(TOOLSDIR)/ad_taf_output.f.onlyfwd.diff
2172    
2173    adtrick:
2174            patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff
2175    
2176  # ... FTL ...  # ... FTL ...
2177  ftlall: ftl_taf  ftlall: ftl_taf
# Line 2108  ftl_tamc: ftl_tamc_output.o \$(OBJFILES) Line 2207  ftl_tamc: ftl_tamc_output.o \$(OBJFILES)
2207    
2208  # ... SVD ...  # ... SVD ...
2209  svdtaf: ad_taf_output.f ftl_taf_output.f  svdtaf: ad_taf_output.f ftl_taf_output.f
2210  svdall: svd_taf          @echo "--->>> Only ran TAF to generate SVD code!    <<<---"
2211            @echo "--->>> Do make svdall afterwards to compile. <<<---"
2212    svdall: svd_touch svd_taf
2213    
2214  svd_taf: ad_taf_output.o ftl_taf_output.o \$(OBJFILES)  svd_taf: \$(OBJFILES)
2215          \$(LINK) -o mitgcmuv_svd \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o ftl_taf_output.o \$(LIBS)          \$(LINK) -o mitgcmuv_svd \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o ftl_taf_output.o \$(LIBS)
2216    
2217            @echo "--->>> Only COMPILE svd code! <<<---"
2218            @echo "--->>> Assumes you previously <<<---"
2219            @echo "--->>> did make svdtaf        <<<---"
2220    
2221    svd_touch:
2222            @echo "--->>> Only COMPILE svd code! <<<---"
2223            @echo "--->>> Assumes you previously <<<---"
2224            @echo "--->>> did make svdtaf        <<<---"
2225            touch ad_taf_output.f ftl_taf_output.f
2226            \$(FC) \$(FFLAGS) \$(FOPTIM) -c ad_taf_output.f
2227            \$(FC) \$(FFLAGS) \$(FOPTIM) -c ftl_taf_output.f
2228            @$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
2229            cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h
2230            -rm -f ftl_config.template
2231    
2232  #=========================================  #=========================================
2233    

Legend:
Removed from v.1.101  
changed lines
  Added in v.1.117

  ViewVC Help
Powered by ViewVC 1.1.22