From e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 Apr 2024 22:34:10 +0200 Subject: Adding upstream version 4.2.2. Signed-off-by: Daniel Baumann --- cmake/modules/FindMinizip.cmake | 81 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 cmake/modules/FindMinizip.cmake (limited to 'cmake/modules/FindMinizip.cmake') diff --git a/cmake/modules/FindMinizip.cmake b/cmake/modules/FindMinizip.cmake new file mode 100644 index 00000000..b6d9c867 --- /dev/null +++ b/cmake/modules/FindMinizip.cmake @@ -0,0 +1,81 @@ +# +# - Find minizip libraries +# +# MINIZIP_INCLUDE_DIRS - where to find minizip headers. +# MINIZIP_LIBRARIES - List of libraries when using minizip. +# MINIZIP_FOUND - True if minizip is found. +# MINIZIP_DLL_DIR - (Windows) Path to the minizip DLL. +# MINIZIP_DLL - (Windows) Name of the minizip DLL. + +FindWSWinLibs( "minizip-*" "MINIZIP_HINTS" ) + +if(NOT USE_REPOSITORY) + find_package(PkgConfig QUIET) + pkg_search_module(MINIZIP QUIET minizip) +endif() + +find_path(MINIZIP_INCLUDE_DIR + NAMES + unzip.h + minizip/unzip.h + HINTS + ${MINIZIP_INCLUDE_DIRS} + "${MINIZIP_HINTS}/include" +) + +get_filename_component(MINIZIP_PARENT_DIR ${MINIZIP_INCLUDE_DIR} DIRECTORY) +if(EXISTS "${MINIZIP_PARENT_DIR}/minizip/unzip.h") + set(MINIZIP_INCLUDE_DIR "${MINIZIP_PARENT_DIR}") +endif() + +find_library(MINIZIP_LIBRARY + NAMES + minizip + HINTS + ${MINIZIP_LIBRARY_DIRS} + "${MINIZIP_HINTS}/lib" +) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Minizip + REQUIRED_VARS MINIZIP_LIBRARY MINIZIP_INCLUDE_DIR + VERSION_VAR MINIZIP_VERSION) + +if(MINIZIP_FOUND) + set(MINIZIP_LIBRARIES ${MINIZIP_LIBRARY}) + set(MINIZIP_INCLUDE_DIRS ${MINIZIP_INCLUDE_DIR}) + SET(HAVE_MINIZIP ON) + # Some distributions have minizip-ng code instead of the original zlib contrib + # library but keep the old minizip name (because minizip-ng is + # better maintained and provides a compatibility layer). However the + # minizip-ng compatibility layer has some issues. We need to check + # for renamed struct members to avoid an endless game of whack-a-mole. + include(CheckStructHasMember) + check_struct_has_member("zip_fileinfo" "dos_date" "minizip/zip.h" HAVE_MZCOMPAT_DOS_DATE) + if (WIN32) + set ( MINIZIP_DLL_DIR "${MINIZIP_HINTS}/bin" + CACHE PATH "Path to Minizip DLL" + ) + file( GLOB _minizip_dll RELATIVE "${MINIZIP_DLL_DIR}" + "${MINIZIP_DLL_DIR}/minizip.dll" + ) + set ( MINIZIP_DLL ${_minizip_dll} + CACHE FILEPATH "Minizip DLL file name" + ) + file( GLOB _minizip_pdb RELATIVE "${MINIZIP_DLL_DIR}" + "${MINIZIP_DLL_DIR}/minizip.pdb" + ) + set ( MINIZIP_PDB ${_minizip_pdb} + CACHE FILEPATH "Minizip PDB file name" + ) + mark_as_advanced( MINIZIP_DLL_DIR MINIZIP_DLL MINIZIP_PDB ) + endif() +else() + set(MINIZIP_LIBRARIES) + set(MINIZIP_INCLUDE_DIRS) + SET( MINIZIP_DLL_DIR ) + SET( MINIZIP_DLL ) +endif() + +mark_as_advanced(MINIZIP_LIBRARIES MINIZIP_INCLUDE_DIRS) + -- cgit v1.2.3