@@ -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+ zlibstatic
315+ PRIVATE
316+ -fvisibility=hidden
317+ )
318+ endif ()
319+
301320 target_compile_options (
302- zlib
321+ zlibstatic
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,19 @@ endif()
329365 ${BZIP2_SOURCES} /bzlib.c
330366 )
331367
368+ if (UNIX )
369+ target_compile_options (
370+ bz2
371+ PRIVATE
372+ -fvisibility=hidden
373+ ${LZS_C_FLAGS}
374+ )
375+ endif ()
376+
332377 target_compile_options (
333378 bz2
334379 PRIVATE
335380 ${LZS_C_FLAGS}
336- -fvisibility=hidden
337381 )
338382
339383 configure_file ("${CMAKE_SOURCE_DIR} /data/bzip2.pc.in" "${CMAKE_BINARY_DIR} /bzip2.pc" )
@@ -371,6 +415,11 @@ else()
371415
372416 list (PREPEND CMAKE_PREFIX_PATH "${ARTIFACTS_ROOT_DIR} " )
373417
418+ if (WIN32 )
419+ # If we don't rename the library, it won't be detected by libzip's cmake
420+ file (RENAME ${ARTIFACTS_ROOT_DIR} /lib/zstd_static.lib ${ARTIFACTS_ROOT_DIR} /lib/zstd.lib)
421+ endif ()
422+
374423 add_subdirectory (external/libzip)
375424
376425 target_compile_options (
@@ -381,6 +430,8 @@ else()
381430
382431 if (UNIX )
383432 set (ZIP_EXTERN "-DZIP_EXTERN=__attribute__((visibility(\" default\" )))" )
433+ set (ZSTD_EXTERN "-DZSTDLIB_VISIBILITY=__attribute__((visibility(\" hidden\" )))" )
434+ set (ZLIB_EXTERN "-DZEXTERN=__attribute__((visibility(\" hidden\" )))" )
384435 target_compile_options (
385436 zip
386437 PRIVATE
@@ -393,6 +444,8 @@ else()
393444 zip
394445 PRIVATE
395446 "${ZIP_EXTERN} "
447+ "${ZSTD_EXTERN} "
448+ "${ZLIB_EXTERN} "
396449 )
397450
398451 if (APPLE )
@@ -422,6 +475,7 @@ else()
422475 else ()
423476 message (STATUS "LZMA: DISABLED" )
424477 endif ()
478+ message (STATUS "ZSTD: ${Zstd_INCLUDE_DIR} " )
425479 message (STATUS "ZLIB: ${ZLIB_INCLUDE_DIR} " )
426480 message (STATUS "BZ2: ${BZIP2_INCLUDE_DIR} " )
427481
@@ -430,6 +484,7 @@ else()
430484 PRIVATE
431485 ${ZLIB_INCLUDE_DIR}
432486 ${BZIP2_INCLUDE_DIR}
487+ ${Zstd_INCLUDE_DIR}
433488 ${CMAKE_BINARY_DIR} /external/libzip
434489 )
435490
@@ -506,13 +561,15 @@ else()
506561
507562 set (ZLIB_PATH "${CMAKE_BINARY_DIR} /libz-fat.a" )
508563 set (BZ2_PATH "${CMAKE_BINARY_DIR} /libbz2-fat.a" )
564+ set (ZSTD_PATH "${CMAKE_BINARY_DIR} /libzstd-fat.a" )
509565
510566 if (ENABLE_XZ)
511567 set (LZMA_PATH "${CMAKE_BINARY_DIR} /liblzma-fat.a" )
512568 endif ()
513569
514570 make_fat_archive("${ARTIFACTS_ROOT_DIR} /lib/libz.a" "${ARTIFACTS_OTHER_ROOT_DIR} /lib/libz.a" "${ZLIB_PATH} " )
515571 make_fat_archive("${ARTIFACTS_ROOT_DIR} /lib/libbz2.a" "${ARTIFACTS_OTHER_ROOT_DIR} /lib/libbz2.a" "${BZ2_PATH} " )
572+ make_fat_archive("${ARTIFACTS_ROOT_DIR} /lib/libzstd.a" "${ARTIFACTS_OTHER_ROOT_DIR} /lib/libzstd.a" "${ZSTD_PATH} " )
516573
517574 if (ENABLE_XZ)
518575 make_fat_archive("${ARTIFACTS_ROOT_DIR} /lib/liblzma.a" "${ARTIFACTS_OTHER_ROOT_DIR} /lib/liblzma.a" "${LZMA_PATH} " )
@@ -521,6 +578,7 @@ else()
521578 set (LIBS
522579 ${ZLIB_PATH}
523580 ${BZ2_PATH}
581+ ${ZSTD_PATH}
524582 )
525583
526584 if (ENABLE_XZ)
@@ -537,6 +595,7 @@ else()
537595 set (LIBS
538596 ${ARTIFACTS_ROOT_DIR} /lib/${ZLIB_NAME}
539597 ${ARTIFACTS_ROOT_DIR} /lib/bz2.lib
598+ ${ARTIFACTS_ROOT_DIR} /lib/zstd.lib
540599 )
541600
542601 if (ENABLE_XZ)
@@ -546,6 +605,7 @@ else()
546605 set (LIBS
547606 ${ARTIFACTS_ROOT_DIR} /lib/libz.a
548607 ${ARTIFACTS_ROOT_DIR} /lib/libbz2.a
608+ ${ARTIFACTS_ROOT_DIR} /lib/libzstd.a
549609 )
550610
551611 if (ENABLE_XZ)
0 commit comments