/[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.215 by jmc, Mon Dec 6 17:16:06 2010 UTC revision 1.224 by jmc, Fri Aug 12 21:03:25 2011 UTC
# Line 96  Usage: "$0" [OPTIONS] Line 96  Usage: "$0" [OPTIONS]
96            will search for a working compiler by trying a list of            will search for a working compiler by trying a list of
97            "usual suspects" such as gcc, c89, cc, etc.            "usual suspects" such as gcc, c89, cc, etc.
98    
     -[no]ieee | --[no]ieee  
           Do or don't use IEEE numerics.  Note that this option  
           *only* works if it is supported by the OPTFILE that  
           is being used.  
   
99      -use_real4 | -use_r4 | -ur4 | --use_real4 | --use_r4 | --ur4      -use_real4 | -use_r4 | -ur4 | --use_real4 | --use_r4 | --ur4
100            Use "real*4" type for _RS variable (#undef REAL4_IS_SLOW)            Use "real*4" type for _RS variable (#undef REAL4_IS_SLOW)
101            *only* works if CPP_EEOPTIONS.h allows this.            *only* works if CPP_EEOPTIONS.h allows this.
# Line 126  Usage: "$0" [OPTIONS] Line 121  Usage: "$0" [OPTIONS]
121      -hpmt | --hpmt      -hpmt | --hpmt
122            Performance analysis with the HPM Toolkit            Performance analysis with the HPM Toolkit
123    
124      -gsl | --gsl      -ieee | --ieee
125            Use GSL to control floating point rounding and precision            use IEEE numerics.  Note that this option *only* works
126              if it is supported by the OPTFILE that is being used.
127      -devel | --devel      -devel | --devel
128            Add additional warning and debugging flags for development            Add additional warning and debugging flags for development
129              (if supported by the OPTFILE); also switch to IEEE numerics.
130        -gsl | --gsl
131              Use GSL to control floating point rounding and precision
132    
133      -mpi | --mpi      -mpi | --mpi
134            Include MPI header files and link to MPI libraries            Include MPI header files and link to MPI libraries
# Line 346  look_for_makedepend()  { Line 345  look_for_makedepend()  {
345      #    3) locally build and use the cyrus implementation      #    3) locally build and use the cyrus implementation
346      #    4) fall back to the buggy local xmakedpend script      #    4) fall back to the buggy local xmakedpend script
347      #      #
348        echo >> $LOGFILE
349        echo "running: look_for_makedepend()" >> $LOGFILE
350        if test "x${MAKEDEPEND}" != x ; then
351            echo "${MAKEDEPEND}" | grep -i cyrus > /dev/null 2>&1
352            RETVAL=$?
353            if test x"$RETVAL" = x0 ; then
354                build_cyrus_makedepend
355                RETVAL=$?
356                if test "x$RETVAL" != x0 ; then
357                    echo "WARNING: unable to build cyrus-makedepend. Try 'makedepend'"
358                    MAKEDEPEND=
359                fi
360            else
361                echo "${MAKEDEPEND}" | grep 'tools.xmakedepend' > /dev/null 2>&1
362                RETVAL=$?
363                if test "x$RETVAL" = x0 ; then
364                    MAKEDEPEND='$(TOOLSDIR)/xmakedepend'
365                fi
366                echo " -->     MAKEDEPEND=${MAKEDEPEND}" >> $LOGFILE
367            fi
368        fi
369      if test "x${MAKEDEPEND}" = x ; then      if test "x${MAKEDEPEND}" = x ; then
370          which makedepend > /dev/null 2>&1          which makedepend > /dev/null 2>&1
371          RV0=$?          RV0=$?
# Line 370  EOF Line 390  EOF
390          test -f $MAKEFILE".tst"  &&  mv -f $MAKEFILE".tst" $MAKEFILE          test -f $MAKEFILE".tst"  &&  mv -f $MAKEFILE".tst" $MAKEFILE
391          if test "x${RV0}${RV1}" = x00 ; then          if test "x${RV0}${RV1}" = x00 ; then
392              MAKEDEPEND=makedepend              MAKEDEPEND=makedepend
393                echo " --> set MAKEDEPEND=${MAKEDEPEND}" >> $LOGFILE
394          else          else
395              echo "    a system-default makedepend was not found."              echo "    system-default makedepend not found. Try to build cyrus-makedepend"
396              #  Try to build the cyrus implementation              #  Try to build the cyrus implementation
397              build_cyrus_makedepend              build_cyrus_makedepend
398              RETVAL=$?              RETVAL=$?
399              if test "x$RETVAL" != x0 ; then              if test "x$RETVAL" != x0 ; then
400                    echo "WARNING: unable to build cyrus-makedepend. Use local xmakedepend"
401                  MAKEDEPEND='$(TOOLSDIR)/xmakedepend'                  MAKEDEPEND='$(TOOLSDIR)/xmakedepend'
402                    echo " --> set MAKEDEPEND=${MAKEDEPEND}" >> $LOGFILE
403              fi              fi
             rm -f ./genmake_cy_md  
         fi  
     else  
         #  echo "MAKEDEPEND=${MAKEDEPEND}"  
         echo "${MAKEDEPEND}" | grep -i cyrus > /dev/null 2>&1  
         RETVAL=$?  
         if test x"$RETVAL" = x0 ; then  
             build_cyrus_makedepend  
404          fi          fi
405      fi      fi
406  }  }
407    
408  build_cyrus_makedepend()  {  build_cyrus_makedepend()  {
409        echo >> $LOGFILE
410        echo "running: build_cyrus_makedepend()" >> $LOGFILE
411      rm -f ./genmake_cy_md      rm -f ./genmake_cy_md
412      (      (
413          cd $ROOTDIR/tools/cyrus-imapd-makedepend  \          cd $ROOTDIR/tools/cyrus-imapd-makedepend  \
# Line 407  build_cyrus_makedepend()  { Line 424  build_cyrus_makedepend()  {
424      rm -f ./genmake_cy_md      rm -f ./genmake_cy_md
425      if test "x$RETVAL" = x0 ; then      if test "x$RETVAL" = x0 ; then
426          MAKEDEPEND='$(TOOLSDIR)/cyrus-imapd-makedepend/makedepend'          MAKEDEPEND='$(TOOLSDIR)/cyrus-imapd-makedepend/makedepend'
427            echo " --> set MAKEDEPEND=${MAKEDEPEND}" >> $LOGFILE
428          return 0          return 0
429      else      else
430          echo "WARNING: unable to build cyrus-imapd-makedepend"          echo "WARNING: fail to build cyrus-imapd-makedepend" >> $LOGFILE
431          return 1          return 1
432      fi      fi
433  }  }
# Line 1053  FOPTIM= Line 1071  FOPTIM=
1071  FEXTRAFLAGS=  FEXTRAFLAGS=
1072  USE_EXTENDED_SRC=  USE_EXTENDED_SRC=
1073  EXTENDED_SRC_FLAG=  EXTENDED_SRC_FLAG=
1074    GET_FC_VERSION=
1075  CFLAGS=  CFLAGS=
1076  KFLAGS1=  KFLAGS1=
1077  KFLAGS2=  KFLAGS2=
# Line 1109  MACHINE=`uname -a` Line 1128  MACHINE=`uname -a`
1128  EXECUTABLE=  EXECUTABLE=
1129  EXEHOOK=  EXEHOOK=
1130  EXEDIR=  EXEDIR=
 PACKAGES_CONF=  
1131  IEEE=  IEEE=
1132  if test "x$MITGCM_IEEE" != x ; then  if test "x$MITGCM_IEEE" != x ; then
1133      IEEE=$MITGCM_IEEE      IEEE=$MITGCM_IEEE
# Line 1131  SVD_TAMC_FLAGS= Line 1149  SVD_TAMC_FLAGS=
1149  TAMC_EXTRA=  TAMC_EXTRA=
1150    
1151  #  The following state can be set directly by command-line switches  #  The following state can be set directly by command-line switches
1152  gm_s1="OPTFILE PKG_DEPEND PKG_GROUPS MAKEFILE MAKEDEPEND PLATFORM ROOTDIR MODS DISABLE ENABLE"  gm_s1="OPTFILE PKG_DEPEND PKG_GROUPS DISABLE ENABLE MAKEFILE MAKEDEPEND PLATFORM"
1153  gm_s2="FC CC IEEE USE_R4 TS PAPIS PCLS PAPI PCL HPMT GSL DEVEL MPI OMP DUMPSTATE STANDARDDIRS"  gm_s2="FC CC MPI OMP USE_R4 TS PAPIS PCLS PAPI PCL HPMT IEEE DEVEL GSL FEXTRAFLAGS"
1154    gm_s3="ROOTDIR STANDARDDIRS MODS DUMPSTATE"
1155    
1156  #  The following state is not directly set by command-line switches  #  The following state is not directly set by command-line switches
1157  gm_s3="LN S64 LINK MAKE PACKAGES INCLUDES FFLAGS FOPTIM FEXTRAFLAGS"  gm_s4="LN S64 LINK MAKE PACKAGES INCLUDES FFLAGS FOPTIM"
1158  gm_s4="CFLAGS LIBS KPP KFLAGS1 KFLAGS2 KPPFILES NOOPTFILES NOOPTFLAGS"  gm_s5="CFLAGS LIBS KPP KFLAGS1 KFLAGS2 KPPFILES NOOPTFILES NOOPTFLAGS"
1159  gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD THISHOST THISUSER THISDATE THISVER MACHINE"  gm_s6="TOOLSDIR SOURCEDIRS INCLUDEDIRS EXEDIR EXECUTABLE EXEHOOK"
1160  gm_s6="EXECUTABLE EXEHOOK EXEDIR PACKAGES_CONF"  gm_s7="PWD THISHOST THISUSER THISDATE THISVER MACHINE"
1161  gm_s7="FC_NAMEMANGLE HAVE_NETCDF HAVE_SYSTEM HAVE_FDATE HAVE_ETIME"  gm_s8="FC_NAMEMANGLE HAVE_NETCDF HAVE_SYSTEM HAVE_FDATE HAVE_ETIME"
1162    
1163  #  The following are all related to adjoint/tangent-linear stuff  #  The following are all related to adjoint/tangent-linear stuff
1164  gm_s10="AUTODIFF_PKG_USED AD_OPTFILE TAMC TAF AD_TAMC_FLAGS AD_TAF_FLAGS"  gm_s10="AUTODIFF_PKG_USED AD_OPTFILE TAMC TAF AD_TAMC_FLAGS AD_TAF_FLAGS"
1165  gm_s11="FTL_TAMC_FLAGS FTL_TAF_FLAGS SVD_TAMC_FLAGS SVD_TAF_FLAGS"  gm_s11="FTL_TAMC_FLAGS FTL_TAF_FLAGS SVD_TAMC_FLAGS SVD_TAF_FLAGS"
1166  gm_s12="TAF_EXTRA TAMC_EXTRA"  gm_s12="TAF_EXTRA TAMC_EXTRA"
1167    
1168  gm_state="COMMANDL $gm_s1 $gm_s2 $gm_s3 $gm_s4 $gm_s5 $gm_s6 $gm_s7"  gm_state="COMMANDL $gm_s1 $gm_s2 $gm_s3 $gm_s4 $gm_s5 $gm_s6 $gm_s7 $gm_s8"
1169  gm_state="$gm_state $gm_s10 $gm_s11 $gm_s12"  gm_state="$gm_state $gm_s10 $gm_s11 $gm_s12"
1170    
1171  cat <<EOF  cat <<EOF
# Line 1296  for ac_option in "$@" ; do Line 1315  for ac_option in "$@" ; do
1315          -fs90=* | --fs90=*)          -fs90=* | --fs90=*)
1316              FS90=$ac_optarg ;;              FS90=$ac_optarg ;;
1317                    
1318            -use_real4 | -use_r4 | -ur4 | --use_real4 | --use_r4 | --ur4 )
1319                USE_R4=true ;;
1320    
1321          -ieee | --ieee)          -ieee | --ieee)
1322              IEEE=true ;;              IEEE=true ;;
1323          -noieee | --noieee)          -noieee | --noieee)
1324              IEEE= ;;              echo "Warning: ignore option '$ac_option' (default is already without '-ieee')" ;;
1325            -devel | --devel)
1326          -use_real4 | -use_r4 | -ur4 | --use_real4 | --use_r4 | --ur4 )              IEEE=true ; DEVEL=true ;;
1327              USE_R4=true ;;          -gsl | --gsl)
1328                GSL=true ;;
1329    
1330          -ts | --ts)          -ts | --ts)
1331              TS=true ;;              TS=true ;;
# Line 1319  for ac_option in "$@" ; do Line 1342  for ac_option in "$@" ; do
1342          -hpmt | --hpmt)          -hpmt | --hpmt)
1343              HPMT=true ;;              HPMT=true ;;
1344    
         -gsl | --gsl)  
             GSL=true ;;  
   
         -devel | --devel)  
             DEVEL=true ;;  
   
