mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-12-17 05:17:50 +08:00
00abcfb2e3
<!-- If your PR fixes issues, please note that here by adding "Fixes #NNNNNN." for each fixed issue on separate lines. --> Fixes #38083 <!-- If you are still working on the PR, open it as a Draft: https://github.blog/2019-02-14-introducing-draft-pull-requests/. --> - [x] Changes comply with the [maintainer guide](https://github.com/microsoft/vcpkg-docs/blob/main/vcpkg/contributing/maintainer-guide.md). - [x] SHA512s are updated for each updated download. - [ ] ~~The "supports" clause reflects platforms that may be fixed by this new version.~~ - [ ] ~~Any fixed [CI baseline](https://github.com/microsoft/vcpkg/blob/master/scripts/ci.baseline.txt) entries are removed from that file.~~ - [ ] ~~Any patches that are no longer applied are deleted from the port's directory.~~ - [x] The version database is fixed by rerunning `./vcpkg x-add-version --all` and committing the result. - [x] Only one version is added to each modified port's versions file. All features passed with following triplets: ``` x86-windows x64-windows x64-windows-static ``` Usage test passed on `x64-windows`. <!-- If this PR adds a new port, please uncomment and fill out this checklist: - [ ] Changes comply with the [maintainer guide](https://github.com/microsoft/vcpkg-docs/blob/main/vcpkg/contributing/maintainer-guide.md). - [ ] The name of the port matches an existing name for this component on https://repology.org/ if possible, and/or is strongly associated with that component on search engines. - [ ] Optional dependencies are resolved in exactly one way. For example, if the component is built with CMake, all `find_package` calls are REQUIRED, are satisfied by `vcpkg.json`'s declared dependencies, or disabled with [CMAKE_DISABLE_FIND_PACKAGE_Xxx](https://cmake.org/cmake/help/latest/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.html). - [ ] The versioning scheme in `vcpkg.json` matches what upstream says. - [ ] The license declaration in `vcpkg.json` matches what upstream says. - [ ] The installed as the "copyright" file matches what upstream says. - [ ] The source code of the component installed comes from an authoritative source. - [ ] The generated "usage text" is accurate. See [adding-usage](https://github.com/microsoft/vcpkg-docs/blob/main/vcpkg/examples/adding-usage.md) for context. - [ ] The version database is fixed by rerunning `./vcpkg x-add-version --all` and committing the result. - [ ] Only one version is in the new port's versions file. - [ ] Only one version is added to each modified port's versions file. END OF NEW PORT CHECKLIST (delete this line) --> --------- Co-authored-by: Lily Wang <v-lilywang@microsoft.com>
324 lines
14 KiB
Diff
324 lines
14 KiB
Diff
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
index 3c915d9..d5963f8 100644
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -143,6 +143,7 @@ INCLUDE(CheckFunctionExists)
|
|
INCLUDE(CheckSymbolExists)
|
|
INCLUDE(CheckIncludeFile)
|
|
INCLUDE(CheckTypeSize)
|
|
+INCLUDE(CMakePackageConfigHelpers)
|
|
INCLUDE(GNUInstallDirs) # for CMAKE_INSTALL_LIBDIR
|
|
|
|
CHECK_INCLUDE_FILE(dirent.h HAVE_DIRENT_H)
|
|
@@ -696,7 +697,9 @@ IF(PCRE2_BUILD_PCRE2_8)
|
|
VERSION ${LIBPCRE2_8_VERSION}
|
|
SOVERSION ${LIBPCRE2_8_SOVERSION})
|
|
TARGET_COMPILE_DEFINITIONS(pcre2-8-static PUBLIC PCRE2_STATIC)
|
|
- TARGET_INCLUDE_DIRECTORIES(pcre2-8-static PUBLIC ${PROJECT_BINARY_DIR})
|
|
+ TARGET_INCLUDE_DIRECTORIES(pcre2-8-static PUBLIC
|
|
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
|
|
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
|
IF(REQUIRE_PTHREAD)
|
|
TARGET_LINK_LIBRARIES(pcre2-8-static Threads::Threads)
|
|
ENDIF(REQUIRE_PTHREAD)
|
|
@@ -709,7 +712,9 @@ IF(PCRE2_BUILD_PCRE2_8)
|
|
VERSION ${LIBPCRE2_POSIX_VERSION}
|
|
SOVERSION ${LIBPCRE2_POSIX_SOVERSION})
|
|
TARGET_LINK_LIBRARIES(pcre2-posix-static pcre2-8-static)
|
|
- TARGET_INCLUDE_DIRECTORIES(pcre2-posix-static PUBLIC ${PROJECT_SOURCE_DIR}/src)
|
|
+ TARGET_INCLUDE_DIRECTORIES(pcre2-posix-static PUBLIC
|
|
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
|
|
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
|
set(targets ${targets} pcre2-posix-static)
|
|
|
|
IF(MSVC)
|
|
@@ -726,7 +731,9 @@ IF(PCRE2_BUILD_PCRE2_8)
|
|
|
|
IF(BUILD_SHARED_LIBS)
|
|
ADD_LIBRARY(pcre2-8-shared SHARED ${PCRE2_HEADERS} ${PCRE2_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
|
|
- TARGET_INCLUDE_DIRECTORIES(pcre2-8-shared PUBLIC ${PROJECT_BINARY_DIR})
|
|
+ TARGET_INCLUDE_DIRECTORIES(pcre2-8-shared PUBLIC
|
|
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
|
|
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
|
SET_TARGET_PROPERTIES(pcre2-8-shared PROPERTIES
|
|
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=8
|
|
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_8_MACHO_COMPATIBILITY_VERSION}"
|
|
@@ -740,7 +747,9 @@ IF(PCRE2_BUILD_PCRE2_8)
|
|
set(targets ${targets} pcre2-8-shared)
|
|
|
|
ADD_LIBRARY(pcre2-posix-shared SHARED ${PCRE2POSIX_HEADERS} ${PCRE2POSIX_SOURCES})
|
|
- TARGET_INCLUDE_DIRECTORIES(pcre2-posix-shared PUBLIC ${PROJECT_SOURCE_DIR}/src)
|
|
+ TARGET_INCLUDE_DIRECTORIES(pcre2-posix-shared PUBLIC
|
|
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
|
|
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
|
SET_TARGET_PROPERTIES(pcre2-posix-shared PROPERTIES
|
|
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=8
|
|
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_POSIX_MACHO_COMPATIBILITY_VERSION}"
|
|
@@ -779,7 +788,9 @@ ENDIF(PCRE2_BUILD_PCRE2_8)
|
|
IF(PCRE2_BUILD_PCRE2_16)
|
|
IF(BUILD_STATIC_LIBS)
|
|
ADD_LIBRARY(pcre2-16-static STATIC ${PCRE2_HEADERS} ${PCRE2_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
|
|
- TARGET_INCLUDE_DIRECTORIES(pcre2-16-static PUBLIC ${PROJECT_BINARY_DIR})
|
|
+ TARGET_INCLUDE_DIRECTORIES(pcre2-16-static PUBLIC
|
|
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
|
|
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
|
SET_TARGET_PROPERTIES(pcre2-16-static PROPERTIES UNITY_BUILD OFF
|
|
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=16
|
|
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_32_MACHO_COMPATIBILITY_VERSION}"
|
|
@@ -804,7 +815,9 @@ IF(PCRE2_BUILD_PCRE2_16)
|
|
|
|
IF(BUILD_SHARED_LIBS)
|
|
ADD_LIBRARY(pcre2-16-shared SHARED ${PCRE2_HEADERS} ${PCRE2_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
|
|
- TARGET_INCLUDE_DIRECTORIES(pcre2-16-shared PUBLIC ${PROJECT_BINARY_DIR})
|
|
+ TARGET_INCLUDE_DIRECTORIES(pcre2-16-shared PUBLIC
|
|
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
|
|
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
|
SET_TARGET_PROPERTIES(pcre2-16-shared PROPERTIES UNITY_BUILD OFF
|
|
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=16
|
|
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_32_MACHO_COMPATIBILITY_VERSION}"
|
|
@@ -841,7 +854,9 @@ ENDIF(PCRE2_BUILD_PCRE2_16)
|
|
IF(PCRE2_BUILD_PCRE2_32)
|
|
IF(BUILD_STATIC_LIBS)
|
|
ADD_LIBRARY(pcre2-32-static STATIC ${PCRE2_HEADERS} ${PCRE2_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
|
|
- TARGET_INCLUDE_DIRECTORIES(pcre2-32-static PUBLIC ${PROJECT_BINARY_DIR})
|
|
+ TARGET_INCLUDE_DIRECTORIES(pcre2-32-static PUBLIC
|
|
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
|
|
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
|
SET_TARGET_PROPERTIES(pcre2-32-static PROPERTIES UNITY_BUILD OFF
|
|
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=32
|
|
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_32_MACHO_COMPATIBILITY_VERSION}"
|
|
@@ -866,7 +881,9 @@ IF(PCRE2_BUILD_PCRE2_32)
|
|
|
|
IF(BUILD_SHARED_LIBS)
|
|
ADD_LIBRARY(pcre2-32-shared SHARED ${PCRE2_HEADERS} ${PCRE2_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
|
|
- TARGET_INCLUDE_DIRECTORIES(pcre2-32-shared PUBLIC ${PROJECT_BINARY_DIR})
|
|
+ TARGET_INCLUDE_DIRECTORIES(pcre2-32-shared PUBLIC
|
|
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
|
|
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
|
SET_TARGET_PROPERTIES(pcre2-32-shared PROPERTIES UNITY_BUILD OFF
|
|
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=32
|
|
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_32_MACHO_COMPATIBILITY_VERSION}"
|
|
@@ -1107,9 +1124,13 @@ ENDIF(PCRE2_BUILD_TESTS)
|
|
SET(CMAKE_INSTALL_ALWAYS 1)
|
|
|
|
INSTALL(TARGETS ${targets}
|
|
- RUNTIME DESTINATION bin
|
|
+ EXPORT pcre2-targets
|
|
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
|
+INSTALL(EXPORT pcre2-targets
|
|
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pcre2
|
|
+ NAMESPACE pcre2::)
|
|
INSTALL(FILES ${pkg_config_files} DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
|
INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/pcre2-config"
|
|
DESTINATION bin
|
|
@@ -1121,11 +1142,12 @@ INSTALL(FILES ${PCRE2_HEADERS} ${PCRE2POSIX_HEADERS} DESTINATION include)
|
|
# CMake config files.
|
|
set(PCRE2_CONFIG_IN ${CMAKE_CURRENT_SOURCE_DIR}/cmake/pcre2-config.cmake.in)
|
|
set(PCRE2_CONFIG_OUT ${CMAKE_CURRENT_BINARY_DIR}/cmake/pcre2-config.cmake)
|
|
-configure_file(${PCRE2_CONFIG_IN} ${PCRE2_CONFIG_OUT} @ONLY)
|
|
-set(PCRE2_CONFIG_VERSION_IN ${CMAKE_CURRENT_SOURCE_DIR}/cmake/pcre2-config-version.cmake.in)
|
|
+configure_package_config_file(${PCRE2_CONFIG_IN} ${PCRE2_CONFIG_OUT} INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pcre2)
|
|
set(PCRE2_CONFIG_VERSION_OUT ${CMAKE_CURRENT_BINARY_DIR}/cmake/pcre2-config-version.cmake)
|
|
-configure_file(${PCRE2_CONFIG_VERSION_IN} ${PCRE2_CONFIG_VERSION_OUT} @ONLY)
|
|
-install(FILES ${PCRE2_CONFIG_OUT} ${PCRE2_CONFIG_VERSION_OUT} DESTINATION cmake)
|
|
+write_basic_package_version_file(${PCRE2_CONFIG_VERSION_OUT}
|
|
+ VERSION ${PCRE2_MAJOR}.${PCRE2_MINOR}.0
|
|
+ COMPATIBILITY SameMajorVersion)
|
|
+install(FILES ${PCRE2_CONFIG_OUT} ${PCRE2_CONFIG_VERSION_OUT} DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pcre2)
|
|
|
|
FILE(GLOB html ${PROJECT_SOURCE_DIR}/doc/html/*.html)
|
|
FILE(GLOB man1 ${PROJECT_SOURCE_DIR}/doc/*.1)
|
|
diff --git a/cmake/pcre2-config-version.cmake.in b/cmake/pcre2-config-version.cmake.in
|
|
index dac149e..e69de29 100644
|
|
--- a/cmake/pcre2-config-version.cmake.in
|
|
+++ b/cmake/pcre2-config-version.cmake.in
|
|
@@ -1,15 +0,0 @@
|
|
-set(PACKAGE_VERSION_MAJOR @PCRE2_MAJOR@)
|
|
-set(PACKAGE_VERSION_MINOR @PCRE2_MINOR@)
|
|
-set(PACKAGE_VERSION_PATCH 0)
|
|
-set(PACKAGE_VERSION @PCRE2_MAJOR@.@PCRE2_MINOR@.0)
|
|
-
|
|
-# Check whether the requested PACKAGE_FIND_VERSION is compatible
|
|
-if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION OR
|
|
- PACKAGE_VERSION_MAJOR GREATER PACKAGE_FIND_VERSION_MAJOR)
|
|
- set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
|
-else()
|
|
- set(PACKAGE_VERSION_COMPATIBLE TRUE)
|
|
- if(PACKAGE_VERSION VERSION_EQUAL PACKAGE_FIND_VERSION)
|
|
- set(PACKAGE_VERSION_EXACT TRUE)
|
|
- endif()
|
|
-endif()
|
|
diff --git a/cmake/pcre2-config.cmake.in b/cmake/pcre2-config.cmake.in
|
|
index 12f3a35..159669b 100644
|
|
--- a/cmake/pcre2-config.cmake.in
|
|
+++ b/cmake/pcre2-config.cmake.in
|
|
@@ -5,11 +5,17 @@
|
|
#
|
|
# Static vs. shared
|
|
# -----------------
|
|
-# To make use of the static library instead of the shared one, one needs
|
|
+# 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 COMPONENTS 8BIT)
|
|
+# find_package(PCRE2 CONFIG)
|
|
#
|
|
# This will define the following variables:
|
|
#
|
|
@@ -23,70 +29,42 @@
|
|
# 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 ()
|
|
+@PACKAGE_INIT@
|
|
|
|
- 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 ()
|
|
+include(CMakeFindDependencyMacro)
|
|
+if("@REQUIRE_PTHREAD@") # REQUIRE_PTHREAD
|
|
+ find_dependency(Threads)
|
|
+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)
|
|
+include("${CMAKE_CURRENT_LIST_DIR}/pcre2-targets.cmake")
|
|
|
|
# Set version
|
|
-if (PCRE2_INCLUDE_DIR)
|
|
- set(PCRE2_VERSION "@PCRE2_MAJOR@.@PCRE2_MINOR@.0")
|
|
-endif ()
|
|
+set(PCRE2_VERSION "@PCRE2_MAJOR@.@PCRE2_MINOR@.0")
|
|
|
|
-# 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)
|
|
+# 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)
|
|
@@ -105,42 +83,5 @@ 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
|
|
-)
|
|
+# Check for required components.
|
|
+check_required_components("PCRE2")
|