summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Moinvaziri <nathan@nathanm.com>2021-06-04 08:01:30 -0700
committerHans Kristian Rosbach <hk-github@circlestorm.org>2021-06-08 20:52:56 +0200
commitc58d99581242e83390d049b361fdb5ed69724cad (patch)
tree923d879e245b283461c48ec25ff66df1e3f4894d
parent187ee5fcdd5a2c5dd2981812511c4bfa4b9f4a8c (diff)
Added pigz tests for no threads and no optimizations.
-rw-r--r--.github/workflows/pigz.yml16
-rw-r--r--test/pigz/CMakeLists.txt60
2 files changed, 53 insertions, 23 deletions
diff --git a/.github/workflows/pigz.yml b/.github/workflows/pigz.yml
index 5b1a335..92f9ee6 100644
--- a/.github/workflows/pigz.yml
+++ b/.github/workflows/pigz.yml
@@ -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
diff --git a/test/pigz/CMakeLists.txt b/test/pigz/CMakeLists.txt
index 5be719b..6038e6c 100644
--- a/test/pigz/CMakeLists.txt
+++ b/test/pigz/CMakeLists.txt
@@ -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)