mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-30 19:42:00 +00:00
169 lines
4.4 KiB
CMake
169 lines
4.4 KiB
CMake
option(ENABLE_MINIZIP "Enable minizip-ng the zip manipulation library" ${ENABLE_LIBRARIES})
|
|
if (NOT ENABLE_MINIZIP)
|
|
message (STATUS "Not using minizip-ng")
|
|
return()
|
|
endif()
|
|
|
|
set(_MINIZIP_SOURCE_DIR "${ClickHouse_SOURCE_DIR}/contrib/minizip-ng")
|
|
|
|
# Initial source files
|
|
set(MINIZIP_SRC
|
|
${_MINIZIP_SOURCE_DIR}/mz_crypt.c
|
|
${_MINIZIP_SOURCE_DIR}/mz_os.c
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm.c
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_buf.c
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_mem.c
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_split.c
|
|
${_MINIZIP_SOURCE_DIR}/mz_zip.c
|
|
${_MINIZIP_SOURCE_DIR}/mz_zip_rw.c)
|
|
|
|
# Initial header files
|
|
set(MINIZIP_HDR
|
|
${_MINIZIP_SOURCE_DIR}/mz.h
|
|
${_MINIZIP_SOURCE_DIR}/mz_os.h
|
|
${_MINIZIP_SOURCE_DIR}/mz_crypt.h
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm.h
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_buf.h
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_mem.h
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_split.h
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_os.h
|
|
${_MINIZIP_SOURCE_DIR}/mz_zip.h
|
|
${_MINIZIP_SOURCE_DIR}/mz_zip_rw.h)
|
|
|
|
set(MINIZIP_INC ${_MINIZIP_SOURCE_DIR})
|
|
|
|
set(MINIZIP_DEF)
|
|
set(MINIZIP_PUBLIC_DEF)
|
|
set(MINIZIP_LIB)
|
|
|
|
# Check if zlib is present
|
|
set(MZ_ZLIB ON)
|
|
if(MZ_ZLIB)
|
|
# Use zlib from ClickHouse contrib
|
|
list(APPEND MINIZIP_LIB ch_contrib::zlib)
|
|
|
|
list(APPEND MINIZIP_SRC
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_zlib.c)
|
|
|
|
list(APPEND MINIZIP_HDR
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_zlib.h)
|
|
|
|
list(APPEND MINIZIP_DEF "-DHAVE_ZLIB")
|
|
endif()
|
|
|
|
# Check if bzip2 is present
|
|
set(MZ_BZIP2 ${ENABLE_BZIP2})
|
|
if(MZ_BZIP2)
|
|
# Use bzip2 from ClickHouse contrib
|
|
list(APPEND MINIZIP_LIB ch_contrib::bzip2)
|
|
|
|
list(APPEND MINIZIP_SRC
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_bzip.c)
|
|
|
|
list(APPEND MINIZIP_HDR
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_bzip.h)
|
|
|
|
list(APPEND MINIZIP_DEF "-DHAVE_BZIP2")
|
|
endif()
|
|
|
|
# Check if liblzma is present
|
|
set(MZ_LZMA ON)
|
|
if(MZ_LZMA)
|
|
# Use liblzma from ClickHouse contrib
|
|
list(APPEND MINIZIP_LIB ch_contrib::xz)
|
|
|
|
list(APPEND MINIZIP_SRC
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_lzma.c)
|
|
|
|
list(APPEND MINIZIP_HDR
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_lzma.h)
|
|
|
|
list(APPEND MINIZIP_DEF "-DHAVE_LZMA")
|
|
endif()
|
|
|
|
# Check if zstd is present
|
|
set(MZ_ZSTD ON)
|
|
if(MZ_ZSTD)
|
|
# Use zstd from ClickHouse contrib
|
|
list(APPEND MINIZIP_LIB ch_contrib::zstd)
|
|
|
|
list(APPEND MINIZIP_SRC
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_zstd.c)
|
|
|
|
list(APPEND MINIZIP_HDR
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_zstd.h)
|
|
|
|
list(APPEND MINIZIP_DEF "-DHAVE_ZSTD")
|
|
endif()
|
|
|
|
if(NOT MZ_ZLIB AND NOT MZ_ZSTD AND NOT MZ_BZIP2 AND NOT MZ_LZMA)
|
|
message(STATUS "Compression not supported due to missing libraries")
|
|
|
|
list(APPEND MINIZIP_DEF -DMZ_ZIP_NO_DECOMPRESSION)
|
|
list(APPEND MINIZIP_DEF -DMZ_ZIP_NO_COMPRESSION)
|
|
endif()
|
|
|
|
# Check to see if openssl installation is present
|
|
set(MZ_OPENSSL ${ENABLE_SSL})
|
|
if(MZ_OPENSSL)
|
|
# Use openssl from ClickHouse contrib
|
|
list(APPEND MINIZIP_LIB OpenSSL::SSL OpenSSL::Crypto)
|
|
|
|
list(APPEND MINIZIP_SRC
|
|
${_MINIZIP_SOURCE_DIR}/mz_crypt_openssl.c)
|
|
endif()
|
|
|
|
# Include WinZIP AES encryption
|
|
set(MZ_WZAES ${ENABLE_SSL})
|
|
if(MZ_WZAES)
|
|
list(APPEND MINIZIP_DEF -DHAVE_WZAES)
|
|
|
|
list(APPEND MINIZIP_SRC
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_wzaes.c)
|
|
|
|
list(APPEND MINIZIP_HDR
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_wzaes.h)
|
|
endif()
|
|
|
|
# Include traditional PKWare encryption
|
|
set(MZ_PKCRYPT ON)
|
|
if(MZ_PKCRYPT)
|
|
list(APPEND MINIZIP_DEF -DHAVE_PKCRYPT)
|
|
|
|
list(APPEND MINIZIP_SRC
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_pkcrypt.c)
|
|
|
|
list(APPEND MINIZIP_HDR
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_pkcrypt.h)
|
|
endif()
|
|
|
|
# Unix specific
|
|
if(UNIX)
|
|
list(APPEND MINIZIP_SRC
|
|
${_MINIZIP_SOURCE_DIR}/mz_os_posix.c
|
|
${_MINIZIP_SOURCE_DIR}/mz_strm_os_posix.c)
|
|
endif()
|
|
|
|
# Include compatibility layer
|
|
set(MZ_COMPAT ON)
|
|
if(MZ_COMPAT)
|
|
list(APPEND MINIZIP_SRC
|
|
${_MINIZIP_SOURCE_DIR}/mz_compat.c)
|
|
|
|
list(APPEND MINIZIP_HDR
|
|
${_MINIZIP_SOURCE_DIR}/mz_compat.h
|
|
zip.h
|
|
unzip.h)
|
|
|
|
list(APPEND MINIZIP_INC "${CMAKE_CURRENT_SOURCE_DIR}")
|
|
list(APPEND MINIZIP_PUBLIC_DEF "-DMZ_COMPAT_VERSION=110")
|
|
endif()
|
|
|
|
add_library(_minizip ${MINIZIP_SRC} ${MINIZIP_HDR})
|
|
target_include_directories(_minizip PUBLIC ${MINIZIP_INC})
|
|
target_compile_definitions(_minizip PUBLIC ${MINIZIP_PUBLIC_DEF})
|
|
target_compile_definitions(_minizip PRIVATE ${MINIZIP_DEF})
|
|
target_link_libraries(_minizip PRIVATE ${MINIZIP_LIB})
|
|
|
|
add_library(ch_contrib::minizip ALIAS _minizip)
|