diff --git a/bin/mktestsuite b/bin/mktestsuite index 9172bd773e648b4912a94e80cd19bb253b49efb0..9c778d33b9c7e6160cfe687012dc0f7426521610 100755 --- a/bin/mktestsuite +++ b/bin/mktestsuite @@ -4,25 +4,41 @@ ## We attempt to locate a working m4 ## M4=m4 + IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" -for d in $PATH; do - test -z "$d" && ac_dir=. - # GNU m4 is named gm4 on FreeBSD - if test -f $d/gm4; then - M4=$d/gm4 - if echo 'divert(-1)changequote([[,]])define(DOIT,ifelse([foo],foo,[DOIT($1)]))DOIT([[m4exit(1)]])' | $d/gm4 >/dev/null; then - break - fi - fi - if test -f $d/m4; then - M4=$d/m4 - if echo 'divert(-1)changequote([[,]])define(DOIT,ifelse([foo],foo,[DOIT($1)]))DOIT([[m4exit(1)]])' | $d/m4 >/dev/null; then - break +HAVEGNU=no +HAVEWORKS=no + +# GNU m4 is named gm4 on FreeBSD +for m4 in gm4 m4 +do + for d in $PATH; do + test -z "$d" && ac_dir=. + + if test -f $d/$m4; then + if echo 'divert(-1)changequote([[,]])define(DOIT,ifelse([foo],foo,[DOIT($1)]))DOIT([[m4exit(1)]])' | $d/$m4 >/dev/null; then + works=yes + else + works=no + fi + + case `echo __gnu__ | $d/$m4` in + __gnu__) isgnu=no ;; + *) isgnu=yes ;; + esac + + case "$HAVEGNU-$isgnu:$HAVEWORKS-$works" in + *:no-yes|no-yes:*) + M4=$d/$m4 + HAVEGNU=$isgnu + HAVEWORKS=$works + ;; + esac fi - fi + done done -IFS="$save_ifs" +IFS="$save_ifs" ( cat <<\EOF divert(-1)