diff options
author | unknown <vva@eagle.mysql.r18.ru> | 2004-08-24 19:23:23 +0500 |
---|---|---|
committer | unknown <vva@eagle.mysql.r18.ru> | 2004-08-24 19:23:23 +0500 |
commit | de225e637a65366aab0ad5fd8b08f24af8ee8f67 (patch) | |
tree | 9448cab63e74b61a56dbd133d3ef099a5244f068 | |
parent | 83e3d3f9a3ab6888292b8bcb15e0f77f00249289 (diff) | |
download | mariadb-git-de225e637a65366aab0ad5fd8b08f24af8ee8f67.tar.gz |
fixed :
Bug #3937 fails to compile with both gcc 3.3.3/icc8
Bug #4728 mysql couldn't be compiled using system readline (readline-4.3)
acinclude.m4:
1. added defun MYSQL_CHECK_READLINE_DECLARES_HIST_ENTRY for last versions of readline and libedit
2. added #undef __P in defuns MYSQL_CHECK_LIBEDIT_INTERFACE, MYSQL_CHECK_NEW_RL_INTERFACE
client/mysql.cc:
1. added #undef __P before #include "readline/readline.h" because readline-4.2 declares own __P
2. changed !defined(USE_LIBEDIT_INTERFACE) to !defined(HAVE_HIST_ENTRY) before declaring of own hist_entry
because latest versions of libedit declare hist_entry too
cmd-line-utils/Makefile.am:
added copyright header
configure.in:
1. added comment for --with-readline/--with-libedit options
2. added define for HAVE_HIST_ENTRY and macro to check it
3. added AC_LANG_CPLUSPLUS before readline/libedit checks
-rw-r--r-- | acinclude.m4 | 23 | ||||
-rw-r--r-- | client/mysql.cc | 3 | ||||
-rw-r--r-- | cmd-line-utils/Makefile.am | 17 | ||||
-rw-r--r-- | configure.in | 19 |
4 files changed, 61 insertions, 1 deletions
diff --git a/acinclude.m4 b/acinclude.m4 index 11f5d07200a..5007b1e3efb 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -1,10 +1,32 @@ # Local macros for automake & autoconf + +AC_DEFUN(MYSQL_CHECK_READLINE_DECLARES_HIST_ENTRY,[ + AC_CACHE_CHECK([HIST_ENTRY is declared in readline/readline.h], mysql_cv_hist_entry_declared, + AC_TRY_COMPILE( + [ + #include "stdio.h" + #undef __P // readline-4.2 declares own __P + #include "readline/readline.h" + ], + [ + HIST_ENTRY entry; + ], + [ + mysql_cv_hist_entry_declared=yes + AC_DEFINE_UNQUOTED(HAVE_HIST_ENTRY) + ], + [mysql_cv_libedit_interface=no] + ) + ) +]) + AC_DEFUN(MYSQL_CHECK_LIBEDIT_INTERFACE,[ AC_CACHE_CHECK([libedit variant of rl_completion_entry_function], mysql_cv_libedit_interface, AC_TRY_COMPILE( [ #include "stdio.h" + #undef __P // readline-4.2 declares own __P #include "readline/readline.h" ], [ @@ -26,6 +48,7 @@ AC_DEFUN(MYSQL_CHECK_NEW_RL_INTERFACE,[ AC_TRY_COMPILE( [ #include "stdio.h" + #undef __P // readline-4.2 declares own __P #include "readline/readline.h" ], [ diff --git a/client/mysql.cc b/client/mysql.cc index 015c168cea7..0f2fd5d1004 100644 --- a/client/mysql.cc +++ b/client/mysql.cc @@ -84,6 +84,7 @@ extern "C" { #if defined( __WIN__) || defined(OS2) #include <conio.h> #elif !defined(__NETWARE__) +#undef __P // readline-4.2 declares own __P #include <readline/readline.h> #define HAVE_READLINE #endif @@ -294,7 +295,7 @@ static const char *server_default_groups[]= HIST_ENTRY is defined for libedit, but not for the real readline Need to redefine it for real readline to find it */ -#if !defined(USE_LIBEDIT_INTERFACE) +#if !defined(HAVE_HIST_ENTRY) typedef struct _hist_entry { const char *line; const char *data; diff --git a/cmd-line-utils/Makefile.am b/cmd-line-utils/Makefile.am index 7214d1231f9..88aaedde06d 100644 --- a/cmd-line-utils/Makefile.am +++ b/cmd-line-utils/Makefile.am @@ -1,3 +1,20 @@ +# Copyright (C) 2004 MySQL AB +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Library General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public +# License along with this library; if not, write to the Free +# Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, +# MA 02111-1307, USA + ## Process this file with automake to create Makefile.in SUBDIRS= @readline_basedir@ diff --git a/configure.in b/configure.in index 664ffd2a4a1..288454d2c6c 100644 --- a/configure.in +++ b/configure.in @@ -2303,6 +2303,20 @@ AC_ARG_WITH(libedit, [ with_libedit=undefined ] ) +# +# We support next variants of compilation: +# --with-readline +# | yes | no | undefined +# --with-libedit | | | +# ---------------+----------------+------+---------------------------------- +# yes | ERROR! | use libedit from mysql sources +# ---------------+----------------+------+---------------------------------- +# no | use readline | use system readline or external libedit +# | from mysql | according to results of m4 tests +# ---------------+ sources (if it + +---------------------------------- +# undefined | is presented) | | use libedit from mysql sources + + compile_readline="no" compile_libedit="no" @@ -2330,6 +2344,7 @@ then readline_link="\$(top_builddir)/cmd-line-utils/libedit/liblibedit.a" readline_h_ln_cmd="\$(LN) -s \$(top_builddir)/cmd-line-utils/libedit/readline readline" compile_libedit=yes + AC_DEFINE_UNQUOTED(HAVE_HIST_ENTRY) AC_DEFINE_UNQUOTED(USE_LIBEDIT_INTERFACE, 1) elif test "$with_readline" = "yes" then @@ -2341,8 +2356,12 @@ then compile_readline=yes AC_DEFINE_UNQUOTED(USE_NEW_READLINE_INTERFACE, 1) else + AC_LANG_SAVE + AC_LANG_CPLUSPLUS MYSQL_CHECK_LIBEDIT_INTERFACE MYSQL_CHECK_NEW_RL_INTERFACE + MYSQL_CHECK_READLINE_DECLARES_HIST_ENTRY + AC_LANG_RESTORE if [test "$mysql_cv_new_rl_interface" = "yes"] || [test "$mysql_cv_libedit_interface" = "no"] then readline_link="-lreadline" |