aboutsummaryrefslogtreecommitdiff
path: root/rcc/cmake/modules/FindLibEdit.cmake
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-10-21 08:10:34 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-10-21 08:10:34 +0800
commitbbfffc8ce49b9afe854f0799513ab6b7891d6dab (patch)
treed1b2a1cc8166270764b627960fa193b60e9b3271 /rcc/cmake/modules/FindLibEdit.cmake
parent49de843452f161ee42cb8f4ff4780ccc02ae3a7a (diff)
downloadrcc-project-bbfffc8ce49b9afe854f0799513ab6b7891d6dab.tar.gz
rcc-project-bbfffc8ce49b9afe854f0799513ab6b7891d6dab.tar.xz
[CMake] Add RCC platform configuration checks
Diffstat (limited to 'rcc/cmake/modules/FindLibEdit.cmake')
-rw-r--r--rcc/cmake/modules/FindLibEdit.cmake65
1 files changed, 65 insertions, 0 deletions
diff --git a/rcc/cmake/modules/FindLibEdit.cmake b/rcc/cmake/modules/FindLibEdit.cmake
new file mode 100644
index 0000000..b3f49e1
--- /dev/null
+++ b/rcc/cmake/modules/FindLibEdit.cmake
@@ -0,0 +1,65 @@
+#.rst:
+# FindLibEdit
+# -----------
+#
+# Find libedit library and headers
+#
+# The module defines the following variables:
+#
+# ::
+#
+# LibEdit_FOUND - true if libedit was found
+# LibEdit_INCLUDE_DIRS - include search path
+# LibEdit_LIBRARIES - libraries to link
+# LibEdit_VERSION_STRING - version number
+
+find_package(PkgConfig QUIET)
+pkg_check_modules(PC_LIBEDIT QUIET libedit)
+
+find_path(LibEdit_INCLUDE_DIRS NAMES histedit.h HINTS ${PC_LIBEDIT_INCLUDE_DIRS})
+find_library(LibEdit_LIBRARIES NAMES edit HINTS ${PC_LIBEDIT_LIBRARY_DIRS})
+
+include(CheckIncludeFile)
+if(LibEdit_INCLUDE_DIRS AND EXISTS "${LibEdit_INCLUDE_DIRS}/histedit.h")
+ include(CMakePushCheckState)
+ cmake_push_check_state()
+ list(APPEND CMAKE_REQUIRED_INCLUDES ${LibEdit_INCLUDE_DIRS})
+ list(APPEND CMAKE_REQUIRED_LIBRARIES ${LibEdit_LIBRARIES})
+ check_include_file(histedit.h HAVE_HISTEDIT_H)
+ cmake_pop_check_state()
+ if (HAVE_HISTEDIT_H)
+ file(STRINGS "${LibEdit_INCLUDE_DIRS}/histedit.h"
+ libedit_major_version_str
+ REGEX "^#define[ \t]+LIBEDIT_MAJOR[ \t]+[0-9]+")
+ string(REGEX REPLACE "^#define[ \t]+LIBEDIT_MAJOR[ \t]+([0-9]+)" "\\1"
+ libedit_major_version "${libedit_major_version_str}")
+
+ file(STRINGS "${LibEdit_INCLUDE_DIRS}/histedit.h"
+ libedit_minor_version_str
+ REGEX "^#define[ \t]+LIBEDIT_MINOR[ \t]+[0-9]+")
+ string(REGEX REPLACE "^#define[ \t]+LIBEDIT_MINOR[ \t]+([0-9]+)" "\\1"
+ libedit_minor_version "${libedit_minor_version_str}")
+
+ set(LibEdit_VERSION_STRING "${libedit_major_version}.${libedit_minor_version}")
+ else()
+ set(LibEdit_INCLUDE_DIRS "")
+ set(LibEdit_LIBRARIES "")
+ endif()
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(LibEdit
+ FOUND_VAR
+ LibEdit_FOUND
+ REQUIRED_VARS
+ LibEdit_INCLUDE_DIRS
+ LibEdit_LIBRARIES
+ VERSION_VAR
+ LibEdit_VERSION_STRING)
+mark_as_advanced(LibEdit_INCLUDE_DIRS LibEdit_LIBRARIES)
+
+if (LibEdit_FOUND AND NOT TARGET LibEdit::LibEdit)
+ add_library(LibEdit::LibEdit INTERFACE IMPORTED)
+ target_link_libraries(LibEdit::LibEdit INTERFACE ${LibEdit_LIBRARIES})
+ target_include_directories(LibEdit::LibEdit INTERFACE ${LibEdit_INCLUDE_DIRS})
+endif()