--- MITgcm/tools/genmake2 2003/11/14 05:25:46 1.37 +++ MITgcm/tools/genmake2 2003/11/14 21:20:35 1.40 @@ -1,6 +1,6 @@ #!/bin/sh # -# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/genmake2,v 1.37 2003/11/14 05:25:46 heimbach Exp $ +# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/genmake2,v 1.40 2003/11/14 21:20:35 heimbach Exp $ # # Makefile generator for MITgcm UV codes # created by cnh 03/98 @@ -281,25 +281,28 @@ cat > genmake_test.c < genmake_test.log 2>&1 + $MAKE genmake_test.o >> genmake_warnings 2>&1 RETVAL=$? if test "x$RETVAL" != x0 ; then - cat genmake_test.log >> genmake_errors FC_NAMEMANGLE=$default_nm - echo - echo "WARNING: C test compile fails -- please see \"genmake_errors\"" - echo "WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE'" - echo "WARNING: Please contact if you need help here." + cat <> genmake_errors + +WARNING: C test compile fails +WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE' +WARNING: Please contact if you need help here +EOF return 1 fi c_tcall=`nm genmake_test.o | grep tcall | cut -d ' ' -f 3` RETVAL=$? if test "x$RETVAL" != x0 ; then FC_NAMEMANGLE=$default_nm - echo - echo "WARNING: The \"nm\" command failed." - echo "WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE'" - echo "WARNING: Please contact if you need help here." + cat <> genmake_warnings + +WARNING: The "nm" command failed. +WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE' +WARNING: Please contact if you need help here +EOF return 1 fi cat > genmake_tcomp.f < genmake_tcomp.log 2>&1 + $FC $FFLAGS $DEFINES -c genmake_tcomp.f >> genmake_warnings 2>&1 RETVAL=$? if test "x$RETVAL" != x0 ; then - cat genmake_tcomp.log >> genmake_errors FC_NAMEMANGLE=$default_nm - echo - echo "WARNING: FORTRAN test compile fails -- please see \"genmake_errors\"" - echo "WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE'" - echo "WARNING: Please contact if you need help here." + cat <> genmake_warnings + +WARNING: FORTRAN test compile fails -- please see "genmake_errors" +WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE' +WARNING: Please contact if you need help here. +EOF return 1 fi f_tcall=`nm genmake_tcomp.o | grep tcall | cut -d ' ' -f 3` RETVAL=$? if test "x$RETVAL" != x0 ; then FC_NAMEMANGLE=$default_nm - echo - echo "WARNING: The \"nm\" command failed." - echo "WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE'" - echo "WARNING: Please contact if you need help here." + cat <> genmake_warnings + +WARNING: The "nm" command failed. +WARNING: We'll try to use: FC_NAMEMANGLE='$FC_NAMEMANGLE' +WARNING: Please contact if you need help here. +EOF return 1 fi @@ -353,6 +359,46 @@ rm -f genmake_tcomp.* genmake_test.* } + +check_HAVE_CLOC() { + get_fortran_c_namemangling + cat < genmake_tc_1.c +$FC_NAMEMANGLE +#include +#include +#include +#include +#include +void FC_NAMEMANGLE(cloc) ( double *curtim ) +{ + struct timeval tv1; + gettimeofday(&tv1 , (void *)NULL ); + *curtim = (double)((tv1.tv_usec)+(tv1.tv_sec)*1.E6); + *curtim = *curtim/1.E6; +} +EOF + make genmake_tc_1.o >> genmake_tc.log 2>&1 + RET_C=$? + cat < genmake_tc_2.f + program hello + Real*8 wtime + external cloc + call cloc(wtime) + print *," HELLO WORLD", wtime + end program hello +EOF + $FC $FFLAGS -o genmake_tc genmake_tc_2.f genmake_tc_1.o >> genmake_tc.log 2>&1 + RET_F=$? + test -x ./genmake_tc && ./genmake_tc >> genmake_tc.log 2>&1 + RETVAL=$? + if test "x$RETVAL" = x0 ; then + HAVE_CLOC=t + DEFINES="$DEFINES -DHAVE_CLOC" + fi + rm -f genmake_tc* +} + + # Set defaults here COMMANDL="$0 $@" @@ -388,6 +434,7 @@ HAVE_SYSTEM= HAVE_FDATE= FC_NAMEMANGLE= +HAVE_CLOC= MODS= TOOLSDIR= @@ -704,8 +751,8 @@ fi fi -# Check that FC, LINK, CPP, S64, and LN are defined. If not, -# complain and abort! +# Check that FC, LINK, CPP, S64, LN, and MAKE are defined. If not, +# either set defaults or complain and abort! if test "x$FC" = x ; then cat <&2 @@ -722,6 +769,9 @@ if test "x$CPP" = x ; then CPP="cpp" fi +if test "x$MAKE" = x ; then + MAKE="make" +fi echo "#define A a" | $CPP > test_cpp 2>&1 RETVAL=$? if test "x$RETVAL" != x0 ; then @@ -758,6 +808,7 @@ fi rm -f genmake_test_ln genmake_tlink + printf "\n=== Checking system libraries ===\n" echo -n " Do we have the system() command using $FC... " cat > genmake_tcomp.f < FC_NAMEMANGLE.h.template cmp FC_NAMEMANGLE.h FC_NAMEMANGLE.h.template > /dev/null 2>&1 RETVAL=$? if test "x$RETVAL" != x0 ; then mv -f FC_NAMEMANGLE.h.template FC_NAMEMANGLE.h fi +rm -f genmake_t* printf "\n=== Setting defaults ===\n" @@ -1525,6 +1578,10 @@ \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.f cat ftl_input_code_ftl.f | sed -f adjoint_sed > ftl_taf_output.f +ftltafonly: + \$(TAF) \$(FTL_TAF_FLAGS) \$(TAF_EXTRA) ftl_input_code.f + cat ftl_input_code_ftl.f | sed -f adjoint_sed > ftl_taf_output.f + ftl_taf: ftl_taf_output.o \$(OBJFILES) \$(LINK) -o ${EXE_FTL} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ftl_taf_output.o \$(LIBS) @@ -1537,21 +1594,11 @@ # ... SVD ... -svd: svd_taf -svd_taf_f: svd_taf_output.f - -svd_input_code.f: \$(SRCFILES) - cmp svd_config.template AD_CONFIG.h || cat svd_config.template > AD_CONFIG.h - @make \$(F77FILES) - @make \$(AD_FLOW_FILES) - cat \$(AD_FLOW_FILES) \$(AD_FILES) > svd_input_code.f - -svd_taf_output.f: svd_input_code.f - \$(TAF) \$(SVD_TAF_FLAGS) \$(TAF_EXTRA) svd_input_code.f - cat svd_input_code_ad.f | sed -f adjoint_sed > svd_taf_output.f +svdtaf: ad_taf_output.f ftl_taf_output.f +svdall: svd_taf -svd_taf: svd_taf_output.o \$(OBJFILES) - \$(LINK) -o ${EXE_SVD} \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) svd_taf_output.o \$(LIBS) +svd_taf: ad_taf_output.o ftl_taf_output.o \$(OBJFILES) + \$(LINK) -o mitgcmuv_svd \$(FFLAGS) \$(FOPTIM) \$(OBJFILES) ad_taf_output.o ftl_taf_output.o \$(LIBS) #=========================================