aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/minizip
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/minizip
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/minizip')
-rw-r--r--vcpkg/ports/minizip/0001-remove-ifndef-NOUNCRYPT.patch29
-rw-r--r--vcpkg/ports/minizip/0002-add-declaration-for-mkdir.patch29
-rw-r--r--vcpkg/ports/minizip/CMakeLists.txt111
-rw-r--r--vcpkg/ports/minizip/android-fileapi.patch17
-rw-r--r--vcpkg/ports/minizip/lib-to-def.cmake40
-rw-r--r--vcpkg/ports/minizip/minizip-win32.def78
-rw-r--r--vcpkg/ports/minizip/minizipConfig.cmake.in10
-rw-r--r--vcpkg/ports/minizip/pkgconfig.patch11
-rw-r--r--vcpkg/ports/minizip/portfile.cmake74
-rw-r--r--vcpkg/ports/minizip/unofficial-minizipConfig.cmake.in10
-rw-r--r--vcpkg/ports/minizip/usage4
-rw-r--r--vcpkg/ports/minizip/vcpkg.json35
12 files changed, 448 insertions, 0 deletions
diff --git a/vcpkg/ports/minizip/0001-remove-ifndef-NOUNCRYPT.patch b/vcpkg/ports/minizip/0001-remove-ifndef-NOUNCRYPT.patch
new file mode 100644
index 0000000..d9c051d
--- /dev/null
+++ b/vcpkg/ports/minizip/0001-remove-ifndef-NOUNCRYPT.patch
@@ -0,0 +1,29 @@
+From a6fd3992d44053a523a67aa16f5ae88fecfb20e1 Mon Sep 17 00:00:00 2001
+From: Nicole Mazzuca <mazzucan@outlook.com>
+Date: Tue, 22 Sep 2020 14:09:53 -0700
+Subject: [PATCH 1/2] remove `#ifndef NOUNCRYPT`
+
+enable decrypt support for password-encrypted ZIP files
+
+---
+ contrib/minizip/unzip.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/contrib/minizip/unzip.c b/contrib/minizip/unzip.c
+index bcfb941..1895a0f 100644
+--- a/contrib/minizip/unzip.c
++++ b/contrib/minizip/unzip.c
+@@ -68,10 +68,6 @@
+ #include <stdlib.h>
+ #include <string.h>
+
+-#ifndef NOUNCRYPT
+- #define NOUNCRYPT
+-#endif
+-
+ #include "zlib.h"
+ #include "unzip.h"
+
+--
+2.24.3 (Apple Git-128)
+
diff --git a/vcpkg/ports/minizip/0002-add-declaration-for-mkdir.patch b/vcpkg/ports/minizip/0002-add-declaration-for-mkdir.patch
new file mode 100644
index 0000000..8786a84
--- /dev/null
+++ b/vcpkg/ports/minizip/0002-add-declaration-for-mkdir.patch
@@ -0,0 +1,29 @@
+From 6c38b6f544b55f9fc554f0fe22e2cbaddfaed7f8 Mon Sep 17 00:00:00 2001
+From: Nicole Mazzuca <mazzucan@outlook.com>
+Date: Tue, 22 Sep 2020 14:15:04 -0700
+Subject: [PATCH 2/2] add declaration for mkdir
+
+It's invalid in C99 to implicitly declare mkdir
+
+---
+ contrib/minizip/miniunz.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/contrib/minizip/miniunz.c b/contrib/minizip/miniunz.c
+index 3d65401..5341af2 100644
+--- a/contrib/minizip/miniunz.c
++++ b/contrib/minizip/miniunz.c
+@@ -12,6 +12,10 @@
+ Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
+ */
+
++#if !defined(_WIN32)
++#include <sys/stat.h>
++#endif
++
+ #if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__))
+ #ifndef __USE_FILE_OFFSET64
+ #define __USE_FILE_OFFSET64
+--
+2.24.3 (Apple Git-128)
+
diff --git a/vcpkg/ports/minizip/CMakeLists.txt b/vcpkg/ports/minizip/CMakeLists.txt
new file mode 100644
index 0000000..db79e72
--- /dev/null
+++ b/vcpkg/ports/minizip/CMakeLists.txt
@@ -0,0 +1,111 @@
+cmake_minimum_required(VERSION 3.25)
+project(minizip LANGUAGES C)
+
+if(MSVC)
+ add_compile_options(/W3 /wd4005 /wd4996 /wd4018 -D_CRT_SECURE_NO_WARNINGS)
+endif()
+
+set(SRC
+ ioapi.c
+ unzip.c
+ zip.c
+ mztools.c
+)
+set(HEADERS
+ crypt.h
+ ioapi.h
+ unzip.h
+ zip.h
+ mztools.h
+)
+if(WIN32)
+ list(APPEND SRC iowin32.c minizip-win32.def)
+ list(APPEND HEADERS iowin32.h)
+endif()
+
+add_library(minizip ${SRC})
+target_include_directories(minizip PUBLIC $<INSTALL_INTERFACE:include/minizip>)
+
+find_package(ZLIB REQUIRED)
+target_compile_definitions(minizip PRIVATE -D_ZLIB_H)
+target_link_libraries(minizip PUBLIC ZLIB::ZLIB)
+set(MINIZIP_REQUIRES zlib)
+
+if(ENABLE_BZIP2)
+ message(STATUS "Building with bzip2 support")
+ find_package(BZip2 REQUIRED)
+ target_compile_definitions(minizip PRIVATE -DHAVE_BZIP2=1)
+ target_link_libraries(minizip PUBLIC BZip2::BZip2)
+ list(APPEND MINIZIP_REQUIRES bzip2)
+else()
+ message(STATUS "Building without bzip2 support")
+endif()
+
+if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+ target_compile_definitions(minizip PRIVATE -DIOWIN32_USING_WINRT_API)
+endif()
+
+if(NOT DISABLE_INSTALL_TOOLS)
+ add_executable(minizip_bin minizip.c)
+ add_executable(miniunz_bin miniunz.c)
+
+ target_link_libraries(minizip_bin minizip)
+ target_link_libraries(miniunz_bin minizip)
+
+ set_target_properties(minizip_bin PROPERTIES OUTPUT_NAME minizip)
+ set_target_properties(miniunz_bin PROPERTIES OUTPUT_NAME miniunz)
+
+ install (
+ TARGETS minizip_bin miniunz_bin
+ RUNTIME DESTINATION bin
+ )
+endif()
+
+install(
+ TARGETS minizip
+ EXPORT unofficial-minizipTargets
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+)
+
+include(CMakePackageConfigHelpers)
+write_basic_package_version_file("${PROJECT_BINARY_DIR}/unofficial-minizipConfigVersion.cmake"
+ VERSION "${PACKAGE_VERSION}"
+ COMPATIBILITY SameMajorVersion
+)
+
+configure_package_config_file(unofficial-minizipConfig.cmake.in
+ unofficial-minizipConfig.cmake
+ INSTALL_DESTINATION share/unofficial-minizip
+)
+
+install(FILES
+ "${PROJECT_BINARY_DIR}/unofficial-minizipConfig.cmake"
+ "${PROJECT_BINARY_DIR}/unofficial-minizipConfigVersion.cmake"
+ DESTINATION share/unofficial-minizip
+)
+
+install(EXPORT unofficial-minizipTargets
+ NAMESPACE unofficial::minizip::
+ DESTINATION share/unofficial-minizip
+)
+
+if(NOT DISABLE_INSTALL_HEADERS)
+ install(FILES ${HEADERS} DESTINATION include/minizip)
+endif()
+
+list(JOIN MINIZIP_REQUIRES " " MINIZIP_REQUIRES)
+set(exec_prefix "\${prefix}")
+set(libdir "\${prefix}/lib")
+set(includedir "\${prefix}/include")
+configure_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/minizip.pc.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/minizip.pc"
+ @ONLY
+)
+install(
+ FILES "${CMAKE_CURRENT_BINARY_DIR}/minizip.pc"
+ DESTINATION lib/pkgconfig
+)
+
diff --git a/vcpkg/ports/minizip/android-fileapi.patch b/vcpkg/ports/minizip/android-fileapi.patch
new file mode 100644
index 0000000..36171d0
--- /dev/null
+++ b/vcpkg/ports/minizip/android-fileapi.patch
@@ -0,0 +1,17 @@
+diff --git a/contrib/minizip/ioapi.h b/contrib/minizip/ioapi.h
+index c588a18..b5395e2 100644
+--- a/contrib/minizip/ioapi.h
++++ b/contrib/minizip/ioapi.h
+@@ -21,6 +21,12 @@
+ #ifndef _ZLIBIOAPI64_H
+ #define _ZLIBIOAPI64_H
+
++#if defined(__ANDROID_API__) && __ANDROID_API__ < 24
++ // Cf. https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md#32_bit-and
++ // stdio functions for off_t are incomplete.
++ #define USE_FILE32API
++#endif
++
+ #if (!defined(_WIN32)) && (!defined(WIN32)) && (!defined(__APPLE__))
+
+ // Linux needs this to support file operation on files larger then 4+GB
diff --git a/vcpkg/ports/minizip/lib-to-def.cmake b/vcpkg/ports/minizip/lib-to-def.cmake
new file mode 100644
index 0000000..f603702
--- /dev/null
+++ b/vcpkg/ports/minizip/lib-to-def.cmake
@@ -0,0 +1,40 @@
+function(lib_to_def)
+ if(NOT VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_MINGW OR NOT VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ return()
+ endif()
+
+ cmake_parse_arguments(PARSE_ARGV 0 arg "" "BASENAME;REGEX" "")
+ if(NOT arg_BASENAME)
+ message(FATAL_ERROR "BASENAME is a required argument.")
+ endif()
+ if(NOT arg_REGEX)
+ set(arg_REGEX "[^ ]+")
+ endif()
+
+ set(logfile "${CURRENT_BUILDTREES_DIR}/dumpbin-${arg_BASENAME}-${TARGET_TRIPLET}-symbols.log")
+ vcpkg_execute_required_process(
+ COMMAND dumpbin /symbols "/OUT:${logfile}" "${CURRENT_PACKAGES_DIR}/lib/${arg_BASENAME}.lib"
+ WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
+ LOGNAME "dumpbin-${arg_BASENAME}-${TARGET_TRIPLET}"
+ )
+ file(STRINGS "${logfile}" symbols REGEX "^... ........ SECT.. notype .. External [|] ${arg_REGEX}")
+ list(TRANSFORM symbols REPLACE "^[^|]+[|] " " ")
+ if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
+ string(REPLACE " _" " " symbols "${symbols}")
+ endif()
+ list(JOIN symbols "\n" symbols)
+ set(symbols "EXPORTS\n${symbols}\n")
+ set(def_file "${CMAKE_CURRENT_LIST_DIR}/${arg_BASENAME}-${VCPKG_TARGET_ARCHITECTURE}.def")
+ if(NOT EXISTS "${def_file}")
+ set(def_file "${CMAKE_CURRENT_LIST_DIR}/${arg_BASENAME}-win32.def")
+ endif()
+ if(EXISTS "${def_file}")
+ file(READ "${def_file}" original_symbols)
+ else()
+ set(original_symbols "")
+ endif()
+ if(NOT symbols STREQUAL original_symbols)
+ file(WRITE "${CURRENT_BUILDTREES_DIR}/${arg_BASENAME}-${VCPKG_TARGET_ARCHITECTURE}.def.log" "${symbols}")
+ message(SEND_ERROR "${arg_BASENAME}-${VCPKG_TARGET_ARCHITECTURE}.def has changed.")
+ endif()
+endfunction()
diff --git a/vcpkg/ports/minizip/minizip-win32.def b/vcpkg/ports/minizip/minizip-win32.def
new file mode 100644
index 0000000..2f10819
--- /dev/null
+++ b/vcpkg/ports/minizip/minizip-win32.def
@@ -0,0 +1,78 @@
+EXPORTS
+ fill_win32_filefunc
+ fill_win32_filefunc64
+ fill_win32_filefunc64A
+ fill_win32_filefunc64W
+ win32_open64_file_func
+ win32_open64_file_funcA
+ win32_open64_file_funcW
+ win32_open_file_func
+ win32_read_file_func
+ win32_write_file_func
+ win32_tell_file_func
+ win32_tell64_file_func
+ win32_seek_file_func
+ win32_seek64_file_func
+ win32_close_file_func
+ win32_error_file_func
+ unzRepair
+ zip_copyright
+ zipOpen
+ zipOpen64
+ zipOpen2
+ zipOpen2_64
+ zipOpen3
+ zipOpenNewFileInZip
+ zipOpenNewFileInZip64
+ zipOpenNewFileInZip2
+ zipOpenNewFileInZip2_64
+ zipOpenNewFileInZip3
+ zipOpenNewFileInZip3_64
+ zipOpenNewFileInZip4
+ zipOpenNewFileInZip4_64
+ zipWriteInFileInZip
+ zipCloseFileInZip
+ zipCloseFileInZipRaw
+ zipCloseFileInZipRaw64
+ zipClose
+ zipRemoveExtraInfoBlock
+ unz_copyright
+ unzStringFileNameCompare
+ unzOpen
+ unzOpen64
+ unzOpen2
+ unzOpen2_64
+ unzClose
+ unzGetGlobalInfo
+ unzGetGlobalInfo64
+ unzGetGlobalComment
+ unzGoToFirstFile
+ unzGoToNextFile
+ unzLocateFile
+ unzGetFilePos
+ unzGoToFilePos
+ unzGetFilePos64
+ unzGoToFilePos64
+ unzGetCurrentFileInfo64
+ unzGetCurrentFileInfo
+ unzGetCurrentFileZStreamPos64
+ unzOpenCurrentFile
+ unzOpenCurrentFilePassword
+ unzOpenCurrentFile2
+ unzOpenCurrentFile3
+ unzCloseCurrentFile
+ unzReadCurrentFile
+ unztell
+ unztell64
+ unzeof
+ unzGetLocalExtrafield
+ unzGetOffset64
+ unzGetOffset
+ unzSetOffset64
+ unzSetOffset
+ fill_fopen64_filefunc
+ fill_fopen_filefunc
+ call_zopen64
+ call_zseek64
+ call_ztell64
+ fill_zlib_filefunc64_32_def_from_filefunc32
diff --git a/vcpkg/ports/minizip/minizipConfig.cmake.in b/vcpkg/ports/minizip/minizipConfig.cmake.in
new file mode 100644
index 0000000..4527b18
--- /dev/null
+++ b/vcpkg/ports/minizip/minizipConfig.cmake.in
@@ -0,0 +1,10 @@
+message(WARNING "'find_package(minizip CONFIG)' is deprecated. Please use 'find_package(unofficial-minizip CONFIG)' instead.")
+
+include(CMakeFindDependencyMacro)
+find_dependency(unofficial-minizip ${${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION} CONFIG)
+if(NOT TARGET unofficial::minizip::minizip)
+ set(${CMAKE_FIND_PACKAGE_NAME}_FOUND FALSE)
+elseif(NOT TARGET minizip::minizip)
+ add_library(minizip::minizip INTERFACE IMPORTED)
+ set_target_properties(minizip::minizip PROPERTIES INTERFACE_LINK_LIBRARIES unofficial::minizip::minizip)
+endif()
diff --git a/vcpkg/ports/minizip/pkgconfig.patch b/vcpkg/ports/minizip/pkgconfig.patch
new file mode 100644
index 0000000..107f9fc
--- /dev/null
+++ b/vcpkg/ports/minizip/pkgconfig.patch
@@ -0,0 +1,11 @@
+diff --git a/contrib/minizip/minizip.pc.in b/contrib/minizip/minizip.pc.in
+index 69b5b7f..9e43084 100644
+--- a/contrib/minizip/minizip.pc.in
++++ b/contrib/minizip/minizip.pc.in
+@@ -8,5 +8,5 @@ Description: Minizip zip file manipulation library
+ Requires:
+ Version: @PACKAGE_VERSION@
+ Libs: -L${libdir} -lminizip
+-Libs.private: -lz
++Requires.private: @MINIZIP_REQUIRES@
+ Cflags: -I${includedir}
diff --git a/vcpkg/ports/minizip/portfile.cmake b/vcpkg/ports/minizip/portfile.cmake
new file mode 100644
index 0000000..8c4a79f
--- /dev/null
+++ b/vcpkg/ports/minizip/portfile.cmake
@@ -0,0 +1,74 @@
+# When zlib updated, the minizip port should be updated at the same time
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO madler/zlib
+ REF "v${VERSION}"
+ SHA512 8c9642495bafd6fad4ab9fb67f09b268c69ff9af0f4f20cf15dfc18852ff1f312bd8ca41de761b3f8d8e90e77d79f2ccacd3d4c5b19e475ecf09d021fdfe9088
+ HEAD_REF master
+ PATCHES
+ 0001-remove-ifndef-NOUNCRYPT.patch
+ 0002-add-declaration-for-mkdir.patch
+ pkgconfig.patch
+ android-fileapi.patch
+)
+
+# Maintainer switch: Temporarily set this to 1 to re-generate the lists
+# of exported symbols. This is needed when the version is bumped.
+set(GENERATE_SYMBOLS 0)
+if(GENERATE_SYMBOLS)
+ vcpkg_cmake_get_vars(cmake_vars_file)
+ include("${cmake_vars_file}")
+ if(VCPKG_DETECTED_CMAKE_C_COMPILER_ID STREQUAL "MSVC")
+ vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+ else()
+ set(GENERATE_SYMBOLS 0)
+ endif()
+endif()
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ bzip2 ENABLE_BZIP2
+ INVERTED_FEATURES
+ tools DISABLE_INSTALL_TOOLS
+)
+
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt"
+ "${CMAKE_CURRENT_LIST_DIR}/minizip-win32.def"
+ "${CMAKE_CURRENT_LIST_DIR}/unofficial-minizipConfig.cmake.in"
+ DESTINATION "${SOURCE_PATH}/contrib/minizip"
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}/contrib/minizip"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ -DPACKAGE_VERSION=${VERSION}
+ OPTIONS_DEBUG
+ -DDISABLE_INSTALL_HEADERS=ON
+ -DDISABLE_INSTALL_TOOLS=ON
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-minizip)
+vcpkg_fixup_pkgconfig()
+
+if("tools" IN_LIST FEATURES)
+ vcpkg_copy_tools(TOOL_NAMES minizip miniunz AUTO_CLEAN)
+endif()
+
+if ("bzip2" IN_LIST FEATURES)
+ file(GLOB HEADERS "${CURRENT_PACKAGES_DIR}/include/minizip/*.h")
+ foreach(HEADER ${HEADERS})
+ vcpkg_replace_string("${HEADER}" "#ifdef HAVE_BZIP2" "#if 1" IGNORE_UNCHANGED)
+ endforeach()
+endif()
+
+configure_file("${CMAKE_CURRENT_LIST_DIR}/minizipConfig.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/minizipConfig.cmake" @ONLY)
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/contrib/minizip/MiniZip64_info.txt")
+
+if(GENERATE_SYMBOLS)
+ include("${CMAKE_CURRENT_LIST_DIR}/lib-to-def.cmake")
+ lib_to_def(BASENAME minizip REGEX "(call|fill|unz|win32|zip)")
+endif()
diff --git a/vcpkg/ports/minizip/unofficial-minizipConfig.cmake.in b/vcpkg/ports/minizip/unofficial-minizipConfig.cmake.in
new file mode 100644
index 0000000..f2afcbb
--- /dev/null
+++ b/vcpkg/ports/minizip/unofficial-minizipConfig.cmake.in
@@ -0,0 +1,10 @@
+@PACKAGE_INIT@
+
+include(CMakeFindDependencyMacro)
+find_dependency(ZLIB)
+if ("@ENABLE_BZIP2@")
+ find_dependency(BZip2)
+endif()
+
+include("${CMAKE_CURRENT_LIST_DIR}/unofficial-minizipTargets.cmake")
+check_required_components(unofficial-minizip)
diff --git a/vcpkg/ports/minizip/usage b/vcpkg/ports/minizip/usage
new file mode 100644
index 0000000..6113742
--- /dev/null
+++ b/vcpkg/ports/minizip/usage
@@ -0,0 +1,4 @@
+minizip provides CMake targets:
+
+ find_package(unofficial-minizip CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE unofficial::minizip::minizip)
diff --git a/vcpkg/ports/minizip/vcpkg.json b/vcpkg/ports/minizip/vcpkg.json
new file mode 100644
index 0000000..1466a32
--- /dev/null
+++ b/vcpkg/ports/minizip/vcpkg.json
@@ -0,0 +1,35 @@
+{
+ "name": "minizip",
+ "version": "1.3.1",
+ "port-version": 1,
+ "description": "Minizip zip file manipulation library",
+ "homepage": "https://github.com/madler/zlib",
+ "license": "Zlib",
+ "dependencies": [
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-get-vars",
+ "host": true
+ },
+ "zlib"
+ ],
+ "features": {
+ "bzip2": {
+ "description": "Support compression using bzip2 library",
+ "dependencies": [
+ "bzip2"
+ ]
+ },
+ "tools": {
+ "description": "Install tools",
+ "supports": "!ios"
+ }
+ }
+}