/[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.267 by heimbach, Tue Jul 15 23:05:54 2014 UTC revision 1.274 by jmc, Fri Nov 20 01:22:36 2015 UTC
# Line 22  Usage: "$0" [OPTIONS] Line 22  Usage: "$0" [OPTIONS]
22      -oad | --oad      -oad | --oad
23            Generate a Makefile for an OpenAD built            Generate a Makefile for an OpenAD built
24    
25        -nocat4ad | -dog4ad | -ncad | -dad
26              do not concatenate (cat) source code sent to TAF
27              resulting in compilation of multiple files
28    
29      -adoptfile NAME | --adoptfile NAME | -adof NAME | --adof NAME      -adoptfile NAME | --adoptfile NAME | -adof NAME | --adof NAME
30        -adoptfile=NAME | --adoptfile=NAME | -adof=NAME | --adof=NAME        -adoptfile=NAME | --adoptfile=NAME | -adof=NAME | --adof=NAME
31            Use "NAME" as the adoptfile.  By default, the file at            Use "NAME" as the adoptfile.  By default, the file at
# Line 1329  FS90= Line 1333  FS90=
1333  AUTODIFF_PKG_USED=f  AUTODIFF_PKG_USED=f
1334  OPENAD=  OPENAD=
1335  AD_OPTFILE=  AD_OPTFILE=
1336    CAT_SRC_FOR_TAF=1
1337  TAF=  TAF=
1338  AD_TAF_FLAGS=  AD_TAF_FLAGS=
1339  FTL_TAF_FLAGS=  FTL_TAF_FLAGS=
# Line 1411  for ac_option in "$@" ; do Line 1416  for ac_option in "$@" ; do
1416              OPTFILE=$ac_optarg ;;              OPTFILE=$ac_optarg ;;
1417    
1418          -oad | --oad)          -oad | --oad)
1419              OPENAD="true" ;;              OPENAD="true" ; ALWAYS_USE_F90=1 ;;
1420            -nocat4ad | -dog4ad | -ncad | -dad)
1421                CAT_SRC_FOR_TAF=0 ;;
1422          -adoptfile | --adoptfile | -adof | --adof)          -adoptfile | --adoptfile | -adof | --adof)
1423              ac_prev=AD_OPTFILE ;;              ac_prev=AD_OPTFILE ;;
1424          -adoptfile=* | --adoptfile=* | -adof=* | --adof=*)          -adoptfile=* | --adoptfile=* | -adof=* | --adof=*)
# Line 1583  done Line 1590  done
1590    
1591  #TMP=./genmk_$$  #TMP=./genmk_$$
1592  #- try to put temporary files in system-local /tmp dir  #- try to put temporary files in system-local /tmp dir
1593  TMP=/tmp/genmk_$$  TMP=/tmp/genmk_${USER}_$$
1594  touch $TMP ; retVal=$?  touch $TMP ; retVal=$?
1595  if [ $retVal -eq 0 ] ; then  if [ $retVal -eq 0 ] ; then
1596    if test ! -r $TMP ; then TMP=./genmk_$$ ; fi    if test ! -r $TMP ; then TMP=./genmk_$$ ; fi
# Line 1961  printf "  Do we have the etime() command Line 1968  printf "  Do we have the etime() command
1968  cat > genmake_tcomp.$FS <<EOF  cat > genmake_tcomp.$FS <<EOF
1969        program hello        program hello
1970        REAL*4 ACTUAL, TARRAY(2)        REAL*4 ACTUAL, TARRAY(2)
1971        EXTERNAL ETIME        call etime( tarray, actual )
       REAL*4 ETIME  
       actual = etime( tarray )  
