Fix cpp-from-stdin detection so that it works even if the
authorTom Lane
Mon, 26 Oct 1998 00:56:16 +0000 (00:56 +0000)
committerTom Lane
Mon, 26 Oct 1998 00:56:16 +0000 (00:56 +0000)
compiler silently accepts an empty command line.
Don't bother searching for bison and yacc unless we are going to use them.

src/configure.in

index 39d130de105a6ec67ead7ed6a9544184337811ea..947417dedbfd10c98b7d2aea7b0993017cb4c9c7 100644 (file)
@@ -355,36 +355,40 @@ echo "- setting LDFLAGS=$LDFLAGS"
 dnl Checks for programs.
 AC_PROG_CPP
 
-dnl Check to see what flags are required to get stdin into cpp
+dnl Check to see what flags are required to get stdin into cpp.
+dnl Note that we need to look at the output, since the C compiler might
+dnl not raise an error when no input files are named on the cmd line.
+dnl (This is a somewhat modified version of AC_EGREP_CPP)
+dnl AC_TRY_CPPSTDIN(PATTERN, PROGRAM, [ACTION-IF-FOUND [,
+dnl                 ACTION-IF-NOT-FOUND]])
 AC_DEFUN(AC_TRY_CPPSTDIN,
    [AC_REQUIRE_CPP()dnl
    cat > conftest.$ac_ext <
 [#]line __oline__ "configure"
 #include "confdefs.h"
-[$1]
+[$2]
 EOF
-   ac_try="$ac_cpp $CPPSTDIN /dev/null 2>conftest.out"
-   AC_TRY_EVAL(ac_try)
-   ac_err=`grep -v '^ *+' conftest.out`
-   if test -z "$ac_err"; then
-     ifelse([$2], , :, [rm -rf conftest*
-     $2])
-   else
-     echo "$ac_err" >&AC_FD_CC
-     echo "configure: failed program was:" >&AC_FD_CC
-     cat conftest.$ac_ext >&AC_FD_CC
-   ifelse([$3], , , [  rm -rf conftest*
-     $3
+dnl eval is necessary to expand ac_cpp.
+dnl Ultrix and Pyramid sh refuse to redirect output of eval, so use subshell.
+if (eval "$ac_cpp $CPPSTDIN &AC_FD_CC |
+  grep "$1" >/dev/null 2>&1; then
+  ifelse([$3], , :, [rm -rf conftest*
+  $3])
+ifelse([$4], , , [else
+  rm -rf conftest*
+  $4
 ])dnl
 fi
-rm -f conftest*])
+rm -f conftest*
+])
 
 AC_MSG_CHECKING(how to use cpp with stdin)
 if test -z "$CPPSTDIN"; then
 AC_CACHE_VAL(ac_cv_cpp_stdin,
-   [  CPPSTDIN=""
-     AC_TRY_CPPSTDIN([#include 
-       Syntax Error], , CPPSTDIN="-")
+   [  CPPSTDIN="-"
+     AC_TRY_CPPSTDIN([^Find Me Or Else],
+[#include 
+Find Me Or Else], , CPPSTDIN="")
      ac_cv_cpp_stdin="$CPPSTDIN"])
      CPPSTDIN="$ac_cv_cpp_stdin"
 else
@@ -510,24 +514,24 @@ dnl (1) We specify in YACC and YFLAGS what we want
 dnl (2) We have bison and we use bison -y
 dnl (3) We have yacc and use it
 
-AC_SUBST(YACC)
-AC_SUBST(YFLAGS)
-AC_PATH_PROG(yacc, yacc)
-AC_PATH_PROG(bison, bison)
 if test -f "$YACC"
 then
    echo "- Using $YACC $YFLAGS"
-elif test -f "$bison"
-then
+else
+    AC_PATH_PROG(bison, bison)
+    if test -f "$bison"
+    then
    echo "- Using $bison -y $YFLAGS"
    YACC="$bison"
    YFLAGS="-y $YFLAGS"
-   export YACC YFLAGS
-else
+    else
+   AC_PATH_PROG(yacc, yacc)
    echo "- Using $yacc $YFLAGS"
    YACC="$yacc"
-   export YACC
+    fi
 fi
+AC_SUBST(YACC)
+AC_SUBST(YFLAGS)
 
 AC_CHECK_LIB(sfio,     main)
 for curses in ncurses curses ; do