From d9342e88289fa588ea2f1a094dbfc32f0693e23d Mon Sep 17 00:00:00 2001 From: Sebastian Kemper Date: Tue, 9 Apr 2019 22:28:10 +0200 Subject: [PATCH] cmake: support new libedit interface libedit changed it's interface a while ago. MariaDB's cmake file doesn't recognize the new interface, the compile test fails: /mariadb-10.2.19/CMakeFiles/CMakeTmp/src.cxx: In function 'int main(int, char**)': /mariadb-10.2.19/CMakeFiles/CMakeTmp/src.cxx:6:47: error: invalid conversion from 'char*' to 'int' [-fpermissive] int res= (*rl_completion_entry_function)(0,0); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~ Fix this by adding a detection for the new interface as well. Run-tested on a MIPS machine. Signed-off-by: Sebastian Kemper --- cmake/readline.cmake | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/cmake/readline.cmake b/cmake/readline.cmake index 12a8980b6a90..a2b2cc4c241f 100644 --- a/cmake/readline.cmake +++ b/cmake/readline.cmake @@ -160,8 +160,20 @@ MACRO (MYSQL_FIND_SYSTEM_LIBEDIT) int res= (*rl_completion_entry_function)(0,0); completion_matches(0,0); }" - LIBEDIT_INTERFACE) - SET(USE_LIBEDIT_INTERFACE ${LIBEDIT_INTERFACE}) + LIBEDIT_HAVE_COMPLETION_INT) + + CHECK_CXX_SOURCE_COMPILES(" + #include + #include + int main(int argc, char **argv) + { + char res= *(*rl_completion_entry_function)(0,0); + completion_matches(0,0); + }" + LIBEDIT_HAVE_COMPLETION_CHAR) + IF(LIBEDIT_HAVE_COMPLETION_INT OR LIBEDIT_HAVE_COMPLETION_CHAR) + SET(USE_LIBEDIT_INTERFACE 1) + ENDIF() ENDIF() ENDMACRO() @@ -187,6 +199,7 @@ MACRO (MYSQL_CHECK_READLINE) IF(USE_LIBEDIT_INTERFACE) SET(MY_READLINE_INCLUDE_DIR ${LIBEDIT_INCLUDE_DIR}) SET(MY_READLINE_LIBRARY ${LIBEDIT_LIBRARY} ${CURSES_LIBRARY}) + SET(USE_NEW_READLINE_INTERFACE ${LIBEDIT_HAVE_COMPLETION_CHAR}) ELSE() MYSQL_USE_BUNDLED_READLINE() ENDIF()