Add checks for termcap if needed by readline

This commit is contained in:
Jethro Grassie 2017-12-20 16:01:32 -05:00
parent a529f0a6c9
commit 0e93b0986c
No known key found for this signature in database
GPG Key ID: DE8ED755616565BB
1 changed files with 27 additions and 20 deletions

View File

@ -36,14 +36,18 @@ find_library(Readline_LIBRARY
NO_DEFAULT_PATH 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) 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) FIND_LIBRARY(Readline_LIBRARY NAMES readline PATHS Readline_ROOT_DIR)
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Readline DEFAULT_MSG Readline_INCLUDE_DIR Readline_LIBRARY ) FIND_PACKAGE_HANDLE_STANDARD_ARGS(Readline DEFAULT_MSG Readline_INCLUDE_DIR Readline_LIBRARY )
MARK_AS_ADVANCED(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( mark_as_advanced(
Readline_ROOT_DIR Readline_ROOT_DIR
@ -53,22 +57,25 @@ mark_as_advanced(
set(CMAKE_REQUIRED_INCLUDES ${Readline_INCLUDE_DIR}) set(CMAKE_REQUIRED_INCLUDES ${Readline_INCLUDE_DIR})
set(CMAKE_REQUIRED_LIBRARIES ${Readline_LIBRARY}) 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) include(CheckFunctionExists)
set(Readline_LIBRARY "") check_function_exists(rl_copy_text HAVE_COPY_TEXT)
endif() 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()