@@ -579,14 +579,38 @@ add_subdirectory(${FLB_PATH_LIB_MINIZ} EXCLUDE_FROM_ALL)
579579
580580# Zstd (zstd)
581581if (FLB_PREFER_SYSTEM_LIB_ZSTD)
582- find_package (PkgConfig)
583- pkg_check_modules(LIBZSTD libzstd>=1.4.8)
582+ find_package (ZSTD 1.4.8 QUIET )
583+ if (ZSTD_FOUND)
584+ set (LIBZSTD_FOUND TRUE )
585+ set (LIBZSTD_LIBRARIES ZSTD::ZSTD)
586+ else ()
587+ find_package (PkgConfig)
588+ pkg_check_modules(LIBZSTD libzstd>=1.4.8)
589+ if (LIBZSTD_FOUND)
590+ include_directories (${LIBZSTD_INCLUDE_DIRS} )
591+ link_directories (${LIBZSTD_LIBRARY_DIRS} )
592+ add_library (ZSTD::ZSTD INTERFACE IMPORTED )
593+ set_property (TARGET ZSTD::ZSTD PROPERTY
594+ INTERFACE_LINK_LIBRARIES "${LIBZSTD_LIBRARIES} " )
595+ set (LIBZSTD_LIBRARIES ZSTD::ZSTD)
596+ endif ()
597+ endif ()
584598endif ()
585- if (LIBZSTD_FOUND)
586- include_directories (${LIBZSTD_INCLUDE_DIRS} )
587- link_directories (${LIBZSTD_LIBRARY_DIRS} )
588- else ()
599+
600+ if (NOT LIBZSTD_FOUND)
589601 include (cmake/zstd.cmake)
602+ target_compile_definitions (libzstd_static PRIVATE ZSTD_NAMESPACE=flbzstd)
603+
604+ if (MSVC )
605+ # MSVC: no ELF visibility attributes; exports are opt-in via dllexport/DEF.
606+ # Nothing special to add here.
607+ else ()
608+ target_compile_definitions (libzstd_static PRIVATE ZSTD_HIDE_SYMBOLS=1)
609+ target_compile_options (libzstd_static PRIVATE -fvisibility=hidden)
610+ set (FLB_EXCLUDE_LIBS_ALL_NEEDED TRUE )
611+ endif ()
612+
613+ set (LIBZSTD_LIBRARIES libzstd_static)
590614endif ()
591615
592616# ring buffer library
0 commit comments