summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2004-11-30 06:13:04 +0000
committerTom Lane2004-11-30 06:13:04 +0000
commit290e320b6aab46c862d70f1dedbdf463ee0c9a57 (patch)
tree70a6d18372eb26c9e1b2b5d0d4db3b2b7a172d0d
parentc43474be7d85a8d143b22a27245a4bb0ac7c028b (diff)
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.
-rw-r--r--config/programs.m49
-rwxr-xr-xconfigure290
-rw-r--r--configure.in31
3 files changed, 296 insertions, 34 deletions
diff --git a/config/programs.m4 b/config/programs.m4
index c67b9f18eb..9182a0972b 100644
--- a/config/programs.m4
+++ b/config/programs.m4
@@ -82,10 +82,10 @@ AC_MSG_CHECKING([for readline])
AC_CACHE_VAL([pgac_cv_check_readline],
[pgac_cv_check_readline=no
-for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do
- for pgac_rllib in -lreadline -ledit ; do
- pgac_save_LIBS=$LIBS
- LIBS="${pgac_rllib}${pgac_lib} $LIBS"
+pgac_save_LIBS=$LIBS
+for pgac_rllib in -lreadline -ledit ; do
+ for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do
+ LIBS="${pgac_rllib}${pgac_lib} $pgac_save_LIBS"
AC_TRY_LINK_FUNC([readline], [[
# NetBSD, OpenBSD, and Irix have a broken linker that does not
# recognize dependent libraries
@@ -99,7 +99,6 @@ for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do
pgac_cv_check_readline="${pgac_rllib}${pgac_lib}"
break 2
]])
- LIBS=$pgac_save_LIBS
done
done
LIBS=$pgac_save_LIBS
diff --git a/configure b/configure
index 8fb1aff2d6..009714367f 100755
--- a/configure
+++ b/configure
@@ -5954,10 +5954,10 @@ if test "${pgac_cv_check_readline+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
pgac_cv_check_readline=no
-for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do
- for pgac_rllib in -lreadline -ledit ; do
- pgac_save_LIBS=$LIBS
- LIBS="${pgac_rllib}${pgac_lib} $LIBS"
+pgac_save_LIBS=$LIBS
+for pgac_rllib in -lreadline -ledit ; do
+ for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do
+ LIBS="${pgac_rllib}${pgac_lib} $pgac_save_LIBS"
cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
#include "confdefs.h"
@@ -6013,7 +6013,6 @@ else
cat conftest.$ac_ext >&5
fi
rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
- LIBS=$pgac_save_LIBS
done
done
LIBS=$pgac_save_LIBS
@@ -7559,7 +7558,7 @@ fi
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
do
@@ -7672,7 +7671,7 @@ _ACEOF
else
-for ac_header in editline/readline.h
+for ac_header in readline.h
do
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
@@ -7782,8 +7781,25 @@ if test `eval echo '${'$as_ac_Header'}'` = yes; then
_ACEOF
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
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
@@ -7893,11 +7909,122 @@ if test `eval echo '${'$as_ac_Header'}'` = yes; then
_ACEOF
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
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
+echo "$as_me: error: history 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;}
@@ -7912,10 +8039,120 @@ done
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
as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
if eval "test \"\${$as_ac_Header+set}\" = set"; then
@@ -8025,6 +8262,23 @@ if test `eval echo '${'$as_ac_Header'}'` = yes; then
_ACEOF
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
do
@@ -8248,13 +8502,13 @@ _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 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 readline support." >&5
+Use --without-readline to disable libedit support." >&5
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.
-Use --without-readline to disable readline support." >&2;}
+Use --without-readline to disable libedit support." >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -8266,10 +8520,6 @@ done
fi
-done
-
-fi
-
if test "$with_zlib" = yes; then
if test "${ac_cv_header_zlib_h+set}" = set; then
echo "$as_me:$LINENO: checking for zlib.h" >&5
diff --git a/configure.in b/configure.in
index e15fc7ad6e..083c3cf2c2 100644
--- a/configure.in
+++ b/configure.in
@@ -714,21 +714,34 @@ AC_CHECK_HEADERS(netinet/tcp.h, [], [],
#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(editline/readline.h, [],
- [AC_CHECK_HEADERS(readline.h, [],
- [AC_MSG_ERROR([readline header not found
+ [AC_CHECK_HEADERS(readline.h, [],
+ [AC_MSG_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.])])])])
+Use --without-readline to disable readline support.])])])
AC_CHECK_HEADERS(readline/history.h, [],
- [AC_CHECK_HEADERS(editline/history.h, [],
- [AC_CHECK_HEADERS(history.h, [],
- [AC_MSG_ERROR([history header not found
+ [AC_CHECK_HEADERS(history.h, [],
+ [AC_MSG_ERROR([history 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.])])])])
+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
if test "$with_zlib" = yes; then