diff options
author | Riccardo Spagni <ric@spagni.net> | 2018-01-10 11:50:00 +0100 |
---|---|---|
committer | Riccardo Spagni <ric@spagni.net> | 2018-01-10 11:50:00 +0100 |
commit | 9d73cd894c804ad24f2e53f596d0da315af79892 (patch) | |
tree | a069246326c45c4ce52f627d09276e7258dbcae6 | |
parent | Merge pull request #2976 (diff) | |
parent | Add checks for termcap if needed by readline (diff) | |
download | monero-9d73cd894c804ad24f2e53f596d0da315af79892.tar.xz |
Merge pull request #2978
0e93b098 Add checks for termcap if needed by readline (Jethro Grassie)
-rw-r--r-- | cmake/FindReadline.cmake | 47 |
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() |