/[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.237 by jmc, Fri Aug 24 23:41:17 2012 UTC revision 1.249 by utke, Sat Feb 23 04:24:42 2013 UTC
# Line 174  EOF Line 174  EOF
174  test_for_package_in_cpp_options() {  test_for_package_in_cpp_options() {
175      cpp_options=$1      cpp_options=$1
176      pkg=$2      pkg=$2
177      test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_$pkg[ ]"      test_for_string_in_file $cpp_options "^ *# *define *\<ALLOW_$pkg\>"
178      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_$pkg[ ]"      test_for_string_in_file $cpp_options "^ *# *undef *\<ALLOW_$pkg\>"
179      test_for_string_in_file $cpp_options "^[ ]*#define.*DISABLE_$pkg[ ]"      test_for_string_in_file $cpp_options "^ *# *define *\<DISABLE_$pkg\>"
180      test_for_string_in_file $cpp_options "^[ ]*#undef.*DISABLE_$pkg[ ]"      test_for_string_in_file $cpp_options "^ *# *undef *\<DISABLE_$pkg\>"
     test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_$pkg$"  
     test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_$pkg$"  
     test_for_string_in_file $cpp_options "^[ ]*#define.*DISABLE_$pkg$"  
     test_for_string_in_file $cpp_options "^[ ]*#undef.*DISABLE_$pkg$"  
181  }  }
182    
183  # Search for particular CPP #cmds associated with MPI  # Search for particular CPP #cmds associated with MPI
184  # usage: test_for_mpi_in_cpp_eeoptions CPP_file  # usage: test_for_mpi_in_cpp_eeoptions CPP_file
185  test_for_mpi_in_cpp_eeoptions() {  test_for_mpi_in_cpp_eeoptions() {
186      cpp_options=$1      cpp_options=$1
187      test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_USE_MPI[ ]"      test_for_string_in_file $cpp_options "^ *# *define *\<ALLOW_USE_MPI\>"
188      test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_USE_MPI[ ]"      test_for_string_in_file $cpp_options "^ *# *undef *\<ALLOW_USE_MPI\>"
     test_for_string_in_file $cpp_options "^[ ]*#define.*ALWAYS_USE_MPI[ ]"  
     test_for_string_in_file $cpp_options "^[ ]*#undef.*ALWAYS_USE_MPI[ ]"  
     test_for_string_in_file $cpp_options "^[ ]*#define.*ALLOW_USE_MPI$"  
     test_for_string_in_file $cpp_options "^[ ]*#undef.*ALLOW_USE_MPI$"  
     test_for_string_in_file $cpp_options "^[ ]*#define.*ALWAYS_USE_MPI$"  
     test_for_string_in_file $cpp_options "^[ ]*#undef.*ALWAYS_USE_MPI$"  
189  }  }
190    
191  # Search for particular string in a file. Return 1 if detected, 0 if not  # Search for particular string in a file. Return 1 if detected, 0 if not
# Line 203  test_for_mpi_in_cpp_eeoptions() { Line 193  test_for_mpi_in_cpp_eeoptions() {
193  test_for_string_in_file() {  test_for_string_in_file() {
194      file=$1      file=$1
195      strng=$2      strng=$2
196      grep -i "$strng" $file > /dev/null 2>&1      grep "$strng" $file > /dev/null 2>&1
197      RETVAL=$?      RETVAL=$?
198      if test "x${RETVAL}" = x0 ; then      if test "x${RETVAL}" = x0 ; then
199          printf "Error: In $file there is an illegal line: "          printf "Error: In $file there is an illegal line: "
# Line 411  build_cyrus_makedepend()  { Line 401  build_cyrus_makedepend()  {
401      (      (
402          cd $ROOTDIR/tools/cyrus-imapd-makedepend  \          cd $ROOTDIR/tools/cyrus-imapd-makedepend  \
403              &&  ./configure > /dev/null 2>&1  \              &&  ./configure > /dev/null 2>&1  \
404              &&  make > /dev/null 2>&1              &&  $MAKE > /dev/null 2>&1
405          if test -x ./makedepend.exe ; then          if test -x ./makedepend.exe ; then
406              $LN ./makedepend.exe ./makedepend              $LN ./makedepend.exe ./makedepend
407          fi          fi
# Line 596  Error: No options file was found in:  $R Line 586  Error: No options file was found in:  $R
586  EOF  EOF
587          exit 1          exit 1
588      fi      fi
   
 #     # look for possible MPI libraries  
 #     mpi_libs=  
 #     mpi_fort=`which mpif77 2>/dev/null`  
 #     RETVAL=$?  
 #     if test "x${RETVAL}" = x0 ; then  
 #       cat >>test.f <<EOF  
 #       PROGRAM HELLO  
 #       DO 10, I=1,10  
 #       PRINT *,'Hello World'  
 #    10 CONTINUE  
 #       STOP  
 #       END  
 # EOF  
 #       eval "$mpi_fort -showme test.f > out"  
 #       RETVAL=$?  
 #       if test "x${RETVAL}" = x0 ; then  
 #           a=`cat out`  
 #           for i in $a ; do  
 #               case $i in  
 #                   -*)  
 #                       mpi_libs="$mpi_libs $i" ;;  
 #               esac  
 #           done  
 #           echo "The MPI libs appear to be:"  
 #           echo "  "$mpi_libs  
 #       fi  
 #       rm -f test.f out  
 #     fi  
589  }  }
590    
591  #  Parse the package dependency information  #  Parse the package dependency information
# Line 946  check_netcdf_libs()  { Line 907  check_netcdf_libs()  {
907        program fgennc        program fgennc
908  #include "netcdf.inc"  #include "netcdf.inc"
909  EOF  EOF
910      if test ! "x$MPI" = x ; then     #if test ! "x$MPI" = x ; then
911          echo '#include "mpif.h"' >> genmake_tnc.F     #    echo '#include "mpif.h"' >> genmake_tnc.F
912      fi     #fi
913      cat <<EOF >> genmake_tnc.F      cat <<EOF >> genmake_tnc.F
914        integer iret, ncid, xid        integer iret, ncid, xid
915        iret = nf_create('genmake_tnc.nc', NF_CLOBBER, ncid)        iret = nf_create('genmake_tnc.nc', NF_CLOBBER, ncid)
# Line 1131  EOF Line 1092  EOF
1092      echo " --> set HAVE_LAPACK='$HAVE_LAPACK'" >> $LOGFILE      echo " --> set HAVE_LAPACK='$HAVE_LAPACK'" >> $LOGFILE
1093  }  }
1094    
1095    check_HAVE_FLUSH()  {
1096        if test ! "x$SKIP_CHECK_FLUSH" = x ; then
1097            return
1098        fi
1099        echo >> $LOGFILE
1100        echo "running: check_HAVE_FLUSH()" >> $LOGFILE
1101        cat <<EOF > genmake_tflsh.$FS
1102          program fgenflsh
1103          integer iounit
1104          character*9 fname
1105          iounit = 26
1106          fname = 'tmp.tflsh'
1107          open(iounit,FILE=fname,STATUS='unknown')
1108          write(iounit,*) 'genmake_tflsh: hello'
1109          call flush(iounit)
1110          close(iounit)
1111          end
1112    EOF
1113        echo "===  genmake_tflsh.$FS  >>>" > genmake_tflsh.log
1114        cat genmake_tflsh.$FS >> genmake_tflsh.log
1115        echo "<<<  genmake_tflsh.$FS  ===" >> genmake_tflsh.log
1116    
1117        echo "$FC $FFLAGS $FOPTIM -c genmake_tflsh.$FS  \ " >> genmake_tflsh.log
1118        echo "  &&  $LINK $FFLAGS $FOPTIM -o genmake_tflsh.o $LIBS" >> genmake_tflsh.log
1119        $FC $FFLAGS $FOPTIM -c genmake_tflsh.$FS >> genmake_tflsh.log 2>&1  \
1120            &&  $LINK $FFLAGS $FOPTIM -o genmake_tflsh genmake_tflsh.o $LIBS >> genmake_tflsh.log 2>&1
1121        RET_COMPILE=$?
1122    
1123        if test "x$RET_COMPILE" = x0 ; then
1124            HAVE_FLUSH=t
1125            #cat genmake_tflsh.log >> $LOGFILE
1126            echo "  check_HAVE_FLUSH: successful" >> $LOGFILE
1127        else
1128            HAVE_FLUSH=f
1129            cat genmake_tflsh.log >> $LOGFILE
1130        fi
1131        rm -f genmake_tflsh*
1132        echo " --> set HAVE_FLUSH='$HAVE_FLUSH'" >> $LOGFILE
1133    }
1134    
1135  ###############################################################################  ###############################################################################
1136  #   Sequential part of script starts here  #   Sequential part of script starts here
# Line 1188  GSL= Line 1188  GSL=
1188  DEVEL=  DEVEL=
1189  HAVE_TEST_L=  HAVE_TEST_L=
1190    
1191    # comment this line out to enable lapack test
1192    SKIP_LAPACK_CHECK=t
1193    
1194  # DEFINES checked by test compilation or command-line  # DEFINES checked by test compilation or command-line
1195  HAVE_SYSTEM=  HAVE_SYSTEM=
1196  HAVE_FDATE=  HAVE_FDATE=
# Line 1199  HAVE_NETCDF= Line 1202  HAVE_NETCDF=
1202  HAVE_ETIME=  HAVE_ETIME=
1203  IGNORE_TIME=  IGNORE_TIME=
1204  HAVE_LAPACK=  HAVE_LAPACK=
1205    HAVE_FLUSH=
1206    
1207  MODS=  MODS=
1208  TOOLSDIR=  TOOLSDIR=
# Line 1245  SVD_TAMC_FLAGS= Line 1249  SVD_TAMC_FLAGS=
1249  TAMC_EXTRA=  TAMC_EXTRA=
1250    
1251  #  The following state can be set directly by command-line switches  #  The following state can be set directly by command-line switches
1252  gm_s1="OPTFILE PKG_DEPEND PKG_GROUPS DISABLE ENABLE MAKEFILE MAKEDEPEND PLATFORM"  gm_s1="ROOTDIR STANDARDDIRS MODS PKG_DEPEND PKG_GROUPS DISABLE ENABLE"
1253  gm_s2="FC CC MPI OMP USE_R4 TS PAPIS PCLS PAPI PCL HPMT IEEE DEVEL GSL FEXTRAFLAGS"  gm_s2="PLATFORM OPTFILE MAKE MAKEFILE MAKEDEPEND FC CC MPI OMP USE_R4"
1254  gm_s3="ROOTDIR STANDARDDIRS MODS DUMPSTATE"  gm_s3="FEXTRAFLAGS IEEE DEVEL GSL TS PAPIS PCLS PAPI PCL HPMT DUMPSTATE"
1255    
1256  #  The following state is not directly set by command-line switches  #  The following state is not directly set by command-line switches
1257  gm_s4="LN S64 LINK MAKE PACKAGES INCLUDES FFLAGS FOPTIM"  gm_s4="LN S64 LINK PACKAGES INCLUDES FFLAGS FOPTIM"
1258  gm_s5="CFLAGS LIBS KPP KFLAGS1 KFLAGS2 KPPFILES NOOPTFILES NOOPTFLAGS"  gm_s5="CFLAGS LIBS KPP KFLAGS1 KFLAGS2 KPPFILES NOOPTFILES NOOPTFLAGS"
1259  gm_s6="TOOLSDIR SOURCEDIRS INCLUDEDIRS EXEDIR EXECUTABLE EXEHOOK"  gm_s6="PWD TOOLSDIR SOURCEDIRS INCLUDEDIRS EXEDIR EXECUTABLE EXEHOOK"
1260  gm_s7="PWD THISHOST THISUSER THISDATE THISVER MACHINE"  gm_s7="THISHOST THISUSER THISDATE THISVER MACHINE FC_NAMEMANGLE"
1261  gm_s8="FC_NAMEMANGLE HAVE_NETCDF HAVE_SYSTEM HAVE_FDATE HAVE_ETIME HAVE_LAPACK"  gm_s8="HAVE_NETCDF HAVE_SYSTEM HAVE_FDATE HAVE_ETIME HAVE_LAPACK HAVE_FLUSH"
1262    
1263  #  The following are all related to adjoint/tangent-linear stuff  #  The following are all related to adjoint/tangent-linear stuff
1264  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"
# Line 1697  check_for_broken_Ff Line 1701  check_for_broken_Ff
1701    
1702  if test ! "x$MPI" = x ; then  if test ! "x$MPI" = x ; then
1703        echo "  Turning on MPI cpp macros"        echo "  Turning on MPI cpp macros"
1704        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"        DEFINES="$DEFINES -DALLOW_USE_MPI"
1705    #- To compile code older than checkpoint63s (2012/09/05), un-comment the following line:
1706    #     DEFINES="$DEFINES -DALWAYS_USE_MPI"
1707  fi  fi
1708  if test ! "x$OMP" = x ; then  if test ! "x$OMP" = x ; then
1709        echo "  Add OMPFLAG and turn on OpenMP cpp macros"        echo "  Add OMPFLAG and turn on OpenMP cpp macros"
# Line 1922  if test "x$HAVE_LAPACK" != x ; then Line 1928  if test "x$HAVE_LAPACK" != x ; then
1928  else  else
1929      echo "no"      echo "no"
1930  fi  fi
 DEFINES="$DEFINES $IGNORE_TIME"  
1931    
1932    printf "  Can we call FLUSH intrinsic subroutine...  "
1933    check_HAVE_FLUSH
1934    if test "x$HAVE_FLUSH" = xt ; then
1935        DEFINES="$DEFINES -DHAVE_FLUSH"
1936        echo "yes"
1937    else
1938        echo "no"
1939    fi
1940    
1941    DEFINES="$DEFINES $IGNORE_TIME"
1942  if test "x$EMBED_SRC" = xt ; then  if test "x$EMBED_SRC" = xt ; then
1943      build_embed_encode      build_embed_encode
1944  fi  fi
# Line 2521  if test "x$OPENAD" != x ; then Line 2536  if test "x$OPENAD" != x ; then
2536      OAD_DONT_TRANSFORM="/dev/null"      OAD_DONT_TRANSFORM="/dev/null"
2537      OAD_KEEP_ORIGINAL="/dev/null"      OAD_KEEP_ORIGINAL="/dev/null"
2538      OAD_CB2M_FILES="/dev/null"      OAD_CB2M_FILES="/dev/null"
2539        OADTOOLS="$TOOLSDIR/OAD_support"
2540        test -f "oadtempflile"  &&  \rm -f "oadtempflile"
2541    cat >> "oadtempflile" <<EOF
2542    $OADTOOLS
2543    EOF
2544      echo "  looking for dontCompile file:  "      echo "  looking for dontCompile file:  "
2545      for i in "." $MODS ; do      for i in "." $MODS ; do
2546          if test -r $i"/dontCompile" ; then          if test -r $i"/dontCompile" ; then
# Line 2715  cat >>$MAKEFILE <<EOF Line 2735  cat >>$MAKEFILE <<EOF
2735  # INCLUDES     : Directories searched for header files  # INCLUDES     : Directories searched for header files
2736  # DEFINES      : Macro definitions for CPP  # DEFINES      : Macro definitions for CPP
2737  # MAKEDEPEND   : Dependency generator  # MAKEDEPEND   : Dependency generator
 # KPP          : Special preprocessor command (specific to platform)  
 # KFLAGS       : Flags for KPP  
2738  # FC           : Fortran compiler command  # FC           : Fortran compiler command
2739  # FFLAGS       : Configuration/debugging options for FC  # FFLAGS       : Configuration/debugging options for FC
2740  # FOPTIM       : Optimization options for FC  # FOPTIM       : Optimization options for FC
# Line 2730  INCLUDEDIRS = ${INCLUDEDIRS} Line 2748  INCLUDEDIRS = ${INCLUDEDIRS}
2748  EXEDIR      = ${EXEDIR}  EXEDIR      = ${EXEDIR}
2749  EXECUTABLE  = \$(EXEDIR)/${EXECUTABLE}  EXECUTABLE  = \$(EXEDIR)/${EXECUTABLE}
2750  TOOLSDIR    = ${TOOLSDIR}  TOOLSDIR    = ${TOOLSDIR}
2751    OADTOOLS    = ${OADTOOLS}
2752    
2753  #eh3  new defines for the adjoint work  #eh3  new defines for the adjoint work
2754  AUTODIFF    = ${ROOTDIR}/pkg/autodiff  AUTODIFF    = ${ROOTDIR}/pkg/autodiff
# Line 2750  else Line 2769  else
2769      echo "EMBEDDED_FILES = " >>$MAKEFILE      echo "EMBEDDED_FILES = " >>$MAKEFILE
2770  fi  fi
2771    
2772    # extract default cpp search path so we can pass it to makedepend
2773    CPPINCLUDES=`cat /dev/null | $CPP -v 2>&1 | awk '/^End of search/{f=0}!/^\#/{if(f){printf " -I%s", $1;}}/^\#include "..." search start/{f=1}'`
2774    
2775  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2776  # Unix ln (link)  # Unix ln (link)
2777  LN = ${LN}  LN = ${LN}
 # C preprocessor  
 CPP = cat \$< | ${S64} | ${CPP}  
2778  # Dependency generator  # Dependency generator
2779  MAKEDEPEND = ${MAKEDEPEND}  MAKEDEPEND = ${MAKEDEPEND}
2780  # Special preprocessor (KAP on DECs, FPP on Crays)  # Special preprocessor (KAP on DECs, FPP on Crays)
# Line 2772  LINK = ${LINK} ${LDADD} Line 2792  LINK = ${LINK} ${LDADD}
2792  DEFINES = ${DEFINES}  DEFINES = ${DEFINES}
2793  # Includes for CPP  # Includes for CPP
2794  INCLUDES = ${INCLUDES}  INCLUDES = ${INCLUDES}
2795    # default CPP includes for makedepend
2796    CPPINCLUDES = ${CPPINCLUDES}
2797  # Flags for KPP  # Flags for KPP
2798  KFLAGS1 = ${KFLAGS1}  KFLAGS1 = ${KFLAGS1}
2799  KFLAGS2 = ${KFLAGS2}  KFLAGS2 = ${KFLAGS2}
# Line 2790  NOOPTFLAGS = ${NOOPTFLAGS} Line 2812  NOOPTFLAGS = ${NOOPTFLAGS}
2812  # Flags and libraries needed for linking  # Flags and libraries needed for linking
2813  LIBS = ${LIBS}  LIBS = ${LIBS}
2814  # Name of the makefile  # Name of the makefile
2815  MAKEFILE=${MAKEFILE}  MAKEFILE = ${MAKEFILE}
2816    # Name of the make program
2817    MAKE = ${MAKE}
2818    
2819  EOF  EOF
2820    
# Line 2821  echo '.SUFFIXES: .o .'$FS' .p .F .c .f'$ Line 2845  echo '.SUFFIXES: .o .'$FS' .p .F .c .f'$
2845    
2846  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2847    
2848  all: \$(EXECUTABLE)  all: fwd_exe_target
2849    fwd_exe_target:
2850            @echo Update AD_CONFIG.h and make \$(EXECUTABLE)
2851            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Forward version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template
2852            @cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
2853            @-rm -f ad_config.template
2854            \$(MAKE) -f \$(MAKEFILE) \$(EXECUTABLE)
2855    
2856  \$(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)
2857          @echo Creating \$@ ...          @echo Creating \$@ ...
2858          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) \$(LIBS)
2859    
2860  depend:  depend:
2861          @make -f \$(MAKEFILE) links          @\$(MAKE) -f \$(MAKEFILE) links
2862          \$(MAKEDEPEND) -f \$(MAKEFILE) -o .$FS \$(DEFINES) \$(INCLUDES) \$(F77_SRC_FILES)          \$(MAKEDEPEND) -f \$(MAKEFILE) -o .$FS \$(DEFINES) \$(INCLUDES) \$(CPPINCLUDES) \$(F77_SRC_FILES)
2863          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)          \$(TOOLSDIR)/f90mkdepend >> \$(MAKEFILE)
2864          -rm -f makedepend.out          -rm -f makedepend.out
2865    
# Line 2857  clean: Line 2888  clean:
2888    
2889  # remove most of the files that "make" and "make depend" generate  # remove most of the files that "make" and "make depend" generate
2890  Clean:  Clean:
2891          @make -f \$(MAKEFILE) clean          @\$(MAKE) -f \$(MAKEFILE) clean
2892          @make -f \$(MAKEFILE) cleanlinks          @\$(MAKE) -f \$(MAKEFILE) cleanlinks
2893          -rm -f \$(SPECIAL_FILES) f90mkdepend.log $MAKEFILE.old          -rm -f \$(SPECIAL_FILES) f90mkdepend.log $MAKEFILE.old
2894          -rm -f taf_command taf_output taf_ad.log taf_ad_flow.log taf_ftl.log          -rm -f taf_command taf_output taf_ad.log taf_ad_flow.log taf_ftl.log
2895          -rm -f genmake_warnings genmake_errors make.log          -rm -f genmake_warnings genmake_errors make.log
# Line 2866  Clean: Line 2897  Clean:
2897  # remove also the executable, files that "genmake2" generates (except Makefile)  # remove also the executable, files that "genmake2" generates (except Makefile)
2898  #         and output from a run (plus log files from testreport)  #         and output from a run (plus log files from testreport)
2899  CLEAN:  CLEAN:
2900          @make -f \$(MAKEFILE) Clean          @\$(MAKE) -f \$(MAKEFILE) Clean
2901          -rm -f \$(EXECUTABLE) \$(EXE_AD) \$(EXE_FTL) *.bak          -rm -f \$(EXECUTABLE) \$(EXE_AD) \$(EXE_FTL) *.bak
2902          -rm -f $LOGFILE genmake_state genmake_*optfile          -rm -f $LOGFILE genmake_state genmake_*optfile
2903          -rm -f SIZE.h.mpi genmake.tr_log make.tr_log          -rm -f SIZE.h.mpi genmake.tr_log make.tr_log
# Line 2885  cleanlinks: Line 2916  cleanlinks:
2916  # Special targets (SPECIAL_FILES) which are created by make  # Special targets (SPECIAL_FILES) which are created by make
2917  ${PACKAGES_DOT_H}:  ${PACKAGES_DOT_H}:
2918          @echo Creating \$@ ...          @echo Creating \$@ ...
2919          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bPACKAGES_CONFIG_H "Disabled packages:" \$(DISABLED_PACKAGES) " " "Enabled packages:" \$(ENABLED_PACKAGES) > \$@          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines -bPACKAGES_CONFIG_H "Disabled packages:" \$(DISABLED_PACKAGES) " " "Enabled packages:" \$(ENABLED_PACKAGES) > \$@
2920  AD_CONFIG.h:  AD_CONFIG.h:
2921          @echo Creating \$@ ...          @echo Creating \$@ ...
2922          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > \$@          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Default version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > \$@
2923  FC_NAMEMANGLE.h:  FC_NAMEMANGLE.h:
2924          @echo Creating \$@ ...          @echo Creating \$@ ...
2925          echo "$FC_NAMEMANGLE" > \$@          echo "$FC_NAMEMANGLE" > \$@
# Line 2928  cat >>$MAKEFILE <<EOF Line 2959  cat >>$MAKEFILE <<EOF
2959  ## This nullifies any default implicit rules concerning these two file types:  ## This nullifies any default implicit rules concerning these two file types:
2960  ## %.o : %.F  ## %.o : %.F
2961    
2962    # C preprocessing and replacing the _d in constants:
2963    CPPCMD = cat \$< | ${CPP} \$(DEFINES) \$(INCLUDES) | ${S64}
2964    
2965  .F.$FS:  .F.$FS:
2966          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD)  > \$@
2967  .$FS.o:  .$FS.o:
2968          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<
2969  .F.o:  .F.o:
2970          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<
2971  .F90.$FS90:  .F90.$FS90:
2972          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD)  > \$@
2973  .FF90.f$FS90:  .FF90.f$FS90:
2974          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD)  > \$@
2975  .$FS90.o:  .$FS90.o:
2976          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<
2977  .f$FS90.o:  .f$FS90.o:
# Line 2946  cat >>$MAKEFILE <<EOF Line 2980  cat >>$MAKEFILE <<EOF
2980  .c.o:  .c.o:
2981          \$(CC) \$(CFLAGS) \$(DEFINES) \$(INCLUDES) -c \$<          \$(CC) \$(CFLAGS) \$(DEFINES) \$(INCLUDES) -c \$<
2982  .flow.flowdir:  .flow.flowdir:
2983          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD) > \$@
2984    
2985  # Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain  # Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain
2986  .F.p:  .F.p:
2987          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD) > \$@
2988  .p.$FS:  .p.$FS:
2989          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<
2990    
# Line 2997  rm -f adSrcFiles.tmp Line 3031  rm -f adSrcFiles.tmp
3031  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
3032    
3033  # ... AD ...  # ... AD ...
3034  adall: \$(EXE_AD)  adall: ad_exe_target
3035  adtaf: ad_taf_output.$FS  adtaf: ad_taf_output.$FS
3036  adtamc: ad_tamc_output.$FS  adtamc: ad_tamc_output.$FS
3037    
3038  ad_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES) \$(AD_FLOW_FILES)  ad_exe_target:
3039          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template          @echo Update AD_CONFIG.h and make \$(EXE_AD)
3040            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Adjoint version" -bAD_CONFIG_H -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template
3041            @cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
3042            @-rm -f ad_config.template
3043            \$(MAKE) -f \$(MAKEFILE) \$(EXE_AD)
3044    
3045    ad_input_code.$FS: \$(AD_FILES) \$(AD_FLOW_FILES)
3046            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Adjoint version" -bAD_CONFIG_H -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template
3047          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
3048          -rm -f ad_config.template          @-rm -f ad_config.template
3049          @make -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)          @\$(MAKE) -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)
3050          @make -f \$(MAKEFILE) \$(FLOWFILES)          @\$(MAKE) -f \$(MAKEFILE) \$(FLOWFILES)
3051          cat \$(FLOWFILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ad_input_code.$FS          cat \$(FLOWFILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ad_input_code.$FS
3052    
3053  ad_taf_output.$FS: ad_input_code.$FS  ad_taf_output.$FS: ad_input_code.$FS
# Line 3019  adtafonly: Line 3060  adtafonly:
3060          ls -l ad_input_code_ad.$FS          ls -l ad_input_code_ad.$FS
3061          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.$FS          cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.$FS
3062    
3063  \${EXE_AD}: ad_taf_output.o \$(OBJFILES)  \$(EXE_AD): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) ad_taf_output.o \$(OBJFILES) \$(EMBEDDED_FILES)
3064          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)
3065    
3066  ad_tamc_output.$FS: ad_input_code.$FS  ad_tamc_output.$FS: ad_input_code.$FS
# Line 3038  adtrick: Line 3079  adtrick:
3079  adobj: ad_taf_output.o \$(OBJFILES)  adobj: ad_taf_output.o \$(OBJFILES)
3080    
3081  # ... FTL ...  # ... FTL ...
3082  ftlall: \$(EXE_FTL)  ftlall: ftl_exe_target
3083  ftltaf: ftl_taf_output.$FS  ftltaf: ftl_taf_output.$FS
3084  ftltamc: ftl_tamc_output.$FS  ftltamc: ftl_tamc_output.$FS
3085    
3086  ftl_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES)  ftl_exe_target:
3087          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ftl_config.template          @echo Update AD_CONFIG.h and make \$(EXE_FTL)
3088          cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "TangLin version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ad_config.template
3089          -rm -f ftl_config.template          @cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
3090          @make -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)          @-rm -f ad_config.template
3091          @make -f \$(MAKEFILE) \$(AD_FLOW_FILES)          \$(MAKE) -f \$(MAKEFILE) \$(EXE_FTL)
3092    
3093    ftl_input_code.$FS: \$(AD_FILES)
3094            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "TangLin version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ad_config.template
3095            cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
3096            @-rm -f ad_config.template
3097            @\$(MAKE) -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)
3098            @\$(MAKE) -f \$(MAKEFILE) \$(AD_FLOW_FILES)
3099          cat \$(AD_FLOW_FILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ftl_input_code.$FS          cat \$(AD_FLOW_FILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ftl_input_code.$FS
3100    
3101  ftl_taf_output.$FS: ftl_input_code.$FS  ftl_taf_output.$FS: ftl_input_code.$FS
# Line 3060  ftltafonly: Line 3108  ftltafonly:
3108          ls -l ftl_input_code_ftl.$FS          ls -l ftl_input_code_ftl.$FS
3109          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS
3110    
3111  \${EXE_FTL}: ftl_taf_output.o \$(OBJFILES)  \$(EXE_FTL): \$(SPECIAL_FILES) \$(F77_SRC_FILES) \$(C_SRC_FILES) \$(H_SRC_FILES) \$(F90_SRC_FILES) ftl_taf_output.o \$(OBJFILES) \$(EMBEDDED_FILES)
3112          \$(LINK) -o \${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)          \$(LINK) -o \${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)
3113    
3114  ftl_tamc_output.$FS: ftl_input_code.$FS  ftl_tamc_output.$FS: ftl_input_code.$FS
# Line 3090  svd_touch: Line 3138  svd_touch:
3138          touch ad_taf_output.$FS ftl_taf_output.$FS          touch ad_taf_output.$FS ftl_taf_output.$FS
3139          \$(FC) \$(FFLAGS) \$(FOPTIM) -c ad_taf_output.$FS          \$(FC) \$(FFLAGS) \$(FOPTIM) -c ad_taf_output.$FS
3140          \$(FC) \$(FFLAGS) \$(FOPTIM) -c ftl_taf_output.$FS          \$(FC) \$(FFLAGS) \$(FOPTIM) -c ftl_taf_output.$FS
3141          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ftl_config.template          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "SVD version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ad_config.template
3142          cmp ftl_config.template AD_CONFIG.h || cat ftl_config.template > AD_CONFIG.h          cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
3143          -rm -f ftl_config.template          @-rm -f ad_config.template
3144    
3145  EOF  EOF
3146    
# Line 3176  w2f__types.F90 \ Line 3224  w2f__types.F90 \
3224  OAD_active.F90 \  OAD_active.F90 \
3225  OAD_cp.F90 \  OAD_cp.F90 \
3226  OAD_rev.F90 \  OAD_rev.F90 \
3227  OAD_tape.F90  OAD_tape.F90 \
3228    revolve.F90
3229    
3230  OPENAD_SUPPORT_C_SRC_FILES = \  OPENAD_SUPPORT_C_SRC_FILES = \
3231  iaddr.c \  iaddr.c \
# Line 3202  AD_OBJ_FILES_S2=\$(AD_OBJ_FILES_S1) \$(N Line 3251  AD_OBJ_FILES_S2=\$(AD_OBJ_FILES_S1) \$(N
3251          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES_S2) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES_S2) \$(LIBS)
3252    
3253  # create sources files modules from header files containing common blocks  # create sources files modules from header files containing common blocks
3254  %_mod.FF90 : %.h ../OAD_support/cb2mGetModules.csh ../OAD_support/cb2mGetModules.awk  %_mod.FF90 : %.h \${OADTOOLS}/cb2mGetModules.csh \${OADTOOLS}/cb2mGetModules.awk
3255          ../OAD_support/cb2mGetModules.csh $< ../OAD_support/cb2mGetModules.awk          \${OADTOOLS}/cb2mGetModules.csh $< \${OADTOOLS}/cb2mGetModules.awk
3256    
3257  # create new header files with USE statements for the new modules made above  # create new header files with USE statements for the new modules made above
3258  %_mod.h : %.h ../OAD_support/cb2mGetHeaders.csh ../OAD_support/cb2mGetHeaders.awk  %_mod.h : %.h \${OADTOOLS}/cb2mGetHeaders.csh \${OADTOOLS}/cb2mGetHeaders.awk
3259          ../OAD_support/cb2mGetHeaders.csh $< ../OAD_support/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)          \${OADTOOLS}/cb2mGetHeaders.csh $< \${OADTOOLS}/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)
3260    
3261  # change the include directives of everybody to refer to  the new header files with the USE statements  # change the include directives of everybody to refer to  the new header files with the USE statements
3262  %_cb2m.FF90 : %.F ../OAD_support/cb2mUseModules.bash  %_cb2m.FF90 : %.F \${OADTOOLS}/cb2mUseModules.bash
3263          ../OAD_support/cb2mUseModules.bash $< ${MPI}          \${OADTOOLS}/cb2mUseModules.bash $< ${MPI}
3264    
3265  # makefile debug rule  # makefile debug rule
3266  small_f: \$(CB2M_F90_PP_SRC_FILES)  small_f: \$(CB2M_F90_PP_SRC_FILES)
# Line 3233  ad_input_code_sf.pre.f90 : \$(CB2M_AD_FI Line 3282  ad_input_code_sf.pre.f90 : \$(CB2M_AD_FI
3282    
3283  # replace stop statements (to avoid the implied unstructured control flow)  with print statements  # replace stop statements (to avoid the implied unstructured control flow)  with print statements
3284  ad_input_code_sf.pre.s2p.f90 : ad_input_code_sf.pre.f90  ad_input_code_sf.pre.s2p.f90 : ad_input_code_sf.pre.f90
3285          cat \$< | sed -f ../OAD_support/stop2print.sed > ad_input_code_sf.pre.s2p.f90          cat \$< | sed -f \${OADTOOLS}/stop2print.sed > ad_input_code_sf.pre.s2p.f90
3286    
3287  # F -> WHIRL  # F -> WHIRL
3288  ad_input_code_sf.pre.s2p.B: ad_input_code_sf.pre.s2p.f90  ad_input_code_sf.pre.s2p.B: ad_input_code_sf.pre.s2p.f90
# Line 3256  ad_input_code_sf.pre.s2p.xb.x2w.w2f.f$FS Line 3305  ad_input_code_sf.pre.s2p.xb.x2w.w2f.f$FS
3305          \${OPEN64ROOT}/whirl2f/whirl2f -FLIST:ftn_file=\$@ -openad \$<          \${OPEN64ROOT}/whirl2f/whirl2f -FLIST:ftn_file=\$@ -openad \$<
3306    
3307  # insert template directives  # insert template directives
3308  ad_input_code_sf.pre.s2p.xb.x2w.w2f.td.f$FS90: ad_input_code_sf.pre.s2p.xb.x2w.w2f.f$FS90 ../OAD_support/insertTemplateDir.bash  ad_input_code_sf.pre.s2p.xb.x2w.w2f.td.f$FS90: ad_input_code_sf.pre.s2p.xb.x2w.w2f.f$FS90 \${OADTOOLS}/insertTemplateDir.bash
3309          ../OAD_support/insertTemplateDir.bash \$< \$@          \${OADTOOLS}/insertTemplateDir.bash \$< \$@
3310    
3311  PPEXTRAS=\$(wildcard ../OAD_support/ad_template.*.F) ../OAD_support/ad_inline.F  PPEXTRAS=\$(wildcard \${OADTOOLS}/ad_template.*.F) \${OADTOOLS}/ad_inline.F
3312  # postprocess F'  # postprocess F'
3313  postProcess.tag: ad_input_code_sf.pre.s2p.xb.x2w.w2f.td.f$FS90 \$(PPEXTRAS:.F=.f) | w2f__types.f90  postProcess.tag: ad_input_code_sf.pre.s2p.xb.x2w.w2f.td.f$FS90 \$(PPEXTRAS:.F=.f) | w2f__types.f90
3314          \${OPENADFORTTK_BASE}/tools/SourceProcessing/postProcess.py --progress --timing --infoUnitFile w2f__types.f90 --outputFormat=fixed --separateOutput --pathSuffix "" --filenameSuffix "_oad" -m r -i ../OAD_support/ad_inline.f \$<          \${OPENADFORTTK_BASE}/tools/SourceProcessing/postProcess.py --progress --timing --infoUnitFile w2f__types.f90 --outputFormat=fixed --separateOutput --pathSuffix "" --filenameSuffix "_oad" -m r -i \${OADTOOLS}/ad_inline.f \$<
3315          # the target is a placeholder to trigger a single execution of the rule          # the target is a placeholder to trigger a single execution of the rule
3316          touch \$@          touch \$@
3317  # put this so make knows about the postprocessing output  # put this so make knows about the postprocessing output
# Line 3274  OAD_intrinsics_oad.f \$(CB2M_AD_FILES:.f Line 3323  OAD_intrinsics_oad.f \$(CB2M_AD_FILES:.f
3323    
3324  # link the support files:  # link the support files:
3325  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES):  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES):
3326          \$(LN) ../OAD_support/\$@ .          \$(LN) \${OADTOOLS}/\$@ .
3327    
3328  AD_CLEAN += *_mod.h *_mod.F90 *.FF90 *.mod-whirl temp.sed oad_cp.* postProcess.tag \$(PPEXTRAS:.F=.f)  AD_CLEAN += *_mod.h *_mod.F90 *.FF90 *.mod-whirl temp.sed oad_cp.* postProcess.tag \$(PPEXTRAS:.F=.f)
3329    
# Line 3321  printf "\n\n# DO NOT DELETE\n" >> $MAKEF Line 3370  printf "\n\n# DO NOT DELETE\n" >> $MAKEF
3370  printf "\n===  Done  ===\n"  printf "\n===  Done  ===\n"
3371    
3372  # Create special header files  # Create special header files
3373  $BASH $TOOLSDIR/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -bPACKAGES_CONFIG_H "Disabled packages:" $DISABLED_PACKAGES " " "Enabled packages:" $ENABLED_PACKAGES > $PACKAGES_DOT_H".tmp"  $BASH $TOOLSDIR/convert_cpp_cmd2defines -bPACKAGES_CONFIG_H "Disabled packages:" $DISABLED_PACKAGES " " "Enabled packages:" $ENABLED_PACKAGES > $PACKAGES_DOT_H".tmp"
3374  if test ! -f $PACKAGES_DOT_H ; then  if test ! -f $PACKAGES_DOT_H ; then
3375      mv -f $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H      mv -f $PACKAGES_DOT_H".tmp" $PACKAGES_DOT_H
3376  else  else
# Line 3335  else Line 3384  else
3384      fi      fi
3385  fi  fi
3386  if test ! -f AD_CONFIG.h ; then  if test ! -f AD_CONFIG.h ; then
3387      $BASH $TOOLSDIR/convert_cpp_cmd2defines "Warning - this file is automatically generated - do NOT edit" -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > AD_CONFIG.h      $BASH $TOOLSDIR/convert_cpp_cmd2defines "Default version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > AD_CONFIG.h
3388  fi  fi
3389    
3390  #  Write the "state" for future records  #  Write the "state" for future records

Legend:
Removed from v.1.237  
changed lines
  Added in v.1.249

  ViewVC Help
Powered by ViewVC 1.1.22