1616#
1717# Variables defined by this module:
1818#
19- # READLINE_FOUND System has readline, include and lib dirs found
20- # Readline_INCLUDE_DIR The readline include directories.
21- # Readline_LIBRARY The readline library.
19+ # Readline_FOUND System has readline, include and lib dirs found
20+ # Readline_VERSION The Readline version
21+ # Readline_VERSION_MAJOR The Readline major version
22+ # Readline_VERSION_MINOR The Readline minor version
23+ # Readline_INCLUDE_DIR The readline include directories
24+ # Readline_LIBRARY The readline library
2225#
2326
2427find_path (Readline_ROOT_DIR
2528 NAMES include /readline/readline.h
2629)
2730
2831find_path (Readline_INCLUDE_DIR
29- NAMES readline/readline.h /usr/include/readline
32+ NAMES readline/readline.h
3033 HINTS ${Readline_ROOT_DIR} /include
3134)
3235
@@ -35,8 +38,51 @@ find_library (Readline_LIBRARY
3538 HINTS ${Readline_ROOT_DIR} /lib
3639)
3740
41+ # Extract version information from readline.h
42+ if (Readline_INCLUDE_DIR)
43+ # Extract Readline_VERSION from readline.h
44+ # Read the whole file:
45+ set (Readline_VERSION "" )
46+ set (Readline_VERSION_MAJOR "" )
47+ set (Readline_VERSION_MINOR "" )
48+ file (READ "${Readline_INCLUDE_DIR} /readline/readline.h"
49+ _readline_VERSION_HPP_CONTENTS )
50+ if (Readline_DEBUG)
51+ message (STATUS "[ ${CMAKE_CURRENT_LIST_FILE} :${CMAKE_CURRENT_LIST_LINE} ] "
52+ "location of readline.h: ${Readline_INCLUDE_DIR} /readline/readline.h" )
53+ endif (Readline_DEBUG )
54+
55+ string (REGEX REPLACE ".*#define RL_READLINE_VERSION\t ([0-9x]*).*" "\\ 1"
56+ Readline_VERSION "${_readline_VERSION_HPP_CONTENTS} " )
57+
58+ string (REGEX REPLACE ".*#define RL_VERSION_MAJOR\t ([0-9]*).*" "\\ 1"
59+ Readline_VERSION_MAJOR "${_readline_VERSION_HPP_CONTENTS} " )
60+
61+ string (REGEX REPLACE ".*#define RL_VERSION_MINOR\t ([0-9]*).*" "\\ 1"
62+ Readline_VERSION_MINOR "${_readline_VERSION_HPP_CONTENTS} " )
63+
64+ set (Readline_VERSION ${Readline_VERSION}
65+ CACHE INTERNAL "The version number for Readline" )
66+
67+ set (Readline_VERSION_MAJOR ${Readline_VERSION_MAJOR}
68+ CACHE INTERNAL "The major version number for Readline" )
69+
70+ set (Readline_VERSION_MINOR ${Readline_VERSION_MINOR}
71+ CACHE INTERNAL "The minor version number for Readline" )
72+
73+ #
74+ if (Readline_DEBUG)
75+ message (STATUS "[ ${CMAKE_CURRENT_LIST_FILE} :${CMAKE_CURRENT_LIST_LINE} ] "
76+ "readline.h reveals Readline ${Readline_VERSION} " )
77+ endif (Readline_DEBUG )
78+
79+ else (Readline_INCLUDE_DIR )
80+ set (Readline_ERROR_REASON
81+ "${Readline_ERROR_REASON} Unable to find the Readline header files. Please set Readline_ROOT_DIR to the root directory containing Readline or Readline_INCLUDE_DIR to the directory containing Readline's headers." )
82+ endif (Readline_INCLUDE_DIR )
83+
3884if (Readline_INCLUDE_DIR AND Readline_LIBRARY AND Ncurses_LIBRARY)
39- set (READLINE_FOUND TRUE )
85+ set (Readline_FOUND TRUE )
4086else (Readline_INCLUDE_DIR AND Readline_LIBRARY AND Ncurses_LIBRARY )
4187 FIND_LIBRARY (Readline_LIBRARY NAMES readline )
4288 include (FindPackageHandleStandardArgs )
@@ -46,6 +92,9 @@ endif(Readline_INCLUDE_DIR AND Readline_LIBRARY AND Ncurses_LIBRARY)
4692
4793mark_as_advanced (
4894 Readline_ROOT_DIR
95+ Readline_VERSION
96+ Readline_VERSION_MAJOR
97+ Readline_VERSION_MINOR
4998 Readline_INCLUDE_DIR
5099 Readline_LIBRARY
51100)
0 commit comments