/[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.186 by jmc, Sun Mar 29 19:09:24 2009 UTC revision 1.192 by jmc, Wed Apr 22 21:03:52 2009 UTC
# Line 611  Usage: "$0" [OPTIONS] Line 611  Usage: "$0" [OPTIONS]
611            set to PATH. i.e. Include files from \$PATH/include, link to libraries            set to PATH. i.e. Include files from \$PATH/include, link to libraries
612            from \$PATH/lib and use binaries from \$PATH/bin.            from \$PATH/lib and use binaries from \$PATH/bin.
613    
614        -omp | --omp
615              Activate OpenMP code + use Compiler option OMPFLAG
616        -omp=OMPFLAG | --omp=OMPFLAG
617              Activate OpenMP code + use Compiler option OMPFLAG
618    
619      -es | --es | -embed-source | --embed-source      -es | --es | -embed-source | --embed-source
620            Embed a tarball containing the full source code            Embed a tarball containing the full source code
621            (including the Makefile, etc.) used to build the            (including the Makefile, etc.) used to build the
# Line 1058  NOOPTFILES= Line 1063  NOOPTFILES=
1063  NOOPTFLAGS=  NOOPTFLAGS=
1064  MPI=  MPI=
1065  MPIPATH=  MPIPATH=
1066    OMP=
1067    OMPFLAG=
1068  TS=  TS=
1069  PAPIS=  PAPIS=
1070  PCLS=  PCLS=
# Line 1125  TAMC_EXTRA= Line 1132  TAMC_EXTRA=
1132    
1133  #  The following state can be set directly by command-line switches  #  The following state can be set directly by command-line switches
1134  gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE"  gm_s1="OPTFILE PDEPEND PDEFAULT MAKEFILE PLATFORM ROOTDIR MODS DISABLE ENABLE"
1135  gm_s2="FC CPP IEEE TS PAPIS PCLS PAPI PCL HPMT GSL DEVEL MPI JAM DUMPSTATE STANDARDDIRS"  gm_s2="FC CPP IEEE TS PAPIS PCLS PAPI PCL HPMT GSL DEVEL MPI OMP DUMPSTATE STANDARDDIRS"
1136    
1137  #  The following state is not directly set by command-line switches  #  The following state is not directly set by command-line switches
1138  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPEND PDEPEND PDEFAULT INCLUDES FFLAGS FOPTIM FEXTRAFLAGS"  gm_s3="LN S64 KPP LINK PACKAGES MAKEDEPEND PDEPEND PDEFAULT INCLUDES FFLAGS FOPTIM FEXTRAFLAGS"
# Line 1166  else Line 1173  else
1173  fi  fi
1174    
1175  #echo "$0::$1:$2:$3:$4:$5:$6:$7:"  #echo "$0::$1:$2:$3:$4:$5:$6:$7:"
 #OPTIONS=  
 #n=0  
 #for i ; do  
 #   echo "$i  $n"  
 #   setvar="OPTIONS[$n]='$i'"  
 #   #  echo "  $setvar"  
 #   eval "$setvar"  
 #   n=$(( $n + 1 ))  
 #done  
1176  #parse_options  #parse_options
1177  ac_prev=  ac_prev=
1178  for ac_option in "$@" ; do  for ac_option in "$@" ; do
# Line 1326  for ac_option in "$@" ; do Line 1324  for ac_option in "$@" ; do
1324              MPIPATH=$ac_optarg              MPIPATH=$ac_optarg
1325              MPI=true ;;              MPI=true ;;
1326                    
1327  #       -jam | --jam)          -omp | --omp)
1328  #           JAM=1 ;;              OMP=true ;;
1329  #       -nojam | --nojam)          -omp=* | --omp=*)
1330  #           JAM=0 ;;              OMPFLAG=$ac_optarg
1331                OMP=true ;;
1332                    
1333          -ds | --ds)          -ds | --ds)
1334              DUMPSTATE=t ;;              DUMPSTATE=t ;;
# Line 1567  if test ! "x$MPI" = x ; then Line 1566  if test ! "x$MPI" = x ; then
1566        echo "  Turning on MPI cpp macros"        echo "  Turning on MPI cpp macros"
1567        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"
1568  fi  fi
1569    if test ! "x$OMP" = x ; then
1570          echo "  Add OMPFLAG and turn on OpenMP cpp macros"
1571          FFLAGS="$FFLAGS $OMPFLAG"
1572          F90FLAGS="$F90FLAGS $OMPFLAG"
1573          DEFINES="$DEFINES -DUSE_OMP_THREADING"
1574    fi
1575    
1576  if test ! "x$TS" = x ; then  if test ! "x$TS" = x ; then
1577        echo "  Turning on timing per timestep"        echo "  Turning on timing per timestep"
# Line 1776  fi Line 1781  fi
1781    
1782  printf "\n===  Setting defaults  ===\n"  printf "\n===  Setting defaults  ===\n"
1783  printf "  Adding MODS directories: "  printf "  Adding MODS directories: "
 MPI_LNKF=  