1345          -mpi | --mpi)          -mpi | --mpi)
1346              MPI=true ;;              MPI=true ;;
1347          -mpi=* | --mpi=*)          -mpi=* | --mpi=*)
# Line 1340  for ac_option in "$@" ; do Line 1357  for ac_option in "$@" ; do
1357          -ds | --ds)          -ds | --ds)
1358              DUMPSTATE=t ;;              DUMPSTATE=t ;;
1359                    
1360            -extra_flag | --extra_flag)
1361                ac_prev=FEXTRAFLAGS ;;
1362            -extra_flag=* | --extra_flag=*)
1363                FEXTRAFLAGS=$ac_optarg ;;
1364            
1365          -taf_extra | --taf_extra)          -taf_extra | --taf_extra)
1366              ac_prev=TAF_EXTRA ;;              ac_prev=TAF_EXTRA ;;
1367          -taf_extra=* | --taf_extra=*)          -taf_extra=* | --taf_extra=*)
# Line 1375  if test -f ./.genmakerc ; then Line 1397  if test -f ./.genmakerc ; then
1397      echo "WARNING: genmake2 has detected a copy of the old-style \"./.genmakerc\""      echo "WARNING: genmake2 has detected a copy of the old-style \"./.genmakerc\""
1398      echo "  file.  This file format is no longer supported.  For directions on"      echo "  file.  This file format is no longer supported.  For directions on"
1399      echo "  how to setup and use the new \"genmake2\" script, please see:"      echo "  how to setup and use the new \"genmake2\" script, please see:"
1400      echo "    http://mitgcm.org/devel_HOWTO/"      echo "    http://mitgcm.org/public/devel_HOWTO/"
1401      echo "  and send an email to MITgcm-support@mitgcm.org if you need help."      echo "  and send an email to MITgcm-support@mitgcm.org if you need help."
1402      echo "WARNING: ignore \"./.genmakerc\" and continue."      echo "WARNING: ignore \"./.genmakerc\" and continue."
1403      echo      echo
# Line 1390  if test "x${ROOTDIR}" = x ; then Line 1412  if test "x${ROOTDIR}" = x ; then
1412          for d in . .. ../.. ../../.. ../../../.. ../../../../.. ; do          for d in . .. ../.. ../../.. ../../../.. ../../../../.. ; do
1413              if [ -d "$d/model" -a -d "$d/eesupp" -a -d "$d/pkg" ]; then              if [ -d "$d/model" -a -d "$d/eesupp" -a -d "$d/pkg" ]; then
1414                  ROOTDIR=$d                  ROOTDIR=$d
1415                  printf "Warning:  ROOTDIR was not specified but there appears to be"                  printf "Warning: ROOTDIR was not specified ;"
1416                  echo " a copy of MITgcm at \"$ROOTDIR\" so we'll try it."                  echo " try using a local copy of MITgcm found at \"$ROOTDIR\""
1417                  break                  break
1418              fi              fi
1419          done          done
# Line 1423  if test "x$MAKEFILE" = x ; then Line 1445  if test "x$MAKEFILE" = x ; then
1445      MAKEFILE="Makefile"      MAKEFILE="Makefile"
1446  fi  fi
1447    
1448  echo "  getting OPTFILE information:  "  echo "  getting OPTFILE information:"
1449  if test "x${OPTFILE}" = x ; then  if test "x${OPTFILE}" = x ; then
1450      if test "x$MITGCM_OF" = x ; then      if test "x$MITGCM_OF" = x ; then
1451          echo "Warning: no OPTFILE specified so we'll look for possible settings"          echo "Warning: no OPTFILE specified so we'll look for possible settings"
# Line 1452  if test "x$OPTFILE" != xNONE ; then Line 1474  if test "x$OPTFILE" != xNONE ; then
1474      fi      fi
1475  fi  fi
1476    
1477  echo "  getting AD_OPTFILE information:  "  echo "  getting AD_OPTFILE information:"
1478  if test "x${AD_OPTFILE}" = x ; then  if test "x${AD_OPTFILE}" = x ; then
1479      if test "x$MITGCM_AD_OF" = x ; then      if test "x$MITGCM_AD_OF" = x ; then
1480          AD_OPTFILE=$ROOTDIR/tools/adjoint_options/adjoint_default          AD_OPTFILE=$ROOTDIR/tools/adjoint_options/adjoint_default
# Line 1498  Error: no Fortran compiler: please speci Line 1520  Error: no Fortran compiler: please speci
1520  EOF  EOF
1521      exit 1      exit 1
1522  fi  fi
1523    if test "x$GET_FC_VERSION" != x ; then
1524      echo "Get compiler version using: $FC $GET_FC_VERSION" >> $LOGFILE
1525      $FC $GET_FC_VERSION > genmake_fc_vers1 2> genmake_fc_vers2
1526      if test -s genmake_fc_vers1 ; then
1527        cat genmake_fc_vers1 >> $LOGFILE
1528      else
1529        cat genmake_fc_vers2 >> $LOGFILE
1530      fi
1531      echo "<-- compiler version ----" >> $LOGFILE
1532      rm -f genmake_fc_vers1 genmake_fc_vers2
1533    fi
1534    
1535  if test "x$CC" = x ; then  if test "x$CC" = x ; then
1536      look_for_C_compilers      look_for_C_compilers
# Line 2659  all: \$(EXECUTABLE) Line 2692  all: \$(EXECUTABLE)
2692  \$(EXECUTABLE): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(OBJFILES) \$(EMBEDDED_FILES)  \$(EXECUTABLE): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(OBJFILES) \$(EMBEDDED_FILES)
2693          @echo Creating \$@ ...          @echo Creating \$@ ...
2694          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)
2695    
2696  depend:  depend:
2697          @make links          @make links
2698          \$(MAKEDEPEND) -o .$FS \$(DEFINES) \$(INCLUDES) \$(F77_SRC_FILES)          \$(MAKEDEPEND) -o .$FS \$(DEFINES) \$(INCLUDES) \$(F77_SRC_FILES)
# Line 2671  libmitgcmuv.a: \$(OBJFILES) Line 2705  libmitgcmuv.a: \$(OBJFILES)
2705          ar rcv libmitgcmuv.a \$(OBJFILES)          ar rcv libmitgcmuv.a \$(OBJFILES)
2706          ar d   libmitgcmuv.a main.o          ar d   libmitgcmuv.a main.o
2707    
2708    obj: \$(OBJFILES)
2709    
2710  links: \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(SPECIAL_FILES)  links: \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) \$(SPECIAL_FILES)
2711    
2712  small_f: \$(F77_PP_SRC_FILES) \$(F90_PP_SRC_FILES)  small_f: \$(F77_PP_SRC_FILES) \$(F90_PP_SRC_FILES)
# Line 2699  Clean: Line 2735  Clean:
2735  CLEAN:  CLEAN:
2736          @make Clean          @make Clean
2737          -rm -f \$(EXECUTABLE) \$(EXE_AD) *.bak          -rm -f \$(EXECUTABLE) \$(EXE_AD) *.bak
2738          -rm -f $LOGFILE genmake_state genmake_*optfile genmake.tr_log make.tr_log          -rm -f $LOGFILE genmake_state genmake_*optfile
2739            -rm -f SIZE.h.mpi genmake.tr_log make.tr_log
2740          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;          -find \$(EXEDIR) -name "*.meta" -exec rm {} \;
2741          -find \$(EXEDIR) -name "*.data" -exec rm {} \;          -find \$(EXEDIR) -name "*.data" -exec rm {} \;
2742          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;          -find \$(EXEDIR) -name "fort.*" -exec rm {} \;
# Line 3227  if test "x$DUMPSTATE" = xt ; then Line 3264  if test "x$DUMPSTATE" = xt ; then
3264      for i in $gm_state ; do      for i in $gm_state ; do
3265          t1="t2=\$$i"          t1="t2=\$$i"
3266          eval $t1          eval $t1
3267          echo "$i='$t2'" >> genmake_state          echo "$i='$t2'" | sed -e 's/  */ /g' >> genmake_state
3268      done      done
3269  fi  fi

Legend:
Removed from v.1.215  
changed lines
  Added in v.1.224

  ViewVC Help
Powered by ViewVC 1.1.22