Commit aef2d0d8 authored by Tom Lane's avatar Tom Lane

Fix readline/libedit selection code to prefer readline over libedit

reliably (ie, regardless of which libraries they depend on).  Also
make sure that we don't select headers that obviously belong to the
wrong one of the two libraries.  This was discussed back around 4-Sep
but seems to have slipped through the cracks.  The header selection
could be checked more closely, perhaps, but let's see if this is good
enough.
parent c3df447a
# $PostgreSQL: pgsql/config/programs.m4,v 1.16 2004/09/02 20:39:57 tgl Exp $ # $PostgreSQL: pgsql/config/programs.m4,v 1.17 2004/11/30 06:13:02 tgl Exp $
# PGAC_PATH_FLEX # PGAC_PATH_FLEX
...@@ -82,10 +82,10 @@ AC_MSG_CHECKING([for readline]) ...@@ -82,10 +82,10 @@ AC_MSG_CHECKING([for readline])
AC_CACHE_VAL([pgac_cv_check_readline], AC_CACHE_VAL([pgac_cv_check_readline],
[pgac_cv_check_readline=no [pgac_cv_check_readline=no
for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do pgac_save_LIBS=$LIBS
for pgac_rllib in -lreadline -ledit ; do for pgac_rllib in -lreadline -ledit ; do
pgac_save_LIBS=$LIBS for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do
LIBS="${pgac_rllib}${pgac_lib} $LIBS" LIBS="${pgac_rllib}${pgac_lib} $pgac_save_LIBS"
AC_TRY_LINK_FUNC([readline], [[ AC_TRY_LINK_FUNC([readline], [[
# NetBSD, OpenBSD, and Irix have a broken linker that does not # NetBSD, OpenBSD, and Irix have a broken linker that does not
# recognize dependent libraries # recognize dependent libraries
...@@ -99,7 +99,6 @@ for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do ...@@ -99,7 +99,6 @@ for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do
pgac_cv_check_readline="${pgac_rllib}${pgac_lib}" pgac_cv_check_readline="${pgac_rllib}${pgac_lib}"
break 2 break 2
]]) ]])
LIBS=$pgac_save_LIBS
done done
done done
LIBS=$pgac_save_LIBS LIBS=$pgac_save_LIBS
......
...@@ -5954,10 +5954,10 @@ if test "${pgac_cv_check_readline+set}" = set; then ...@@ -5954,10 +5954,10 @@ if test "${pgac_cv_check_readline+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6 echo $ECHO_N "(cached) $ECHO_C" >&6
else else
pgac_cv_check_readline=no pgac_cv_check_readline=no
for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do pgac_save_LIBS=$LIBS
for pgac_rllib in -lreadline -ledit ; do for pgac_rllib in -lreadline -ledit ; do
pgac_save_LIBS=$LIBS for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do
LIBS="${pgac_rllib}${pgac_lib} $LIBS" LIBS="${pgac_rllib}${pgac_lib} $pgac_save_LIBS"
cat >conftest.$ac_ext <<_ACEOF cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure" #line $LINENO "configure"
#include "confdefs.h" #include "confdefs.h"
...@@ -6013,7 +6013,6 @@ else ...@@ -6013,7 +6013,6 @@ else
cat conftest.$ac_ext >&5 cat conftest.$ac_ext >&5
fi fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
LIBS=$pgac_save_LIBS
done done
done done
LIBS=$pgac_save_LIBS LIBS=$pgac_save_LIBS
...@@ -7559,7 +7558,7 @@ fi ...@@ -7559,7 +7558,7 @@ fi
done done
if test "$with_readline" = yes; then if expr x"$pgac_cv_check_readline" : 'x-lreadline' >/dev/null ; then
for ac_header in readline/readline.h for ac_header in readline/readline.h
do do
...@@ -7672,7 +7671,7 @@ _ACEOF ...@@ -7672,7 +7671,7 @@ _ACEOF
else else
for ac_header in editline/readline.h for ac_header in readline.h
do do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then if eval "test \"\${$as_ac_Header+set}\" = set"; then
...@@ -7782,8 +7781,25 @@ if test `eval echo '${'$as_ac_Header'}'` = yes; then ...@@ -7782,8 +7781,25 @@ if test `eval echo '${'$as_ac_Header'}'` = yes; then
_ACEOF _ACEOF
else else
{ { echo "$as_me:$LINENO: error: readline header not found
If you have readline already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable readline support." >&5
echo "$as_me: error: readline header not found
If you have readline already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable readline support." >&2;}
{ (exit 1); exit 1; }; }
fi
for ac_header in readline.h done
fi
done
for ac_header in readline/history.h
do do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then if eval "test \"\${$as_ac_Header+set}\" = set"; then
...@@ -7893,11 +7909,122 @@ if test `eval echo '${'$as_ac_Header'}'` = yes; then ...@@ -7893,11 +7909,122 @@ if test `eval echo '${'$as_ac_Header'}'` = yes; then
_ACEOF _ACEOF
else else
{ { echo "$as_me:$LINENO: error: readline header not found
for ac_header in history.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo "$as_me:$LINENO: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
else
# Is the header compilable?
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
#include "confdefs.h"
$ac_includes_default
#include <$ac_header>
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_header_compiler=yes
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
ac_header_compiler=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
# Is the header present?
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
else
ac_cpp_err=
fi
else
ac_cpp_err=yes
fi
if test -z "$ac_cpp_err"; then
ac_header_preproc=yes
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
ac_header_preproc=no
fi
rm -f conftest.err conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
case $ac_header_compiler:$ac_header_preproc in
yes:no )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
no:yes )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
esac
echo "$as_me:$LINENO: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
eval "$as_ac_Header=$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
fi
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<_ACEOF
#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
else
{ { echo "$as_me:$LINENO: error: history header not found
If you have readline already installed, see config.log for details on the If you have readline already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory. failure. It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable readline support." >&5 Use --without-readline to disable readline support." >&5
echo "$as_me: error: readline header not found echo "$as_me: error: history header not found
If you have readline already installed, see config.log for details on the If you have readline already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory. failure. It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable readline support." >&2;} Use --without-readline to disable readline support." >&2;}
...@@ -7912,10 +8039,120 @@ done ...@@ -7912,10 +8039,120 @@ done
fi fi
done if expr x"$pgac_cv_check_readline" : 'x-ledit' >/dev/null ; then
for ac_header in editline/readline.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo "$as_me:$LINENO: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
else
# Is the header compilable?
echo "$as_me:$LINENO: checking $ac_header usability" >&5
echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
#include "confdefs.h"
$ac_includes_default
#include <$ac_header>
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_header_compiler=yes
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
ac_header_compiler=no
fi
rm -f conftest.$ac_objext conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
echo "${ECHO_T}$ac_header_compiler" >&6
for ac_header in readline/history.h # Is the header present?
echo "$as_me:$LINENO: checking $ac_header presence" >&5
echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
#include "confdefs.h"
#include <$ac_header>
_ACEOF
if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
(eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
ac_status=$?
egrep -v '^ *\+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null; then
if test -s conftest.err; then
ac_cpp_err=$ac_c_preproc_warn_flag
else
ac_cpp_err=
fi
else
ac_cpp_err=yes
fi
if test -z "$ac_cpp_err"; then
ac_header_preproc=yes
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
ac_header_preproc=no
fi
rm -f conftest.err conftest.$ac_ext
echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
echo "${ECHO_T}$ac_header_preproc" >&6
# So? What about this header?
case $ac_header_compiler:$ac_header_preproc in
yes:no )
{ echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
no:yes )
{ echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
{ echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};;
esac
echo "$as_me:$LINENO: checking for $ac_header" >&5
echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
if eval "test \"\${$as_ac_Header+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
eval "$as_ac_Header=$ac_header_preproc"
fi
echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
fi
if test `eval echo '${'$as_ac_Header'}'` = yes; then
cat >>confdefs.h <<_ACEOF
#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
else
for ac_header in readline.h
do do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then if eval "test \"\${$as_ac_Header+set}\" = set"; then
...@@ -8025,6 +8262,23 @@ if test `eval echo '${'$as_ac_Header'}'` = yes; then ...@@ -8025,6 +8262,23 @@ if test `eval echo '${'$as_ac_Header'}'` = yes; then
_ACEOF _ACEOF
else else
{ { echo "$as_me:$LINENO: error: readline header not found
If you have libedit already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable libedit support." >&5
echo "$as_me: error: readline header not found
If you have libedit already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable libedit support." >&2;}
{ (exit 1); exit 1; }; }
fi
done
fi
done
for ac_header in editline/history.h for ac_header in editline/history.h
do do
...@@ -8248,13 +8502,13 @@ _ACEOF ...@@ -8248,13 +8502,13 @@ _ACEOF
else else
{ { echo "$as_me:$LINENO: error: history header not found { { echo "$as_me:$LINENO: error: history header not found
If you have readline already installed, see config.log for details on the If you have libedit already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory. failure. It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable readline support." >&5 Use --without-readline to disable libedit support." >&5
echo "$as_me: error: history header not found echo "$as_me: error: history header not found
If you have readline already installed, see config.log for details on the If you have libedit already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory. failure. It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable readline support." >&2;} Use --without-readline to disable libedit support." >&2;}
{ (exit 1); exit 1; }; } { (exit 1); exit 1; }; }
fi fi
...@@ -8266,10 +8520,6 @@ done ...@@ -8266,10 +8520,6 @@ done
fi fi
done
fi
if test "$with_zlib" = yes; then if test "$with_zlib" = yes; then
if test "${ac_cv_header_zlib_h+set}" = set; then if test "${ac_cv_header_zlib_h+set}" = set; then
echo "$as_me:$LINENO: checking for zlib.h" >&5 echo "$as_me:$LINENO: checking for zlib.h" >&5
......
dnl Process this file with autoconf to produce a configure script. dnl Process this file with autoconf to produce a configure script.
dnl $PostgreSQL: pgsql/configure.in,v 1.386 2004/11/22 03:06:35 pgsql Exp $ dnl $PostgreSQL: pgsql/configure.in,v 1.387 2004/11/30 06:13:04 tgl Exp $
dnl dnl
dnl Developers, please strive to achieve this order: dnl Developers, please strive to achieve this order:
dnl dnl
...@@ -714,21 +714,34 @@ AC_CHECK_HEADERS(netinet/tcp.h, [], [], ...@@ -714,21 +714,34 @@ AC_CHECK_HEADERS(netinet/tcp.h, [], [],
#endif #endif
]) ])
if test "$with_readline" = yes; then if expr x"$pgac_cv_check_readline" : 'x-lreadline' >/dev/null ; then
AC_CHECK_HEADERS(readline/readline.h, [], AC_CHECK_HEADERS(readline/readline.h, [],
[AC_CHECK_HEADERS(editline/readline.h, [], [AC_CHECK_HEADERS(readline.h, [],
[AC_CHECK_HEADERS(readline.h, [], [AC_MSG_ERROR([readline header not found
[AC_MSG_ERROR([readline header not found
If you have readline already installed, see config.log for details on the If you have readline already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory. failure. It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable readline support.])])])]) Use --without-readline to disable readline support.])])])
AC_CHECK_HEADERS(readline/history.h, [], AC_CHECK_HEADERS(readline/history.h, [],
[AC_CHECK_HEADERS(editline/history.h, [], [AC_CHECK_HEADERS(history.h, [],
[AC_CHECK_HEADERS(history.h, [], [AC_MSG_ERROR([history header not found
[AC_MSG_ERROR([history header not found
If you have readline already installed, see config.log for details on the If you have readline already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory. failure. It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable readline support.])])])]) Use --without-readline to disable readline support.])])])
fi
if expr x"$pgac_cv_check_readline" : 'x-ledit' >/dev/null ; then
AC_CHECK_HEADERS(editline/readline.h, [],
[AC_CHECK_HEADERS(readline.h, [],
[AC_MSG_ERROR([readline header not found
If you have libedit already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable libedit support.])])])
AC_CHECK_HEADERS(editline/history.h, [],
[AC_CHECK_HEADERS(history.h, [],
[AC_MSG_ERROR([history header not found
If you have libedit already installed, see config.log for details on the
failure. It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable libedit support.])])])
fi fi
if test "$with_zlib" = yes; then if test "$with_zlib" = yes; then
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment