/[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.238 by jmc, Tue Aug 28 21:11:22 2012 UTC revision 1.242 by heimbach, Thu Sep 20 23:12:47 2012 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 1668  check_for_broken_Ff Line 1658  check_for_broken_Ff
1658    
1659  if test ! "x$MPI" = x ; then  if test ! "x$MPI" = x ; then
1660        echo "  Turning on MPI cpp macros"        echo "  Turning on MPI cpp macros"
1661        DEFINES="$DEFINES -DALLOW_USE_MPI -DALWAYS_USE_MPI"        DEFINES="$DEFINES -DALLOW_USE_MPI"
1662  fi  fi
1663  if test ! "x$OMP" = x ; then  if test ! "x$OMP" = x ; then
1664        echo "  Add OMPFLAG and turn on OpenMP cpp macros"        echo "  Add OMPFLAG and turn on OpenMP cpp macros"
# Line 2492  if test "x$OPENAD" != x ; then Line 2482  if test "x$OPENAD" != x ; then
2482      OAD_DONT_TRANSFORM="/dev/null"      OAD_DONT_TRANSFORM="/dev/null"
2483      OAD_KEEP_ORIGINAL="/dev/null"      OAD_KEEP_ORIGINAL="/dev/null"
2484      OAD_CB2M_FILES="/dev/null"      OAD_CB2M_FILES="/dev/null"
2485        OADTOOLS="$TOOLSDIR/OAD_support"
2486        test -f "oadtempflile"  &&  \rm -f "oadtempflile"
2487    cat >> "oadtempflile" <<EOF
2488    $OADTOOLS
2489    EOF
2490      echo "  looking for dontCompile file:  "      echo "  looking for dontCompile file:  "
2491      for i in "." $MODS ; do      for i in "." $MODS ; do
2492          if test -r $i"/dontCompile" ; then          if test -r $i"/dontCompile" ; then
# Line 2699  INCLUDEDIRS = ${INCLUDEDIRS} Line 2694  INCLUDEDIRS = ${INCLUDEDIRS}
2694  EXEDIR      = ${EXEDIR}  EXEDIR      = ${EXEDIR}
2695  EXECUTABLE  = \$(EXEDIR)/${EXECUTABLE}  EXECUTABLE  = \$(EXEDIR)/${EXECUTABLE}
2696  TOOLSDIR    = ${TOOLSDIR}  TOOLSDIR    = ${TOOLSDIR}
2697    OADTOOLS    = ${OADTOOLS}
2698    
2699  #eh3  new defines for the adjoint work  #eh3  new defines for the adjoint work
2700  AUTODIFF    = ${ROOTDIR}/pkg/autodiff  AUTODIFF    = ${ROOTDIR}/pkg/autodiff
# Line 2722  fi Line 2718  fi
2718  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
2719  # Unix ln (link)  # Unix ln (link)
2720  LN = ${LN}  LN = ${LN}
 # C preprocessor  
 CPP = cat \$< | ${S64} | ${CPP}  
2721  # Dependency generator  # Dependency generator
2722  MAKEDEPEND = ${MAKEDEPEND}  MAKEDEPEND = ${MAKEDEPEND}
2723  # Special preprocessor (KAP on DECs, FPP on Crays)  # Special preprocessor (KAP on DECs, FPP on Crays)
# Line 2906  cat >>$MAKEFILE <<EOF Line 2900  cat >>$MAKEFILE <<EOF
2900  ## This nullifies any default implicit rules concerning these two file types:  ## This nullifies any default implicit rules concerning these two file types:
2901  ## %.o : %.F  ## %.o : %.F
2902    
2903    # C preprocessing and replacing the _d in constants:
2904    CPPCMD = cat \$< | ${CPP} \$(DEFINES) \$(INCLUDES) | ${S64}
2905    
2906  .F.$FS:  .F.$FS:
2907          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD)  > \$@
2908  .$FS.o:  .$FS.o:
2909          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<
2910  .F.o:  .F.o:
2911          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<          \$(FC) \$(FFLAGS) \$(FOPTIM) -c \$<
2912  .F90.$FS90:  .F90.$FS90:
2913          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD)  > \$@
2914  .FF90.f$FS90:  .FF90.f$FS90:
2915          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD)  > \$@
2916  .$FS90.o:  .$FS90.o:
2917          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<          \$(F90C) \$(F90FLAGS) \$(F90OPTIM) -c \$<
2918  .f$FS90.o:  .f$FS90.o:
# Line 2924  cat >>$MAKEFILE <<EOF Line 2921  cat >>$MAKEFILE <<EOF
2921  .c.o:  .c.o:
2922          \$(CC) \$(CFLAGS) \$(DEFINES) \$(INCLUDES) -c \$<          \$(CC) \$(CFLAGS) \$(DEFINES) \$(INCLUDES) -c \$<
2923  .flow.flowdir:  .flow.flowdir:
2924          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD) > \$@
2925    
2926  # Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain  # Special exceptions that use the ( .F - .p - .$FS - .o ) rule-chain
2927  .F.p:  .F.p:
2928          \$(CPP) \$(DEFINES) \$(INCLUDES) > \$@          \$(CPPCMD) > \$@
2929  .p.$FS:  .p.$FS:
2930          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<          \$(KPP) \$(KFLAGS1)\$@ \$(KFLAGS2) \$<
2931    
# Line 2986  ad_exe_target: Line 2983  ad_exe_target:
2983          @-rm -f ad_config.template          @-rm -f ad_config.template
2984          \$(MAKE) -f \$(MAKEFILE) \$(EXE_AD)          \$(MAKE) -f \$(MAKEFILE) \$(EXE_AD)
2985    
2986  ad_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES) \$(AD_FLOW_FILES)  ad_input_code.$FS: \$(AD_FILES) \$(AD_FLOW_FILES)
2987          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Adjoint version" -bAD_CONFIG_H -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Adjoint version" -bAD_CONFIG_H -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template
2988          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
2989          @-rm -f ad_config.template          @-rm -f ad_config.template
# Line 3004  adtafonly: Line 3001  adtafonly:
3001          ls -l ad_input_code_ad.$FS          ls -l ad_input_code_ad.$FS
3002          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
3003    
3004  \${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)
3005          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o \$(LIBS)
3006    
3007  ad_tamc_output.$FS: ad_input_code.$FS  ad_tamc_output.$FS: ad_input_code.$FS
# Line 3034  ftl_exe_target: Line 3031  ftl_exe_target:
3031          @-rm -f ad_config.template          @-rm -f ad_config.template
3032          \$(MAKE) -f \$(MAKEFILE) \$(EXE_FTL)          \$(MAKE) -f \$(MAKEFILE) \$(EXE_FTL)
3033    
3034  ftl_input_code.$FS: \$(AD_FILES) \$(H_SRC_FILES)  ftl_input_code.$FS: \$(AD_FILES)
3035          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "TangLin version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ad_config.template          @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "TangLin version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ad_config.template
3036          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
3037          @-rm -f ad_config.template          @-rm -f ad_config.template
# Line 3052  ftltafonly: Line 3049  ftltafonly:
3049          ls -l ftl_input_code_ftl.$FS          ls -l ftl_input_code_ftl.$FS
3050          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
3051    
3052  \${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)
3053          \$(LINK) -o \${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)          \$(LINK) -o \${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS)
3054    
3055  ftl_tamc_output.$FS: ftl_input_code.$FS  ftl_tamc_output.$FS: ftl_input_code.$FS
# Line 3194  AD_OBJ_FILES_S2=\$(AD_OBJ_FILES_S1) \$(N Line 3191  AD_OBJ_FILES_S2=\$(AD_OBJ_FILES_S1) \$(N
3191          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES_S2) \$(LIBS)          \$(LINK) -o \$@ \$(FFLAGS) \$(FOPTIM) \$(AD_OBJ_FILES_S2) \$(LIBS)
3192    
3193  # create sources files modules from header files containing common blocks  # create sources files modules from header files containing common blocks
3194  %_mod.FF90 : %.h ../OAD_support/cb2mGetModules.csh ../OAD_support/cb2mGetModules.awk  %_mod.FF90 : %.h \${OADTOOLS}/cb2mGetModules.csh \${OADTOOLS}/cb2mGetModules.awk
3195          ../OAD_support/cb2mGetModules.csh $< ../OAD_support/cb2mGetModules.awk          \${OADTOOLS}/cb2mGetModules.csh $< \${OADTOOLS}/cb2mGetModules.awk
3196    
3197  # 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
3198  %_mod.h : %.h ../OAD_support/cb2mGetHeaders.csh ../OAD_support/cb2mGetHeaders.awk  %_mod.h : %.h \${OADTOOLS}/cb2mGetHeaders.csh \${OADTOOLS}/cb2mGetHeaders.awk
3199          ../OAD_support/cb2mGetHeaders.csh $< ../OAD_support/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)          \${OADTOOLS}/cb2mGetHeaders.csh $< \${OADTOOLS}/cb2mGetHeaders.awk \$(CB2M_F90_SRC_NAMES)
3200    
3201  # 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
3202  %_cb2m.FF90 : %.F ../OAD_support/cb2mUseModules.bash  %_cb2m.FF90 : %.F \${OADTOOLS}/cb2mUseModules.bash
3203          ../OAD_support/cb2mUseModules.bash $< ${MPI}          \${OADTOOLS}/cb2mUseModules.bash $< ${MPI}
3204    
3205  # makefile debug rule  # makefile debug rule
3206  small_f: \$(CB2M_F90_PP_SRC_FILES)  small_f: \$(CB2M_F90_PP_SRC_FILES)
# Line 3225  ad_input_code_sf.pre.f90 : \$(CB2M_AD_FI Line 3222  ad_input_code_sf.pre.f90 : \$(CB2M_AD_FI
3222    
3223  # 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
3224  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
3225          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
3226    
3227  # F -> WHIRL  # F -> WHIRL
3228  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 3248  ad_input_code_sf.pre.s2p.xb.x2w.w2f.f$FS Line 3245  ad_input_code_sf.pre.s2p.xb.x2w.w2f.f$FS
3245          \${OPEN64ROOT}/whirl2f/whirl2f -FLIST:ftn_file=\$@ -openad \$<          \${OPEN64ROOT}/whirl2f/whirl2f -FLIST:ftn_file=\$@ -openad \$<
3246    
3247  # insert template directives  # insert template directives
3248  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
3249          ../OAD_support/insertTemplateDir.bash \$< \$@          \${OADTOOLS}/insertTemplateDir.bash \$< \$@
3250    
3251  PPEXTRAS=\$(wildcard ../OAD_support/ad_template.*.F) ../OAD_support/ad_inline.F  PPEXTRAS=\$(wildcard \${OADTOOLS}/ad_template.*.F) \${OADTOOLS}/ad_inline.F
3252  # postprocess F'  # postprocess F'
3253  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
3254          \${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 \$<
3255          # 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
3256          touch \$@          touch \$@
3257  # put this so make knows about the postprocessing output  # put this so make knows about the postprocessing output
# Line 3266  OAD_intrinsics_oad.f \$(CB2M_AD_FILES:.f Line 3263  OAD_intrinsics_oad.f \$(CB2M_AD_FILES:.f
3263    
3264  # link the support files:  # link the support files:
3265  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES):  \$(OPENAD_SUPPORT_F90_SRC_FILES) \$(OPENAD_SUPPORT_C_SRC_FILES):
3266          \$(LN) ../OAD_support/\$@ .          \$(LN) \${OADTOOLS}/\$@ .
3267    
3268  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 oadtempflile \$(PPEXTRAS:.F=.f)
3269    
3270  # ============ end OpenAD specific section ==============  # ============ end OpenAD specific section ==============
3271    

Legend:
Removed from v.1.238  
changed lines
  Added in v.1.242

  ViewVC Help
Powered by ViewVC 1.1.22