From 72030f35fa86747318ba6702aaec5ed1e8b4d690 Mon Sep 17 00:00:00 2001 From: Thomas Devoogdt Date: Tue, 1 Apr 2025 22:47:45 +0200 Subject: [PATCH 1/2] lib: zstd: only require a C compiler Upstream: https://github.com/facebook/zstd/commit/769723aee2540aaff8951ac432a1babed358aa71 Signed-off-by: Thomas Devoogdt --- lib/zstd-1.5.7/build/cmake/CMakeLists.txt | 20 +++++++---- .../AddZstdCompilationFlags.cmake | 34 +++++++++---------- 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/lib/zstd-1.5.7/build/cmake/CMakeLists.txt b/lib/zstd-1.5.7/build/cmake/CMakeLists.txt index 347d41c0fd1..f08905345f3 100644 --- a/lib/zstd-1.5.7/build/cmake/CMakeLists.txt +++ b/lib/zstd-1.5.7/build/cmake/CMakeLists.txt @@ -37,7 +37,6 @@ project(zstd VERSION "${ZSTD_FULL_VERSION}" LANGUAGES C # Main library is in C ASM # And ASM - CXX # Testing contributed code also utilizes CXX ) message(STATUS "ZSTD VERSION: ${zstd_VERSION}") @@ -54,12 +53,6 @@ endif() include(GNUInstallDirs) -#----------------------------------------------------------------------------- -# Add extra compilation flags -#----------------------------------------------------------------------------- -include(AddZstdCompilationFlags) -ADD_ZSTD_COMPILATION_FLAGS() - # Always hide XXHash symbols add_definitions(-DXXH_NAMESPACE=ZSTD_) @@ -123,6 +116,19 @@ if (MSVC) option(ZSTD_USE_STATIC_RUNTIME "LINK TO STATIC RUN-TIME LIBRARIES" OFF) endif () +# Enable C++ support for testing. +set(ZSTD_ENABLE_CXX ${ZSTD_BUILD_TESTS}) + +if(ZSTD_ENABLE_CXX) + enable_language(CXX) +endif() + +#----------------------------------------------------------------------------- +# Add extra compilation flags +#----------------------------------------------------------------------------- +include(AddZstdCompilationFlags) +ADD_ZSTD_COMPILATION_FLAGS(ON ZSTD_ENABLE_CXX ON) # C CXX LD + #----------------------------------------------------------------------------- # External dependencies #----------------------------------------------------------------------------- diff --git a/lib/zstd-1.5.7/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake b/lib/zstd-1.5.7/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake index 5f381c656cf..25231b5ec32 100644 --- a/lib/zstd-1.5.7/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake +++ b/lib/zstd-1.5.7/build/cmake/CMakeModules/AddZstdCompilationFlags.cmake @@ -49,7 +49,7 @@ function(EnableCompilerFlag _flag _C _CXX _LD) endif () endfunction() -macro(ADD_ZSTD_COMPILATION_FLAGS) +macro(ADD_ZSTD_COMPILATION_FLAGS _C _CXX _LD) # We set ZSTD_HAS_NOEXECSTACK if we are certain we've set all the required # compiler flags to mark the stack as non-executable. set(ZSTD_HAS_NOEXECSTACK false) @@ -63,26 +63,26 @@ macro(ADD_ZSTD_COMPILATION_FLAGS) # EnableCompilerFlag("-std=c99" true false) # Set C compilation to c99 standard if (CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND MSVC) # clang-cl normally maps -Wall to -Weverything. - EnableCompilerFlag("/clang:-Wall" true true false) + EnableCompilerFlag("/clang:-Wall" _C _CXX false) else () - EnableCompilerFlag("-Wall" true true false) + EnableCompilerFlag("-Wall" _C _CXX false) endif () - EnableCompilerFlag("-Wextra" true true false) - EnableCompilerFlag("-Wundef" true true false) - EnableCompilerFlag("-Wshadow" true true false) - EnableCompilerFlag("-Wcast-align" true true false) - EnableCompilerFlag("-Wcast-qual" true true false) - EnableCompilerFlag("-Wstrict-prototypes" true false false) + EnableCompilerFlag("-Wextra" _C _CXX false) + EnableCompilerFlag("-Wundef" _C _CXX false) + EnableCompilerFlag("-Wshadow" _C _CXX false) + EnableCompilerFlag("-Wcast-align" _C _CXX false) + EnableCompilerFlag("-Wcast-qual" _C _CXX false) + EnableCompilerFlag("-Wstrict-prototypes" _C false false) # Enable asserts in Debug mode if (CMAKE_BUILD_TYPE MATCHES "Debug") - EnableCompilerFlag("-DDEBUGLEVEL=1" true true false) + EnableCompilerFlag("-DDEBUGLEVEL=1" _C _CXX false) endif () # Add noexecstack flags # LDFLAGS - EnableCompilerFlag("-Wl,-z,noexecstack" false false true) + EnableCompilerFlag("-Wl,-z,noexecstack" false false _LD) # CFLAGS & CXXFLAGS - EnableCompilerFlag("-Qunused-arguments" true true false) - EnableCompilerFlag("-Wa,--noexecstack" true true false) + EnableCompilerFlag("-Qunused-arguments" _C _CXX false) + EnableCompilerFlag("-Wa,--noexecstack" _C _CXX false) # NOTE: Using 3 nested ifs because the variables are sometimes # empty if the condition is false, and sometimes equal to false. # This implicitly converts them to truthy values. There may be @@ -99,15 +99,15 @@ macro(ADD_ZSTD_COMPILATION_FLAGS) set(ACTIVATE_MULTITHREADED_COMPILATION "ON" CACHE BOOL "activate multi-threaded compilation (/MP flag)") if (CMAKE_GENERATOR MATCHES "Visual Studio" AND ACTIVATE_MULTITHREADED_COMPILATION) - EnableCompilerFlag("/MP" true true false) + EnableCompilerFlag("/MP" _C _CXX false) endif () # UNICODE SUPPORT - EnableCompilerFlag("/D_UNICODE" true true false) - EnableCompilerFlag("/DUNICODE" true true false) + EnableCompilerFlag("/D_UNICODE" _C _CXX false) + EnableCompilerFlag("/DUNICODE" _C _CXX false) # Enable asserts in Debug mode if (CMAKE_BUILD_TYPE MATCHES "Debug") - EnableCompilerFlag("/DDEBUGLEVEL=1" true true false) + EnableCompilerFlag("/DDEBUGLEVEL=1" _C _CXX false) endif () endif () From 163b99c3802a50045fd2040501d2ab069ac5e4af Mon Sep 17 00:00:00 2001 From: Thomas Devoogdt Date: Sat, 4 Oct 2025 09:07:33 +0200 Subject: [PATCH 2/2] Revert "workflows: exclude libzstd from pr-compile-without-cxx" This reverts commit e816c489c0ac3a7e95c22a9838179015e895dc4e. Not needed anymore since libzstd has been bumped. Signed-off-by: Thomas Devoogdt --- .github/workflows/pr-compile-check.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr-compile-check.yaml b/.github/workflows/pr-compile-check.yaml index d171353afd8..7a97136961e 100644 --- a/.github/workflows/pr-compile-check.yaml +++ b/.github/workflows/pr-compile-check.yaml @@ -135,7 +135,7 @@ jobs: run: | sudo apt-get update sudo apt-get install -y bison cmake flex gcc libssl-dev libyaml-dev - sudo apt-get install -y libzstd-dev librdkafka-dev + sudo apt-get install -y librdkafka-dev - name: Install cmake uses: jwlawson/actions-setup-cmake@v2 @@ -149,6 +149,6 @@ jobs: run: | export CXX=/bin/false export nparallel=$(( $(getconf _NPROCESSORS_ONLN) > 8 ? 8 : $(getconf _NPROCESSORS_ONLN) )) - cmake -DFLB_PREFER_SYSTEM_LIB_ZSTD=ON -DFLB_PREFER_SYSTEM_LIB_KAFKA=ON ../ + cmake -DFLB_PREFER_SYSTEM_LIB_KAFKA=ON ../ make -j $nparallel working-directory: build