diff --git a/CMakeLists.txt b/CMakeLists.txt index e586dec2891..00dd414105c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -599,14 +599,32 @@ add_subdirectory(${FLB_PATH_LIB_MINIZ} EXCLUDE_FROM_ALL) # Zstd (zstd) if(FLB_PREFER_SYSTEM_LIB_ZSTD) - find_package(PkgConfig) - pkg_check_modules(LIBZSTD libzstd>=1.4.8) + find_package(ZSTD 1.4.8 QUIET) + if(ZSTD_FOUND) + set(LIBZSTD_FOUND TRUE) + set(LIBZSTD_LIBRARIES ZSTD::ZSTD) + else() + find_package(PkgConfig) + pkg_check_modules(LIBZSTD libzstd>=1.4.8) + if(LIBZSTD_FOUND) + include_directories(${LIBZSTD_INCLUDE_DIRS}) + link_directories(${LIBZSTD_LIBRARY_DIRS}) + add_library(ZSTD::ZSTD INTERFACE IMPORTED) + set_property(TARGET ZSTD::ZSTD PROPERTY + INTERFACE_LINK_LIBRARIES "${LIBZSTD_LIBRARIES}") + set(LIBZSTD_LIBRARIES ZSTD::ZSTD) + endif() + endif() endif() -if(LIBZSTD_FOUND) - include_directories(${LIBZSTD_INCLUDE_DIRS}) - link_directories(${LIBZSTD_LIBRARY_DIRS}) -else() + +if(NOT LIBZSTD_FOUND) include(cmake/zstd.cmake) + + if(NOT MSVC) + target_compile_options(libzstd_static PRIVATE -fvisibility=hidden) + endif() + + set(LIBZSTD_LIBRARIES libzstd_static) endif() # ring buffer library diff --git a/packaging/distros/almalinux/Dockerfile b/packaging/distros/almalinux/Dockerfile index e95075ee613..8fc050b02e7 100644 --- a/packaging/distros/almalinux/Dockerfile +++ b/packaging/distros/almalinux/Dockerfile @@ -23,6 +23,9 @@ RUN yum -y update && \ cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel libyaml-devel pkgconf-pkg-config && \ yum clean all +ARG FLB_PREFER_SYSTEM_LIB_ZSTD=Off +ENV FLB_PREFER_SYSTEM_LIB_ZSTD=$FLB_PREFER_SYSTEM_LIB_ZSTD + # almalinux/8.arm64v8 base image # hadolint ignore=DL3029 FROM --platform=arm64 almalinux:8 AS almalinux-8.arm64v8-base @@ -40,6 +43,8 @@ RUN yum -y update && \ cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel libyaml-devel pkgconf-pkg-config && \ yum clean all +ARG FLB_PREFER_SYSTEM_LIB_ZSTD=Off +ENV FLB_PREFER_SYSTEM_LIB_ZSTD=$FLB_PREFER_SYSTEM_LIB_ZSTD # Need larger page size ARG FLB_JEMALLOC_OPTIONS="--with-lg-page=16 --with-lg-quantum=3" ENV FLB_JEMALLOC_OPTIONS=$FLB_JEMALLOC_OPTIONS @@ -57,6 +62,9 @@ RUN yum -y update && \ cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel libyaml-devel pkgconf-pkg-config && \ yum clean all +ARG FLB_PREFER_SYSTEM_LIB_ZSTD=Off +ENV FLB_PREFER_SYSTEM_LIB_ZSTD=$FLB_PREFER_SYSTEM_LIB_ZSTD + # almalinux/8.arm64v8 base image # hadolint ignore=DL3029 FROM --platform=arm64 almalinux:9 AS almalinux-9.arm64v8-base @@ -74,6 +82,8 @@ RUN yum -y update && \ cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel libyaml-devel pkgconf-pkg-config && \ yum clean all +ARG FLB_PREFER_SYSTEM_LIB_ZSTD=Off +ENV FLB_PREFER_SYSTEM_LIB_ZSTD=$FLB_PREFER_SYSTEM_LIB_ZSTD # Need larger page size ARG FLB_JEMALLOC_OPTIONS="--with-lg-page=16 --with-lg-quantum=3" ENV FLB_JEMALLOC_OPTIONS=$FLB_JEMALLOC_OPTIONS @@ -88,9 +98,14 @@ RUN yum -y update && \ yum install -y --allowerasing rpm-build curl ca-certificates gcc gcc-c++ cmake make bash \ wget unzip systemd-devel wget flex bison \ postgresql-libs postgresql-devel postgresql-server postgresql \ - cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel libyaml-devel pkgconf-pkg-config && \ + cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel libyaml-devel pkgconf-pkg-config \ + libzstd-devel && \ yum clean all +# Use system installed libzstd library. +ARG FLB_PREFER_SYSTEM_LIB_ZSTD=On +ENV FLB_PREFER_SYSTEM_LIB_ZSTD=$FLB_PREFER_SYSTEM_LIB_ZSTD + # almalinux/8.arm64v8 base image # hadolint ignore=DL3029 FROM --platform=arm64 almalinux:10 AS almalinux-10.arm64v8-base @@ -105,9 +120,13 @@ RUN yum -y update && \ yum install -y --allowerasing rpm-build curl ca-certificates gcc gcc-c++ cmake make bash \ wget unzip systemd-devel wget flex bison \ postgresql-libs postgresql-devel postgresql-server postgresql \ - cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel libyaml-devel pkgconf-pkg-config && \ + cyrus-sasl-lib cyrus-sasl-devel openssl openssl-libs openssl-devel libyaml-devel pkgconf-pkg-config \ + libzstd-devel && \ yum clean all +# Use system installed libzstd library. +ARG FLB_PREFER_SYSTEM_LIB_ZSTD=On +ENV FLB_PREFER_SYSTEM_LIB_ZSTD=$FLB_PREFER_SYSTEM_LIB_ZSTD # Need larger page size ARG FLB_JEMALLOC_OPTIONS="--with-lg-page=16 --with-lg-quantum=3" ENV FLB_JEMALLOC_OPTIONS=$FLB_JEMALLOC_OPTIONS @@ -155,6 +174,7 @@ RUN cmake -DCMAKE_INSTALL_PREFIX="$CMAKE_INSTALL_PREFIX" \ -DFLB_JEMALLOC="${FLB_JEMALLOC}" \ -DFLB_CHUNK_TRACE="${FLB_CHUNK_TRACE}" \ -DFLB_UNICODE_ENCODER="${FLB_UNICODE_ENCODER}" \ + -DFLB_PREFER_SYSTEM_LIB_ZSTD="${FLB_PREFER_SYSTEM_LIB_ZSTD}" \ ../ VOLUME [ "/output" ]