summaryrefslogtreecommitdiff
path: root/compat/zlib/contrib/minizip/CMakeLists.txt
diff options
context:
space:
mode:
authorcashmere <cashmere@autistici.org>2026-09-04 09:05:24 +0200
committercashmere <cashmere@autistici.org>2026-09-04 09:05:24 +0200
commit4f49b16079b27d7ce633619e4cddfdf2bffbc952 (patch)
treec296c1e7f3c3e2f6859c6d3a1b1b208779b89679 /compat/zlib/contrib/minizip/CMakeLists.txt
downloadrelic-4f49b16079b27d7ce633619e4cddfdf2bffbc952.tar.gz
initial commitHEADmaster
Diffstat (limited to 'compat/zlib/contrib/minizip/CMakeLists.txt')
-rw-r--r--compat/zlib/contrib/minizip/CMakeLists.txt387
1 files changed, 387 insertions, 0 deletions
diff --git a/compat/zlib/contrib/minizip/CMakeLists.txt b/compat/zlib/contrib/minizip/CMakeLists.txt
new file mode 100644
index 0000000..80ccf99
--- /dev/null
+++ b/compat/zlib/contrib/minizip/CMakeLists.txt
@@ -0,0 +1,387 @@
+cmake_minimum_required(VERSION 3.12...3.31)
+
+project(
+ minizip
+ VERSION 1.0.0
+ LANGUAGES C
+ DESCRIPTION "A library for creating zipfiles based in zlib"
+ HOMEPAGE_URL "https://www.winimage.com/zLibDll/minizip.html")
+
+if(CMAKE_SIZEOF_VOID_P LESS 8 AND NOT MINGW)
+ message(WARNING "libminizip needs 64bit - stopping here")
+ return()
+endif(CMAKE_SIZEOF_VOID_P LESS 8 AND NOT MINGW)
+
+# ============================================================================
+# CPack
+# ============================================================================
+set(CPACK_PACKAGE_VENDOR "zlib-Project")
+set(CPACK_PACKAGE_DESCRIPTION_FILE ${minizip_SOURCE_DIR}/MiniZip64_info.txt)
+set(CPACK_RESOURCE_FILE_LICENSE ${minizip_SOURCE_DIR}/../../LICENSE)
+set(CPACK_RESOURCE_FILE_README ${minizip_SOURCE_DIR}/MiniZip64_info.txt)
+
+# ============================================================================
+# set options if build from zlib
+# ============================================================================
+if(ZLIB_BUILD_MINIZIP)
+ set(MINIZIP_BUILD_SHARED ${ZLIB_MINIZIP_BUILD_SHARED} CACHE BOOL "")
+ set(MINIZIP_BUILD_STATIC ${ZLIB_MINIZIP_BUILD_STATIC} CACHE BOOL "")
+ set(MINIZIP_BUILD_TESTING ${ZLIB_MINIZIP_INSTALL} CACHE BOOL "")
+ set(MINIZIP_INSTALL ${ZLIB_MINIZIP_INSTALL} CACHE BOOL "")
+endif(ZLIB_BUILD_MINIZIP)
+
+# ============================================================================
+# configuration
+# ============================================================================
+option(MINIZIP_BUILD_SHARED "Enable building minizip shared library" ON)
+option(MINIZIP_BUILD_STATIC "Enable building minizip static library" ON)
+option(MINIZIP_BUILD_TESTING "Enable testing of minizip" ON)
+option(MINIZIP_ENABLE_BZIP2 "Build minizip with bzip2 support" OFF)
+option(MINIZIP_INSTALL "Enable installation of minizip" ON)
+
+include(CheckCSourceCompiles)
+include(CheckFunctionExists)
+include(CheckIncludeFile)
+include(CMakePackageConfigHelpers)
+include(CheckTypeSize)
+include(GNUInstallDirs)
+
+if(NOT CPACK_INCLUDED)
+ include(CPack)
+endif(NOT CPACK_INCLUDED)
+
+if(NOT DEFINED ZLIB_BUILD_MINIZIP)
+ if(MINIZIP_BUILD_SHARED)
+ list(APPEND REQUIRED_COMPONENTS "shared")
+ endif(MINIZIP_BUILD_SHARED)
+
+ if(MINIZIP_BUILD_STATIC)
+ list(APPEND REQUIRED_COMPONENTS "static")
+ endif(MINIZIP_BUILD_STATIC)
+
+ find_package(ZLIB REQUIRED COMPONENTS ${REQUIRED_COMPONENTS} CONFIG)
+endif(NOT DEFINED ZLIB_BUILD_MINIZIP)
+
+if(MINIZIP_ENABLE_BZIP2)
+ find_package(BZip2 REQUIRED)
+endif(MINIZIP_ENABLE_BZIP2)
+
+#
+# Check for fopen64
+#
+check_function_exists(fopen64 HAVE_FOPEN64)
+
+#
+# Check for fseeko
+#
+check_function_exists(fseeko HAVE_FSEEKO)
+
+#
+# Check for unistd.h
+#
+check_include_file(unistd.h HAVE_UNISTD_H)
+
+#
+# Check to see if we have large file support
+#
+set(CMAKE_REQUIRED_DEFINITIONS -D_LARGEFILE64_SOURCE=1)
+check_type_size(off64_t OFF64_T)
+unset(CMAKE_REQUIRED_DEFINITIONS) # clear variable
+
+#
+# Check visibility attribute is supported
+#
+if(MSVC)
+ set(CMAKE_REQUIRED_FLAGS "-WX")
+else(MSVC)
+ set(CMAKE_REQUIRED_FLAGS "-WError")
+endif(MSVC)
+
+check_c_source_compiles(
+ "
+ #include <stdlib.h>
+ static void f(void) __attribute__ ((visibility(\"hidden\")));
+ int main(void) {return 0;}
+ "
+ HAVE___ATTR__VIS_HIDDEN)
+
+unset(CMAKE_REQUIRED_FLAGS)
+
+set(LIBMINIZIP_SRCS ioapi.c mztools.c unzip.c zip.c)
+
+set(LIBMINIZIP_HDRS crypt.h ints.h ioapi.h mztools.h unzip.h zip.h)
+
+set(MINIZIP_SRCS ioapi.c $<$<BOOL:${WIN32}>:iowin32.c> minizip.c zip.c)
+
+set(MINIZIP_HDRS crypt.h ints.h ioapi.h $<$<BOOL:${WIN32}>:iowin32.h> skipset.h
+ zip.h)
+
+set(MINIUNZIP_SRCS ioapi.c $<$<BOOL:${WIN32}>:iowin32.c> miniunz.c unzip.c
+ zip.c)
+
+set(MINIUNZIP_HDRS
+ crypt.h
+ ints.h
+ ioapi.h
+ $<$<BOOL:${WIN32}>:iowin32.h>
+ skipset.h
+ unzip.h
+ zip.h)
+
+if(WIN32 OR CYGWIN)
+ set(minizip_static_suffix "s")
+ set(CMAKE_DEBUG_POSTFIX "d")
+endif(WIN32 OR CYGWIN)
+
+if(MINIZIP_BUILD_SHARED)
+ set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
+ add_library(libminizip SHARED ${LIBMINIZIP_SRCS} ${LIBMINIZIP_HDRS})
+ add_library(MINIZIP::minizip ALIAS libminizip)
+ target_include_directories(
+ libminizip PUBLIC $<BUILD_INTERFACE:${minizip_SOURCE_DIR}>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
+ target_compile_definitions(
+ libminizip
+ PRIVATE $<$<BOOL:${MSVC}>:_CRT_SECURE_NO_WARNINGS>
+ $<$<BOOL:${HAVE___ATTR__VIS_HIDDEN}>:HAVE_HIDDEN>
+ $<$<BOOL:${HAVE_UNISTD_H}>:HAVE_UNISTD_H=1>
+ PUBLIC $<$<BOOL:${HAVE_OFF64_T}>:_LARGEFILE64_SOURCE=1>
+ $<$<BOOL:${BZIP2_FOUND}>:HAVE_BZIP2=1>
+ $<$<BOOL:NOT:${HAVE_FOPEN64}>:USE_FILE32API=1>)
+
+ if(NOT CYGWIN)
+ set_target_properties(libminizip PROPERTIES SOVERSION
+ ${minizip_VERSION_MAJOR})
+ endif(NOT CYGWIN)
+
+ set_target_properties(
+ libminizip
+ PROPERTIES EXPORT_NAME minizip
+ OUTPUT_NAME minizip
+ VERSION ${minizip_VERSION}
+ SOVERSION ${minizip_VERSION_MAJOR})
+
+ target_link_libraries(libminizip
+ PUBLIC ZLIB::ZLIB
+ $<$<BOOL:${BZIP2_FOUND}>:BZip2::BZip2>)
+
+ add_executable(minizip ${MINIZIP_SRCS} ${MINIZIP_HDRS})
+ set_target_properties(minizip PROPERTIES EXPORT_NAME minizip_executable)
+ target_compile_definitions(
+ minizip PRIVATE $<$<BOOL:${MSVC}>:_CRT_SECURE_NO_WARNINGS>)
+ target_link_libraries(minizip PRIVATE MINIZIP::minizip)
+ add_executable(miniunzip ${MINIUNZIP_SRCS} ${MINIUNZIP_HDRS})
+ set_target_properties(miniunzip PROPERTIES EXPORT_NAME miniunzip_executable)
+ target_compile_definitions(
+ miniunzip PRIVATE $<$<BOOL:${MSVC}>:_CRT_SECURE_NO_WARNINGS>)
+ target_link_libraries(miniunzip PRIVATE MINIZIP::minizip)
+endif(MINIZIP_BUILD_SHARED)
+
+if(MINIZIP_BUILD_STATIC)
+ add_library(libminizipstatic STATIC ${LIBMINIZIP_SRCS} ${LIBMINIZIP_HDRS})
+ add_library(MINIZIP::minizipstatic ALIAS libminizipstatic)
+ target_include_directories(
+ libminizipstatic
+ PUBLIC $<BUILD_INTERFACE:${minizip_SOURCE_DIR}>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
+ target_compile_definitions(
+ libminizipstatic
+ PRIVATE $<$<BOOL:${MSVC}>:_CRT_SECURE_NO_WARNINGS>
+ $<$<BOOL:${HAVE___ATTR__VIS_HIDDEN}>:HAVE_HIDDEN>
+ $<$<BOOL:${HAVE_UNISTD_H}>:HAVE_UNISTD_H=1>
+ PUBLIC $<$<BOOL:${HAVE_OFF64_T}>:_LARGEFILE64_SOURCE=1>
+ $<$<BOOL:${BZIP2_FOUND}>:HAVE_BZIP2=1>
+ $<$<BOOL:NOT:${HAVE_FOPEN64}>:USE_FILE32API=1>)
+ set_target_properties(
+ libminizipstatic PROPERTIES EXPORT_NAME minizipstatic
+ OUTPUT_NAME minizip${minizip_static_suffix})
+
+ if(CYGWIN)
+ set_target_properties(libminizipstatic PROPERTIES SUFFIX ".dll.a")
+ endif(CYGWIN)
+
+ target_link_libraries(libminizipstatic PUBLIC ZLIB::ZLIBSTATIC
+ $<$<BOOL:${BZIP2_FOUND}>:BZip2::BZip2>)
+
+ add_executable(minizipstatic ${MINIZIP_SRCS} ${MINIZIP_HDRS})
+ set_target_properties(minizipstatic PROPERTIES EXPORT_NAME
+ minizip_static_executable)
+ target_compile_definitions(
+ minizipstatic PRIVATE $<$<BOOL:${MSVC}>:_CRT_SECURE_NO_WARNINGS>)
+ target_link_libraries(minizipstatic PRIVATE MINIZIP::minizipstatic)
+ add_executable(miniunzipstatic ${MINIUNZIP_SRCS} ${MINIUNZIP_HDRS})
+ set_target_properties(miniunzipstatic
+ PROPERTIES EXPORT_NAME miniunzip_static_executable)
+ target_compile_definitions(
+ miniunzipstatic PRIVATE $<$<BOOL:${MSVC}>:_CRT_SECURE_NO_WARNINGS>)
+ target_link_libraries(miniunzipstatic PRIVATE MINIZIP::minizipstatic)
+endif(MINIZIP_BUILD_STATIC)
+
+if(MINIZIP_INSTALL)
+ if(MINIZIP_BUILD_SHARED)
+ install(
+ TARGETS libminizip minizip miniunzip
+ COMPONENT Runtime
+ EXPORT minizipSharedExport
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+ install(
+ EXPORT minizipSharedExport
+ FILE minizip-shared.cmake
+ NAMESPACE MINIZIP::
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/minizip)
+
+ if(MSVC)
+ install(
+ FILES $<TARGET_PDB_FILE:libminizip>
+ COMPONENT Runtime
+ DESTINATION ${CMAKE_INSTALL_BINDIR}
+ CONFIGURATIONS Debug OR RelWithDebInfo
+ OPTIONAL)
+ endif(MSVC)
+ endif(MINIZIP_BUILD_SHARED)
+
+ if(MINIZIP_BUILD_STATIC)
+ install(
+ TARGETS libminizipstatic
+ COMPONENT Development
+ TARGETS minizipstatic miniunzipstatic
+ COMPONENT Runtime
+ EXPORT minizipStaticExport
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+ install(
+ EXPORT minizipStaticExport
+ FILE minizip-static.cmake
+ NAMESPACE MINIZIP::
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/minizip)
+ endif(MINIZIP_BUILD_STATIC)
+
+ configure_package_config_file(
+ ${minizip_SOURCE_DIR}/minizipConfig.cmake.in
+ ${minizip_BINARY_DIR}/minizipConfig.cmake
+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/minizip)
+ write_basic_package_version_file(
+ "${minizip_BINARY_DIR}/minizipConfigVersion.cmake"
+ VERSION "${minizip_VERSION}"
+ COMPATIBILITY AnyNewerVersion)
+ install(FILES ${minizip_BINARY_DIR}/minizipConfig.cmake
+ ${minizip_BINARY_DIR}/minizipConfigVersion.cmake
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/minizip)
+ install(
+ FILES ${LIBMINIZIP_HDRS}
+ COMPONENT Development
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
+endif(MINIZIP_INSTALL)
+
+if(MINIZIP_BUILD_TESTING)
+ enable_testing()
+
+ if(MINIZIP_BUILD_SHARED AND NOT ${CMAKE_SHARED_LIBRARY_SUFFIX} STREQUAL
+ ".dll")
+ add_test(
+ NAME minizip_prepare_shared_zip
+ COMMAND ${CMAKE_COMMAND} -DCREATE_SHARED=ON -P
+ ${CMAKE_CURRENT_SOURCE_DIR}/test/test_helper.cm
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test)
+ add_test(
+ NAME minizip_zipping_test_file_shared
+ COMMAND minizip test_file_shared.zip test_file_shared.txt
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test)
+ add_test(
+ NAME minizip_prepare_shared_unzip
+ COMMAND ${CMAKE_COMMAND} -DMOVE_SHARED=ON -P
+ ${CMAKE_CURRENT_SOURCE_DIR}/test/test_helper.cm
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test)
+ add_test(
+ NAME minizip_miniunzipping_test_file_shared.zip
+ COMMAND miniunzip test_file_shared.zip
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test)
+ add_test(
+ NAME minizip_compare_shared
+ COMMAND ${CMAKE_COMMAND} -E compare_files test_file_shared.txt
+ test_file_shared.orig
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test)
+ add_test(
+ NAME minizip_clean_shared_zip
+ COMMAND ${CMAKE_COMMAND} -DDELETE_SHARED=ON -P
+ ${CMAKE_CURRENT_SOURCE_DIR}/test/test_helper.cm
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test)
+ set_tests_properties(minizip_prepare_shared_zip
+ PROPERTIES FIXTURES_SETUP prepare_shared)
+ set_tests_properties(
+ minizip_zipping_test_file_shared
+ PROPERTIES FIXTURES_REQUIRED prepare_shared FIXTURES_SETUP
+ zip_shared)
+ set_tests_properties(
+ minizip_prepare_shared_unzip
+ PROPERTIES FIXTURES_REQUIRED zip_shared FIXTURES_SETUP
+ prepare_unzip_shared)
+ set_tests_properties(
+ minizip_miniunzipping_test_file_shared.zip
+ PROPERTIES FIXTURES_REQUIRED prepare_unzip_shared FIXTURES_SETUP
+ prepare_compare_shared)
+ set_tests_properties(
+ minizip_compare_shared
+ PROPERTIES FIXTURES_REQUIRED prepare_compare_shared FIXTURES_SETUP
+ compared_shared)
+ set_tests_properties(minizip_clean_shared_zip
+ PROPERTIES FIXTURES_CLEANUP compared_shared)
+ endif(MINIZIP_BUILD_SHARED AND NOT ${CMAKE_SHARED_LIBRARY_SUFFIX} STREQUAL
+ ".dll")
+
+ if(MINIZIP_BUILD_STATIC)
+ add_test(
+ NAME minizip_prepare_static_zip
+ COMMAND ${CMAKE_COMMAND} -DCREATE_STATIC=ON -P
+ ${CMAKE_CURRENT_SOURCE_DIR}/test/test_helper.cm
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test)
+ add_test(
+ NAME minizip_zipping_test_file_static
+ COMMAND minizipstatic test_file_static.zip test_file_static.txt
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test)
+ add_test(
+ NAME minizip_prepare_static_unzip
+ COMMAND ${CMAKE_COMMAND} -DMOVE_STATIC=ON -P
+ ${CMAKE_CURRENT_SOURCE_DIR}/test/test_helper.cm
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test)
+ add_test(
+ NAME minizip_miniunzipping_test_file_static.zip
+ COMMAND miniunzipstatic test_file_static.zip
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test)
+ add_test(
+ NAME minizip_compare_static
+ COMMAND ${CMAKE_COMMAND} -E compare_files test_file_static.txt
+ test_file_static.orig
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test)
+ add_test(
+ NAME minizip_clean_static_zip
+ COMMAND ${CMAKE_COMMAND} -DDELETE_STATIC=ON -P
+ ${CMAKE_CURRENT_SOURCE_DIR}/test/test_helper.cm
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/test)
+ set_tests_properties(minizip_prepare_static_zip
+ PROPERTIES FIXTURES_SETUP prepare_static)
+ set_tests_properties(
+ minizip_zipping_test_file_static
+ PROPERTIES FIXTURES_REQUIRED prepare_static FIXTURES_SETUP
+ zip_static)
+ set_tests_properties(
+ minizip_prepare_static_unzip
+ PROPERTIES FIXTURES_REQUIRED zip_static FIXTURES_SETUP
+ prepare_unzip_static)
+ set_tests_properties(
+ minizip_miniunzipping_test_file_static.zip
+ PROPERTIES FIXTURES_REQUIRED prepare_unzip_static FIXTURES_SETUP
+ prepare_compare_static)
+ set_tests_properties(
+ minizip_compare_static
+ PROPERTIES FIXTURES_REQUIRED prepare_compare_static FIXTURES_SETUP
+ compared_static)
+ set_tests_properties(minizip_clean_static_zip
+ PROPERTIES FIXTURES_CLEANUP compared_static)
+ endif(MINIZIP_BUILD_STATIC)
+
+ add_subdirectory(test)
+endif(MINIZIP_BUILD_TESTING)