aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmake/FindReadline.cmake47
1 files changed, 27 insertions, 20 deletions
diff --git a/cmake/FindReadline.cmake b/cmake/FindReadline.cmake
index cdce0bfca..7a11a270a 100644
--- a/cmake/FindReadline.cmake
+++ b/cmake/FindReadline.cmake
@@ -36,14 +36,18 @@ find_library(Readline_LIBRARY
NO_DEFAULT_PATH
)
-if(Readline_INCLUDE_DIR AND Readline_LIBRARY AND Ncurses_LIBRARY)
+find_library(Termcap_LIBRARY
+ NAMES tinfo termcap ncursesw ncurses cursesw curses
+)
+
+if(Readline_INCLUDE_DIR AND Readline_LIBRARY)
set(READLINE_FOUND TRUE)
-else(Readline_INCLUDE_DIR AND Readline_LIBRARY AND Ncurses_LIBRARY)
+else(Readline_INCLUDE_DIR AND Readline_LIBRARY)
FIND_LIBRARY(Readline_LIBRARY NAMES readline PATHS Readline_ROOT_DIR)
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Readline DEFAULT_MSG Readline_INCLUDE_DIR Readline_LIBRARY )
MARK_AS_ADVANCED(Readline_INCLUDE_DIR Readline_LIBRARY)
-endif(Readline_INCLUDE_DIR AND Readline_LIBRARY AND Ncurses_LIBRARY)
+endif(Readline_INCLUDE_DIR AND Readline_LIBRARY)
mark_as_advanced(
Readline_ROOT_DIR
@@ -53,22 +57,25 @@ mark_as_advanced(
set(CMAKE_REQUIRED_INCLUDES ${Readline_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${Readline_LIBRARY})
-INCLUDE(CheckCXXSourceCompiles)
-CHECK_CXX_SOURCE_COMPILES(
-"
-#include <stdio.h>
-#include <readline/readline.h>
-int
-main()
-{
- char * s = rl_copy_text(0, 0);
-}
-" GNU_READLINE_FOUND)
-if(NOT Readline_LIBRARY)
- set(Readline_LIBRARY "")
-endif()
+include(CheckFunctionExists)
+check_function_exists(rl_copy_text HAVE_COPY_TEXT)
+check_function_exists(rl_filename_completion_function HAVE_COMPLETION_FUNCTION)
+
+if(NOT HAVE_COMPLETION_FUNCTION)
+ unset(READLINE_FOUND)
+ set(CMAKE_REQUIRED_LIBRARIES ${Readline_LIBRARY} ${Termcap_LIBRARY})
+ check_function_exists(rl_copy_text HAVE_COPY_TEXT_TC)
+ check_function_exists(rl_filename_completion_function HAVE_COMPLETION_FUNCTION_TC)
+ set(HAVE_COMPLETION_FUNCTION ${HAVE_COMPLETION_FUNCTION_TC})
+ set(HAVE_COPY_TEXT ${HAVE_COPY_TEXT_TC})
+ if(HAVE_COMPLETION_FUNCTION)
+ set(Readline_LIBRARY ${Readline_LIBRARY} ${Termcap_LIBRARY})
+ endif(HAVE_COMPLETION_FUNCTION)
+endif(NOT HAVE_COMPLETION_FUNCTION)
+
+if(HAVE_COMPLETION_FUNCTION AND HAVE_COPY_TEXT)
+ set(GNU_READLINE_FOUND TRUE)
+ set(READLINE_FOUND TRUE)
+endif(HAVE_COMPLETION_FUNCTION AND HAVE_COPY_TEXT)
-if(Readline_LIBRARY AND OPENBSD)
- list(APPEND EXTRA_LIBRARIES curses)
-endif()