--- MITgcm/tools/genmake2 2004/07/06 18:06:49 1.83 +++ MITgcm/tools/genmake2 2004/07/17 02:52:14 1.86 @@ -1,6 +1,6 @@ -#! /usr/bin/env sh +#! /usr/bin/env bash # -# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/genmake2,v 1.83 2004/07/06 18:06:49 adcroft 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" @@ -1085,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