@@ -46,11 +46,21 @@ set(ENABLE_GNUTLS OFF CACHE BOOL "Do not use gnutls for libzip" FORCE)
4646set (ENABLE_OPENSSL OFF CACHE BOOL "Do not use OpenSSL for libzip" FORCE)
4747set (ENABLE_MBEDTLS OFF CACHE BOOL "Do not use mbedtls for libzip" FORCE)
4848set (ENABLE_WINDOWS_CRYPTO OFF CACHE BOOL "Do not use Windows Crypto" FORCE)
49+ set (ENABLE_ZSTD ON CACHE BOOL "Use zstd in libzip" FORCE)
4950
5051if (NOT ENABLE_XZ)
5152 set (ENABLE_LZMA OFF CACHE BOOL "Do not use XZ for libzip" FORCE)
5253endif ()
5354
55+ #
56+ # zstd
57+ #
58+ set (ZSTD_MULTITHREAD_SUPPORT OFF CACHE BOOL "Do not build zstd with multi-thread support" FORCE)
59+ set (ZSTD_BUILD_STATIC ON CACHE BOOL "Build static zstd" FORCE)
60+ set (ZSTD_BUILD_SHARED OFF CACHE BOOL "Do not build shared zstd" FORCE)
61+ set (ZSTD_BUILD_PROGRAMS OFF CACHE BOOL "Do not build zstd programs" FORCE)
62+ set (ZSTD_BUILD_TESTS OFF CACHE BOOL "Do not build zstd tests" FORCE)
63+
5464#
5565# zlib-ng
5666#
@@ -298,11 +308,20 @@ if(BUILD_DEPENDENCIES)
298308 add_subdirectory (external/zlib)
299309 endif ()
300310
311+ if (UNIX )
312+ set (ZLIB_EXTERN "-DZEXTERN=__attribute__((visibility(\" hidden\" )))" )
313+ target_compile_options (
314+ zlib
315+ PRIVATE
316+ -fvisibility=hidden
317+ )
318+ endif ()
319+
301320 target_compile_options (
302321 zlib
303322 PRIVATE
304323 ${LZS_C_FLAGS}
305- -fvisibility=hidden
324+ " ${ZLIB_EXTERN} "
306325 )
307326
308327if (NOT WIN32 AND ENABLE_XZ)
@@ -316,6 +335,23 @@ if(NOT WIN32 AND ENABLE_XZ)
316335 )
317336endif ()
318337
338+ add_subdirectory (external/zstd/build /cmake)
339+ if (UNIX )
340+ set (ZSTD_EXTERN "-DZSTDLIB_VISIBILITY=__attribute__((visibility(\" hidden\" )))" )
341+ target_compile_options (
342+ libzstd_static
343+ PRIVATE
344+ -fvisibility=hidden
345+ )
346+ endif ()
347+
348+ target_compile_options (
349+ libzstd_static
350+ PRIVATE
351+ ${LZS_C_FLAGS}
352+ "${ZSTD_EXTERN} "
353+ )
354+
319355 set (BZIP2_SOURCES external/bzip2)
320356 add_library (
321357 bz2
@@ -329,11 +365,18 @@ endif()
329365 ${BZIP2_SOURCES} /bzlib.c
330366 )
331367
368+ if (UNIX )
369+ target_compile_options (
370+ bz2
371+ PRIVATE
372+ ${LZS_C_FLAGS}
373+ )
374+ endif ()
375+
332376 target_compile_options (
333377 bz2
334378 PRIVATE
335379 ${LZS_C_FLAGS}
336- -fvisibility=hidden
337380 )
338381
339382 configure_file ("${CMAKE_SOURCE_DIR} /data/bzip2.pc.in" "${CMAKE_BINARY_DIR} /bzip2.pc" )
@@ -371,6 +414,11 @@ else()
371414
372415 list (PREPEND CMAKE_PREFIX_PATH "${ARTIFACTS_ROOT_DIR} " )
373416
417+ if (WIN32 )
418+ # If we don't rename the library, it won't be detected by libzip's cmake
419+ file (RENAME ${ARTIFACTS_ROOT_DIR} /lib/zstd_static.lib ${ARTIFACTS_ROOT_DIR} /lib/zstd.lib)
420+ endif ()
421+
374422 add_subdirectory (external/libzip)
375423
376424 target_compile_options (
@@ -381,6 +429,8 @@ else()
381429
382430 if (UNIX )
383431 set (ZIP_EXTERN "-DZIP_EXTERN=__attribute__((visibility(\" default\" )))" )
432+ set (ZSTD_EXTERN "-DZSTDLIB_VISIBILITY=__attribute__((visibility(\" hidden\" )))" )
433+ set (ZLIB_EXTERN "-DZEXTERN=__attribute__((visibility(\" hidden\" )))" )
384434 target_compile_options (
385435 zip
386436 PRIVATE
@@ -393,6 +443,8 @@ else()
393443 zip
394444 PRIVATE
395445 "${ZIP_EXTERN} "
446+ "${ZSTD_EXTERN} "
447+ "${ZLIB_EXTERN} "
396448 )
397449
398450 if (APPLE )
@@ -422,6 +474,7 @@ else()
422474 else ()
423475 message (STATUS "LZMA: DISABLED" )
424476 endif ()
477+ message (STATUS "ZSTD: ${Zstd_INCLUDE_DIR} " )
425478 message (STATUS "ZLIB: ${ZLIB_INCLUDE_DIR} " )
426479 message (STATUS "BZ2: ${BZIP2_INCLUDE_DIR} " )
427480
@@ -430,6 +483,7 @@ else()
430483 PRIVATE
431484 ${ZLIB_INCLUDE_DIR}
432485 ${BZIP2_INCLUDE_DIR}
486+ ${Zstd_INCLUDE_DIR}
433487 ${CMAKE_BINARY_DIR} /external/libzip
434488 )
435489
@@ -506,13 +560,15 @@ else()
506560
507561 set (ZLIB_PATH "${CMAKE_BINARY_DIR} /libz-fat.a" )
508562 set (BZ2_PATH "${CMAKE_BINARY_DIR} /libbz2-fat.a" )
563+ set (ZSTD_PATH "${CMAKE_BINARY_DIR} /libzstd-fat.a" )
509564
510565 if (ENABLE_XZ)
511566 set (LZMA_PATH "${CMAKE_BINARY_DIR} /liblzma-fat.a" )
512567 endif ()
513568
514569 make_fat_archive("${ARTIFACTS_ROOT_DIR} /lib/libz.a" "${ARTIFACTS_OTHER_ROOT_DIR} /lib/libz.a" "${ZLIB_PATH} " )
515570 make_fat_archive("${ARTIFACTS_ROOT_DIR} /lib/libbz2.a" "${ARTIFACTS_OTHER_ROOT_DIR} /lib/libbz2.a" "${BZ2_PATH} " )
571+ make_fat_archive("${ARTIFACTS_ROOT_DIR} /lib/libzstd.a" "${ARTIFACTS_OTHER_ROOT_DIR} /lib/libzstd.a" "${ZSTD_PATH} " )
516572
517573 if (ENABLE_XZ)
518574 make_fat_archive("${ARTIFACTS_ROOT_DIR} /lib/liblzma.a" "${ARTIFACTS_OTHER_ROOT_DIR} /lib/liblzma.a" "${LZMA_PATH} " )
@@ -521,6 +577,7 @@ else()
521577 set (LIBS
522578 ${ZLIB_PATH}
523579 ${BZ2_PATH}
580+ ${ZSTD_PATH}
524581 )
525582
526583 if (ENABLE_XZ)
@@ -537,6 +594,7 @@ else()
537594 set (LIBS
538595 ${ARTIFACTS_ROOT_DIR} /lib/${ZLIB_NAME}
539596 ${ARTIFACTS_ROOT_DIR} /lib/bz2.lib
597+ ${ARTIFACTS_ROOT_DIR} /lib/zstd.lib
540598 )
541599
542600 if (ENABLE_XZ)
@@ -546,6 +604,7 @@ else()
546604 set (LIBS
547605 ${ARTIFACTS_ROOT_DIR} /lib/libz.a
548606 ${ARTIFACTS_ROOT_DIR} /lib/libbz2.a
607+ ${ARTIFACTS_ROOT_DIR} /lib/libzstd.a
549608 )
550609
551610 if (ENABLE_XZ)
0 commit comments