Files
swift-mirror/cmake/modules/FindLibEdit.cmake
Daniel Rodríguez Troitiño b4090419ea [cmake] Modify libedit target name to match LLVM's FindLibEdit
For unified builds, LLVM with the update to stable/20221013 includes its
own FindLibEdit, which shares many of the same names than Swift's
FindLibEdit, except that they differ in the target name.

Match both LLVM and Swift target names, so unified builds can find
LibEdit::LibEdit correctly and not try to link against libedit
mistakenly.

This should not affect Darwin/Linux builds from upstream Swift, since
they build non-unified in most people setups (including CI).
2023-03-07 17:10:11 -08:00

71 lines
2.4 KiB
CMake

#.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
if(LibEdit_INCLUDE_DIRS AND LibEdit_LIBRARIES)
set(LibEdit_FOUND TRUE)
else()
find_package(PkgConfig QUIET)
pkg_check_modules(PC_LIBEDIT QUIET libedit)
find_path(LibEdit_INCLUDE_DIRS
NAMES
histedit.h
HINTS
${PC_LIBEDIT_INCLUDEDIR}
${PC_LIBEDIT_INCLUDE_DIRS}
${CMAKE_INSTALL_FULL_INCLUDEDIR})
find_library(LibEdit_LIBRARIES
NAMES
edit libedit
HINTS
${PC_LIBEDIT_LIBDIR}
${PC_LIBEDIT_LIBRARY_DIRS}
${CMAKE_INSTALL_FULL_LIBDIR})
if(LibEdit_INCLUDE_DIRS AND EXISTS "${LibEdit_INCLUDE_DIRS}/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}")
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)
endif()
if(LibEdit_FOUND AND NOT TARGET LibEdit::LibEdit)
add_library(LibEdit::LibEdit UNKNOWN IMPORTED)
set_target_properties(LibEdit::LibEdit PROPERTIES
IMPORTED_LOCATION ${LibEdit_LIBRARIES}
INTERFACE_INCLUDE_DIRECTORIES ${LibEdit_INCLUDE_DIRS})
endif()
mark_as_advanced(LibEdit_INCLUDE_DIRS LibEdit_LIBRARIES)