66 lines · plain
1#.rst:2# FindLibEdit3# -----------4#5# Find libedit library and headers6#7# The module defines the following variables:8#9# ::10#11# LibEdit_FOUND - true if libedit was found12# LibEdit_INCLUDE_DIRS - include search path13# LibEdit_LIBRARIES - libraries to link14# LibEdit_VERSION_STRING - version number15 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 include(CMakePushCheckState)25 cmake_push_check_state()26 list(APPEND CMAKE_REQUIRED_INCLUDES ${LibEdit_INCLUDE_DIRS})27 list(APPEND CMAKE_REQUIRED_LIBRARIES ${LibEdit_LIBRARIES})28 check_include_file(histedit.h HAVE_HISTEDIT_H)29 cmake_pop_check_state()30 if (HAVE_HISTEDIT_H)31 file(STRINGS "${LibEdit_INCLUDE_DIRS}/histedit.h"32 libedit_major_version_str33 REGEX "^#define[ \t]+LIBEDIT_MAJOR[ \t]+[0-9]+")34 string(REGEX REPLACE "^#define[ \t]+LIBEDIT_MAJOR[ \t]+([0-9]+)" "\\1"35 libedit_major_version "${libedit_major_version_str}")36 37 file(STRINGS "${LibEdit_INCLUDE_DIRS}/histedit.h"38 libedit_minor_version_str39 REGEX "^#define[ \t]+LIBEDIT_MINOR[ \t]+[0-9]+")40 string(REGEX REPLACE "^#define[ \t]+LIBEDIT_MINOR[ \t]+([0-9]+)" "\\1"41 libedit_minor_version "${libedit_minor_version_str}")42 43 set(LibEdit_VERSION_STRING "${libedit_major_version}.${libedit_minor_version}")44 else()45 set(LibEdit_INCLUDE_DIRS "")46 set(LibEdit_LIBRARIES "")47 endif()48endif()49 50include(FindPackageHandleStandardArgs)51find_package_handle_standard_args(LibEdit52 FOUND_VAR53 LibEdit_FOUND54 REQUIRED_VARS55 LibEdit_INCLUDE_DIRS56 LibEdit_LIBRARIES57 VERSION_VAR58 LibEdit_VERSION_STRING)59mark_as_advanced(LibEdit_INCLUDE_DIRS LibEdit_LIBRARIES)60 61if (LibEdit_FOUND AND NOT TARGET LibEdit::LibEdit)62 add_library(LibEdit::LibEdit INTERFACE IMPORTED)63 target_link_libraries(LibEdit::LibEdit INTERFACE ${LibEdit_LIBRARIES})64 target_include_directories(LibEdit::LibEdit INTERFACE ${LibEdit_INCLUDE_DIRS})65endif()66