diff --git a/config/programs.m4 b/config/programs.m4 index 3f87396533..e8ff0e7973 100644 --- a/config/programs.m4 +++ b/config/programs.m4 @@ -1,4 +1,4 @@ -# $PostgreSQL: pgsql/config/programs.m4,v 1.18 2004/12/02 20:04:19 tgl Exp $ +# $PostgreSQL: pgsql/config/programs.m4,v 1.19 2005/12/04 03:52:28 momjian Exp $ # PGAC_PATH_FLEX @@ -78,12 +78,16 @@ AC_SUBST(FLEXFLAGS) AC_DEFUN([PGAC_CHECK_READLINE], [AC_REQUIRE([AC_CANONICAL_HOST]) -AC_MSG_CHECKING([for readline]) AC_CACHE_VAL([pgac_cv_check_readline], [pgac_cv_check_readline=no pgac_save_LIBS=$LIBS -for pgac_rllib in -lreadline -ledit ; do +if test x"$with_libedit_preferred" != x"yes" +then READLINE_ORDER="-lreadline -ledit" +else READLINE_ORDER="-ledit -lreadline" +fi +for pgac_rllib in $READLINE_ORDER ; do + AC_MSG_CHECKING([for ${pgac_rllib}]) for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do LIBS="${pgac_rllib}${pgac_lib} $pgac_save_LIBS" AC_TRY_LINK_FUNC([readline], [[ @@ -98,20 +102,25 @@ for pgac_rllib in -lreadline -ledit ; do esac pgac_cv_check_readline="${pgac_rllib}${pgac_lib}" - break 2 + break ]]) done + if test "$pgac_cv_check_readline" != no ; then + AC_MSG_RESULT([yes ($pgac_cv_check_readline)]) + break + else + AC_MSG_RESULT(no) + fi done LIBS=$pgac_save_LIBS ])[]dnl AC_CACHE_VAL if test "$pgac_cv_check_readline" != no ; then - AC_DEFINE(HAVE_LIBREADLINE, 1, [Define if you have a function readline library]) LIBS="$pgac_cv_check_readline $LIBS" - AC_MSG_RESULT([yes ($pgac_cv_check_readline)]) -else - AC_MSG_RESULT(no) -fi])# PGAC_CHECK_READLINE + AC_DEFINE(HAVE_LIBREADLINE, 1, [Define if you have a function readline library]) +fi + +])# PGAC_CHECK_READLINE diff --git a/configure b/configure index f3cb1136b2..089573a0a7 100755 --- a/configure +++ b/configure @@ -890,7 +890,8 @@ Optional Packages: --with-pam build with PAM support --with-bonjour build with Bonjour support --with-openssl build with OpenSSL support - --without-readline do not use Readline + --with-libedit-preferred prefer BSD Libedit over GNU Readline + --without-readline do not use GNU Readline / BSD Libedit line editing --without-zlib do not use Zlib --with-gnu-ld assume the C compiler uses GNU ld [default=no] @@ -3771,6 +3772,37 @@ echo "${ECHO_T}$with_openssl" >&6 +# +# Prefer libedit +# + + + +# Check whether --with-libedit-preferred or --without-libedit-preferred was given. +if test "${with_libedit_preferred+set}" = set; then + withval="$with_libedit_preferred" + + case $withval in + yes) + : + ;; + no) + : + ;; + *) + { { echo "$as_me:$LINENO: error: no argument expected for --with-libedit-preferred option" >&5 +echo "$as_me: error: no argument expected for --with-libedit-preferred option" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + +else + with_libedit_preferred=no + +fi; + + + # # Readline # @@ -6490,15 +6522,19 @@ fi if test "$with_readline" = yes; then -echo "$as_me:$LINENO: checking for readline" >&5 -echo $ECHO_N "checking for readline... $ECHO_C" >&6 if test "${pgac_cv_check_readline+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else pgac_cv_check_readline=no pgac_save_LIBS=$LIBS -for pgac_rllib in -lreadline -ledit ; do +if test x"$with_libedit_preferred" != x"yes" +then READLINE_ORDER="-lreadline -ledit" +else READLINE_ORDER="-ledit -lreadline" +fi +for pgac_rllib in $READLINE_ORDER ; do + echo "$as_me:$LINENO: checking for ${pgac_rllib}" >&5 +echo $ECHO_N "checking for ${pgac_rllib}... $ECHO_C" >&6 for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do LIBS="${pgac_rllib}${pgac_lib} $pgac_save_LIBS" cat >conftest.$ac_ext <<_ACEOF @@ -6557,7 +6593,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 esac pgac_cv_check_readline="${pgac_rllib}${pgac_lib}" - break 2 + break else echo "$as_me: failed program was:" >&5 @@ -6567,24 +6603,29 @@ fi rm -f conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done + if test "$pgac_cv_check_readline" != no ; then + echo "$as_me:$LINENO: result: yes ($pgac_cv_check_readline)" >&5 +echo "${ECHO_T}yes ($pgac_cv_check_readline)" >&6 + break + else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + fi done LIBS=$pgac_save_LIBS fi if test "$pgac_cv_check_readline" != no ; then + LIBS="$pgac_cv_check_readline $LIBS" cat >>confdefs.h <<\_ACEOF #define HAVE_LIBREADLINE 1 _ACEOF - LIBS="$pgac_cv_check_readline $LIBS" - echo "$as_me:$LINENO: result: yes ($pgac_cv_check_readline)" >&5 -echo "${ECHO_T}yes ($pgac_cv_check_readline)" >&6 -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 fi + + if test x"$pgac_cv_check_readline" = x"no"; then { { echo "$as_me:$LINENO: error: readline library not found If you have readline already installed, see config.log for details on the diff --git a/configure.in b/configure.in index f3cdd74503..99ad9be36d 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ dnl Process this file with autoconf to produce a configure script. -dnl $PostgreSQL: pgsql/configure.in,v 1.432 2005/11/05 16:42:01 tgl Exp $ +dnl $PostgreSQL: pgsql/configure.in,v 1.433 2005/12/04 03:52:24 momjian Exp $ dnl dnl Developers, please strive to achieve this order: dnl @@ -467,11 +467,18 @@ AC_MSG_RESULT([$with_openssl]) AC_SUBST(with_openssl) +# +# Prefer libedit +# +PGAC_ARG_BOOL(with, libedit-preferred, no, + [ --with-libedit-preferred prefer BSD Libedit over GNU Readline]) + + # # Readline # PGAC_ARG_BOOL(with, readline, yes, - [ --without-readline do not use Readline]) + [ --without-readline do not use GNU Readline / BSD Libedit line editing]) # readline on MinGW has problems with backslashes in psql and other bugs. # This is particularly a problem with non-US code pages. # Therefore disable its use until we understand the cause. 2004-07-20 diff --git a/doc/src/sgml/installation.sgml b/doc/src/sgml/installation.sgml index d60e5554f3..ab57f11f0a 100644 --- a/doc/src/sgml/installation.sgml +++ b/doc/src/sgml/installation.sgml @@ -1,4 +1,4 @@ - + <![%standalone-include[<productname>PostgreSQL</>]]> @@ -50,7 +50,7 @@ su - postgres <para> In general, a modern Unix-compatible platform should be able to run <productname>PostgreSQL</>. - The platforms that had received specific testing at the + The platforms that had received specific testing at the time of release are listed in <xref linkend="supported-platforms"> below. In the <filename>doc</> subdirectory of the distribution there are several platform-specific <acronym>FAQ</> documents you @@ -107,16 +107,20 @@ su - postgres </indexterm> The <acronym>GNU</> <productname>Readline</> library (for - comfortable line editing and command history retrieval) will be - used by default. If you don't want to use it then you must - specify the <option>--without-readline</option> option for - <filename>configure</>. (On <productname>NetBSD</productname>, - the <filename>libedit</filename> library is - <productname>Readline</productname>-compatible and is used if - <filename>libreadline</filename> is not found.) If you are using - a package-based Linux distribution, be aware that you need both - the <literal>readline</> and <literal>readline-devel</> packages, - if those are separate in your distribution. + simple line editing and command history retrieval) is + used by default. If you don't want to use it then you must specify + the <option>--without-readline</option> option for + <filename>configure</>. As an alternative, you can often use the + BSD-licensed <filename>libedit</filename> library, originally + developed on <productname>NetBSD</productname>. The + <filename>libedit</filename> library is + GNU <productname>Readline</productname>-compatible and is used if + <filename>libreadline</filename> is not found, or if + <option>--with-libedit-preferred</option> is used as an + option to <filename>configure</>. If you are using a package-based + Linux distribution, be aware that you need both the + <literal>readline</> and <literal>readline-devel</> packages, if + those are separate in your distribution. </para> </listitem> @@ -857,6 +861,16 @@ su - postgres </listitem> </varlistentry> + <varlistentry> + <term><option>--with-libedit-preferred</option></term> + <listitem> + <para> + Favors the use of the BSD-licensed <application>libedit</> library + rather than GPL-licensed <application>Readline</>. + </para> + </listitem> + </varlistentry> + <varlistentry> <term><option>--without-readline</option></term> <listitem>