diff options
Diffstat (limited to 'CMakeModules/FindPCRE2.cmake')
-rw-r--r-- | CMakeModules/FindPCRE2.cmake | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/CMakeModules/FindPCRE2.cmake b/CMakeModules/FindPCRE2.cmake new file mode 100644 index 0000000..a05d998 --- /dev/null +++ b/CMakeModules/FindPCRE2.cmake @@ -0,0 +1,66 @@ +# - 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 + 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() |