1#.rst: 2# FindLibEdit 3# ----------- 4# 5# Find libedit library and headers 6# 7# The module defines the following variables: 8# 9# :: 10# 11# LibEdit_FOUND - true if libedit was found 12# LibEdit_INCLUDE_DIRS - include search path 13# LibEdit_LIBRARIES - libraries to link 14# LibEdit_VERSION_STRING - version number 15 16find_package(PkgConfig QUIET) 17pkg_check_modules(PC_LIBEDIT QUIET libedit) 18 19find_path(LibEdit_INCLUDE_DIRS NAMES histedit.h HINTS ${PC_LIBEDIT_INCLUDE_DIRS}) 20find_library(LibEdit_LIBRARIES NAMES edit HINTS ${PC_LIBEDIT_LIBRARY_DIRS}) 21 22include(CheckIncludeFile) 23if(LibEdit_INCLUDE_DIRS AND EXISTS "${LibEdit_INCLUDE_DIRS}/histedit.h") 24 cmake_push_check_state() 25 list(APPEND CMAKE_REQUIRED_INCLUDES ${LibEdit_INCLUDE_DIRS}) 26 list(APPEND CMAKE_REQUIRED_LIBRARIES ${LibEdit_LIBRARIES}) 27 check_include_file(histedit.h HAVE_HISTEDIT_H) 28 cmake_pop_check_state() 29 if (HAVE_HISTEDIT_H) 30 file(STRINGS "${LibEdit_INCLUDE_DIRS}/histedit.h" 31 libedit_major_version_str 32 REGEX "^#define[ \t]+LIBEDIT_MAJOR[ \t]+[0-9]+") 33 string(REGEX REPLACE "^#define[ \t]+LIBEDIT_MAJOR[ \t]+([0-9]+)" "\\1" 34 libedit_major_version "${libedit_major_version_str}") 35 36 file(STRINGS "${LibEdit_INCLUDE_DIRS}/histedit.h" 37 libedit_minor_version_str 38 REGEX "^#define[ \t]+LIBEDIT_MINOR[ \t]+[0-9]+") 39 string(REGEX REPLACE "^#define[ \t]+LIBEDIT_MINOR[ \t]+([0-9]+)" "\\1" 40 libedit_minor_version "${libedit_minor_version_str}") 41 42 set(LibEdit_VERSION_STRING "${libedit_major_version}.${libedit_minor_version}") 43 else() 44 set(LibEdit_INCLUDE_DIRS "") 45 set(LibEdit_LIBRARIES "") 46 endif() 47endif() 48 49include(FindPackageHandleStandardArgs) 50find_package_handle_standard_args(LibEdit 51 FOUND_VAR 52 LibEdit_FOUND 53 REQUIRED_VARS 54 LibEdit_INCLUDE_DIRS 55 LibEdit_LIBRARIES 56 VERSION_VAR 57 LibEdit_VERSION_STRING) 58mark_as_advanced(LibEdit_INCLUDE_DIRS LibEdit_LIBRARIES) 59 60if (LibEdit_FOUND AND NOT TARGET LibEdit::LibEdit) 61 add_library(LibEdit::LibEdit UNKNOWN IMPORTED) 62 set_target_properties(LibEdit::LibEdit PROPERTIES 63 IMPORTED_LOCATION ${LibEdit_LIBRARIES} 64 INTERFACE_INCLUDE_DIRECTORIES ${LibEdit_INCLUDE_DIRS}) 65endif() 66