diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/poco/portfile.cmake | |
Diffstat (limited to 'vcpkg/ports/poco/portfile.cmake')
| -rw-r--r-- | vcpkg/ports/poco/portfile.cmake | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/vcpkg/ports/poco/portfile.cmake b/vcpkg/ports/poco/portfile.cmake new file mode 100644 index 0000000..0ad3dd3 --- /dev/null +++ b/vcpkg/ports/poco/portfile.cmake @@ -0,0 +1,152 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO pocoproject/poco + REF "poco-${VERSION}-release" + SHA512 e192818a5f731ec6f6bddf062573d7bedfd15754157f145882c2c9d9bce497b92cf23f639f989d9e5605cb83029c4f303752cab655b525b5a5b5e5b704714725 + HEAD_REF devel + PATCHES + # Fix embedded copy of pcre in static linking mode + 0001-static-pcre.patch + # Add the support of arm64-windows + 0002-arm64-pcre.patch + 0003-fix-dependency.patch + 0004-fix-feature-sqlite3.patch + 0005-fix-error-c3861.patch + 0007-find-pcre2.patch + # MSYS2 repo was used as a source. Thanks MSYS2 team: https://github.com/msys2/MINGW-packages/blob/6e7fba42b7f50e1111b7c0ef50048832243b0ac4/mingw-w64-poco/001-fix-build-on-mingw.patch + 0008-fix-mingw-compilation.patch + # Should be removed once https://github.com/pocoproject/poco/issues/4947 is resolved + 0009-fix-zip-to-xml-dependency.patch +) + +file(REMOVE "${SOURCE_PATH}/Foundation/src/pcre2.h") +file(REMOVE "${SOURCE_PATH}/cmake/V39/FindEXPAT.cmake") +file(REMOVE "${SOURCE_PATH}/cmake/V313/FindSQLite3.cmake") +# vcpkg's PCRE2 does not provide a FindPCRE2, and the bundled one seems to work fine +# file(REMOVE "${SOURCE_PATH}/cmake/FindPCRE2.cmake") +file(REMOVE "${SOURCE_PATH}/XML/src/expat_config.h") +file(REMOVE "${SOURCE_PATH}/cmake/FindMySQL.cmake") + +# define Poco linkage type +string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" POCO_MT) + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + crypto ENABLE_CRYPTO + netssl ENABLE_NETSSL + pdf ENABLE_PDF + postgresql ENABLE_DATA_POSTGRESQL + encodings ENABLE_ENCODINGS + encodings-compiler ENABLE_ENCODINGS_COMPILER + xml ENABLE_XML + json ENABLE_JSON + mongodb ENABLE_MONGODB + redis ENABLE_REDIS + prometheus ENABLE_PROMETHEUS + util ENABLE_UTIL + net ENABLE_NET + zip ENABLE_ZIP + pocodoc ENABLE_POCODOC + pagecompiler ENABLE_PAGECOMPILER + pagecompiler-file2page ENABLE_PAGECOMPILER_FILE2PAGE + jwt ENABLE_JWT + data ENABLE_DATA + sqlite ENABLE_DATA_SQLITE + odbc ENABLE_DATA_ODBC + activerecord ENABLE_ACTIVERECORD + activerecord-compiler ENABLE_ACTIVERECORD_COMPILER + sevenzip ENABLE_SEVENZIP + cpp-parser ENABLE_CPPPARSER +) + +# POCO_ENABLE_NETSSL_WIN: +# Use the unreleased NetSSL_Win module instead of (OpenSSL) NetSSL. +# This is a variable which can be set in the triplet file. +if(POCO_ENABLE_NETSSL_WIN) + string(REPLACE "ENABLE_NETSSL" "ENABLE_NETSSL_WIN" FEATURE_OPTIONS "${FEATURE_OPTIONS}") + list(APPEND FEATURE_OPTIONS "-DENABLE_NETSSL:BOOL=OFF") +endif() + +if ("mysql" IN_LIST FEATURES OR "mariadb" IN_LIST FEATURES) + set(POCO_USE_MYSQL ON) +else() + set(POCO_USE_MYSQL OFF) +endif() + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + ${FEATURE_OPTIONS} + # force to use dependencies as external + -DPOCO_UNBUNDLED=ON + # Define linking feature + -DPOCO_MT=${POCO_MT} + -DENABLE_TESTS=OFF + -DENABLE_SAMPLES=OFF + # Allow enabling and disabling components done via features + -DPOCO_DISABLE_INTERNAL_OPENSSL=ON + -DENABLE_APACHECONNECTOR=OFF + -DENABLE_DATA_MYSQL=${POCO_USE_MYSQL} + MAYBE_UNUSED_VARIABLES # these are only used when if(MSVC) + POCO_DISABLE_INTERNAL_OPENSSL + POCO_MT +) + +vcpkg_cmake_install() + +vcpkg_copy_pdbs() + +# Move apps to the tools folder +set(tools) +if (ENABLE_PAGECOMPILER) + list(APPEND tools "cpspc") +endif() +if (ENABLE_PAGECOMPILER_FILE2PAGE) + list(APPEND tools "f2cpsp") +endif() +if (ENABLE_POCODOC) + list(APPEND tools "PocoDoc") +endif() +if (ENABLE_ENCODINGS_COMPILER) + list(APPEND tools "tec") +endif() +if (ENABLE_ACTIVERECORD_COMPILER) + list(APPEND tools "poco-arc") +endif() +if (tools) + vcpkg_copy_tools(TOOL_NAMES ${tools} AUTO_CLEAN) +endif() + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") +endif() + +# Copy additional include files not part of any libraries +if(EXISTS "${CURRENT_PACKAGES_DIR}/include/Poco/SQL") + file(COPY "${SOURCE_PATH}/Data/include" DESTINATION "${CURRENT_PACKAGES_DIR}") +endif() +if(EXISTS "${CURRENT_PACKAGES_DIR}/include/Poco/SQL/MySQL") + file(COPY "${SOURCE_PATH}/Data/MySQL/include" DESTINATION "${CURRENT_PACKAGES_DIR}") +endif() +if(EXISTS "${CURRENT_PACKAGES_DIR}/include/Poco/SQL/ODBC") + file(COPY "${SOURCE_PATH}/Data/ODBC/include" DESTINATION "${CURRENT_PACKAGES_DIR}") +endif() +if(EXISTS "${CURRENT_PACKAGES_DIR}/include/Poco/SQL/PostgreSQL") + file(COPY "${SOURCE_PATH}/Data/PostgreSQL/include" DESTINATION "${CURRENT_PACKAGES_DIR}") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/libpq") +endif() +if(EXISTS "${CURRENT_PACKAGES_DIR}/include/Poco/SQL/SQLite") + file(COPY "${SOURCE_PATH}/Data/SQLite/include" DESTINATION "${CURRENT_PACKAGES_DIR}") +endif() + +if(VCPKG_TARGET_IS_WINDOWS) + vcpkg_cmake_config_fixup(CONFIG_PATH cmake) +else() + vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/Poco) +endif() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") + +file(COPY "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") |