blob: bb44f785af2e6052ac710579bc8e4f9afffeef59 [file] [log] [blame]
# - Find pcre
# Find the native PCRE2 headers and libraries.
#
# PCRE2_INCLUDE_DIRS - where to find pcre.h, etc.
# PCRE2_LIBRARIES - List of libraries when using pcre.
# PCRE2_FOUND - True if pcre found.
include(FindPackageHandleStandardArgs)
if(PCRE2_LIBRARIES AND PCRE2_INCLUDE_DIRS)
# in cache already
set(PCRE2_FOUND TRUE)
else()
find_path(PCRE2_INCLUDE_DIR
NAMES
pcre2.h
PATHS
/usr/include
/usr/local/include
/opt/local/include
/sw/include
${CMAKE_INCLUDE_PATH}
${CMAKE_INSTALL_PREFIX}/include)
# Look for the library.
if (WIN32 AND "${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
# For the Debug build, the pcre2 library is called pcre2-8d. The Release build should be pcre2-8.
find_library(PCRE2_LIBRARY pcre2-8d)
else()
find_library(PCRE2_LIBRARY
NAMES
libpcre2.a
pcre2-8
PATHS
/usr/lib
/usr/lib64
/usr/local/lib
/usr/local/lib64
/opt/local/lib
/sw/lib
${CMAKE_LIBRARY_PATH}
${CMAKE_INSTALL_PREFIX}/lib)
endif()
if(PCRE2_INCLUDE_DIR AND PCRE2_LIBRARY)
# learn pcre2 version
file(STRINGS ${PCRE2_INCLUDE_DIR}/pcre2.h PCRE2_VERSION_MAJOR
REGEX "#define[ ]+PCRE2_MAJOR[ ]+[0-9]+")
string(REGEX MATCH " [0-9]+" PCRE2_VERSION_MAJOR ${PCRE2_VERSION_MAJOR})
string(STRIP "${PCRE2_VERSION_MAJOR}" PCRE2_VERSION_MAJOR)
file(STRINGS ${PCRE2_INCLUDE_DIR}/pcre2.h PCRE2_VERSION_MINOR
REGEX "#define[ ]+PCRE2_MINOR[ ]+[0-9]+")
string(REGEX MATCH " [0-9]+" PCRE2_VERSION_MINOR ${PCRE2_VERSION_MINOR})
string(STRIP "${PCRE2_VERSION_MINOR}" PCRE2_VERSION_MINOR)
set(PCRE2_VERSION ${PCRE2_VERSION_MAJOR}.${PCRE2_VERSION_MINOR})
endif()
set(PCRE2_INCLUDE_DIRS ${PCRE2_INCLUDE_DIR})
set(PCRE2_LIBRARIES ${PCRE2_LIBRARY})
mark_as_advanced(PCRE2_INCLUDE_DIRS PCRE2_LIBRARIES)
# Handle the QUIETLY and REQUIRED arguments and set PCRE2_FOUND to TRUE if all listed variables are TRUE.
find_package_handle_standard_args(PCRE2 FOUND_VAR PCRE2_FOUND
REQUIRED_VARS PCRE2_LIBRARY PCRE2_INCLUDE_DIR
VERSION_VAR PCRE2_VERSION)
endif()