1972        print *, tarray        print *, tarray
1973        end        end
1974  EOF  EOF
# Line 2894  CPPINCLUDES = ${CPPINCLUDES} Line 2899  CPPINCLUDES = ${CPPINCLUDES}
2899  KFLAGS1 = ${KFLAGS1}  KFLAGS1 = ${KFLAGS1}
2900  KFLAGS2 = ${KFLAGS2}  KFLAGS2 = ${KFLAGS2}
2901  # Optim./debug for FC  # Optim./debug for FC
2902  FFLAGS = ${FFLAGS} ${FEXTRAFLAGS}  FFLAGS = ${FFLAGS}
2903  FOPTIM = ${FOPTIM}  FOPTIM = ${FOPTIM} ${FEXTRAFLAGS}
2904  # Optim./debug for FC  # Optim./debug for FC
2905  F90FLAGS = ${F90FLAGS}  F90FLAGS = ${F90FLAGS}
2906  F90OPTIM = ${F90OPTIM}  F90OPTIM = ${F90OPTIM}
# Line 3122  done Line 3127  done
3127  echo >> $MAKEFILE  echo >> $MAKEFILE
3128  rm -f $TMP.adSrcFiles  rm -f $TMP.adSrcFiles
3129    
3130    if test $CAT_SRC_FOR_TAF = 0 ; then
3131    cat >>$MAKEFILE <<EOF
3132    
3133    # ... Utilities ...
3134    remove_comments:
3135            sed -i.bak -f \$(TOOLSDIR)/remove_comments_sed \$(AD_FILES)
3136            @-rm -f \$(AD_FILES:.$FS=.$FS.bak)
3137    adj_sed:
3138            sed -i.bak -f \$(TOOLSDIR)/adjoint_sed \$(AD_FILES:.$FS=_ad.$FS)
3139            @-rm -f \$(AD_FILES:.$FS=_ad.$FS.bak)
3140    ftl_sed:
3141            sed -i.bak -f \$(TOOLSDIR)/adjoint_sed \$(AD_FILES:.$FS=_tl.$FS)
3142            @-rm -f \$(AD_FILES:.$FS=_tl.$FS.bak)
3143    adobjfiles: \$(AD_FILES:.$FS=_ad.o)
3144    ftlobjfiles: \$(AD_FILES:.$FS=_tl.o)
3145    EOF
3146    fi
3147    
3148  cat >>$MAKEFILE <<EOF  cat >>$MAKEFILE <<EOF
3149    
3150  # ... AD ...  # ... AD ...
# Line 3144  ad_input_code.$FS: \$(AD_FILES) \$(AD_FL Line 3167  ad_input_code.$FS: \$(AD_FILES) \$(AD_FL
3167          @\$(MAKE) -f \$(MAKEFILE) \$(FLOWFILES)          @\$(MAKE) -f \$(MAKEFILE) \$(FLOWFILES)
3168          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
3169    
3170  ad_taf_output.$FS: ad_input_code.$FS  adtafonly:
         @-rm -f ad_input_code_ad.$FS ; echo ''  
3171          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
3172          ls -l ad_input_code_ad.$FS          ls -l ad_input_code_ad.$FS
3173          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
3174    
3175  adtafonly:  EOF
3176    
3177    if test $CAT_SRC_FOR_TAF = 1 ; then
3178    cat >>$MAKEFILE <<EOF
3179    # ... send 1 file to TAF ...
3180    ad_taf_output.$FS: ad_input_code.$FS
3181            @-rm -f ad_input_code_ad.$FS ; echo ''
3182          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS          \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS
3183          ls -l ad_input_code_ad.$FS          ls -l ad_input_code_ad.$FS
3184          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
# Line 3158  adtafonly: Line 3186  adtafonly:
3186  \$(EXE_AD): \$(SPECIAL_FILES) \$(H_SRC_FILES) ad_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(EMBEDDED_FILES)  \$(EXE_AD): \$(SPECIAL_FILES) \$(H_SRC_FILES) ad_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(EMBEDDED_FILES)
3187          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) ad_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(LIBS)          \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) ad_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(LIBS)
3188    
3189  ad_tamc_output.$FS: ad_input_code.$FS  adobj: ad_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o)
         \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS  
         cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_tamc_output.$FS  
3190    
3191  ad_tamc: ad_tamc_output.o \$(OBJFILES)  EOF
3192          \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)  
3193    else
3194    cat >>$MAKEFILE <<EOF
3195    # ... send multiple files to TAF ...
3196    ad_taf_output.$FS: \$(AD_FLOW_FILES) \$(AD_FILES)
3197            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Adjoint version" -bAD_CONFIG_H -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template
3198            cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
3199            @-rm -f ad_config.template
3200            @\$(MAKE) -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)
3201            @\$(MAKE) -f \$(MAKEFILE) \$(FLOWFILES)
3202            @-rm -f \$(AD_FILES:.$FS=_ad.$FS) \$(AD_FILES:.$FS=_ad.o); echo ''
3203            \$(MAKE) -f \$(MAKEFILE) remove_comments
3204            \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) \$(FLOWFILES) \$(AD_FILES)
3205            \$(MAKE) -f \$(MAKEFILE) adj_sed
3206            cat \$(AD_FILES:.$FS=_ad.$FS) > ad_taf_output.$FS
3207    
3208    \$(EXE_AD): \$(SPECIAL_FILES) \$(H_SRC_FILES) ad_taf_output.$FS \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(EMBEDDED_FILES)
3209            \$(MAKE) -f \$(MAKEFILE) adobjfiles
3210            \$(LINK) -o \${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(AD_FILES:.$FS=_ad.o) \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(LIBS)
3211    
3212    adobj: ad_taf_output.$FS \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o)
3213            \$(MAKE) -f \$(MAKEFILE) adobjfiles
3214    
3215    EOF
3216    fi
3217    
3218    cat >>$MAKEFILE <<EOF
3219  adonlyfwd:  adonlyfwd:
3220          patch < \$(TOOLSDIR)/ad_taf_output.f.onlyfwd.diff          patch < \$(TOOLSDIR)/ad_taf_output.f.onlyfwd.diff
3221    
3222  adtrick:  adtrick:
3223          patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff          patch < \$(TOOLSDIR)/ad_taf_output.f.adtrick.diff
3224    
3225  adobj: ad_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o)  ad_tamc_output.$FS: ad_input_code.$FS
3226            \$(TAMC) \$(AD_TAMC_FLAGS) \$(TAMC_EXTRA) ad_input_code.$FS
3227            cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_tamc_output.$FS
3228    
3229    ad_tamc: ad_tamc_output.o \$(OBJFILES)
3230            \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS)
3231    
3232  # ... FTL ...  # ... FTL ...
3233  ftlall: ftl_exe_target  ftlall: ftl_exe_target
# Line 3193  ftl_input_code.$FS: \$(AD_FILES) Line 3249  ftl_input_code.$FS: \$(AD_FILES)
3249          @\$(MAKE) -f \$(MAKEFILE) \$(AD_FLOW_FILES)          @\$(MAKE) -f \$(MAKEFILE) \$(AD_FLOW_FILES)
3250          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
3251    
3252  ftl_taf_output.$FS: ftl_input_code.$FS  ftltafonly:
         @-rm -f ftl_input_code_tl.$FS ; echo ''  