1784  for d in $MODS ; do  for d in $MODS ; do
1785      if test ! -d $d ; then      if test ! -d $d ; then
1786          echo          echo
# Line 1786  for d in $MODS ; do Line 1790  for d in $MODS ; do
1790          printf "$d "          printf "$d "
1791          SOURCEDIRS="$SOURCEDIRS $d"          SOURCEDIRS="$SOURCEDIRS $d"
1792          INCLUDEDIRS="$INCLUDEDIRS $d"          INCLUDEDIRS="$INCLUDEDIRS $d"
         #-------------------------------------------------------  
         # Put special links so that MPI specific files are used  
         MPI_FILES=`(cd $d ; find . -name "*_mpi" -print)`  
         for i in $MPI_FILES ; do  
           ii=`echo $i | sed 's:^\./::'`  
           name=`echo $ii | sed 's:_mpi::' `  
           if test "x$MPI" = x ; then  
           # NO: We undo an _mpi symbolically linked file  
             if test -L $name ; then  
               cmp $name "$d/$ii" > /dev/null 2>&1  
               RETVAL=$?  
               if test "x$RETVAL" = x0 ; then  
                 printf "Un-linking $name ; "  
                 rm -f $name  
               fi  
             fi  
           else  
           # YES: We symbolically link this file (with conditions if already there)  
             if test -L $name ; then  
               cmp $d/$ii $name > /dev/null 2>&1  
               RETVAL=$?  
               yy=0 ;  
               for xx in $MPI_LNKF ; do if test $xx = $name ; then yy=1 ; fi ; done  
               if test "x$RETVAL" != x0 -a $yy = 0 ; then  
               # remove sym-link if different and has not just been linked  
                 printf "Un-link + "  
                 rm -f $name  
               fi  
               if test "x$RETVAL" = x0 ; then  
               # if identical, keep sym-link and keep record of it  
                 MPI_LNKF="$MPI_LNKF $name"  
               fi  
             fi  
             if ! test -f $name ; then  
               # make sym-link and keep record of it  
                 printf "Linking $ii to $name ; "  
                 ln -sf $d/$ii $name  
                 MPI_LNKF="$MPI_LNKF $name"  
             fi  
           fi  
         done  
         #-------------------------------------------------------  
1793      fi      fi
1794  done  done
1795  echo  echo
 #echo "MPI_LNKF='$MPI_LNKF'"  
