mirror of
https://github.com/jmcnamara/libxlsxwriter
synced 2025-03-28 21:13:14 +00:00

Fix Cmake minizip version check that had an incorrect regex and resulted in the package not being found. Issue #405
122 lines
2.8 KiB
CMake
122 lines
2.8 KiB
CMake
# :copyright: (c) 2017 Alex Huszagh.
|
|
# :license: FreeBSD, see LICENSE.txt for more details.
|
|
|
|
# FindMINIZIP
|
|
# -----------
|
|
#
|
|
# Find MINIZIP include dirs and libraries
|
|
#
|
|
# Use this module by invoking find_package with the form::
|
|
#
|
|
# find_package(MINIZIP
|
|
# [version] [EXACT] # Minimum or EXACT version e.g. 1.0.6
|
|
# [REQUIRED] # Fail with error if MINIZIP is not found
|
|
# )
|
|
#
|
|
# You may also set `MINIZIP_USE_STATIC_LIBS` to prefer static libraries
|
|
# to shared ones.
|
|
#
|
|
# If found, `MINIZIP_FOUND` will be set to true, and `MINIZIP_LIBRARIES`
|
|
# and `MINIZIP_INCLUDE_DIRS` will both be set.
|
|
#
|
|
# You may optionally set `MINIZIP_ROOT` to specify a custom root directory
|
|
# for the MINIZIP installation.
|
|
#
|
|
|
|
include(CheckCXXSourceCompiles)
|
|
include(FindPackage)
|
|
|
|
# PATHS
|
|
# -----
|
|
|
|
set(MINIZIP_SEARCH_PATHS)
|
|
|
|
if(MINIZIP_ROOT)
|
|
list(APPEND MINIZIP_SEARCH_PATHS ${MINIZIP_ROOT})
|
|
endif()
|
|
|
|
if(WIN32)
|
|
list(APPEND ZLIB_SEARCH_PATHS
|
|
"$ENV{PROGRAMFILES}/minizip"
|
|
)
|
|
endif()
|
|
|
|
unset(MINIZIP_SYSTEM_ROOT)
|
|
unset(MINIZIP_CUSTOM_ROOT)
|
|
unset(MINIZIP_SEARCH_HKEY)
|
|
|
|
# FIND
|
|
# ----
|
|
|
|
# INCLUDE DIRECTORY
|
|
SetSuffixes(MINIZIP)
|
|
foreach(search ${MINIZIP_SEARCH_PATHS})
|
|
FIND_PATH(MINIZIP_INCLUDE_DIR
|
|
NAMES minizip/zip.h
|
|
PATHS ${search}
|
|
PATH_SUFFIXES include
|
|
)
|
|
endforeach(search)
|
|
|
|
if(NOT MINIZIP_INCLUDE_DIR)
|
|
FIND_PATH(MINIZIP_INCLUDE_DIR minizip/zip.h PATH_SUFFIXES include)
|
|
endif()
|
|
|
|
# LIBRARY PATHS
|
|
set(MINIZIP_LIBRARY_NAMES minizip)
|
|
if(CMAKE_BUILD_TYPE MATCHES Debug)
|
|
list(APPEND MINIZIP_LIBRARY_NAMES minizipd)
|
|
endif()
|
|
|
|
foreach(search ${MINIZIP_SEARCH_PATHS})
|
|
FIND_LIBRARY(MINIZIP_LIBRARY
|
|
NAMES ${MINIZIP_LIBRARY_NAMES}
|
|
PATHS ${search}
|
|
PATH_SUFFIXES lib
|
|
)
|
|
endforeach(search)
|
|
|
|
if(NOT MINIZIP_LIBRARY)
|
|
FIND_LIBRARY(MINIZIP_LIBRARY NAMES ${MINIZIP_LIBRARY_NAMES} PATH_SUFFIXES lib)
|
|
endif()
|
|
|
|
set(MINIZIP_INCLUDE_DIRS ${MINIZIP_INCLUDE_DIR})
|
|
set(MINIZIP_LIBRARIES ${MINIZIP_LIBRARY})
|
|
|
|
CheckFound(MINIZIP)
|
|
FindStaticLibs(MINIZIP)
|
|
|
|
# VERSION
|
|
# -------
|
|
|
|
if(MINIZIP_FOUND)
|
|
file(STRINGS "${MINIZIP_INCLUDE_DIRS}/zlib.h" MINIZIP_VERSION_CONTENTS REGEX "version [0-9]+\\.[0-9]+(\\.[0-9]+)?")
|
|
string(REGEX REPLACE ".*version ([0-9]+)\\.[0-9]+" "\\1" MINIZIP_VERSION_MAJOR "${MINIZIP_VERSION_CONTENTS}")
|
|
string(REGEX REPLACE ".*version [0-9]+\\.([0-9]+)" "\\1" MINIZIP_VERSION_MINOR "${MINIZIP_VERSION_CONTENTS}")
|
|
set(MINIZIP_VERSION_PATCH 0)
|
|
|
|
set(MINIZIP_VERSION_STRING "${MINIZIP_VERSION_MAJOR}.${MINIZIP_VERSION_MINOR}.${MINIZIP_VERSION_PATCH}")
|
|
set(MINIZIP_VERSION ${MINIZIP_VERSION_STRING})
|
|
|
|
MatchVersion(MINIZIP)
|
|
endif()
|
|
|
|
# COMPILATION
|
|
# -----------
|
|
|
|
set(MINIZIP_CODE "
|
|
#include <minizip/zip.h>
|
|
int main(void)
|
|
{
|
|
zip_fileinfo zipfile_info;
|
|
|
|
return 0;
|
|
}
|
|
"
|
|
)
|
|
|
|
if(MINIZIP_FOUND)
|
|
CheckCompiles(MINIZIP)
|
|
endif()
|
|
RequiredPackageFound(MINIZIP)
|