3253          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
3254          ls -l ftl_input_code_tl.$FS          ls -l ftl_input_code_tl.$FS
3255          cat ftl_input_code_tl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS          cat ftl_input_code_tl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS
3256    
3257  ftltafonly:  EOF
3258    
3259    if test $CAT_SRC_FOR_TAF = 1 ; then
3260    cat >>$MAKEFILE <<EOF
3261    # ... send 1 file to TAF ...
3262    ftl_taf_output.$FS: ftl_input_code.$FS
3263            @-rm -f ftl_input_code_tl.$FS ; echo ''
3264          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS          \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS
3265          ls -l ftl_input_code_tl.$FS          ls -l ftl_input_code_tl.$FS
3266          cat ftl_input_code_tl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS          cat ftl_input_code_tl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS
# Line 3207  ftltafonly: Line 3268  ftltafonly:
3268  \$(EXE_FTL): \$(SPECIAL_FILES) \$(H_SRC_FILES) ftl_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(EMBEDDED_FILES)  \$(EXE_FTL): \$(SPECIAL_FILES) \$(H_SRC_FILES) ftl_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(EMBEDDED_FILES)
3269          \$(LINK) -o \${EXE_FTL} \$(FFLAGS) \$(FOPTIM) ftl_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(LIBS)          \$(LINK) -o \${EXE_FTL} \$(FFLAGS) \$(FOPTIM) ftl_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(LIBS)
3270    
3271    EOF
3272    
3273    else
3274    cat >>$MAKEFILE <<EOF
3275    # ... send multiple files to TAF ...
3276    ftl_taf_output.$FS: \$(AD_FLOW_FILES) \$(AD_FILES)
3277            @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "TangLin version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ad_config.template
3278            cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h
3279            @-rm -f ad_config.template
3280            @\$(MAKE) -f \$(MAKEFILE) \$(F77_PP_SRC_FILES)
3281            @\$(MAKE) -f \$(MAKEFILE) \$(AD_FLOW_FILES)
3282            @-rm -f \$(AD_FILES:.$FS=_tl.$FS) \$(AD_FILES:.$FS=_tl.o); echo ''
3283            \$(MAKE) -f \$(MAKEFILE) remove_comments
3284            \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) \$(AD_FLOW_FILES) \$(AD_FILES)
3285            \$(MAKE) -f \$(MAKEFILE) ftl_sed
3286            cat \$(AD_FILES:.$FS=_tl.$FS) > ftl_taf_output.$FS
3287    
3288    \$(EXE_FTL): \$(SPECIAL_FILES) \$(H_SRC_FILES) ftl_taf_output.$FS \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(EMBEDDED_FILES)
3289            \$(MAKE) -f \$(MAKEFILE) ftlobjfiles
3290            \$(LINK) -o \${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(AD_FILES:.$FS=_tl.o) \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) \$(LIBS)
3291    
3292    EOF
3293    fi
3294    
3295    cat >>$MAKEFILE <<EOF
3296  ftl_tamc_output.$FS: ftl_input_code.$FS  ftl_tamc_output.$FS: ftl_input_code.$FS
3297          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS          \$(TAMC) \$(FTL_TAMC_FLAGS) \$(TAMC_EXTRA) ftl_input_code.$FS
3298          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_tamc_output.$FS          cat ftl_input_code_ftl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_tamc_output.$FS
# Line 3329  OAD_active.F90 \ Line 3415  OAD_active.F90 \
3415  OAD_cp.F90 \  OAD_cp.F90 \
3416  OAD_rev.F90 \  OAD_rev.F90 \
3417  OAD_tape.F90 \  OAD_tape.F90 \
3418    OAD_regular_cp.F90 \
3419  revolve.F90  revolve.F90
3420    
3421  OPENAD_SUPPORT_C_SRC_FILES = \  OPENAD_SUPPORT_C_SRC_FILES = \

Legend:
Removed from v.1.267  
changed lines
  Added in v.1.274

  ViewVC Help
Powered by ViewVC 1.1.22