1796    
1797  if test "x${PLATFORM}" = x ; then  if test "x${PLATFORM}" = x ; then
1798      PLATFORM=$p_PLATFORM      PLATFORM=$p_PLATFORM
# Line 2506  echo "" >> F90srclist.tmp Line 2467  echo "" >> F90srclist.tmp
2467  echo "" >> hsrclist.tmp  echo "" >> hsrclist.tmp
2468  echo "" >> ad_flow_files.tmp  echo "" >> ad_flow_files.tmp
2469    
2470    CMDLINE=$0
2471    for xx in "$@" ; do nw=`echo $xx | wc -w`
2472        if test $nw = '1' ; then CMDLINE="$CMDLINE $xx"
2473                            else CMDLINE="$CMDLINE '$xx'" ; fi
2474    done
2475    
2476  if test -f $MAKEFILE ; then  if test -f $MAKEFILE ; then
2477      mv -f $MAKEFILE "$MAKEFILE.bak"      mv -f $MAKEFILE "$MAKEFILE.bak"
2478  fi  fi
# Line 2515  echo "#    $MACHINE" >> $MAKEFILE Line 2482  echo "#    $MACHINE" >> $MAKEFILE
2482  echo "# This makefile was generated automatically on" >> $MAKEFILE  echo "# This makefile was generated automatically on" >> $MAKEFILE
2483  echo "#    $THISDATE" >> $MAKEFILE  echo "#    $THISDATE" >> $MAKEFILE
2484  echo "# by the command:" >> $MAKEFILE  echo "# by the command:" >> $MAKEFILE
2485  echo "#    $0 $G2ARGS" >> $MAKEFILE  echo "#    $CMDLINE"  >> $MAKEFILE
2486  echo "# executed by:" >> $MAKEFILE  echo "# executed by:" >> $MAKEFILE
2487  echo "#    ${THISUSER}@${THISHOST}:${THISCWD}" >> $MAKEFILE  echo "#    ${THISUSER}@${THISHOST}:${THISCWD}" >> $MAKEFILE
2488    
# Line 2572  else Line 2539  else
2539      echo "EMBEDDED_FILES = " >>$MAKEFILE      echo "EMBEDDED_FILES = " >>$MAKEFILE
2540  fi  fi
2541    
 #  Note: figure out some way to add Hyades JAM libraries here  
2542  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2543  # Unix ln (link)  # Unix ln (link)
2544  LN = ${LN}  LN = ${LN}
# Line 2812  adall: \$(EXE_AD) Line 2778  adall: \$(EXE_AD)
2778  adtaf: ad_taf_output.$FS  adtaf: ad_taf_output.$FS
2779  adtamc: ad_tamc_output.$FS  adtamc: ad_tamc_output.$FS
2780    
2781  ad_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES)  ad_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES) \$(AD_FLOW_FILES)
2782          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ad_config.template          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN -UALLOW_ECCO_OPTIMIZATION > ad_config.template
2783          cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h          cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
2784          -rm -f ad_config.template          -rm -f ad_config.template
# Line 3090  ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f Line 3056  ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f
3056    
3057  PPEXTRAS=\$(wildcard ../OAD_support/ad_template.*.F) ../OAD_support/ad_inline.F  PPEXTRAS=\$(wildcard ../OAD_support/ad_template.*.F) ../OAD_support/ad_inline.F
3058  # postprocess F'  # postprocess F'
3059  ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.pp.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f$FS90 multi-pp.pl \$(PPEXTRAS:.F=.f)  ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.pp.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.f$FS90 postProcess.py \$(PPEXTRAS:.F=.f)
3060          perl multi-pp.pl -inline=../OAD_support/ad_inline.f \$<          ./postProcess.py -m r -i ../OAD_support/ad_inline.f -o \$@ \$<
         # the postprocessor still gets the name wrong  
         cat \$<.pp | sed 's/RETURN//' > \$@  
3061    
3062  # extract all transformed modules  # extract all transformed modules
3063  all_mods.xb.x2w.w2f.pp.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.pp.f$FS90  all_mods.xb.x2w.w2f.pp.f$FS90: ad_input_code_sf.w2f.pre.xb.x2w.w2f.td.pp.f$FS90
# Line 3120  mfef90: Line 3084  mfef90:
3084  whirl2xaif xaif2whirl:  whirl2xaif xaif2whirl:
3085          \$(LN) \${OPENADFORTTK}/bin/\$@ .          \$(LN) \${OPENADFORTTK}/bin/\$@ .
3086    
3087  %.pl:  preProcess.py postProcess.py:
         \$(LN) \${OPENADFORTTK}/bin/\$@ .  
   
 preProcess.py:  
3088          \$(LN) \${OPENADFORTTK_BASE}/tools/SourceProcessing/\$@ .          \$(LN) \${OPENADFORTTK_BASE}/tools/SourceProcessing/\$@ .
3089    
3090  whirl2f whirl2f_be:  whirl2f whirl2f_be:

Legend:
Removed from v.1.186  
changed lines
  Added in v.1.192

  ViewVC Help
Powered by ViewVC 1.1.22