MDEV-6561 libedit detection is broken
fix readline/libedit detection: * search in readline/, editline/ and edit/readline/ * fix typos CMAKE_REQUIRES_LIBRARIES -> CMAKE_REQUIRED_LIBRARIES * use correct libedit API * use different cmake variables for libedit and readline
This commit is contained in:
parent
6b720ae4cb
commit
ae3cc4f1b7
@ -89,7 +89,7 @@ extern "C" {
|
|||||||
#if defined(__WIN__)
|
#if defined(__WIN__)
|
||||||
#include <conio.h>
|
#include <conio.h>
|
||||||
#else
|
#else
|
||||||
#include <readline/readline.h>
|
#include <readline.h>
|
||||||
#define HAVE_READLINE
|
#define HAVE_READLINE
|
||||||
#define USE_POPEN
|
#define USE_POPEN
|
||||||
#endif
|
#endif
|
||||||
|
@ -121,12 +121,6 @@ ENDIF()
|
|||||||
|
|
||||||
IF(UNIX)
|
IF(UNIX)
|
||||||
SET(WITH_EXTRA_CHARSETS all CACHE STRING "")
|
SET(WITH_EXTRA_CHARSETS all CACHE STRING "")
|
||||||
IF(EXISTS "${CMAKE_SOURCE_DIR}/COPYING")
|
|
||||||
OPTION(WITH_READLINE "" ON)
|
|
||||||
ELSE()
|
|
||||||
OPTION(WITH_LIBEDIT "" ON)
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
|
|
||||||
IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||||
|
|
||||||
|
@ -116,24 +116,23 @@ ENDMACRO()
|
|||||||
MACRO (MYSQL_USE_BUNDLED_READLINE)
|
MACRO (MYSQL_USE_BUNDLED_READLINE)
|
||||||
SET(USE_NEW_READLINE_INTERFACE 1)
|
SET(USE_NEW_READLINE_INTERFACE 1)
|
||||||
SET(HAVE_HIST_ENTRY 0 CACHE INTERNAL "" FORCE)
|
SET(HAVE_HIST_ENTRY 0 CACHE INTERNAL "" FORCE)
|
||||||
SET(READLINE_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/cmd-line-utils)
|
SET(MY_READLINE_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/cmd-line-utils/readline)
|
||||||
SET(READLINE_LIBRARY readline)
|
SET(MY_READLINE_LIBRARY readline)
|
||||||
ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/cmd-line-utils/readline)
|
ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/cmd-line-utils/readline)
|
||||||
ENDMACRO()
|
ENDMACRO()
|
||||||
|
|
||||||
MACRO (MYSQL_FIND_SYSTEM_READLINE)
|
MACRO (MYSQL_FIND_SYSTEM_READLINE)
|
||||||
|
|
||||||
FIND_PATH(READLINE_INCLUDE_DIR readline/readline.h )
|
FIND_PATH(READLINE_INCLUDE_DIR readline.h PATH_SUFFIXES readline)
|
||||||
FIND_LIBRARY(READLINE_LIBRARY NAMES readline)
|
FIND_LIBRARY(READLINE_LIBRARY NAMES readline)
|
||||||
MARK_AS_ADVANCED(READLINE_INCLUDE_DIR READLINE_LIBRARY)
|
MARK_AS_ADVANCED(READLINE_INCLUDE_DIR READLINE_LIBRARY)
|
||||||
|
|
||||||
SET(CMAKE_REQUIRES_LIBRARIES ${READLINE_LIBRARY} ${CURSES_LIBRARY})
|
|
||||||
|
|
||||||
IF(READLINE_LIBRARY AND READLINE_INCLUDE_DIR)
|
IF(READLINE_LIBRARY AND READLINE_INCLUDE_DIR)
|
||||||
SET(CMAKE_REQUIRED_LIBRARIES ${READLINE_LIBRARY} ${CURSES_LIBRARY})
|
SET(CMAKE_REQUIRED_LIBRARIES ${READLINE_LIBRARY} ${CURSES_LIBRARY})
|
||||||
|
SET(CMAKE_REQUIRED_INCLUDES ${READLINE_INCLUDE_DIR})
|
||||||
CHECK_CXX_SOURCE_COMPILES("
|
CHECK_CXX_SOURCE_COMPILES("
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <readline/readline.h>
|
#include <readline.h>
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
rl_completion_func_t *func1= (rl_completion_func_t*)0;
|
rl_completion_func_t *func1= (rl_completion_func_t*)0;
|
||||||
@ -141,19 +140,9 @@ MACRO (MYSQL_FIND_SYSTEM_READLINE)
|
|||||||
}"
|
}"
|
||||||
NEW_READLINE_INTERFACE)
|
NEW_READLINE_INTERFACE)
|
||||||
|
|
||||||
CHECK_CXX_SOURCE_COMPILES("
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <readline/readline.h>
|
|
||||||
int main(int argc, char **argv)
|
|
||||||
{
|
|
||||||
HIST_ENTRY entry;
|
|
||||||
return 0;
|
|
||||||
}"
|
|
||||||
HAVE_HIST_ENTRY)
|
|
||||||
|
|
||||||
CHECK_C_SOURCE_COMPILES("
|
CHECK_C_SOURCE_COMPILES("
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <readline/readline.h>
|
#include <readline.h>
|
||||||
#if RL_VERSION_MAJOR > 5
|
#if RL_VERSION_MAJOR > 5
|
||||||
#error
|
#error
|
||||||
#endif
|
#endif
|
||||||
@ -176,30 +165,27 @@ MACRO (MYSQL_FIND_SYSTEM_READLINE)
|
|||||||
ENDIF(READLINE_V5)
|
ENDIF(READLINE_V5)
|
||||||
ENDIF(NEW_READLINE_INTERFACE)
|
ENDIF(NEW_READLINE_INTERFACE)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
SET(CMAKE_REQUIRES_LIBRARIES )
|
|
||||||
ENDMACRO()
|
ENDMACRO()
|
||||||
|
|
||||||
MACRO (MYSQL_FIND_SYSTEM_LIBEDIT)
|
MACRO (MYSQL_FIND_SYSTEM_LIBEDIT)
|
||||||
|
FIND_PATH(LIBEDIT_INCLUDE_DIR readline.h PATH_SUFFIXES editline edit/readline)
|
||||||
|
FIND_LIBRARY(LIBEDIT_LIBRARY edit)
|
||||||
|
MARK_AS_ADVANCED(LIBEDIT_INCLUDE_DIR LIBEDIT_LIBRARY)
|
||||||
|
|
||||||
FIND_PATH(READLINE_INCLUDE_DIR readline/readline.h )
|
IF(LIBEDIT_LIBRARY AND LIBEDIT_INCLUDE_DIR)
|
||||||
FIND_LIBRARY(READLINE_LIBRARY NAMES readline)
|
SET(CMAKE_REQUIRED_LIBRARIES ${LIBEDIT_LIBRARY})
|
||||||
MARK_AS_ADVANCED(READLINE_INCLUDE_DIR READLINE_LIBRARY)
|
SET(CMAKE_REQUIRED_INCLUDES ${LIBEDIT_INCLUDE_DIR})
|
||||||
|
|
||||||
SET(CMAKE_REQUIRES_LIBRARIES ${READLINE_LIBRARY})
|
|
||||||
|
|
||||||
IF(READLINE_LIBRARY AND READLINE_INCLUDE_DIR)
|
|
||||||
CHECK_CXX_SOURCE_COMPILES("
|
CHECK_CXX_SOURCE_COMPILES("
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <readline/readline.h>
|
#include <readline.h>
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
char res= *(*rl_completion_entry_function)(0,0);
|
int res= (*rl_completion_entry_function)(0,0);
|
||||||
completion_matches(0,0);
|
completion_matches(0,0);
|
||||||
}"
|
}"
|
||||||
LIBEDIT_INTERFACE)
|
LIBEDIT_INTERFACE)
|
||||||
SET(USE_LIBEDIT_INTERFACE ${LIBEDIT_INTERFACE})
|
SET(USE_LIBEDIT_INTERFACE ${LIBEDIT_INTERFACE})
|
||||||
ENDIF()
|
ENDIF()
|
||||||
SET(CMAKE_REQUIRES_LIBRARIES)
|
|
||||||
ENDMACRO()
|
ENDMACRO()
|
||||||
|
|
||||||
|
|
||||||
@ -216,15 +202,33 @@ MACRO (MYSQL_CHECK_READLINE)
|
|||||||
IF (NOT APPLE)
|
IF (NOT APPLE)
|
||||||
MYSQL_FIND_SYSTEM_READLINE()
|
MYSQL_FIND_SYSTEM_READLINE()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
IF(NOT USE_NEW_READLINE_INTERFACE)
|
IF(USE_NEW_READLINE_INTERFACE)
|
||||||
|
SET(MY_READLINE_INCLUDE_DIR ${READLINE_INCLUDE_DIR})
|
||||||
|
SET(MY_READLINE_LIBRARY ${READLINE_LIBRARY} ${CURSES_LIBRARY})
|
||||||
|
ELSE()
|
||||||
MYSQL_FIND_SYSTEM_LIBEDIT()
|
MYSQL_FIND_SYSTEM_LIBEDIT()
|
||||||
IF(NOT USE_LIBEDIT_INTERFACE)
|
IF(USE_LIBEDIT_INTERFACE)
|
||||||
|
SET(MY_READLINE_INCLUDE_DIR ${LIBEDIT_INCLUDE_DIR})
|
||||||
|
SET(MY_READLINE_LIBRARY ${LIBEDIT_LIBRARY} ${CURSES_LIBRARY})
|
||||||
|
ELSE()
|
||||||
MYSQL_USE_BUNDLED_READLINE()
|
MYSQL_USE_BUNDLED_READLINE()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
ENDIF()
|
ENDIF()
|
||||||
SET(MY_READLINE_INCLUDE_DIR ${READLINE_INCLUDE_DIR})
|
|
||||||
SET(MY_READLINE_LIBRARY ${READLINE_LIBRARY} ${CURSES_LIBRARY})
|
SET(CMAKE_REQUIRED_LIBRARIES ${MY_READLINE_LIBRARY})
|
||||||
|
SET(CMAKE_REQUIRED_INCLUDES ${MY_READLINE_INCLUDE_DIR})
|
||||||
|
CHECK_CXX_SOURCE_COMPILES("
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <readline.h>
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
HIST_ENTRY entry;
|
||||||
|
return 0;
|
||||||
|
}"
|
||||||
|
HAVE_HIST_ENTRY)
|
||||||
|
SET(CMAKE_REQUIRED_LIBRARIES)
|
||||||
|
SET(CMAKE_REQUIRED_INCLUDES)
|
||||||
ENDIF(NOT WIN32)
|
ENDIF(NOT WIN32)
|
||||||
ENDMACRO()
|
ENDMACRO()
|
||||||
|
|
||||||
|
@ -13,8 +13,7 @@
|
|||||||
# along with this program; if not, write to the Free Software
|
# along with this program; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include
|
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
${CMAKE_SOURCE_DIR}/cmd-line-utils)
|
|
||||||
|
|
||||||
ADD_DEFINITIONS(-DHAVE_CONFIG_H -DNO_KILL_INTR)
|
ADD_DEFINITIONS(-DHAVE_CONFIG_H -DNO_KILL_INTR)
|
||||||
|
|
||||||
|
@ -32,8 +32,8 @@ extern "C" {
|
|||||||
# include "rlstdc.h"
|
# include "rlstdc.h"
|
||||||
# include "rltypedefs.h"
|
# include "rltypedefs.h"
|
||||||
#else
|
#else
|
||||||
# include <readline/rlstdc.h>
|
# include <rlstdc.h>
|
||||||
# include <readline/rltypedefs.h>
|
# include <rltypedefs.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
|
@ -32,9 +32,9 @@ extern "C" {
|
|||||||
# include "chardefs.h"
|
# include "chardefs.h"
|
||||||
# include "rltypedefs.h"
|
# include "rltypedefs.h"
|
||||||
#else
|
#else
|
||||||
# include <readline/rlstdc.h>
|
# include <rlstdc.h>
|
||||||
# include <readline/chardefs.h>
|
# include <chardefs.h>
|
||||||
# include <readline/rltypedefs.h>
|
# include <rltypedefs.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* A keymap contains one entry for each key in the ASCII set.
|
/* A keymap contains one entry for each key in the ASCII set.
|
||||||
|
@ -33,10 +33,10 @@ extern "C" {
|
|||||||
# include "keymaps.h"
|
# include "keymaps.h"
|
||||||
# include "tilde.h"
|
# include "tilde.h"
|
||||||
#else
|
#else
|
||||||
# include <readline/rlstdc.h>
|
# include <rlstdc.h>
|
||||||
# include <readline/rltypedefs.h>
|
# include <rltypedefs.h>
|
||||||
# include <readline/keymaps.h>
|
# include <keymaps.h>
|
||||||
# include <readline/tilde.h>
|
# include <tilde.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Hex-encoded Readline version number. */
|
/* Hex-encoded Readline version number. */
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
#if defined (READLINE_LIBRARY)
|
#if defined (READLINE_LIBRARY)
|
||||||
# include "rlstdc.h"
|
# include "rlstdc.h"
|
||||||
#else
|
#else
|
||||||
# include <readline/rlstdc.h>
|
# include <rlstdc.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef PTR_T
|
#ifndef PTR_T
|
||||||
|
Loading…
x
Reference in New Issue
Block a user