Skip to content

Commit fcd016f

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

File tree

3 files changed

+85
-137
lines changed

3 files changed

+85
-137
lines changed

CMakeLists.txt

Lines changed: 55 additions & 23 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,34 @@ 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
730+
PUBLIC_HEADER ${PCRE2_HEADERS}
728731
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_8_MACHO_COMPATIBILITY_VERSION}"
729732
MACHO_CURRENT_VERSION "${LIBPCRE2_8_MACHO_CURRENT_VERSION}"
730733
VERSION ${LIBPCRE2_8_VERSION}
731734
SOVERSION ${LIBPCRE2_8_SOVERSION})
732735
TARGET_COMPILE_DEFINITIONS(pcre2-8-static PUBLIC PCRE2_STATIC)
733-
TARGET_INCLUDE_DIRECTORIES(pcre2-8-static PUBLIC ${PROJECT_BINARY_DIR})
736+
TARGET_INCLUDE_DIRECTORIES(pcre2-8-static PUBLIC
737+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
738+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
734739
IF(REQUIRE_PTHREAD)
735740
TARGET_LINK_LIBRARIES(pcre2-8-static Threads::Threads)
736741
ENDIF(REQUIRE_PTHREAD)
737742
SET(targets ${targets} pcre2-8-static)
738-
ADD_LIBRARY(pcre2-posix-static STATIC ${PCRE2POSIX_HEADERS} ${PCRE2POSIX_SOURCES})
743+
ADD_LIBRARY(pcre2-posix-static STATIC ${PCRE2POSIX_SOURCES})
739744
SET_TARGET_PROPERTIES(pcre2-posix-static PROPERTIES
740745
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=8
746+
PUBLIC_HEADER ${PCRE2POSIX_HEADERS}
741747
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_POSIX_MACHO_COMPATIBILITY_VERSION}"
742748
MACHO_CURRENT_VERSION "${LIBPCRE2_POSIX_MACHO_CURRENT_VERSION}"
743749
VERSION ${LIBPCRE2_POSIX_VERSION}
744750
SOVERSION ${LIBPCRE2_POSIX_SOVERSION})
745751
TARGET_LINK_LIBRARIES(pcre2-posix-static pcre2-8-static)
746-
TARGET_INCLUDE_DIRECTORIES(pcre2-posix-static PUBLIC ${PROJECT_BINARY_DIR})
752+
TARGET_INCLUDE_DIRECTORIES(pcre2-posix-static PUBLIC
753+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
754+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
747755
SET(targets ${targets} pcre2-posix-static)
748756

749757
IF(MSVC)
@@ -759,10 +767,13 @@ IF(PCRE2_BUILD_PCRE2_8)
759767
ENDIF(BUILD_STATIC_LIBS)
760768

761769
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})
770+
ADD_LIBRARY(pcre2-8-shared SHARED ${PCRE2_SOURCES})
771+
TARGET_INCLUDE_DIRECTORIES(pcre2-8-shared PUBLIC
772+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
773+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
764774
SET_TARGET_PROPERTIES(pcre2-8-shared PROPERTIES
765775
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=8
776+
PUBLIC_HEADER ${PCRE2_HEADERS}
766777
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_8_MACHO_COMPATIBILITY_VERSION}"
767778
MACHO_CURRENT_VERSION "${LIBPCRE2_8_MACHO_CURRENT_VERSION}"
768779
VERSION ${LIBPCRE2_8_VERSION}
@@ -773,10 +784,13 @@ IF(PCRE2_BUILD_PCRE2_8)
773784
ENDIF(REQUIRE_PTHREAD)
774785
SET(targets ${targets} pcre2-8-shared)
775786

776-
ADD_LIBRARY(pcre2-posix-shared SHARED ${PCRE2POSIX_HEADERS} ${PCRE2POSIX_SOURCES})
777-
TARGET_INCLUDE_DIRECTORIES(pcre2-posix-shared PUBLIC ${PROJECT_BINARY_DIR})
787+
ADD_LIBRARY(pcre2-posix-shared SHARED ${PCRE2POSIX_SOURCES})
788+
TARGET_INCLUDE_DIRECTORIES(pcre2-posix-shared PUBLIC
789+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
790+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
778791
SET_TARGET_PROPERTIES(pcre2-posix-shared PROPERTIES
779792
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=8
793+
PUBLIC_HEADER ${PCRE2POSIX_HEADERS}
780794
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_POSIX_MACHO_COMPATIBILITY_VERSION}"
781795
MACHO_CURRENT_VERSION "${LIBPCRE2_POSIX_MACHO_CURRENT_VERSION}"
782796
VERSION ${LIBPCRE2_POSIX_VERSION}
@@ -811,10 +825,13 @@ ENDIF(PCRE2_BUILD_PCRE2_8)
811825

812826
IF(PCRE2_BUILD_PCRE2_16)
813827
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})
828+
ADD_LIBRARY(pcre2-16-static STATIC ${PCRE2_SOURCES})
829+
TARGET_INCLUDE_DIRECTORIES(pcre2-16-static PUBLIC
830+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
831+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
816832
SET_TARGET_PROPERTIES(pcre2-16-static PROPERTIES
817833
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=16
834+
PUBLIC_HEADER ${PCRE2_HEADERS}
818835
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_32_MACHO_COMPATIBILITY_VERSION}"
819836
MACHO_CURRENT_VERSION "${LIBPCRE2_32_MACHO_CURRENT_VERSION}"
820837
VERSION ${LIBPCRE2_16_VERSION}
@@ -836,10 +853,13 @@ IF(PCRE2_BUILD_PCRE2_16)
836853
ENDIF(BUILD_STATIC_LIBS)
837854

838855
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})
856+
ADD_LIBRARY(pcre2-16-shared SHARED ${PCRE2_SOURCES})
857+
TARGET_INCLUDE_DIRECTORIES(pcre2-16-shared PUBLIC
858+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
859+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
841860
SET_TARGET_PROPERTIES(pcre2-16-shared PROPERTIES
842861
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=16
862+
PUBLIC_HEADER ${PCRE2_HEADERS}
843863
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_32_MACHO_COMPATIBILITY_VERSION}"
844864
MACHO_CURRENT_VERSION "${LIBPCRE2_32_MACHO_CURRENT_VERSION}"
845865
VERSION ${LIBPCRE2_16_VERSION}
@@ -873,10 +893,13 @@ ENDIF(PCRE2_BUILD_PCRE2_16)
873893

874894
IF(PCRE2_BUILD_PCRE2_32)
875895
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})
896+
ADD_LIBRARY(pcre2-32-static STATIC ${PCRE2_SOURCES})
897+
TARGET_INCLUDE_DIRECTORIES(pcre2-32-static PUBLIC
898+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
899+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
878900
SET_TARGET_PROPERTIES(pcre2-32-static PROPERTIES
879901
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=32
902+
PUBLIC_HEADER ${PCRE2_HEADERS}
880903
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_32_MACHO_COMPATIBILITY_VERSION}"
881904
MACHO_CURRENT_VERSION "${LIBPCRE2_32_MACHO_CURRENT_VERSION}"
882905
VERSION ${LIBPCRE2_32_VERSION}
@@ -898,10 +921,13 @@ IF(PCRE2_BUILD_PCRE2_32)
898921
ENDIF(BUILD_STATIC_LIBS)
899922

900923
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})
924+
ADD_LIBRARY(pcre2-32-shared SHARED ${PCRE2_SOURCES})
925+
TARGET_INCLUDE_DIRECTORIES(pcre2-32-shared PUBLIC
926+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
927+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
903928
SET_TARGET_PROPERTIES(pcre2-32-shared PROPERTIES
904929
COMPILE_DEFINITIONS PCRE2_CODE_UNIT_WIDTH=32
930+
PUBLIC_HEADER ${PCRE2_HEADERS}
905931
MACHO_COMPATIBILITY_VERSION "${LIBPCRE2_32_MACHO_COMPATIBILITY_VERSION}"
906932
MACHO_CURRENT_VERSION "${LIBPCRE2_32_MACHO_CURRENT_VERSION}"
907933
VERSION ${LIBPCRE2_32_VERSION}
@@ -1099,27 +1125,33 @@ ENDIF(PCRE2_BUILD_TESTS)
10991125
# Installation
11001126

11011127
SET(CMAKE_INSTALL_ALWAYS 1)
1128+
set(TARGETS_EXPORT_NAME pcre2-targets)
11021129

11031130
INSTALL(TARGETS ${targets}
1104-
RUNTIME DESTINATION bin
1131+
EXPORT ${TARGETS_EXPORT_NAME}
1132+
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
1133+
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
11051134
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
11061135
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
1136+
INSTALL(EXPORT ${TARGETS_EXPORT_NAME}
1137+
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pcre2
1138+
NAMESPACE pcre2::
1139+
FILE pcre2-targets.cmake)
11071140
INSTALL(FILES ${pkg_config_files} DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
11081141
INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/pcre2-config"
11091142
DESTINATION bin
11101143
# Set 0755 permissions
11111144
PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
11121145

1113-
INSTALL(FILES ${PCRE2_HEADERS} ${PCRE2POSIX_HEADERS} DESTINATION include)
1114-
11151146
# CMake config files.
11161147
set(PCRE2_CONFIG_IN ${CMAKE_CURRENT_SOURCE_DIR}/cmake/pcre2-config.cmake.in)
11171148
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)
1149+
configure_package_config_file(${PCRE2_CONFIG_IN} ${PCRE2_CONFIG_OUT} INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pcre2)
11201150
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)
1151+
write_basic_package_version_file(${PCRE2_CONFIG_VERSION_OUT}
1152+
VERSION ${PCRE2_MAJOR}.${PCRE2_MINOR}.0
1153+
COMPATIBILITY SameMajorVersion)
1154+
install(FILES ${PCRE2_CONFIG_OUT} ${PCRE2_CONFIG_VERSION_OUT} DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pcre2)
11231155

11241156
FILE(GLOB html ${PROJECT_SOURCE_DIR}/doc/html/*.html)
11251157
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: 30 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,33 @@
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+
if (TARGET pcre2::pcre2-${target}-static AND (PCRE2_USE_STATIC_LIBS OR NOT TARGET pcre2::pcre2-${target}-shared))
48+
add_library(pcre2::pcre2-${target} ALIAS pcre2::pcre2-${target}-static)
49+
elseif(TARGET pcre2::pcre2-${target}-shared)
50+
add_library(pcre2::pcre2-${target} ALIAS pcre2::pcre2-${target}-shared)
51+
endif()
52+
endmacro()
53+
_pcre2_add_component_target(8BIT 8)
54+
_pcre2_add_component_target(16BIT 16)
55+
_pcre2_add_component_target(32BIT 32)
56+
_pcre2_add_component_target(POSIX posix)
9057

9158
# When POSIX component has been specified make sure that also 8BIT component is specified.
9259
set(PCRE2_8BIT_COMPONENT FALSE)
@@ -105,41 +72,5 @@ endif()
10572
unset(PCRE2_8BIT_COMPONENT)
10673
unset(PCRE2_POSIX_COMPONENT)
10774

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-
)
75+
# Check for required components.
76+
check_required_components("PCRE2")

0 commit comments

Comments
 (0)