From ee3ac9c1427ef16b7a51b89a9a5b02a5ebb87ee8 Mon Sep 17 00:00:00 2001 From: Jean-Michel Campin Date: Thu, 30 Jan 2025 19:14:22 -0500 Subject: [PATCH] fix and simplify - avoid adding "include Makefile_taf.dep" multiple times at bottom of Makefile by doing this as part of "make depend" - simplify `f90mkdepend_taf` (remove "-clean" option) and pass name of output file as first argument. - add 1 line to "Clean" target to remove "include Makefile_taf.dep" from bottom of Makefile and, if sucessful, remove file "Makefile_taf.dep". --- tools/f90mkdepend_taf | 53 ++++++++----------------------------------- tools/genmake2 | 21 +++++++++++++---- 2 files changed, 27 insertions(+), 47 deletions(-) diff --git a/tools/f90mkdepend_taf b/tools/f90mkdepend_taf index 25ffd6e6e5..e2c7ea69f8 100755 --- a/tools/f90mkdepend_taf +++ b/tools/f90mkdepend_taf @@ -1,59 +1,27 @@ #!/bin/bash # # Generate make file dependency entries for TAF generated AD files -# passed as arguments -# - -# process option arguments -CLEAN= -adfiles= -key_prev= -for key in "$@"; do - if [[ -n "$key_prev" ]]; then - eval "$key_prev=\$key" - key_prev= - continue - fi +# passed as arguments after output dependency file - case $key in - -clean | --clean) - CLEAN=true - ;; - -taf | --taf) - key_prev="adfiles" - ;; - -*) - echo "f90mkdepend_taf wrong key: $key" - exit 1 - ;; - *) - # Append non-option arguments to adfiles - adfiles="${adfiles:+$adfiles }$key" - ;; - esac -done +if [ $# -eq 0 ]; then + echo "Usage: `basename $0` output_file list_of_TAF_generated_files" + exit 1 +else + dep_file=$1 ; shift +fi # don't complain if *.F90 doesn't match any files shopt -s nullglob # init files +#log_file="`basename $0`.log" log_file="f90mkdepend_taf.log" -dep_file="Makefile_taf.dep" cat /dev/null > $log_file cat /dev/null > $dep_file -# OPTION to clean Makefile of $dep_file -MAKEFILE=Makefile -if test -n "$CLEAN"; then - if [[ $(tail -n 1 $MAKEFILE) == "include $dep_file" ]]; then - head -n -1 $MAKEFILE > tmp && mv tmp $MAKEFILE - fi - rm -rf $dep_file $log_file - exit 0 -fi - # append module dependencies to Makefile +adfiles=$* for filename in ${adfiles}; do # quick check for "use" to speed up processing if grep -iq '^ *use ' $filename; then @@ -79,5 +47,4 @@ for filename in ${adfiles}; do echo $depline >> $dep_file fi done - -echo "include $dep_file" +exit 0 diff --git a/tools/genmake2 b/tools/genmake2 index ad02b8bbbf..8b4c3abbc9 100755 --- a/tools/genmake2 +++ b/tools/genmake2 @@ -1425,6 +1425,7 @@ TAPENADECMD=tapenade OPENAD= AD_OPTFILE= CAT_SRC_FOR_TAF=1 +DEP_TAF_FILE='Makefile_taf.dep' TAF= AD_TAF_FLAGS= FTL_TAF_FLAGS= @@ -3361,6 +3362,12 @@ depend: \$(MAKEDEPEND) -f \$(MAKEFILE) -a -o .$FS90 \$(DEFINES) \$(INCLUDES) \$(CPPINCLUDES) \$(F90_SRC_FILES) \$(TOOLSDIR)/f90mkdepend -fs $FS -fs90 $FS90 >> \$(MAKEFILE) -rm -f makedepend.out +EOF +if test $CAT_SRC_FOR_TAF = 0 ; then + echo " -touch $DEP_TAF_FILE" >> $MAKEFILE + echo " -echo 'include $DEP_TAF_FILE' >> \$(MAKEFILE)" >> $MAKEFILE +fi +cat >>$MAKEFILE <>$MAKEFILE < tmp_Mkfile && mv -f tmp_Mkfile \$(MAKEFILE) && rm -f $DEP_TAF_FILE + -rm -f taf_ad.f90 taf_tl.f90 f90mkdepend_taf.log +EOF +fi +cat >>$MAKEFILE <>$MAKEFILE <> \$(MAKEFILE) + \$(TOOLSDIR)/f90mkdepend_taf $DEP_TAF_FILE \$(AD_F90FILES:.$FS90=_ad.$FS90) \$(AD_FILES:.$FS=_ad.$FS) ad_taf_output.$FS: \$(AD_FLOW_FILES) \$(AD_F90FILES) \$(AD_FILES) @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "Adjoint version" -bAD_CONFIG_H -DALLOW_ADJOINT_RUN -UALLOW_TANGENTLINEAR_RUN > ad_config.template @@ -3739,7 +3752,7 @@ else cat >>$MAKEFILE <> \$(MAKEFILE) + \$(TOOLSDIR)/f90mkdepend_taf $DEP_TAF_FILE \$(AD_F90FILES:.$FS90=_tl.$FS90) \$(AD_FILES:.$FS=_tl.$FS) ftl_taf_output.$FS: \$(AD_FLOW_FILES) \$(AD_F90FILES) \$(AD_FILES) @$BASH\$(TOOLSDIR)/convert_cpp_cmd2defines "TangLin version" -bAD_CONFIG_H -UALLOW_ADJOINT_RUN -DALLOW_TANGENTLINEAR_RUN > ad_config.template