From 3e4f5db2d667868d357e389a266a38e7ecb2371e Mon Sep 17 00:00:00 2001 From: levlam Date: Fri, 1 Feb 2019 17:04:18 +0300 Subject: [PATCH] Add additional check for Readline version. GitOrigin-RevId: b68f71274ce80d55c0de2327c757908471c87ed8 --- CMakeLists.txt | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d8407dbd..cc918a5f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -805,9 +805,23 @@ if (NOT CMAKE_CROSSCOMPILING) message(STATUS "Could NOT find Readline (this is NOT an error)") else() message(STATUS "Found Readline: ${READLINE_INCLUDE_DIR} ${READLINE_LIBRARY}") - target_link_libraries(tg_cli PRIVATE ${READLINE_LIBRARY}) - target_include_directories(tg_cli SYSTEM PRIVATE ${READLINE_INCLUDE_DIR}) - target_compile_definitions(tg_cli PRIVATE -DUSE_READLINE=1) + if (NOT USABLE_READLINE_FOUND) + set(CMAKE_REQUIRED_INCLUDES "${READLINE_INCLUDE_DIR}") + set(CMAKE_REQUIRED_LIBRARIES "${READLINE_LIBRARY}") + include(CheckCXXSourceCompiles) + unset(USABLE_READLINE_FOUND CACHE) + check_cxx_source_compiles("#include \n#include \nint main() { rl_free(0); }" USABLE_READLINE_FOUND) + if (NOT USABLE_READLINE_FOUND) + message(STATUS "Found Readline is too old, ignore it (this is NOT an error)") + unset(READLINE_INCLUDE_DIR CACHE) + unset(READLINE_LIBRARY CACHE) + endif() + endif() + if (USABLE_READLINE_FOUND) + target_link_libraries(tg_cli PRIVATE ${READLINE_LIBRARY}) + target_include_directories(tg_cli SYSTEM PRIVATE ${READLINE_INCLUDE_DIR}) + target_compile_definitions(tg_cli PRIVATE -DUSE_READLINE=1) + endif() endif() target_link_libraries(tg_cli PRIVATE memprof tdclient tdcore tdtl) add_dependencies(tg_cli tl_generate_json)