/[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.102 by edhill, Mon Oct 4 18:59:36 2004 UTC revision 1.111 by edhill, Sat Nov 13 03:23:28 2004 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      echo "" > genmake_tnc.log      echo "" > genmake_tnc.log
722      cat <<EOF > genmake_tnc.for      cat <<EOF > genmake_tnc.for
# Line 689  check_netcdf_libs()  { Line 731  check_netcdf_libs()  {
731        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)        IF (iret .NE. NF_NOERR) write(*,*) NF_STRERROR(iret)
732        end        end
733  EOF  EOF
734      #echo "$CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f"      echo "Executing:" > genmake_tnc.log
735      #echo "$FC $FFLAGS $FOPTIM -c genmake_tnc.f"      echo "  $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f" \
736      #echo "$LINK -o genmake_tnc.o $LIBS"          > genmake_tnc.log
737        RET_CPP=f
738      $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f 2>/dev/null  \      $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f 2>/dev/null  \
739          &&  $FC $FFLAGS $FOPTIM -c genmake_tnc.f >> genmake_tnc.log 2>&1  \          &&  RET_CPP=t
740        if test "x$RET_CPP" = xf ; then
741            echo "  WARNING: CPP failed to pre-process the netcdf test." \
742                > genmake_tnc.log
743            echo "    Please check that \$INCLUDES is properly set." \
744                > genmake_tnc.log
745        fi
746        echo "Executing:" > genmake_tnc.log
747        echo "  $FC $FFLAGS $FOPTIM -c genmake_tnc.f" > genmake_tnc.log
748        echo "  $LINK -o genmake_tnc.o $LIBS" > genmake_tnc.log
749        $FC $FFLAGS $FOPTIM -c genmake_tnc.f >> genmake_tnc.log 2>&1  \
750          &&  $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
751      RET_COMPILE=$?      RET_COMPILE=$?
752    
# Line 749  PDEPEND= Line 802  PDEPEND=
802  DUMPSTATE=t  DUMPSTATE=t
803  PDEFAULT=  PDEFAULT=
804  OPTFILE=  OPTFILE=
805  INCLUDES="-I."  INCLUDES="-I. $INCLUDES"
806  FFLAGS=  FFLAGS=
807  FOPTIM=  FOPTIM=
808  CFLAGS=  CFLAGS=
# Line 768  HAVE_SYSTEM= Line 821  HAVE_SYSTEM=
821  HAVE_FDATE=  HAVE_FDATE=
822  FC_NAMEMANGLE=  FC_NAMEMANGLE=
823  HAVE_CLOC=  HAVE_CLOC=
824    HAVE_STAT=
825  HAVE_NETCDF=  HAVE_NETCDF=
826  HAVE_ETIME=  HAVE_ETIME=
827    
# Line 861  else Line 915  else
915      echo "none found"      echo "none found"
916  fi  fi
917    
918  echo "$0::$1:$2:$3:$4:$5:$6:$7:"  #echo "$0::$1:$2:$3:$4:$5:$6:$7:"
919  #OPTIONS=  #OPTIONS=
920  #n=0  #n=0
921  #for i ; do  #for i ; do
# Line 1293  else Line 1347  else
1347  fi  fi
1348  rm -f genmake_t*  rm -f genmake_t*
1349    
1350    printf "  Can we use stat() through C calls...  "
1351    check_HAVE_STAT
1352    if test "x$HAVE_STAT" != x ; then
1353        echo "yes"
1354    else
1355        echo "no"
1356    fi
1357    rm -f genmake_t*
1358    
1359  printf "  Can we create NetCDF-enabled binaries...  "  printf "  Can we create NetCDF-enabled binaries...  "
1360  check_netcdf_libs  check_netcdf_libs
1361  if test "x$HAVE_NETCDF" != x ; then  if test "x$HAVE_NETCDF" != x ; then
# Line 1345  if test ! -d ${TOOLSDIR} ; then Line 1408  if test ! -d ${TOOLSDIR} ; then
1408      exit 1      exit 1
1409  fi  fi
1410  if test "x$S64" = x ; then  if test "x$S64" = x ; then
1411      S64='$(TOOLSDIR)/set64bitConst.sh'      echo "3.0 _d 3" | ${TOOLSDIR}/set64bitConst.sh > /dev/null 2>&1
1412        RETVAL=$?
1413        if test "x${RETVAL}" = x0 ; then
1414            S64='$(TOOLSDIR)/set64bitConst.sh'
1415        else
1416            echo "3.0 _d 3" | ${TOOLSDIR}/set64bitConst.csh > /dev/null 2>&1
1417            RETVAL=$?
1418            if test "x${RETVAL}" = x0 ; then
1419                S64='$(TOOLSDIR)/set64bitConst.csh'
1420            else
1421                cat <<EOF
1422    
1423    ERROR: neither of the two default scripts:
1424    
1425        ${TOOLSDIR}/set64bitConst.sh
1426        ${TOOLSDIR}/set64bitConst.csh
1427    
1428      are working so please check paths or specify (with \$S64) a
1429      working version of this script.
1430    
1431    EOF
1432                exit 1
1433            fi
1434        fi
1435  fi  fi
1436  THIS_SCRIPT=`echo ${0} | sed 's:'$TOOLSDIR':\$(TOOLSDIR):'`  THIS_SCRIPT=`echo ${0} | sed 's:'$TOOLSDIR':\$(TOOLSDIR):'`
1437    
# Line 1513  EOF Line 1599  EOF
1599          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`          PACKAGES=`echo $PACKAGES | sed -e 's/mnc//g'`
1600          DISABLE="$DISABLE mnc"          DISABLE="$DISABLE mnc"
1601      else      else
1602          ( cd $ROOTDIR"/pkg/mnc" && $MAKE templates ) > make_mnc.errors 2>&1          ( cd $ROOTDIR"/pkg/mnc" && $MAKE testclean && $MAKE templates ) > make_mnc.errors 2>&1
1603          RETVAL=$?          RETVAL=$?
1604          if test "x${RETVAL}" = x0 ; then          if test "x${RETVAL}" = x0 ; then
1605              rm -f make_mnc.errors              rm -f make_mnc.errors
# Line 1902  CFLAGS = ${CFLAGS} Line 1988  CFLAGS = ${CFLAGS}
1988  NOOPTFILES = ${NOOPTFILES}  NOOPTFILES = ${NOOPTFILES}
1989  NOOPTFLAGS = ${NOOPTFLAGS}  NOOPTFLAGS = ${NOOPTFLAGS}
1990  # Flags and libraries needed for linking  # Flags and libraries needed for linking
1991  LIBS = ${LIBS} \$(XLIBS)  LIBS = ${LIBS}
1992  # Name of the Mekfile  # Name of the Mekfile
1993  MAKEFILE=${MAKEFILE}  MAKEFILE=${MAKEFILE}
1994    
# Line 2073  ad_tamc_output.f: ad_input_code.f Line 2159  ad_tamc_output.f: ad_input_code.f
2159  ad_tamc: ad_tamc_output.o \$(OBJFILES)  ad_tamc: ad_tamc_output.o \$(OBJFILES)
2160          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)
2161    
2162    adonlyfwd:
2163            patch < \$(TOOLSDIR)/ad_taf_output.f.onlyfwd.diff
2164    
2165    adtrick:
2166            patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff
2167    
2168  # ... FTL ...  # ... FTL ...
2169  ftlall: ftl_taf  ftlall: ftl_taf
# Line 2108  ftl_tamc: ftl_tamc_output.o \$(OBJFILES) Line 2199  ftl_tamc: ftl_tamc_output.o \$(OBJFILES)
2199    
2200  # ... SVD ...  # ... SVD ...
2201  svdtaf: ad_taf_output.f ftl_taf_output.f  svdtaf: ad_taf_output.f ftl_taf_output.f
2202  svdall: svd_taf          @echo "--->>> Only ran TAF to generate SVD code!    <<<---"
2203            @echo "--->>> Do make svdall afterwards to compile. <<<---"
2204    svdall: svd_touch svd_taf
2205    
2206  svd_taf: ad_taf_output.o ftl_taf_output.o \$(OBJFILES)  svd_taf: \$(OBJFILES)
2207          \$(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)
2208    
2209            @echo "--->>> Only COMPILE svd code! <<<---"
2210            @echo "--->>> Assumes you previously <<<---"
2211            @echo "--->>> did make svdtaf        <<<---"
2212    
2213    svd_touch:
2214            @echo "--->>> Only COMPILE svd code! <<<---"
2215            @echo "--->>> Assumes you previously <<<---"
2216            @echo "--->>> did make svdtaf        <<<---"
2217            touch ad_taf_output.f ftl_taf_output.f
2218            \$(FC) \$(FFLAGS) \$(FOPTIM) -c ad_taf_output.f
2219            \$(FC) \$(FFLAGS) \$(FOPTIM) -c ftl_taf_output.f
2220            @$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
2221            cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h
2222            -rm -f ftl_config.template
2223    
2224  #=========================================  #=========================================
2225    

Legend:
Removed from v.1.102  
changed lines
  Added in v.1.111

  ViewVC Help
Powered by ViewVC 1.1.22