aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libzip
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/libzip')
-rw-r--r--vcpkg/ports/libzip/config-vars.diff29
-rw-r--r--vcpkg/ports/libzip/dependencies.diff35
-rw-r--r--vcpkg/ports/libzip/portfile.cmake65
-rw-r--r--vcpkg/ports/libzip/use-requires.patch79
-rw-r--r--vcpkg/ports/libzip/vcpkg.json67
5 files changed, 275 insertions, 0 deletions
diff --git a/vcpkg/ports/libzip/config-vars.diff b/vcpkg/ports/libzip/config-vars.diff
new file mode 100644
index 0000000..b18b2c8
--- /dev/null
+++ b/vcpkg/ports/libzip/config-vars.diff
@@ -0,0 +1,29 @@
+diff --git a/libzip-config.cmake.in b/libzip-config.cmake.in
+index 80615303..d3c73cc4 100644
+--- a/libzip-config.cmake.in
++++ b/libzip-config.cmake.in
+@@ -1,17 +1,17 @@
+ @PACKAGE_INIT@
+
+ # We need to supply transitive dependencies if this config is for a static library
+-set(IS_SHARED @BUILD_SHARED_LIBS@)
++set(IS_SHARED "@BUILD_SHARED_LIBS@")
+ if (NOT IS_SHARED)
+ include(CMakeFindDependencyMacro)
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_LIST_DIR}/modules")
+
+- set(ENABLE_BZIP2 @BZIP2_FOUND@)
+- set(ENABLE_LZMA @LIBLZMA_FOUND@)
+- set(ENABLE_ZSTD @ZSTD_FOUND@)
+- set(ENABLE_GNUTLS @GNUTLS_FOUND@)
+- set(ENABLE_MBEDTLS @MBEDTLS_FOUND@)
+- set(ENABLE_OPENSSL @OPENSSL_FOUND@)
++ set(ENABLE_BZIP2 "@BZIP2_FOUND@")
++ set(ENABLE_LZMA "@LIBLZMA_FOUND@")
++ set(ENABLE_ZSTD "@ZSTD_FOUND@")
++ set(ENABLE_GNUTLS "@GNUTLS_FOUND@")
++ set(ENABLE_MBEDTLS "@MBEDTLS_FOUND@")
++ set(ENABLE_OPENSSL "@OPENSSL_FOUND@")
+
+ find_dependency(ZLIB 1.1.2)
+ if(ENABLE_BZIP2)
diff --git a/vcpkg/ports/libzip/dependencies.diff b/vcpkg/ports/libzip/dependencies.diff
new file mode 100644
index 0000000..2f3ea91
--- /dev/null
+++ b/vcpkg/ports/libzip/dependencies.diff
@@ -0,0 +1,35 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b79873b0..2e787bbb 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -50,7 +50,7 @@ if(ENABLE_GNUTLS)
+ find_package(GnuTLS)
+ endif()
+ if(ENABLE_MBEDTLS)
+- find_package(MbedTLS 1.0)
++ find_package(MbedTLS CONFIG)
+ endif()
+ if(ENABLE_OPENSSL)
+ find_package(OpenSSL)
+@@ -477,8 +477,6 @@ if(LIBZIP_DO_INSTALL)
+ # Install Find* modules, they are required by libzip-config.cmake to resolve dependencies
+ install(FILES
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindNettle.cmake
+- ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Findzstd.cmake
+- ${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindMbedTLS.cmake
+ DESTINATION
+ ${CMAKE_INSTALL_LIBDIR}/cmake/libzip/modules
+ )
+diff --git a/libzip-config.cmake.in b/libzip-config.cmake.in
+index d3c73cc4..aa150916 100644
+--- a/libzip-config.cmake.in
++++ b/libzip-config.cmake.in
+@@ -31,7 +31,7 @@ if (NOT IS_SHARED)
+ find_dependency(GnuTLS)
+ endif()
+ if(ENABLE_MBEDTLS)
+- find_dependency(MbedTLS 1.0)
++ find_dependency(MbedTLS CONFIG)
+ endif()
+ if(ENABLE_OPENSSL)
+ find_dependency(OpenSSL)
diff --git a/vcpkg/ports/libzip/portfile.cmake b/vcpkg/ports/libzip/portfile.cmake
new file mode 100644
index 0000000..bd32965
--- /dev/null
+++ b/vcpkg/ports/libzip/portfile.cmake
@@ -0,0 +1,65 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO nih-at/libzip
+ REF "v${VERSION}"
+ SHA512 940a6e1145d6e0f2bd40577b4fa13f9c8e2115b267fb632dfb2443998a67d3e5de9a2026df5380c9b1b2fb181967d2f4dfd0929a9970d8bb196079a153a17bcc
+ HEAD_REF master
+ PATCHES
+ config-vars.diff # https://github.com/nih-at/libzip/pull/497
+ dependencies.diff
+ use-requires.patch
+)
+file(REMOVE "${SOURCE_PATH}/cmake/Findzstd.cmake")
+file(REMOVE "${SOURCE_PATH}/cmake/FindMbedTLS.cmake")
+
+# By default options, find_package is called and capabilities are subject to the result.
+# However, AES support backends are alternatives, and tried in order. The port shouldn't
+# offer dependendencies, but now they are here. Let opt-in features override defaults.
+if("mbedtls" IN_LIST FEATURES)
+ message(STATUS "Selecting the mbedtls AES backend.")
+ list(REMOVE_ITEM FEATURES default-aes openssl)
+elseif("openssl" IN_LIST FEATURES)
+ message(STATUS "Selecting the openssl AES backend.")
+ list(REMOVE_ITEM FEATURES default-aes)
+elseif("default-aes" IN_LIST FEATURES)
+ message(STATUS "Selecting the system AES backend.")
+endif()
+vcpkg_check_features(
+ OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ # compression
+ bzip2 VCPKG_LOCK_FIND_PACKAGE_BZip2
+ liblzma VCPKG_LOCK_FIND_PACKAGE_LibLZMA
+ zstd VCPKG_LOCK_FIND_PACKAGE_zstd
+ # AES
+ default-aes ENABLE_COMMONCRYPTO
+ default-aes ENABLE_WINDOWS_CRYPTO
+ openssl ENABLE_OPENSSL
+ openssl VCPKG_LOCK_FIND_PACKAGE_OpenSSL
+ mbedtls ENABLE_MBEDTLS
+ mbedtls VCPKG_LOCK_FIND_PACKAGE_MbedTLS
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ -DBUILD_DOC=OFF
+ -DBUILD_EXAMPLES=OFF
+ -DBUILD_REGRESS=OFF
+ -DBUILD_TOOLS=OFF
+ -DENABLE_GNUTLS=OFF
+ MAYBE_UNUSED_VARIABLES
+ VCPKG_LOCK_FIND_PACKAGE_MbedTLS
+ VCPKG_LOCK_FIND_PACKAGE_OpenSSL
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/libzip")
+vcpkg_fixup_pkgconfig()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
diff --git a/vcpkg/ports/libzip/use-requires.patch b/vcpkg/ports/libzip/use-requires.patch
new file mode 100644
index 0000000..4521e9d
--- /dev/null
+++ b/vcpkg/ports/libzip/use-requires.patch
@@ -0,0 +1,79 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2e787bbb..de4159d8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -355,6 +355,8 @@ foreach(LIB ${LIBS_PRIVATE})
+ endif()
+ set(LIBS "${LIBS} -l${LIB}")
+ endforeach()
++list(FILTER LIBS EXCLUDE REGEX "::")
++if(0)
+ STRING(CONCAT zlib_link_name "-l" ${ZLIB_LINK_LIBRARY_NAME})
+ string(REGEX REPLACE "-lBZip2::BZip2" "-lbz2" LIBS ${LIBS})
+ string(REGEX REPLACE "-lLibLZMA::LibLZMA" "-llzma" LIBS ${LIBS})
+@@ -365,6 +367,8 @@ string(REGEX REPLACE "-lOpenSSL::Crypto" "-lssl -lcrypto" LIBS ${LIBS})
+ string(REGEX REPLACE "-lZLIB::ZLIB" ${zlib_link_name} LIBS ${LIBS})
+ string(REGEX REPLACE "-lGnuTLS::GnuTLS" "-lgnutls" LIBS ${LIBS})
+ string(REGEX REPLACE "-lNettle::Nettle" "-lnettle" LIBS ${LIBS})
++endif()
++list(JOIN REQUIRES " " REQUIRES)
+ configure_file(libzip.pc.in libzip.pc @ONLY)
+ if(LIBZIP_DO_INSTALL)
+ install(FILES ${PROJECT_BINARY_DIR}/libzip.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
+index 556b82af..b1fc3b36 100644
+--- a/lib/CMakeLists.txt
++++ b/lib/CMakeLists.txt
+@@ -142,16 +142,19 @@ endif(WIN32)
+ if(HAVE_LIBBZ2)
+ target_sources(zip PRIVATE zip_algorithm_bzip2.c)
+ target_link_libraries(zip PRIVATE BZip2::BZip2)
++ list(APPEND REQUIRES bzip2)
+ endif()
+
+ if(HAVE_LIBLZMA)
+ target_sources(zip PRIVATE zip_algorithm_xz.c)
+ target_link_libraries(zip PRIVATE LibLZMA::LibLZMA)
++ list(APPEND REQUIRES liblzma)
+ endif()
+
+ if(HAVE_LIBZSTD)
+ target_sources(zip PRIVATE zip_algorithm_zstd.c)
+ target_link_libraries(zip PRIVATE ${zstd_TARGET})
++ list(APPEND REQUIRES libzstd)
+ endif()
+
+ if(HAVE_COMMONCRYPTO)
+@@ -165,9 +168,11 @@ elseif(HAVE_GNUTLS)
+ elseif(HAVE_OPENSSL)
+ target_sources(zip PRIVATE zip_crypto_openssl.c)
+ target_link_libraries(zip PRIVATE OpenSSL::Crypto)
++ list(APPEND REQUIRES openssl)
+ elseif(HAVE_MBEDTLS)
+ target_sources(zip PRIVATE zip_crypto_mbedtls.c)
+ target_link_libraries(zip PRIVATE MbedTLS::MbedTLS)
++ list(APPEND REQUIRES mbedtls)
+ endif()
+
+ if(HAVE_CRYPTO)
+@@ -180,6 +185,8 @@ if(SHARED_LIB_VERSIONNING)
+ endif()
+
+ target_link_libraries(zip PRIVATE ZLIB::ZLIB)
++list(APPEND REQUIRES zlib)
++set(REQUIRES "${REQUIRES}" PARENT_SCOPE)
+ target_include_directories(zip
+ PUBLIC
+ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/lib>
+diff --git a/libzip.pc.in b/libzip.pc.in
+index d51b0ab6..07b3b505 100644
+--- a/libzip.pc.in
++++ b/libzip.pc.in
+@@ -9,6 +9,7 @@ zipcmp=${bindir}/zipcmp
+ Name: libzip
+ Description: library for handling zip archives
+ Version: @PROJECT_VERSION@
++Requires.private: @REQUIRES@
+ Libs: @PKG_CONFIG_RPATH@ -L${libdir} -lzip
+ Libs.private: @LIBS@
+ Cflags: -I${includedir}
diff --git a/vcpkg/ports/libzip/vcpkg.json b/vcpkg/ports/libzip/vcpkg.json
new file mode 100644
index 0000000..a26a755
--- /dev/null
+++ b/vcpkg/ports/libzip/vcpkg.json
@@ -0,0 +1,67 @@
+{
+ "name": "libzip",
+ "version": "1.11.4",
+ "description": "A C library for reading, creating, and modifying zip archives.",
+ "homepage": "https://github.com/nih-at/libzip",
+ "license": "BSD-3-Clause",
+ "dependencies": [
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ "zlib"
+ ],
+ "default-features": [
+ "bzip2",
+ "default-aes"
+ ],
+ "features": {
+ "bzip2": {
+ "description": "Support bzip2-compressed zip archives",
+ "dependencies": [
+ "bzip2"
+ ]
+ },
+ "default-aes": {
+ "description": "AES (encryption) support using a default backend",
+ "dependencies": [
+ {
+ "name": "libzip",
+ "default-features": false,
+ "features": [
+ "openssl"
+ ],
+ "platform": "!(windows | osx)"
+ }
+ ]
+ },
+ "liblzma": {
+ "description": "Support XZ compressed zip archives using liblzma",
+ "dependencies": [
+ "liblzma"
+ ]
+ },
+ "mbedtls": {
+ "description": "AES (encryption) support using mbedtls",
+ "dependencies": [
+ "mbedtls"
+ ]
+ },
+ "openssl": {
+ "description": "AES (encryption) support using OpenSSL",
+ "dependencies": [
+ "openssl"
+ ]
+ },
+ "zstd": {
+ "description": "Support Zstandard-compressed zip archives",
+ "dependencies": [
+ "zstd"
+ ]
+ }
+ }
+}