Skip to content

Commit 3da47a6

Browse files
committed
Use standard CMake constructs to export the library's targets.
1 parent 0ef82f7 commit 3da47a6

File tree

3 files changed

+78
-138
lines changed

3 files changed

+78
-138
lines changed

CMakeLists.txt

Lines changed: 46 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@
101101
# 2021-08-28 PH added test for realpath()
102102
# 2022-12-10 PH added support for pcre2posix_test
103103
# 2023-01-15 Carlo added C99 as the minimum required
104+
# 2023-06-03 Theodore used standard CMake constructs to export the library's targets.
104105

105106
# Increased minimum to 3.3 to support visibility.
106107
CMAKE_MINIMUM_REQUIRED(VERSION 3.3)
@@ -141,6 +142,7 @@ INCLUDE(CheckFunctionExists)
141142
INCLUDE(CheckSymbolExists)
142143
INCLUDE(CheckIncludeFile)
143144
INCLUDE(CheckTypeSize)
145+
INCLUDE(CMakePackageConfigHelpers)
144146
INCLUDE(GNUInstallDirs) # for CMAKE_INSTALL_LIBDIR
145147

146148
CHECK_INCLUDE_FILE(dirent.h HAVE_DIRENT_H)
@@ -722,28 +724,32 @@ SET(targets)
722724

