Commit de225e63 authored by unknown's avatar unknown

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
parent 83e3d3f9
# Local macros for automake & autoconf # 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_DEFUN(MYSQL_CHECK_LIBEDIT_INTERFACE,[
AC_CACHE_CHECK([libedit variant of rl_completion_entry_function], mysql_cv_libedit_interface, AC_CACHE_CHECK([libedit variant of rl_completion_entry_function], mysql_cv_libedit_interface,
AC_TRY_COMPILE( AC_TRY_COMPILE(
[ [
#include "stdio.h" #include "stdio.h"
#undef __P // readline-4.2 declares own __P
#include "readline/readline.h" #include "readline/readline.h"
], ],
[ [
...@@ -26,6 +48,7 @@ AC_DEFUN(MYSQL_CHECK_NEW_RL_INTERFACE,[ ...@@ -26,6 +48,7 @@ AC_DEFUN(MYSQL_CHECK_NEW_RL_INTERFACE,[
AC_TRY_COMPILE( AC_TRY_COMPILE(
[ [
#include "stdio.h" #include "stdio.h"
#undef __P // readline-4.2 declares own __P
#include "readline/readline.h" #include "readline/readline.h"
], ],
[ [
......
...@@ -84,6 +84,7 @@ extern "C" { ...@@ -84,6 +84,7 @@ extern "C" {
#if defined( __WIN__) || defined(OS2) #if defined( __WIN__) || defined(OS2)
#include <conio.h> #include <conio.h>
#elif !defined(__NETWARE__) #elif !defined(__NETWARE__)
#undef __P // readline-4.2 declares own __P
#include <readline/readline.h> #include <readline/readline.h>
#define HAVE_READLINE #define HAVE_READLINE
#endif #endif
...@@ -294,7 +295,7 @@ static const char *server_default_groups[]= ...@@ -294,7 +295,7 @@ static const char *server_default_groups[]=
HIST_ENTRY is defined for libedit, but not for the real readline HIST_ENTRY is defined for libedit, but not for the real readline
Need to redefine it for real readline to find it Need to redefine it for real readline to find it
*/ */
#if !defined(USE_LIBEDIT_INTERFACE) #if !defined(HAVE_HIST_ENTRY)
typedef struct _hist_entry { typedef struct _hist_entry {
const char *line; const char *line;
const char *data; const char *data;
......
# 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 ## Process this file with automake to create Makefile.in
SUBDIRS= @readline_basedir@ SUBDIRS= @readline_basedir@
......
...@@ -2303,6 +2303,20 @@ AC_ARG_WITH(libedit, ...@@ -2303,6 +2303,20 @@ AC_ARG_WITH(libedit,
[ with_libedit=undefined ] [ 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_readline="no"
compile_libedit="no" compile_libedit="no"
...@@ -2330,6 +2344,7 @@ then ...@@ -2330,6 +2344,7 @@ then
readline_link="\$(top_builddir)/cmd-line-utils/libedit/liblibedit.a" readline_link="\$(top_builddir)/cmd-line-utils/libedit/liblibedit.a"
readline_h_ln_cmd="\$(LN) -s \$(top_builddir)/cmd-line-utils/libedit/readline readline" readline_h_ln_cmd="\$(LN) -s \$(top_builddir)/cmd-line-utils/libedit/readline readline"
compile_libedit=yes compile_libedit=yes
AC_DEFINE_UNQUOTED(HAVE_HIST_ENTRY)
AC_DEFINE_UNQUOTED(USE_LIBEDIT_INTERFACE, 1) AC_DEFINE_UNQUOTED(USE_LIBEDIT_INTERFACE, 1)
elif test "$with_readline" = "yes" elif test "$with_readline" = "yes"
then then
...@@ -2341,8 +2356,12 @@ then ...@@ -2341,8 +2356,12 @@ then
compile_readline=yes compile_readline=yes
AC_DEFINE_UNQUOTED(USE_NEW_READLINE_INTERFACE, 1) AC_DEFINE_UNQUOTED(USE_NEW_READLINE_INTERFACE, 1)
else else
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
MYSQL_CHECK_LIBEDIT_INTERFACE MYSQL_CHECK_LIBEDIT_INTERFACE
MYSQL_CHECK_NEW_RL_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"] if [test "$mysql_cv_new_rl_interface" = "yes"] || [test "$mysql_cv_libedit_interface" = "no"]
then then
readline_link="-lreadline" readline_link="-lreadline"
......
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