summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmake/readline.cmake14
-rw-r--r--cmd-line-utils/libedit/CMakeLists.txt2
2 files changed, 14 insertions, 2 deletions
diff --git a/cmake/readline.cmake b/cmake/readline.cmake
index 44be0c2196e..4f0cb4a30c7 100644
--- a/cmake/readline.cmake
+++ b/cmake/readline.cmake
@@ -79,7 +79,7 @@ MACRO (MYSQL_CHECK_MULTIBYTE)
ENDMACRO()
MACRO (FIND_CURSES)
- INCLUDE (FindCurses)
+ FIND_PACKAGE(Curses)
MARK_AS_ADVANCED(CURSES_CURSES_H_PATH CURSES_FORM_LIBRARY CURSES_HAVE_CURSES_H)
IF(NOT CURSES_FOUND)
SET(ERRORMSG "Curses library not found. Please install appropriate package,
@@ -104,6 +104,18 @@ MACRO (FIND_CURSES)
SET(CURSES_LIBRARY "curses" CACHE INTERNAL "" FORCE)
SET(CURSES_CURSES_LIBRARY "curses" CACHE INTERNAL "" FORCE)
ENDIF()
+
+ IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
+ # -Wl,--as-needed breaks linking with -lcurses, e.g on Fedora
+ # Lower-level libcurses calls are exposed by libtinfo
+ CHECK_LIBRARY_EXISTS(${CURSES_LIBRARY} tputs "" HAVE_TPUTS_IN_CURSES)
+ IF(NOT HAVE_TPUTS_IN_CURSES)
+ CHECK_LIBRARY_EXISTS(tinfo tputs "" HAVE_TPUTS_IN_TINFO)
+ IF(HAVE_TPUTS_IN_TINFO)
+ SET(CURSES_LIBRARY tinfo)
+ ENDIF()
+ ENDIF()
+ ENDIF()
ENDMACRO()
MACRO (MYSQL_USE_BUNDLED_READLINE)
diff --git a/cmd-line-utils/libedit/CMakeLists.txt b/cmd-line-utils/libedit/CMakeLists.txt
index 763da8a4e04..517cbb4211f 100644
--- a/cmd-line-utils/libedit/CMakeLists.txt
+++ b/cmd-line-utils/libedit/CMakeLists.txt
@@ -18,7 +18,7 @@ INCLUDE(CheckIncludeFile)
include(CheckFunctionExists)
CHECK_INCLUDE_FILES(term.h HAVE_TERM_H)
-SET(CMAKE_REQUIRED_LIBRARIES ${CURSES_CURSES_LIBRARY})
+SET(CMAKE_REQUIRED_LIBRARIES ${CURSES_LIBRARY})
CHECK_CXX_SOURCE_COMPILES("
#include <term.h>
int main()