112 lines
4.0 KiB
CMake
112 lines
4.0 KiB
CMake
# pcre2-config.cmake
|
|
# ----------------
|
|
#
|
|
# Finds the PCRE2 library, specify the starting search path in PCRE2_ROOT.
|
|
#
|
|
# Static vs. shared
|
|
# -----------------
|
|
# To force using the static library instead of the shared one, one needs
|
|
# to set the variable PCRE2_USE_STATIC_LIBS to ON before calling find_package.
|
|
# If the variable is not set, the static library will be used if only that has
|
|
# been built, otherwise the shared library will be used.
|
|
#
|
|
# The following components are supported: 8BIT, 16BIT, 32BIT and POSIX.
|
|
# They used to be required but not anymore; all available targets will
|
|
# be defined regardless of the requested components.
|
|
# Example:
|
|
# set(PCRE2_USE_STATIC_LIBS ON)
|
|
# find_package(PCRE2 CONFIG)
|
|
#
|
|
# 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.
|
|
|
|
|
|
####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
|
|
####### Any changes to this file will be overwritten by the next CMake run ####
|
|
####### The input file was pcre2-config.cmake.in ########
|
|
|
|
get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE)
|
|
|
|
macro(set_and_check _var _file)
|
|
set(${_var} "${_file}")
|
|
if(NOT EXISTS "${_file}")
|
|
message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
|
|
endif()
|
|
endmacro()
|
|
|
|
macro(check_required_components _NAME)
|
|
foreach(comp ${${_NAME}_FIND_COMPONENTS})
|
|
if(NOT ${_NAME}_${comp}_FOUND)
|
|
if(${_NAME}_FIND_REQUIRED_${comp})
|
|
set(${_NAME}_FOUND FALSE)
|
|
endif()
|
|
endif()
|
|
endforeach()
|
|
endmacro()
|
|
|
|
####################################################################################
|
|
|
|
include(CMakeFindDependencyMacro)
|
|
if("") # REQUIRE_PTHREAD
|
|
find_dependency(Threads)
|
|
endif()
|
|
|
|
include("${CMAKE_CURRENT_LIST_DIR}/pcre2-targets.cmake")
|
|
|
|
# Set version
|
|
set(PCRE2_VERSION "10.43.0")
|
|
|
|
# Chooses the linkage of the library to expose in the
|
|
# unsuffixed edition of the target.
|
|
macro(_pcre2_add_component_target component target)
|
|
# If the static library exists and either PCRE2_USE_STATIC_LIBS
|
|
# is defined, or the dynamic library does not exist, use the static library.
|
|
if(NOT TARGET PCRE2::${component})
|
|
if(TARGET pcre2::pcre2-${target}-static AND (PCRE2_USE_STATIC_LIBS OR NOT TARGET pcre2::pcre2-${target}-shared))
|
|
add_library(PCRE2::${component} ALIAS pcre2::pcre2-${target}-static)
|
|
set(PCRE2_${component}_FOUND TRUE)
|
|
# Otherwise use the dynamic library if it exists.
|
|
elseif(TARGET pcre2::pcre2-${target}-shared AND NOT PCRE2_USE_STATIC_LIBS)
|
|
add_library(PCRE2::${component} ALIAS pcre2::pcre2-${target}-shared)
|
|
set(PCRE2_${component}_FOUND TRUE)
|
|
endif()
|
|
if(PCRE2_${component}_FOUND)
|
|
get_target_property(PCRE2_${component}_LIBRARY PCRE2::${component} IMPORTED_LOCATION)
|
|
set(PCRE2_LIBRARIES ${PCRE2_LIBRARIES} ${PCRE2_${component}_LIBRARY})
|
|
endif()
|
|
endif()
|
|
endmacro()
|
|
_pcre2_add_component_target(8BIT 8)
|
|
_pcre2_add_component_target(16BIT 16)
|
|
_pcre2_add_component_target(32BIT 32)
|
|
_pcre2_add_component_target(POSIX posix)
|
|
|
|
# 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)
|
|
|
|
# Check for required components.
|
|
check_required_components("PCRE2")
|