123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- # pcre2-config.cmake
- # ----------------
- #
- # Finds the PCRE2 library, specify the starting search path in PCRE2_ROOT.
- #
- # Static vs. shared
- # -----------------
- # To make use of the static library instead of the shared one, one needs
- # to set the variable PCRE2_USE_STATIC_LIBS to ON before calling find_package.
- # Example:
- # set(PCRE2_USE_STATIC_LIBS ON)
- # find_package(PCRE2 CONFIG COMPONENTS 8BIT)
- #
- # This will define the following variables:
- #
- # PCRE2_FOUND - True if the system has the PCRE2 library.
- # PCRE2_VERSION - The version of the PCRE2 library which was found.
- #
- # and the following imported targets:
- #
- # PCRE2::8BIT - The 8 bit PCRE2 library.
- # PCRE2::16BIT - The 16 bit PCRE2 library.
- # PCRE2::32BIT - The 32 bit PCRE2 library.
- # PCRE2::POSIX - The POSIX PCRE2 library.
- set(PCRE2_NON_STANDARD_LIB_PREFIX @NON_STANDARD_LIB_PREFIX@)
- set(PCRE2_NON_STANDARD_LIB_SUFFIX @NON_STANDARD_LIB_SUFFIX@)
- set(PCRE2_8BIT_NAME pcre2-8)
- set(PCRE2_16BIT_NAME pcre2-16)
- set(PCRE2_32BIT_NAME pcre2-32)
- set(PCRE2_POSIX_NAME pcre2-posix)
- find_path(PCRE2_INCLUDE_DIR NAMES pcre2.h DOC "PCRE2 include directory")
- if (PCRE2_USE_STATIC_LIBS)
- if (MSVC)
- set(PCRE2_8BIT_NAME pcre2-8-static)
- set(PCRE2_16BIT_NAME pcre2-16-static)
- set(PCRE2_32BIT_NAME pcre2-32-static)
- set(PCRE2_POSIX_NAME pcre2-posix-static)
- endif ()
- set(PCRE2_PREFIX ${CMAKE_STATIC_LIBRARY_PREFIX})
- set(PCRE2_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
- else ()
- set(PCRE2_PREFIX ${CMAKE_SHARED_LIBRARY_PREFIX})
- if (MINGW AND PCRE2_NON_STANDARD_LIB_PREFIX)
- set(PCRE2_PREFIX "")
- endif ()
- set(PCRE2_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
- if (MINGW AND PCRE2_NON_STANDARD_LIB_SUFFIX)
- set(PCRE2_SUFFIX "-0.dll")
- endif ()
- endif ()
- find_library(PCRE2_8BIT_LIBRARY NAMES ${PCRE2_PREFIX}${PCRE2_8BIT_NAME}${PCRE2_SUFFIX} ${PCRE2_PREFIX}${PCRE2_8BIT_NAME}d${PCRE2_SUFFIX} DOC "8 bit PCRE2 library")
- find_library(PCRE2_16BIT_LIBRARY NAMES ${PCRE2_PREFIX}${PCRE2_16BIT_NAME}${PCRE2_SUFFIX} ${PCRE2_PREFIX}${PCRE2_16BIT_NAME}d${PCRE2_SUFFIX} DOC "16 bit PCRE2 library")
- find_library(PCRE2_32BIT_LIBRARY NAMES ${PCRE2_PREFIX}${PCRE2_32BIT_NAME}${PCRE2_SUFFIX} ${PCRE2_PREFIX}${PCRE2_32BIT_NAME}d${PCRE2_SUFFIX} DOC "32 bit PCRE2 library")
- find_library(PCRE2_POSIX_LIBRARY NAMES ${PCRE2_PREFIX}${PCRE2_POSIX_NAME}${PCRE2_SUFFIX} ${PCRE2_PREFIX}${PCRE2_POSIX_NAME}d${PCRE2_SUFFIX} DOC "8 bit POSIX PCRE2 library")
- unset(PCRE2_NON_STANDARD_LIB_PREFIX)
- unset(PCRE2_NON_STANDARD_LIB_SUFFIX)
- unset(PCRE2_8BIT_NAME)
- unset(PCRE2_16BIT_NAME)
- unset(PCRE2_32BIT_NAME)
- unset(PCRE2_POSIX_NAME)
- # Set version
- if (PCRE2_INCLUDE_DIR)
- set(PCRE2_VERSION "@PCRE2_MAJOR@.@[email protected]")
- endif ()
- # Which components have been found.
- if (PCRE2_8BIT_LIBRARY)
- set(PCRE2_8BIT_FOUND TRUE)
- endif ()
- if (PCRE2_16BIT_LIBRARY)
- set(PCRE2_16BIT_FOUND TRUE)
- endif ()
- if (PCRE2_32BIT_LIBRARY)
- set(PCRE2_32BIT_FOUND TRUE)
- endif ()
- if (PCRE2_POSIX_LIBRARY)
- set(PCRE2_POSIX_FOUND TRUE)
- endif ()
- # Check if at least one component has been specified.
- list(LENGTH PCRE2_FIND_COMPONENTS PCRE2_NCOMPONENTS)
- if (PCRE2_NCOMPONENTS LESS 1)
- message(FATAL_ERROR "No components have been specified. This is not allowed. Please, specify at least one component.")
- endif ()
- unset(PCRE2_NCOMPONENTS)
- # When POSIX component has been specified make sure that also 8BIT component is specified.
- set(PCRE2_8BIT_COMPONENT FALSE)
- set(PCRE2_POSIX_COMPONENT FALSE)
- foreach(component ${PCRE2_FIND_COMPONENTS})
- if (component STREQUAL "8BIT")
- set(PCRE2_8BIT_COMPONENT TRUE)
- elseif (component STREQUAL "POSIX")
- set(PCRE2_POSIX_COMPONENT TRUE)
- endif ()
- endforeach()
- if (PCRE2_POSIX_COMPONENT AND NOT PCRE2_8BIT_COMPONENT)
- message(FATAL_ERROR "The component POSIX is specified while the 8BIT one is not. This is not allowed. Please, also specify the 8BIT component.")
- endif()
- unset(PCRE2_8BIT_COMPONENT)
- unset(PCRE2_POSIX_COMPONENT)
- include(FindPackageHandleStandardArgs)
- set(${CMAKE_FIND_PACKAGE_NAME}_CONFIG "${CMAKE_CURRENT_LIST_FILE}")
- find_package_handle_standard_args(PCRE2
- FOUND_VAR PCRE2_FOUND
- REQUIRED_VARS PCRE2_INCLUDE_DIR
- HANDLE_COMPONENTS
- VERSION_VAR PCRE2_VERSION
- CONFIG_MODE
- )
- set(PCRE2_LIBRARIES)
- if (PCRE2_FOUND)
- foreach(component ${PCRE2_FIND_COMPONENTS})
- if (PCRE2_USE_STATIC_LIBS)
- add_library(PCRE2::${component} STATIC IMPORTED)
- target_compile_definitions(PCRE2::${component} INTERFACE PCRE2_STATIC)
- else ()
- add_library(PCRE2::${component} SHARED IMPORTED)
- endif ()
- set_target_properties(PCRE2::${component} PROPERTIES
- IMPORTED_LOCATION "${PCRE2_${component}_LIBRARY}"
- IMPORTED_IMPLIB "${PCRE2_${component}_LIBRARY}"
- INTERFACE_INCLUDE_DIRECTORIES "${PCRE2_INCLUDE_DIR}"
- )
- if (component STREQUAL "POSIX")
- set_target_properties(PCRE2::${component} PROPERTIES
- INTERFACE_LINK_LIBRARIES "PCRE2::8BIT"
- LINK_LIBRARIES "PCRE2::8BIT"
- )
- endif ()
- set(PCRE2_LIBRARIES ${PCRE2_LIBRARIES} ${PCRE2_${component}_LIBRARY})
- mark_as_advanced(PCRE2_${component}_LIBRARY)
- endforeach()
- endif ()
- mark_as_advanced(
- PCRE2_INCLUDE_DIR
- )
|