723725
IF(PCRE2_BUILD_PCRE2_8)
724726
IF(BUILD_STATIC_LIBS)
725-
ADD_LIBRARY(pcre2-8-static STATIC ${PCRE2_HEADERS} ${PCRE2_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
727+
ADD_LIBRARY(pcre2-8-static STATIC ${PCRE2_SOURCES})
726728
SET_TARGET_PROPERTIES(pcre2-8-static PROPERTIES
727729
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=8
728730
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_8_MACHO_COMPATIBILITY_VERSION}"
729731
MACHO_CURRENT_VERSION "${LIBPCRE2_8_MACHO_CURRENT_VERSION}"
730732
VERSION ${LIBPCRE2_8_VERSION}
731733
SOVERSION ${LIBPCRE2_8_SOVERSION})
732734
TARGET_COMPILE_DEFINITIONS(pcre2-8-static PUBLIC PCRE2_STATIC)
733-
TARGET_INCLUDE_DIRECTORIES(pcre2-8-static PUBLIC ${PROJECT_BINARY_DIR})
735+
TARGET_INCLUDE_DIRECTORIES(pcre2-8-static PUBLIC
736+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
737+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
734738
IF(REQUIRE_PTHREAD)
735739
TARGET_LINK_LIBRARIES(pcre2-8-static Threads::Threads)
736740
ENDIF(REQUIRE_PTHREAD)
737741
SET(targets ${targets} pcre2-8-static)
738-
ADD_LIBRARY(pcre2-posix-static STATIC ${PCRE2POSIX_HEADERS} ${PCRE2POSIX_SOURCES})
742+
ADD_LIBRARY(pcre2-posix-static STATIC ${PCRE2POSIX_SOURCES})
739743
SET_TARGET_PROPERTIES(pcre2-posix-static PROPERTIES
740744
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=8
741745
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_POSIX_MACHO_COMPATIBILITY_VERSION}"
742746
MACHO_CURRENT_VERSION "${LIBPCRE2_POSIX_MACHO_CURRENT_VERSION}"
743747
VERSION ${LIBPCRE2_POSIX_VERSION}
744748
SOVERSION ${LIBPCRE2_POSIX_SOVERSION})
745749
TARGET_LINK_LIBRARIES(pcre2-posix-static pcre2-8-static)
746-
TARGET_INCLUDE_DIRECTORIES(pcre2-posix-static PUBLIC ${PROJECT_BINARY_DIR})
750+
TARGET_INCLUDE_DIRECTORIES(pcre2-posix-static PUBLIC
751+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
752+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
747753
SET(targets ${targets} pcre2-posix-static)
748754

749755
IF(MSVC)
@@ -759,8 +765,10 @@ IF(PCRE2_BUILD_PCRE2_8)
759765
ENDIF(BUILD_STATIC_LIBS)
760766

761767
IF(BUILD_SHARED_LIBS)
762-
ADD_LIBRARY(pcre2-8-shared SHARED ${PCRE2_HEADERS} ${PCRE2_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
763-
TARGET_INCLUDE_DIRECTORIES(pcre2-8-shared PUBLIC ${PROJECT_BINARY_DIR})
768+
ADD_LIBRARY(pcre2-8-shared SHARED ${PCRE2_SOURCES})
769+
TARGET_INCLUDE_DIRECTORIES(pcre2-8-shared PUBLIC
770+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
771+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
764772
SET_TARGET_PROPERTIES(pcre2-8-shared PROPERTIES
765773
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=8
766774
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_8_MACHO_COMPATIBILITY_VERSION}"
@@ -773,8 +781,10 @@ IF(PCRE2_BUILD_PCRE2_8)
773781
ENDIF(REQUIRE_PTHREAD)
774782
SET(targets ${targets} pcre2-8-shared)
775783

776-
ADD_LIBRARY(pcre2-posix-shared SHARED ${PCRE2POSIX_HEADERS} ${PCRE2POSIX_SOURCES})
777-
TARGET_INCLUDE_DIRECTORIES(pcre2-posix-shared PUBLIC ${PROJECT_BINARY_DIR})
784+
ADD_LIBRARY(pcre2-posix-shared SHARED ${PCRE2POSIX_SOURCES})
785+
TARGET_INCLUDE_DIRECTORIES(pcre2-posix-shared PUBLIC
786+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
787+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
778788
SET_TARGET_PROPERTIES(pcre2-posix-shared PROPERTIES
779789
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=8
780790
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_POSIX_MACHO_COMPATIBILITY_VERSION}"
@@ -811,8 +821,10 @@ ENDIF(PCRE2_BUILD_PCRE2_8)
811821

812822
IF(PCRE2_BUILD_PCRE2_16)
813823
IF(BUILD_STATIC_LIBS)
814-
ADD_LIBRARY(pcre2-16-static STATIC ${PCRE2_HEADERS} ${PCRE2_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
815-
TARGET_INCLUDE_DIRECTORIES(pcre2-16-static PUBLIC ${PROJECT_BINARY_DIR})
824+
ADD_LIBRARY(pcre2-16-static STATIC ${PCRE2_SOURCES})
825+
TARGET_INCLUDE_DIRECTORIES(pcre2-16-static PUBLIC
826+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
827+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
816828
SET_TARGET_PROPERTIES(pcre2-16-static PROPERTIES
817829
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=16
818830
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_32_MACHO_COMPATIBILITY_VERSION}"
@@ -836,8 +848,10 @@ IF(PCRE2_BUILD_PCRE2_16)
836848
ENDIF(BUILD_STATIC_LIBS)
837849

838850
IF(BUILD_SHARED_LIBS)
839-
ADD_LIBRARY(pcre2-16-shared SHARED ${PCRE2_HEADERS} ${PCRE2_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
840-
TARGET_INCLUDE_DIRECTORIES(pcre2-16-shared PUBLIC ${PROJECT_BINARY_DIR})
851+
ADD_LIBRARY(pcre2-16-shared SHARED ${PCRE2_SOURCES})
852+
TARGET_INCLUDE_DIRECTORIES(pcre2-16-shared PUBLIC
853+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
854+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
841855
SET_TARGET_PROPERTIES(pcre2-16-shared PROPERTIES
842856
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=16
843857
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_32_MACHO_COMPATIBILITY_VERSION}"
@@ -873,8 +887,10 @@ ENDIF(PCRE2_BUILD_PCRE2_16)
873887

874888
IF(PCRE2_BUILD_PCRE2_32)
875889
IF(BUILD_STATIC_LIBS)
876-
ADD_LIBRARY(pcre2-32-static STATIC ${PCRE2_HEADERS} ${PCRE2_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
877-
TARGET_INCLUDE_DIRECTORIES(pcre2-32-static PUBLIC ${PROJECT_BINARY_DIR})
890+
ADD_LIBRARY(pcre2-32-static STATIC ${PCRE2_SOURCES})
891+
TARGET_INCLUDE_DIRECTORIES(pcre2-32-static PUBLIC
892+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
893+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
878894
SET_TARGET_PROPERTIES(pcre2-32-static PROPERTIES
879895
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=32
880896
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_32_MACHO_COMPATIBILITY_VERSION}"
@@ -898,8 +914,10 @@ IF(PCRE2_BUILD_PCRE2_32)
898914
ENDIF(BUILD_STATIC_LIBS)
899915

900916
IF(BUILD_SHARED_LIBS)
901-
ADD_LIBRARY(pcre2-32-shared SHARED ${PCRE2_HEADERS} ${PCRE2_SOURCES} ${PROJECT_BINARY_DIR}/config.h)
902-
TARGET_INCLUDE_DIRECTORIES(pcre2-32-shared PUBLIC ${PROJECT_BINARY_DIR})
917+
ADD_LIBRARY(pcre2-32-shared SHARED ${PCRE2_SOURCES})
918+
TARGET_INCLUDE_DIRECTORIES(pcre2-32-shared PUBLIC
919+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
920+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
903921
SET_TARGET_PROPERTIES(pcre2-32-shared PROPERTIES
904922
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=32
905923
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_32_MACHO_COMPATIBILITY_VERSION}"
@@ -956,7 +974,6 @@ IF(PCRE2_BUILD_TESTS)
956974
ENDIF(MSVC)
957975

958976
ADD_EXECUTABLE(pcre2test ${PCRE2TEST_SOURCES})
959-
SET(targets ${targets} pcre2test)
960977
IF(PCRE2_BUILD_PCRE2_8)
961978
LIST(APPEND PCRE2TEST_LIBS pcre2-posix pcre2-8)
962979
ENDIF(PCRE2_BUILD_PCRE2_8)
@@ -970,13 +987,11 @@ IF(PCRE2_BUILD_TESTS)
970987

971988
IF(PCRE2_BUILD_PCRE2_8)
972989
ADD_EXECUTABLE(pcre2posix_test src/pcre2posix_test.c)
973-
SET(targets ${targets} pcre2posix_test)
974990
TARGET_LINK_LIBRARIES(pcre2posix_test pcre2-posix pcre2-8)
975991
ENDIF(PCRE2_BUILD_PCRE2_8)
976992

977993
IF(PCRE2_SUPPORT_JIT)
978994
ADD_EXECUTABLE(pcre2_jit_test src/pcre2_jit_test.c)
979-
SET(targets ${targets} pcre2_jit_test)
980995
SET(PCRE2_JIT_TEST_LIBS)
981996
IF(PCRE2_BUILD_PCRE2_8)
982997
LIST(APPEND PCRE2_JIT_TEST_LIBS pcre2-8)
@@ -1099,11 +1114,17 @@ ENDIF(PCRE2_BUILD_TESTS)
10991114
# Installation
11001115

11011116
SET(CMAKE_INSTALL_ALWAYS 1)
1117+
set(TARGETS_EXPORT_NAME pcre2-targets)
11021118

11031119
INSTALL(TARGETS ${targets}
1104-
RUNTIME DESTINATION bin
1120+
EXPORT ${TARGETS_EXPORT_NAME}
1121+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
11051122
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
11061123
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
1124+
INSTALL(EXPORT ${TARGETS_EXPORT_NAME}
1125+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pcre2
1126+
NAMESPACE pcre2::
1127+
FILE ${TARGETS_EXPORT_NAME}.cmake)
11071128
INSTALL(FILES ${pkg_config_files} DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
11081129
INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/pcre2-config"
11091130
DESTINATION bin
@@ -1115,11 +1136,12 @@ INSTALL(FILES ${PCRE2_HEADERS} ${PCRE2POSIX_HEADERS} DESTINATION include)
11151136
# CMake config files.
11161137
set(PCRE2_CONFIG_IN ${CMAKE_CURRENT_SOURCE_DIR}/cmake/pcre2-config.cmake.in)
11171138
set(PCRE2_CONFIG_OUT ${CMAKE_CURRENT_BINARY_DIR}/cmake/pcre2-config.cmake)
1118-
configure_file(${PCRE2_CONFIG_IN} ${PCRE2_CONFIG_OUT} @ONLY)
1119-
set(PCRE2_CONFIG_VERSION_IN ${CMAKE_CURRENT_SOURCE_DIR}/cmake/pcre2-config-version.cmake.in)
1139+
configure_package_config_file(${PCRE2_CONFIG_IN} ${PCRE2_CONFIG_OUT} INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pcre2)
11201140
set(PCRE2_CONFIG_VERSION_OUT ${CMAKE_CURRENT_BINARY_DIR}/cmake/pcre2-config-version.cmake)
1121-
configure_file(${PCRE2_CONFIG_VERSION_IN} ${PCRE2_CONFIG_VERSION_OUT} @ONLY)
1122-
install(FILES ${PCRE2_CONFIG_OUT} ${PCRE2_CONFIG_VERSION_OUT} DESTINATION cmake)
1141+
write_basic_package_version_file(${PCRE2_CONFIG_VERSION_OUT}
1142+
VERSION ${PCRE2_MAJOR}.${PCRE2_MINOR}.0
1143+
COMPATIBILITY SameMajorVersion)
1144+
install(FILES ${PCRE2_CONFIG_OUT} ${PCRE2_CONFIG_VERSION_OUT} DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pcre2)
11231145

11241146
FILE(GLOB html ${PROJECT_SOURCE_DIR}/doc/html/*.html)
11251147
FILE(GLOB man1 ${PROJECT_SOURCE_DIR}/doc/*.1)

cmake/pcre2-config-version.cmake.in

Lines changed: 0 additions & 15 deletions
This file was deleted.

cmake/pcre2-config.cmake.in

Lines changed: 32 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,13 @@
77
# -----------------
88
# To make use of the static library instead of the shared one, one needs
99
# to set the variable PCRE2_USE_STATIC_LIBS to ON before calling find_package.
10+
#
11+
# The following components are supported: 8BIT, 16BIT, 32BIT and POSIX.
12+
# They used to be required but not anymore; all available targets will
13+
# be defined regardless of the requested components.
1014
# Example:
1115
# set(PCRE2_USE_STATIC_LIBS ON)
12-
# find_package(PCRE2 CONFIG COMPONENTS 8BIT)
16+
# find_package(PCRE2 CONFIG)
1317
#
1418
# This will define the following variables:
1519
#
@@ -23,70 +27,35 @@
2327
# PCRE2::32BIT - The 32 bit PCRE2 library.
2428
# PCRE2::POSIX - The POSIX PCRE2 library.
2529

26-
set(PCRE2_NON_STANDARD_LIB_PREFIX @NON_STANDARD_LIB_PREFIX@)
27-
set(PCRE2_NON_STANDARD_LIB_SUFFIX @NON_STANDARD_LIB_SUFFIX@)
28-
set(PCRE2_8BIT_NAME pcre2-8)
29-
set(PCRE2_16BIT_NAME pcre2-16)
30-
set(PCRE2_32BIT_NAME pcre2-32)
31-
set(PCRE2_POSIX_NAME pcre2-posix)
32-
find_path(PCRE2_INCLUDE_DIR NAMES pcre2.h DOC "PCRE2 include directory")
33-
if (PCRE2_USE_STATIC_LIBS)
34-
if (MSVC)
35-
set(PCRE2_8BIT_NAME pcre2-8-static)
36-
set(PCRE2_16BIT_NAME pcre2-16-static)
37-
set(PCRE2_32BIT_NAME pcre2-32-static)
38-
set(PCRE2_POSIX_NAME pcre2-posix-static)
39-
endif ()
30+
@PACKAGE_INIT@
4031

41-
set(PCRE2_PREFIX ${CMAKE_STATIC_LIBRARY_PREFIX})
42-
set(PCRE2_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
43-
else ()
44-
set(PCRE2_PREFIX ${CMAKE_SHARED_LIBRARY_PREFIX})
45-
if (MINGW AND PCRE2_NON_STANDARD_LIB_PREFIX)
46-
set(PCRE2_PREFIX "")
47-
endif ()
48-
49-
set(PCRE2_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
50-
if (MINGW AND PCRE2_NON_STANDARD_LIB_SUFFIX)
51-
set(PCRE2_SUFFIX "-0.dll")
52-
endif ()
53-
endif ()
54-
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")
55-
find_library(PCRE2_16BIT_LIBRARY NAMES ${PCRE2_PREFIX}${PCRE2_16BIT_NAME}${PCRE2_SUFFIX} ${PCRE2_PREFIX}${PCRE2_8BIT_NAME}d${PCRE2_SUFFIX} DOC "16 bit PCRE2 library")
56-
find_library(PCRE2_32BIT_LIBRARY NAMES ${PCRE2_PREFIX}${PCRE2_32BIT_NAME}${PCRE2_SUFFIX} ${PCRE2_PREFIX}${PCRE2_8BIT_NAME}d${PCRE2_SUFFIX} DOC "32 bit PCRE2 library")
57-
find_library(PCRE2_POSIX_LIBRARY NAMES ${PCRE2_PREFIX}${PCRE2_POSIX_NAME}${PCRE2_SUFFIX} ${PCRE2_PREFIX}${PCRE2_8BIT_NAME}d${PCRE2_SUFFIX} DOC "8 bit POSIX PCRE2 library")
58-
unset(PCRE2_NON_STANDARD_LIB_PREFIX)
59-
unset(PCRE2_NON_STANDARD_LIB_SUFFIX)
60-
unset(PCRE2_8BIT_NAME)
61-
unset(PCRE2_16BIT_NAME)
62-
unset(PCRE2_32BIT_NAME)
63-
unset(PCRE2_POSIX_NAME)
32+
include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
6433

6534
# Set version
66-
if (PCRE2_INCLUDE_DIR)
67-
set(PCRE2_VERSION "@PCRE2_MAJOR@.@[email protected]")
68-
endif ()
35+
set(PCRE2_VERSION "@PCRE2_MAJOR@.@[email protected]")
6936

70-
# Which components have been found.
71-
if (PCRE2_8BIT_LIBRARY)
72-
set(PCRE2_8BIT_FOUND TRUE)
73-
endif ()
74-
if (PCRE2_16BIT_LIBRARY)
75-
set(PCRE2_16BIT_FOUND TRUE)
76-
endif ()
77-
if (PCRE2_32BIT_LIBRARY)
78-
set(PCRE2_32BIT_FOUND TRUE)
79-
endif ()
80-
if (PCRE2_POSIX_LIBRARY)
81-
set(PCRE2_POSIX_FOUND TRUE)
82-
endif ()
83-
84-
# Check if at least one component has been specified.
85-
list(LENGTH PCRE2_FIND_COMPONENTS PCRE2_NCOMPONENTS)
86-
if (PCRE2_NCOMPONENTS LESS 1)
87-
message(FATAL_ERROR "No components have been specified. This is not allowed. Please, specify at least one component.")
88-
endif ()
89-
unset(PCRE2_NCOMPONENTS)
37+
# Chooses the linkage of the library to expose in the
38+
# unsuffixed edition of the target.
39+
macro(_pcre2_add_component_target component target)
40+
# If the static or shared editions of the library exist,
41+
# we mark that we found the package itself and the corresponding component.
42+
if (TARGET pcre2::pcre2-${target}-static OR TARGET pcre2::pcre2-${target}-shared)
43+
set(PCRE2_FOUND TRUE)
44+
set(PCRE2_${component}_FOUND TRUE)
45+
endif()
46+
# If the static library exists and either PCRE2_USE_STATIC_LIBS
47+
# is defined, or the dynamic library does not exist, use the static library.
48+
if (TARGET pcre2::pcre2-${target}-static AND (PCRE2_USE_STATIC_LIBS OR NOT TARGET pcre2::pcre2-${target}-shared))
49+
add_library(PCRE2::${component} ALIAS pcre2::pcre2-${target}-static)
50+
# Otherwise use the dynamic library if it exists.
51+
elseif(TARGET pcre2::pcre2-${target}-shared)
52+
add_library(PCRE2::${component} ALIAS pcre2::pcre2-${target}-shared)
53+
endif()
54+
endmacro()
55+
_pcre2_add_component_target(8BIT 8)
56+
_pcre2_add_component_target(16BIT 16)
57+
_pcre2_add_component_target(32BIT 32)
58+
_pcre2_add_component_target(POSIX posix)
9059

9160
# When POSIX component has been specified make sure that also 8BIT component is specified.
9261
set(PCRE2_8BIT_COMPONENT FALSE)
@@ -105,41 +74,5 @@ endif()
10574
unset(PCRE2_8BIT_COMPONENT)
10675
unset(PCRE2_POSIX_COMPONENT)
10776

108-
include(FindPackageHandleStandardArgs)
109-
set(${CMAKE_FIND_PACKAGE_NAME}_CONFIG "${CMAKE_CURRENT_LIST_FILE}")
110-
find_package_handle_standard_args(PCRE2
111-
FOUND_VAR PCRE2_FOUND
112-
REQUIRED_VARS PCRE2_INCLUDE_DIR
113-
HANDLE_COMPONENTS
114-
VERSION_VAR PCRE2_VERSION
115-
CONFIG_MODE
116-
)
117-
118-
set(PCRE2_LIBRARIES)
119-
if (PCRE2_FOUND)
120-
foreach(component ${PCRE2_FIND_COMPONENTS})
121-
if (PCRE2_USE_STATIC_LIBS)
122-
add_library(PCRE2::${component} STATIC IMPORTED)
123-
target_compile_definitions(PCRE2::${component} INTERFACE PCRE2_STATIC)
124-
else ()
125-
add_library(PCRE2::${component} SHARED IMPORTED)
126-
endif ()
127-
set_target_properties(PCRE2::${component} PROPERTIES
128-
IMPORTED_LOCATION "${PCRE2_${component}_LIBRARY}"
129-
INTERFACE_INCLUDE_DIRECTORIES "${PCRE2_INCLUDE_DIR}"
130-
)
131-
if (component STREQUAL "POSIX")
132-
set_target_properties(PCRE2::${component} PROPERTIES
133-
INTERFACE_LINK_LIBRARIES "PCRE2::8BIT"
134-
LINK_LIBRARIES "PCRE2::8BIT"
135-
)
136-
endif ()
137-
138-
set(PCRE2_LIBRARIES ${PCRE2_LIBRARIES} ${PCRE2_${component}_LIBRARY})
139-
mark_as_advanced(PCRE2_${component}_LIBRARY)
140-
endforeach()
141-
endif ()
142-
143-
mark_as_advanced(
144-
PCRE2_INCLUDE_DIR
145-
)
77+
# Check for required components.
78+
check_required_components("PCRE2")

0 commit comments

Comments
 (0)