--- MITgcm/tools/genmake2 2004/07/12 15:49:08 1.84 +++ MITgcm/tools/genmake2 2004/07/27 20:59:19 1.90 @@ -1,6 +1,6 @@ -#! /usr/bin/env sh +#! /usr/bin/env bash # -# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/genmake2,v 1.84 2004/07/12 15:49:08 edhill Exp $ +# $Header: /home/ubuntu/mnt/e9_copy/MITgcm/tools/genmake2,v 1.90 2004/07/27 20:59:19 edhill Exp $ # # Makefile generator for MITgcm UV codes # created by cnh 03/98 @@ -122,7 +122,7 @@ stop end EOF - test -e Makefile && mv -f Makefile Makefile.bak + test -f Makefile && mv -f Makefile Makefile.bak cat <> Makefile %.$tfs : %.F .SUFFIXES: @@ -131,7 +131,7 @@ EOF $MAKE "genmake_hello."$tfs > /dev/null 2>&1 RETVAL=$? - if test "x$RETVAL" != x0 -o ! -e "genmake_hello."$tfs ; then + if test "x$RETVAL" != x0 -o ! -f "genmake_hello."$tfs ; then if test "x$FS" = x ; then FS='for' FS90='fr9' @@ -149,7 +149,7 @@ fi fi rm -f genmake_hello.* Makefile - test -e Makefile && mv -f Makefile.bak Makefile + test -f Makefile && mv -f Makefile.bak Makefile # If we make it here, use the extensions FS=$tfs @@ -179,44 +179,64 @@ # 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 + 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 + 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 + build_cyrus_makedepend + RETVAL=$? + if test "x$RETVAL" != x0 ; then + MAKEDEPEND='$(TOOLSDIR)/xmakedepend' + fi + rm -f ./genmake_cy_md + fi + else + # echo "MAKEDEPEND=${MAKEDEPEND}" + echo "${MAKEDEPEND}" | grep -i cyrus > /dev/null 2>&1 + RETVAL=$? + if test x"$RETVAL" = x0 ; then + build_cyrus_makedepend + fi fi } +build_cyrus_makedepend() { + 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=$? + rm -f ./genmake_cy_md + if test "x$RETVAL" = x0 ; then + MAKEDEPEND='$(TOOLSDIR)/cyrus-imapd-makedepend/makedepend' + return 0 + else + echo "WARNING: unable to build cyrus-imapd-makedepend" + return 1 + fi +} + # Guess possible config options for this host find_possible_configs() { @@ -481,6 +501,12 @@ # Build a CPP macro to automate calling C routines from FORTRAN get_fortran_c_namemangling() { + + #echo "FC_NAMEMANGLE = \"$FC_NAMEMANGLE\"" + if test ! "x$FC_NAMEMANGLE" = x ; then + return 0 + fi + default_nm="#define FC_NAMEMANGLE(X) X ## _" cat > genmake_test.c < genmake_tnc.f \ + #echo "$CPP $DEFINES $INCLUDES" + $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f \ && $FC $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.f $LIBS >> genmake_tnc.log 2>&1 RET_COMPILE=$? test -x ./genmake_tnc && ./genmake_tnc >> genmake_tnc.log 2>&1 @@ -626,7 +653,7 @@ HAVE_NETCDF=t else # try again with "-lnetcdf" added to the libs - $CPP genmake_tnc.for > genmake_tnc.f \ + $CPP $DEFINES $INCLUDES genmake_tnc.for > genmake_tnc.f \ && $FC $FFLAGS $FOPTIM -o genmake_tnc genmake_tnc.f \ $LIBS -lnetcdf >> genmake_tnc_2.log 2>&1 RET_COMPILE=$? @@ -663,7 +690,7 @@ ENABLE= DISABLE= MAKEFILE= -MAKEDEPEND= +#MAKEDEPEND= PDEPEND= DUMPSTATE=t PDEFAULT= @@ -769,7 +796,7 @@ fi done printf " getting local config information: " -if test -e $gm_local ; then +if test -f $gm_local ; then echo "using $gm_local" . $gm_local # echo "DISABLE=$DISABLE" @@ -790,7 +817,7 @@ #done #parse_options ac_prev= -for ac_option ; do +for ac_option in $@ ; do G2ARGS="$G2ARGS \"$ac_option\"" @@ -958,7 +985,8 @@ fi if test "x${ROOTDIR}" = x ; then - if test "${PWD##/*/}" = "bin" -a -d ../model -a -d ../eesup -a -d ../pkg ; then + tmp=`echo $PWD | sed -e 's/\// /g' | awk '{print $NR}'` + if test "x$tmp" = "xbin" -a -d ../model -a -d ../eesup -a -d ../pkg ; then ROOTDIR=".." else for d in . .. ../.. ../../.. ../../../.. ../../../../.. ; do @@ -1220,7 +1248,8 @@ fi if test "x${EXEDIR}" = x ; then - if test "${PWD##/*/}" = "bin" -a -d ../exe -a $ROOTDIR = .. ; then + tmp=`echo $PWD | sed -e 's/\// /g' | awk '{print $NR}'` + if test "x$tmp" = "xbin" -a -d ../exe -a $ROOTDIR = .. ; then EXEDIR=../exe else EXEDIR=. @@ -1338,7 +1367,8 @@ PACKAGES="$PACKAGES $i" done echo " before group expansion packages are: $PACKAGES" - while ! expand_pkg_groups; do echo > /dev/null; done + RET=1 + while test $RET = 1 ; do expand_pkg_groups; RET=$?; done echo " after group expansion packages are: $PACKAGES" fi fi @@ -1447,7 +1477,8 @@ echo " the dependency rules for \"$dname\"" exit 1 fi - i=$(( $i + 1 )) + i=`echo "$i + 1" | bc -l` + #i=$(( $i + 1 )) done ck=$ck"t" done @@ -1609,9 +1640,7 @@ echo "=== Creating the Makefile ===" echo " setting INCLUDES" for i in $INCLUDEDIRS ; do - if ! test -d $i ; then -# INCLUDES="$INCLUDES -I$i" -# else + if test ! -d $i ; then echo "Warning: can't find INCLUDEDIRS=\"$i\"" fi done @@ -1686,7 +1715,7 @@ echo "" >> hlist.inc echo "" >> ad_flow_files.inc -if test -e $MAKEFILE ; then +if test -f $MAKEFILE ; then mv -f $MAKEFILE "$MAKEFILE.bak" fi echo " Writing makefile: $MAKEFILE"