zeek/auxil/vcpkg/ports/pcre2/fix-cmake.patch
Patrick Kelley 8fd444092b initial
2025-05-07 15:35:15 -04:00

327 lines
13 KiB
Diff

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1888c14..41fcfda 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -150,6 +150,7 @@ include(CheckFunctionExists)
include(CheckSymbolExists)
include(CheckIncludeFile)
include(CheckTypeSize)
+INCLUDE(CMakePackageConfigHelpers)
include(GNUInstallDirs) # for CMAKE_INSTALL_LIBDIR
check_include_file(assert.h HAVE_ASSERT_H)
@@ -792,7 +793,7 @@ if(PCRE2_BUILD_PCRE2_8)
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()
@@ -808,7 +809,7 @@ if(PCRE2_BUILD_PCRE2_8)
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)
@@ -825,7 +826,7 @@ 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
@@ -844,7 +845,7 @@ if(PCRE2_BUILD_PCRE2_8)
set(DLL_PDB_DEBUG_FILES $<TARGET_PDB_FILE_DIR:pcre2-8-shared>/pcre2-8d.pdb ${DLL_PDB_DEBUG_FILES})
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
@@ -886,7 +887,7 @@ endif()
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
@@ -915,7 +916,7 @@ 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
@@ -956,7 +957,7 @@ endif()
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
@@ -985,7 +986,7 @@ 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
@@ -1244,10 +1245,14 @@ 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"
@@ -1261,11 +1266,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 "${PCRE2_INSTALL_CMAKEDIR}")
+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 ${PROJECT_SOURCE_DIR}/doc/html/*.txt)
file(
diff --git a/cmake/pcre2-config-version.cmake.in b/cmake/pcre2-config-version.cmake.in
index db00606..e69de29 100644
--- a/cmake/pcre2-config-version.cmake.in
+++ b/cmake/pcre2-config-version.cmake.in
@@ -1,14 +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 082dc19..545f4de 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,88 +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()
-
- 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()
+@PACKAGE_INIT@
- set(PCRE2_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX})
- if(MINGW AND PCRE2_NON_STANDARD_LIB_SUFFIX)
- set(PCRE2_SUFFIX "-0.dll")
- elseif(MSVC)
- set(PCRE2_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX})
- endif()
+include(CMakeFindDependencyMacro)
+if("@REQUIRE_PTHREAD@") # REQUIRE_PTHREAD
+ find_dependency(Threads)
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@.@PCRE2_MINOR@.0")
-endif()
+include("${CMAKE_CURRENT_LIST_DIR}/pcre2-targets.cmake")
-# 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()
+# Set version
+set(PCRE2_VERSION "@PCRE2_MAJOR@.@PCRE2_MINOR@.0")
-# 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)
@@ -126,43 +86,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")