diff options
Diffstat (limited to 'vcpkg/ports/libzip')
| -rw-r--r-- | vcpkg/ports/libzip/config-vars.diff | 29 | ||||
| -rw-r--r-- | vcpkg/ports/libzip/dependencies.diff | 35 | ||||
| -rw-r--r-- | vcpkg/ports/libzip/portfile.cmake | 65 | ||||
| -rw-r--r-- | vcpkg/ports/libzip/use-requires.patch | 79 | ||||
| -rw-r--r-- | vcpkg/ports/libzip/vcpkg.json | 67 |
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" + ] + } + } +} |