1if(NOT READLINE_INCLUDE_DIR OR NOT READLINE_LIBRARY) 2 find_path(READLINE_INCLUDE_DIR readline/readline.h) 3 find_library(READLINE_LIBRARY NAMES readline) 4endif() 5 6if(APPLE) 7 # look in homebrew paths 8 execute_process(COMMAND brew --prefix readline OUTPUT_VARIABLE READLINE_BREW_PREFIX) 9 if (READLINE_BREW_PREFIX) 10 string(STRIP ${READLINE_BREW_PREFIX} READLINE_BREW_PREFIX) 11 message(STATUS "Found a homebrew install of readline ${READLINE_BREW_PREFIX}") 12 set(READLINE_INCLUDE_DIR ${READLINE_BREW_PREFIX}/include) 13 set(READLINE_LIBRARY ${READLINE_BREW_PREFIX}/lib/libreadline.dylib) 14 endif() 15endif() 16 17if(WIN32) 18 find_path(READLINE_INCLUDE_DIR 19 NAMES readline/readline.h 20 HINTS "${CMAKE_SOURCE_DIR}/../${CMAKE_LIBRARY_ARCHITECTURE}/readline/include" 21 "$ENV{ProgramW6432}/GnuWin32/include" 22 "$ENV{ProgramFiles}/GnuWin32/include" 23 24 ) 25 find_library(READLINE_LIBRARY 26 NAMES readline6 readline5 readline libreadline6 libreadline5 libreadline 27 HINTS "${CMAKE_SOURCE_DIR}/../${CMAKE_LIBRARY_ARCHITECTURE}/readline/lib" 28 "${CMAKE_SOURCE_DIR}/../${CMAKE_LIBRARY_ARCHITECTURE}/readline/bin" 29 "$ENV{ProgramW6432}/GnuWin32/lib" 30 "$ENV{ProgramW6432}/GnuWin32/bin" 31 "$ENV{ProgramFiles}/GnuWin32/lib" 32 "$ENV{ProgramFiles}/GnuWin32/bin" 33 ) 34 35 find_path(READLINE_LIBRARY_DIR 36 NAMES readline5.dll libreadline5.dll readline6.dll libreadline6.dll readline.dll libreadline.dll 37 HINTS "${CMAKE_SOURCE_DIR}/../${CMAKE_LIBRARY_ARCHITECTURE}/readline/bin" 38 "$ENV{ProgramW6432}/GnuWin32/bin" 39 "$ENV{ProgramFiles}/GnuWin32/bin" 40 ) 41endif() 42 43if (READLINE_INCLUDE_DIR AND READLINE_LIBRARY) 44 set(READLINE_FOUND TRUE) 45endif() 46 47if (READLINE_INCLUDE_DIR AND EXISTS "${READLINE_INCLUDE_DIR}/readline/readline.h") 48 file(STRINGS "${READLINE_INCLUDE_DIR}/readline/readline.h" 49 READLINE_MAJOR_VERSION 50 REGEX "^#define RL_VERSION_MAJOR.*$") 51 file(STRINGS "${READLINE_INCLUDE_DIR}/readline/readline.h" 52 READLINE_MINOR_VERSION 53 REGEX "^#define RL_VERSION_MINOR.*$") 54 55 string(REGEX REPLACE "^.*RL_VERSION_MAJOR.*([0-9]+).*$" 56 "\\1" 57 READLINE_MAJOR_VERSION 58 "${READLINE_MAJOR_VERSION}") 59 string(REGEX REPLACE "^.*RL_VERSION_MINOR.*([0-9]+).*$" 60 "\\1" 61 READLINE_MINOR_VERSION 62 "${READLINE_MINOR_VERSION}") 63 64 if(READLINE_MAJOR_VERSION) 65 set(READLINE_VERSION "${READLINE_MAJOR_VERSION}.${READLINE_MINOR_VERSION}") 66 else() 67 set(READLINE_VERSION "(unknown)") 68 endif() 69endif () 70 71if (READLINE_FOUND) 72 if (Readline_FIND_VERSION VERSION_GREATER READLINE_VERSION) 73 message(STATUS "Found version ${READLINE_VERSION} of GNU Readline at ${READLINE_LIBRARY}, but version ${Readline_FIND_VERSION} required") 74 unset(READLINE_FOUND) 75 else() 76 if (NOT READLINE_FIND_QUIETLY) 77 message(STATUS "Found GNU Readline version ${READLINE_VERSION}: ${READLINE_LIBRARY}") 78 endif () 79 endif () 80else () 81 if (READLINE_FIND_REQUIRED) 82 message(FATAL_ERROR "Could not find GNU Readline") 83 endif () 84endif () 85