--- MITgcm/tools/genmake2 2014/07/15 23:05:54 1.267 +++ MITgcm/tools/genmake2 2016/01/07 20:21:42 1.276 @@ -1,6 +1,6 @@ #! /usr/bin/env bash # -# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/genmake2,v 1.267 2014/07/15 23:05:54 heimbach Exp $ +# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/genmake2,v 1.276 2016/01/07 20:21:42 jmc Exp $ # $Name: $ # # Makefile generator for MITgcm UV codes @@ -22,6 +22,10 @@ -oad | --oad Generate a Makefile for an OpenAD built + -nocat4ad | -dog4ad | -ncad | -dad + do not concatenate (cat) source code sent to TAF + resulting in compilation of multiple files + -adoptfile NAME | --adoptfile NAME | -adof NAME | --adof NAME -adoptfile=NAME | --adoptfile=NAME | -adof=NAME | --adof=NAME Use "NAME" as the adoptfile. By default, the file at @@ -1329,6 +1333,7 @@ AUTODIFF_PKG_USED=f OPENAD= AD_OPTFILE= +CAT_SRC_FOR_TAF=1 TAF= AD_TAF_FLAGS= FTL_TAF_FLAGS= @@ -1411,7 +1416,9 @@ OPTFILE=$ac_optarg ;; -oad | --oad) - OPENAD="true" ;; + OPENAD="true" ; ALWAYS_USE_F90=1 ;; + -nocat4ad | -dog4ad | -ncad | -dad) + CAT_SRC_FOR_TAF=0 ;; -adoptfile | --adoptfile | -adof | --adof) ac_prev=AD_OPTFILE ;; -adoptfile=* | --adoptfile=* | -adof=* | --adof=*) @@ -1583,7 +1590,7 @@ #TMP=./genmk_$$ #- try to put temporary files in system-local /tmp dir -TMP=/tmp/genmk_$$ +TMP=/tmp/genmk_${USER}_$$ touch $TMP ; retVal=$? if [ $retVal -eq 0 ] ; then if test ! -r $TMP ; then TMP=./genmk_$$ ; fi @@ -1957,26 +1964,39 @@ fi rm -f genmake_tcomp* -printf " Do we have the etime() command using $FC... " +printf " Do we have the etime() command using $FC... " cat > genmake_tcomp.$FS < genmake_tcomp.log 2>&1 RETVAL=$? if test "x$RETVAL" = x0 ; then + echo -n 'c,' + ./genmake_tcomp > genmake_tcomp.out 2>&1 + RETVAL=$? +fi +if test "x$RETVAL" = x0 ; then + echo -n 'r:' + RETVAL=`cat genmake_tcomp.out | $AWK '{print $1}'` +fi +if test "x$RETVAL" = x0 ; then HAVE_ETIME=t DEFINES="$DEFINES -DHAVE_ETIME" - echo "yes" + echo " yes" else HAVE_ETIME= - echo "no" + echo " no" fi +#mkdir chk_etime ; cp -p -f genmake_tcomp* chk_etime rm -f genmake_tcomp* printf " Can we call simple C routines (here, \"cloc()\") using $FC... " @@ -2894,8 +2914,8 @@ KFLAGS1 = ${KFLAGS1} KFLAGS2 = ${KFLAGS2} # Optim./debug for FC -FFLAGS = ${FFLAGS} ${FEXTRAFLAGS} -FOPTIM = ${FOPTIM} +FFLAGS = ${FFLAGS} +FOPTIM = ${FOPTIM} ${FEXTRAFLAGS} # Optim./debug for FC F90FLAGS = ${F90FLAGS} F90OPTIM = ${F90OPTIM} @@ -3122,6 +3142,24 @@ echo >> $MAKEFILE rm -f $TMP.adSrcFiles +if test $CAT_SRC_FOR_TAF = 0 ; then +cat >>$MAKEFILE <>$MAKEFILE < ad_input_code.$FS -ad_taf_output.$FS: ad_input_code.$FS - @-rm -f ad_input_code_ad.$FS ; echo '' +adtafonly: \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) ad_input_code.$FS ls -l ad_input_code_ad.$FS cat ad_input_code_ad.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ad_taf_output.$FS -adtafonly: +EOF + +if test $CAT_SRC_FOR_TAF = 1 ; then +cat >>$MAKEFILE < ad_taf_output.$FS @@ -3158,20 +3201,48 @@ \$(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) \$(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) -ad_tamc_output.$FS: ad_input_code.$FS - \$(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 +adobj: ad_taf_output.o \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) -ad_tamc: ad_tamc_output.o \$(OBJFILES) - \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS) +EOF +else +cat >>$MAKEFILE < ad_config.template + cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h + @-rm -f ad_config.template + @\$(MAKE) -f \$(MAKEFILE) \$(F77_PP_SRC_FILES) + @\$(MAKE) -f \$(MAKEFILE) \$(FLOWFILES) + @-rm -f \$(AD_FILES:.$FS=_ad.$FS) \$(AD_FILES:.$FS=_ad.o); echo '' + \$(MAKE) -f \$(MAKEFILE) remove_comments + \$(TAF) \$(AD_TAF_FLAGS) \$(TAF_EXTRA) \$(FLOWFILES) \$(AD_FILES) + \$(MAKE) -f \$(MAKEFILE) adj_sed + cat \$(AD_FILES:.$FS=_ad.$FS) > ad_taf_output.$FS + +\$(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) + \$(MAKE) -f \$(MAKEFILE) adobjfiles + \$(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) + +adobj: ad_taf_output.$FS \$(NON_AD_F77_SRC_FILES:.F=.o) \$(F90_SRC_FILES:.F90=.o) \$(C_SRC_FILES:.c=.o) + \$(MAKE) -f \$(MAKEFILE) adobjfiles + +EOF +fi + +cat >>$MAKEFILE < ad_tamc_output.$FS + +ad_tamc: ad_tamc_output.o \$(OBJFILES) + \$(LINK) -o ${EXE_AD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_tamc_output.o \$(LIBS) # ... FTL ... ftlall: ftl_exe_target @@ -3193,13 +3264,18 @@ @\$(MAKE) -f \$(MAKEFILE) \$(AD_FLOW_FILES) cat \$(AD_FLOW_FILES) \$(AD_FILES) | sed -f \$(TOOLSDIR)/remove_comments_sed > ftl_input_code.$FS -ftl_taf_output.$FS: ftl_input_code.$FS - @-rm -f ftl_input_code_tl.$FS ; echo '' +ftltafonly: \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.$FS ls -l ftl_input_code_tl.$FS cat ftl_input_code_tl.$FS | sed -f \$(TOOLSDIR)/adjoint_sed > ftl_taf_output.$FS -ftltafonly: +EOF + +if test $CAT_SRC_FOR_TAF = 1 ; then +cat >>$MAKEFILE < ftl_taf_output.$FS @@ -3207,6 +3283,31 @@ \$(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) \$(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) +EOF + +else +cat >>$MAKEFILE < ad_config.template + cmp ad_config.template AD_CONFIG.h || cat ad_config.template > AD_CONFIG.h + @-rm -f ad_config.template + @\$(MAKE) -f \$(MAKEFILE) \$(F77_PP_SRC_FILES) + @\$(MAKE) -f \$(MAKEFILE) \$(AD_FLOW_FILES) + @-rm -f \$(AD_FILES:.$FS=_tl.$FS) \$(AD_FILES:.$FS=_tl.o); echo '' + \$(MAKE) -f \$(MAKEFILE) remove_comments + \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) \$(AD_FLOW_FILES) \$(AD_FILES) + \$(MAKE) -f \$(MAKEFILE) ftl_sed + cat \$(AD_FILES:.$FS=_tl.$FS) > ftl_taf_output.$FS + +\$(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) + \$(MAKE) -f \$(MAKEFILE) ftlobjfiles + \$(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) + +EOF +fi + +cat >>$MAKEFILE < ftl_tamc_output.$FS @@ -3329,6 +3430,7 @@ OAD_cp.F90 \ OAD_rev.F90 \ OAD_tape.F90 \ +OAD_regular_cp.F90 \ revolve.F90 OPENAD_SUPPORT_C_SRC_FILES = \