--- MITgcm/tools/genmake2 2004/06/16 21:15:47 1.79 +++ MITgcm/tools/genmake2 2004/07/17 02:52:14 1.86 @@ -1,6 +1,6 @@ #! /usr/bin/env bash # -# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/genmake2,v 1.79 2004/06/16 21:15:47 edhill Exp $ +# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/genmake2,v 1.86 2004/07/17 02:52:14 edhill Exp $ # # Makefile generator for MITgcm UV codes # created by cnh 03/98 @@ -158,6 +158,67 @@ } +look_for_makedepend() { + + # The "original" makedepend is part of the Imake system that is + # most often distributed with XFree86 or with an XFree86 source + # package. As a result, many machines (eg. generic Linux) do not + # have a system-default "makedepend" available. For those + # systems, we have two fall-back options: + # + # 1) a makedepend implementation shipped with the cyrus-imapd + # package: ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/ + # + # 2) a known-buggy xmakedpend shell script + # + # So the choices are, in order: + # + # 1) use the user-specified program + # 2) use a system-wide default + # 3) locally build and use the cyrus implementation + # 4) fall back to the buggy local xmakedpend script + # + if test "x${MAKEDEPEND}" = x ; then + which makedepend > /dev/null 2>&1 + RV0=$? + cat <> genmake_tc.f + program test + write(*,*) 'test' + stop + end +EOF + makedepend genmake_tc.f > /dev/null 2>&1 + RV1=$? + if test "x${RV0}${RV1}" = x00 ; then + MAKEDEPEND=makedepend + else + echo " a system-default makedepend was not found." + + # Try to build the cyrus implementation + rm -f ./genmake_cy_md + ( + cd $ROOTDIR/tools/cyrus-imapd-makedepend \ + && ./configure > /dev/null 2>&1 \ + && make > /dev/null 2>&1 + if test -x ./makedepend.exe ; then + $LN ./makedepend.exe ./makedepend + fi + ./makedepend ifparser.c > /dev/null 2>&1 \ + && echo "true" + ) > ./genmake_cy_md + grep true ./genmake_cy_md > /dev/null 2>&1 + RETVAL=$? + if test "x$RETVAL" = x0 ; then + MAKEDEPEND='$(TOOLSDIR)/cyrus-imapd-makedepend/makedepend' + else + MAKEDEPEND='$(TOOLSDIR)/xmakedepend' + fi + rm -f ./genmake_cy_md + fi + fi +} + + # Guess possible config options for this host find_possible_configs() { @@ -188,60 +249,7 @@ CPP="cpp -traditional -P" fi - # The "original" makedepend is part of the Imake system that is - # most often distributed with XFree86 or with an XFree86 source - # package. As a result, many machines (eg. generic Linux) do not - # have a system-default "makedepend" available. For those - # systems, we have two fall-back options: - # - # 1) a makedepend implementation shipped with the cyrus-imapd - # package: ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/ - # - # 2) a known-buggy xmakedpend shell script - # - # So the choices are, in order: - # - # 1) use the user-specified program - # 2) use a system-wide default - # 3) locally build and use the cyrus implementation - # 4) fall back to the buggy local xmakedpend script - # - if test "x${MAKEDEPEND}" = x ; then - which makedepend > /dev/null 2>&1 - RV0=$? - cat <> genmake_tc.f - program test - write(*,*) 'test' - stop - end -EOF - makedepend genmake_tc.f > /dev/null 2>&1 - RV1=$? - if test ! "x${RV0}${RV1}" = x00 ; then - echo " a system-default makedepend was not found." - - # Try to build the cyrus impl - rm -f ./genmake_cy_md - ( - cd $ROOTDIR/tools/cyrus-imapd-makedepend \ - && ./configure > /dev/null 2>&1 \ - && make > /dev/null 2>&1 - if test -x ./makedepend.exe ; then - $LN ./makedepend.exe ./makedepend - fi - ./makedepend ifparser.c > /dev/null 2>&1 \ - && echo "true" - ) > ./genmake_cy_md - grep true ./genmake_cy_md > /dev/null 2>&1 - RETVAL=$? - if test "x$RETVAL" = x0 ; then - MAKEDEPEND='$(TOOLSDIR)/cyrus-imapd-makedepend/makedepend' - else - MAKEDEPEND='$(TOOLSDIR)/xmakedepend' - fi - rm -f ./genmake_cy_md - fi - fi + look_for_makedepend # look for possible fortran compilers tmp="$MITGCM_FC $FC efc g77 f77 pgf77 pgf95 ifc f90 f95 mpif77 mpf77 mpxlf95" @@ -682,6 +690,7 @@ FC_NAMEMANGLE= HAVE_CLOC= HAVE_NETCDF= +HAVE_ETIME= MODS= TOOLSDIR= @@ -732,7 +741,7 @@ gm_s4="CFLAGS KFLAGS1 KFLAGS2 LIBS KPPFILES NOOPTFILES NOOPTFLAGS" gm_s5="TOOLSDIR SOURCEDIRS INCLUDEDIRS PWD MAKE THISHOSTNAME THISDATE MACHINE" gm_s6="EXECUTABLE EXEHOOK EXEDIR PACKAGES_CONF" -gm_s7="HAVE_SYSTEM HAVE_FDATE FC_NAMEMANGLE" +gm_s7="HAVE_SYSTEM HAVE_FDATE FC_NAMEMANGLE HAVE_ETIME" # The following are all related to adjoint/tangent-linear stuff gm_s10="AUTODIFF_PKG_USED AD_OPTFILE TAMC TAF AD_TAMC_FLAGS AD_TAF_FLAGS" @@ -1084,9 +1093,7 @@ else rm -f test_cpp fi -if test "x$MAKEDEPEND" = x ; then - MAKEDEPEND=makedepend -fi +look_for_makedepend if test "x$LN" = x ; then LN="ln -s" fi @@ -1152,6 +1159,28 @@ fi rm -f genmake_tcomp* +printf " Do we have the etime() command using $FC... " +cat > genmake_tcomp.f < genmake_tcomp.log 2>&1 +RETVAL=$? +if test "x$RETVAL" = x0 ; then + HAVE_ETIME=t + DEFINES="$DEFINES -DHAVE_ETIME" + echo "yes" +else + HAVE_ETIME= + echo "no" +fi +rm -f genmake_tcomp* + printf " Can we call simple C routines (here, \"cloc()\") using $FC... " check_HAVE_CLOC if test "x$HAVE_CLOC" != x ; then @@ -1774,7 +1803,7 @@ echo 'OBJFILES = $(SRCFILES:.F=.o) $(CSRCFILES:.c=.o) $(F90SRCFILES:.F90=.o)' >> $MAKEFILE echo >> $MAKEFILE echo '.SUFFIXES:' >> $MAKEFILE -echo '.SUFFIXES: .o .F .p .'$FS' .c .F90 .'$FS90 >> $MAKEFILE +echo '.SUFFIXES: .o .'$FS' .p .F .c .'$FS90' .F90' >> $MAKEFILE rm -f srclist.inc csrclist.inc hlist.inc flist.tmp clist.tmp f90srclist.inc rm -f ad_flow_files.inc