From 1a978bd68cef6561698379135dfc2e94252cb75c Mon Sep 17 00:00:00 2001 From: "Dan S. Camper" Date: Tue, 14 May 2024 12:57:43 -0500 Subject: [PATCH] HPCC-31839 Upgrade PCRE2 to version 10.43 Interim update via vcpkg_overlays --- vcpkg_overlays/pcre2/fix-cmake.patch | 323 ++++++++++++++++++ vcpkg_overlays/pcre2/no-static-suffix.patch | 33 ++ .../pcre2/pcre2-10.35_fix-uwp.patch | 10 + vcpkg_overlays/pcre2/portfile.cmake | 77 +++++ vcpkg_overlays/pcre2/usage | 6 + vcpkg_overlays/pcre2/vcpkg.json | 38 +++ 6 files changed, 487 insertions(+) create mode 100644 vcpkg_overlays/pcre2/fix-cmake.patch create mode 100644 vcpkg_overlays/pcre2/no-static-suffix.patch create mode 100644 vcpkg_overlays/pcre2/pcre2-10.35_fix-uwp.patch create mode 100644 vcpkg_overlays/pcre2/portfile.cmake create mode 100644 vcpkg_overlays/pcre2/usage create mode 100644 vcpkg_overlays/pcre2/vcpkg.json diff --git a/vcpkg_overlays/pcre2/fix-cmake.patch b/vcpkg_overlays/pcre2/fix-cmake.patch new file mode 100644 index 00000000000..088be8425a6 --- /dev/null +++ b/vcpkg_overlays/pcre2/fix-cmake.patch @@ -0,0 +1,323 @@ +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 ++ $ ++ $) + 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 ++ $ ++ $) + 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 ++ $ ++ $) + 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 ++ $ ++ $) + 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 ++ $ ++ $) + 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 ++ $ ++ $) + 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 ++ $ ++ $) + 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 ++ $ ++ $) + 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") diff --git a/vcpkg_overlays/pcre2/no-static-suffix.patch b/vcpkg_overlays/pcre2/no-static-suffix.patch new file mode 100644 index 00000000000..23cbc1ca224 --- /dev/null +++ b/vcpkg_overlays/pcre2/no-static-suffix.patch @@ -0,0 +1,33 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2815dbb..3c915d9 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -713,8 +713,8 @@ IF(PCRE2_BUILD_PCRE2_8) + set(targets ${targets} pcre2-posix-static) + + IF(MSVC) +- SET_TARGET_PROPERTIES(pcre2-8-static PROPERTIES OUTPUT_NAME pcre2-8-static) +- SET_TARGET_PROPERTIES(pcre2-posix-static PROPERTIES OUTPUT_NAME pcre2-posix-static) ++ SET_TARGET_PROPERTIES(pcre2-8-static PROPERTIES OUTPUT_NAME pcre2-8) ++ SET_TARGET_PROPERTIES(pcre2-posix-static PROPERTIES OUTPUT_NAME pcre2-posix) + ELSE(MSVC) + SET_TARGET_PROPERTIES(pcre2-8-static PROPERTIES OUTPUT_NAME pcre2-8) + SET_TARGET_PROPERTIES(pcre2-posix-static PROPERTIES OUTPUT_NAME pcre2-posix) +@@ -793,7 +793,7 @@ IF(PCRE2_BUILD_PCRE2_16) + set(targets ${targets} pcre2-16-static) + + IF(MSVC) +- SET_TARGET_PROPERTIES(pcre2-16-static PROPERTIES OUTPUT_NAME pcre2-16-static) ++ SET_TARGET_PROPERTIES(pcre2-16-static PROPERTIES OUTPUT_NAME pcre2-16) + ELSE(MSVC) + SET_TARGET_PROPERTIES(pcre2-16-static PROPERTIES OUTPUT_NAME pcre2-16) + ENDIF(MSVC) +@@ -855,7 +855,7 @@ IF(PCRE2_BUILD_PCRE2_32) + set(targets ${targets} pcre2-32-static) + + IF(MSVC) +- SET_TARGET_PROPERTIES(pcre2-32-static PROPERTIES OUTPUT_NAME pcre2-32-static) ++ SET_TARGET_PROPERTIES(pcre2-32-static PROPERTIES OUTPUT_NAME pcre2-32) + ELSE(MSVC) + SET_TARGET_PROPERTIES(pcre2-32-static PROPERTIES OUTPUT_NAME pcre2-32) + ENDIF(MSVC) diff --git a/vcpkg_overlays/pcre2/pcre2-10.35_fix-uwp.patch b/vcpkg_overlays/pcre2/pcre2-10.35_fix-uwp.patch new file mode 100644 index 00000000000..476dde0f6a4 --- /dev/null +++ b/vcpkg_overlays/pcre2/pcre2-10.35_fix-uwp.patch @@ -0,0 +1,10 @@ +--- a/CMakeLists.txt 2020-05-09 16:43:10.000000000 +0200 ++++ b/CMakeLists.txt 2020-06-03 20:57:17.026182500 +0200 +@@ -619,6 +619,7 @@ + + IF(MSVC) + ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS) ++ add_compile_options(/wd4146) + ENDIF(MSVC) + + SET(CMAKE_INCLUDE_CURRENT_DIR 1) diff --git a/vcpkg_overlays/pcre2/portfile.cmake b/vcpkg_overlays/pcre2/portfile.cmake new file mode 100644 index 00000000000..9d2f32ca14a --- /dev/null +++ b/vcpkg_overlays/pcre2/portfile.cmake @@ -0,0 +1,77 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO PCRE2Project/pcre2 + REF "pcre2-${VERSION}" + SHA512 50f3b8b10faf432e0ffe87eca84fdebdb10869b092e4dc66c33bd6e2657638d4433698669af2c5ad9f691d27789663682a7235943761f716f5f2e0637deafc97 + HEAD_REF master + PATCHES + pcre2-10.35_fix-uwp.patch + no-static-suffix.patch + fix-cmake.patch +) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC) +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" INSTALL_PDB) +string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" BUILD_STATIC_CRT) + +vcpkg_check_features( + OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + jit PCRE2_SUPPORT_JIT +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + ${FEATURE_OPTIONS} + -DBUILD_STATIC_LIBS=${BUILD_STATIC} + -DPCRE2_STATIC_RUNTIME=${BUILD_STATIC_CRT} + -DPCRE2_BUILD_PCRE2_8=ON + -DPCRE2_BUILD_PCRE2_16=ON + -DPCRE2_BUILD_PCRE2_32=ON + -DPCRE2_SUPPORT_UNICODE=ON + -DPCRE2_BUILD_TESTS=OFF + -DPCRE2_BUILD_PCRE2GREP=OFF + -DCMAKE_DISABLE_FIND_PACKAGE_BZip2=ON + -DCMAKE_DISABLE_FIND_PACKAGE_ZLIB=ON + -DCMAKE_DISABLE_FIND_PACKAGE_Readline=ON + -DCMAKE_DISABLE_FIND_PACKAGE_Editline=ON + -DINSTALL_MSVC_PDB=${INSTALL_PDB} + ) + +vcpkg_cmake_install() +vcpkg_copy_pdbs() + +file(READ "${CURRENT_PACKAGES_DIR}/include/pcre2.h" PCRE2_H) +if(BUILD_STATIC) + string(REPLACE "defined(PCRE2_STATIC)" "1" PCRE2_H "${PCRE2_H}") +else() + string(REPLACE "defined(PCRE2_STATIC)" "0" PCRE2_H "${PCRE2_H}") +endif() +file(WRITE "${CURRENT_PACKAGES_DIR}/include/pcre2.h" "${PCRE2_H}") + +vcpkg_fixup_pkgconfig() +vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/${PORT}) + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/man" + "${CURRENT_PACKAGES_DIR}/share/doc" + "${CURRENT_PACKAGES_DIR}/debug/include" + "${CURRENT_PACKAGES_DIR}/debug/man" + "${CURRENT_PACKAGES_DIR}/debug/share") + +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/pcre2") +file(RENAME "${CURRENT_PACKAGES_DIR}/bin/pcre2-config" "${CURRENT_PACKAGES_DIR}/tools/pcre2/pcre2-config") +vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/pcre2/pcre2-config" "${CURRENT_PACKAGES_DIR}" [[$(cd "$(dirname "$0")/../.."; pwd -P)]]) +if(NOT VCPKG_BUILD_TYPE) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/pcre2/debug") + file(RENAME "${CURRENT_PACKAGES_DIR}/debug/bin/pcre2-config" "${CURRENT_PACKAGES_DIR}/tools/pcre2/debug/pcre2-config") + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/pcre2/debug/pcre2-config" "${CURRENT_PACKAGES_DIR}/debug" [[$(cd "$(dirname "$0")/../../../debug"; pwd -P)]]) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/pcre2/debug/pcre2-config" [[${prefix}/include]] [[${prefix}/../include]]) +endif() +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/bin" "${CURRENT_PACKAGES_DIR}/bin") +endif() + +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING") diff --git a/vcpkg_overlays/pcre2/usage b/vcpkg_overlays/pcre2/usage new file mode 100644 index 00000000000..1ef36ecab71 --- /dev/null +++ b/vcpkg_overlays/pcre2/usage @@ -0,0 +1,6 @@ +The package pcre2 is compatible with built-in CMake targets: + + # Each component imports a target: + # TARGETS: PCRE2::8BIT PCRE2::16BIT PCRE2::32BIT PCRE2::POSIX + find_package(pcre2 CONFIG REQUIRED) + target_link_libraries(main PRIVATE PCRE2::8BIT PCRE2::16BIT PCRE2::32BIT PCRE2::POSIX) diff --git a/vcpkg_overlays/pcre2/vcpkg.json b/vcpkg_overlays/pcre2/vcpkg.json new file mode 100644 index 00000000000..af255b21b51 --- /dev/null +++ b/vcpkg_overlays/pcre2/vcpkg.json @@ -0,0 +1,38 @@ +{ + "name": "pcre2", + "version": "10.43", + "description": "Regular Expression pattern matching using the same syntax and semantics as Perl 5.", + "homepage": "https://github.com/PCRE2Project/pcre2", + "license": "BSD-3-Clause", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "default-features": [ + "platform-default-features" + ], + "features": { + "jit": { + "description": "Enable support for Just-In-Time compiling regex matchers", + "supports": "!emscripten & !ios" + }, + "platform-default-features": { + "description": "Enable default features", + "dependencies": [ + { + "name": "pcre2", + "features": [ + "jit" + ], + "platform": "!emscripten & !ios" + } + ] + } + } +}