]> git.ipfire.org Git - thirdparty/zlib-ng.git/commitdiff
Added pigz tests for no threads and no optimizations.
authorNathan Moinvaziri <nathan@nathanm.com>
Fri, 4 Jun 2021 15:01:30 +0000 (08:01 -0700)
committerHans Kristian Rosbach <hk-github@circlestorm.org>
Tue, 8 Jun 2021 18:52:56 +0000 (20:52 +0200)
.github/workflows/pigz.yml
test/pigz/CMakeLists.txt

index 5b1a335d5b75498668b0ed8960594b5f8967fc53..92f9ee6df7a4e40d474e40a3ec914194049da348 100644 (file)
@@ -20,6 +20,22 @@ jobs:
             gcov-exec: llvm-cov-11 gcov
             codecov: ubuntu_clang_pigz
 
+          - name: Ubuntu Clang No Optim
+            os: ubuntu-latest
+            compiler: clang
+            packages: llvm-11-tools
+            gcov-exec: llvm-cov-11 gcov
+            codecov: ubuntu_clang_pigz_no_optim
+            cmake-args: -DWITH_OPTIM=OFF
+
+          - name: Ubuntu Clang No Threads
+            os: ubuntu-latest
+            compiler: clang
+            packages: llvm-11-tools
+            gcov-exec: llvm-cov-11 gcov
+            codecov: ubuntu_clang_pigz_no_threads
+            cmake-args: -DWITH_THREADS=OFF
+
     steps:
     - name: Checkout repository
       uses: actions/checkout@v2
index 5be719bbba36a0dfe52cf2393d91a6d1c13767c7..6038e6cb5362e31e5fca409e7f32ba90093f1711 100644 (file)
@@ -7,6 +7,8 @@
 # pthread libraries if installed.
 
 # Optional Variables
+#   WITH_CODE_COVERAGE  - Enable code coverage reporting
+#   WITH_THREADS        - Enable threading support
 #   PIGZ_ENABLE_TESTS   - Enable adding unit tests
 #   ZLIB_ROOT           - Path to the zlib source directory
 #   PTHREADS4W_ROOT     - Path to pthreads4w source directory on Windows.
@@ -21,6 +23,7 @@ include(FetchContent)
 include(../../cmake/detect-coverage.cmake)
 
 option(WITH_CODE_COVERAGE "Enable code coverage reporting" OFF)
+option(WITH_THREADS "Enable threading support" ON)
 option(PIGZ_ENABLE_TESTS "Build unit tests" ON)
 
 project(pigz LANGUAGES C)
@@ -40,8 +43,11 @@ elseif(CMAKE_C_COMPILER_ID STREQUAL "GNU")
     if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.8.0)
         add_definitions(-fno-diagnostics-show-caret)
     endif()
-elseif(MSVC)
-    add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
+elseif(WIN32)
+    add_definitions(-D_TIMESPEC_DEFINED)
+    if(MSVC)
+        add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
+    endif()
 endif()
 
 # Fetch pigz source code from official repository
@@ -56,37 +62,44 @@ endif()
 
 set(PIGZ_SRCS
     ${pigz_SOURCE_DIR}/pigz.c
-    ${pigz_SOURCE_DIR}/try.c
-    ${pigz_SOURCE_DIR}/yarn.c)
+    ${pigz_SOURCE_DIR}/try.c)
 
 set(PIGZ_HDRS
-    ${pigz_SOURCE_DIR}/try.h
-    ${pigz_SOURCE_DIR}/yarn.h)
+    ${pigz_SOURCE_DIR}/try.h)
 
 add_executable(${PROJECT_NAME} ${PIGZ_SRCS} ${PIGZ_HDRS})
 add_definitions(-DNOZOPFLI)
 
 # Find and link against pthreads or pthreads4w
-if(WIN32)
-    add_definitions(-D_TIMESPEC_DEFINED)
-
-    if(DEFINED PTHREADS4W_ROOT)
-        set(CLEANUP_STYLE VC)
-        set(PTHREADS4W_VERSION 3)
-
-        add_subdirectory(${PTHREADS4W_ROOT} ${PTHREADS4W_ROOT} EXCLUDE_FROM_ALL)
-        target_link_libraries(${PROJECT_NAME} pthreadVC3)
-        target_include_directories(${PROJECT_NAME} PRIVATE win ${PTHREADS4W_ROOT})
+if(WITH_THREADS)
+    if(WIN32)
+        if(DEFINED PTHREADS4W_ROOT)
+            set(CLEANUP_STYLE VC)
+            set(PTHREADS4W_VERSION 3)
+
+            add_subdirectory(${PTHREADS4W_ROOT} ${PTHREADS4W_ROOT} EXCLUDE_FROM_ALL)
+            target_link_libraries(${PROJECT_NAME} pthreadVC3)
+            target_include_directories(${PROJECT_NAME} PRIVATE win ${PTHREADS4W_ROOT})
+        else()
+            message(WARNING "Missing pthreads4w root directory")
+            set(WITH_THREADS OFF)
+        endif()
     else()
-        message(WARNING "Missing pthreads4w root directory, disabling threading")
-        add_definitions(-DNOTHREAD)
+        find_package(Threads REQUIRED)
+        target_link_libraries(${PROJECT_NAME} Threads::Threads)
+        if(NOT APPLE)
+            target_link_libraries(${PROJECT_NAME} m)
+        endif()
     endif()
+endif()
+
+# Disable threading support
+if(NOT WITH_THREADS)
+    add_definitions(-DNOTHREAD)
 else()
-    find_package(Threads REQUIRED)
-    target_link_libraries(${PROJECT_NAME} Threads::Threads)
-    if(NOT APPLE)
-        target_link_libraries(${PROJECT_NAME} m)
-    endif()
+    set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY SOURCES
+        ${pigz_SOURCE_DIR}/yarn.c
+        ${pigz_SOURCE_DIR}/yarn.h)
 endif()
 
 # Find and link against zlib
@@ -179,6 +192,7 @@ if(PIGZ_ENABLE_TESTS)
 endif()
 
 add_feature_info(WITH_CODE_COVERAGE WITH_CODE_COVERAGE "Enable code coverage reporting")
+add_feature_info(WITH_THREADS WITH_THREADS "Enable threading support")
 add_feature_info(PIGZ_ENABLE_TESTS PIGZ_ENABLE_TESTS "Build unit tests")
 
 FEATURE_SUMMARY(WHAT ALL INCLUDE_QUIET_PACKAGES)