--- /dev/null
+name: dev-short-tests
+# Faster tests: mostly build tests, along with some other
+# misc tests
+
+concurrency:
+ group: fast-${{ github.ref }}
+ cancel-in-progress: true
+
+on:
+ pull_request:
+ branches: [ dev, release, actionsTest ]
+
+permissions: read-all
+
+jobs:
+ linux-kernel:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: linux kernel, library + build + test
+ run: make -C contrib/linux-kernel test CFLAGS="-Werror -Wunused-const-variable -Wunused-but-set-variable"
+
+ benchmarking:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: make benchmarking
+ run: make benchmarking
+
+ check-32bit: # designed to catch https://github.com/facebook/zstd/issues/2428
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: make check on 32-bit
+ run: |
+ sudo apt update
+ APT_PACKAGES="gcc-multilib" make apt-install
+ CFLAGS="-m32 -O1 -fstack-protector" make check V=1
+
+ check-x32:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: make check on x32 ABI # https://en.wikipedia.org/wiki/X32_ABI
+ env:
+ CHECK_CONSTRAINED_MEM: true
+ run: |
+ sudo apt update
+ APT_PACKAGES="gcc-multilib" make apt-install
+ CFLAGS="-mx32 -O1 -fstack-protector" make check V=1
+
+ build-c89:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: ensure zstd can be build with c89/c90 compilers (+ long long support + variadic macros)
+ run: |
+ make c89build V=1
+
+ build-zstd-dll:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: build zstd bin against a dynamic lib (debuglevel for more dependencies)
+ run: |
+ make -C lib lib-mt-release
+ DEBUGLEVEL=2 make -C programs zstd-dll
+
+ gcc-7-libzstd:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: gcc-7 + libzstdmt compilation
+ # See https://askubuntu.com/a/1428822
+ run: |
+ echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe" | sudo tee -a /etc/apt/sources.list
+ sudo apt-get -qqq update
+ make gcc7install
+ CC=gcc-7 CFLAGS=-Werror make -j all
+ make clean
+ LDFLAGS=-Wl,--no-undefined make -C lib libzstd-mt
+
+ # candidate test (to check) : underlink test
+ # LDFLAGS=-Wl,--no-undefined : will make the linker fail if dll is underlinked
+
+ cmake-build-and-test-check:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: cmake build and test check
+ run: |
+ FUZZERTEST=-T1mn ZSTREAM_TESTTIME=-T1mn make cmakebuild
+ cp -r ./ "../zstd source"
+ cd "../zstd source"
+ FUZZERTEST=-T1mn ZSTREAM_TESTTIME=-T1mn make cmakebuild
+
+ cpp-gnu90-c99-compatibility:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: C++, gnu90 and c99 compatibility
+ run: |
+ make cxxtest
+ make clean
+ make gnu90build
+ make clean
+ make c99build
+ make clean
+ make travis-install # just ensures `make install` works
+
+ mingw-cross-compilation:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: mingw cross-compilation
+ run: |
+ # sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix; (doesn't work)
+ sudo apt-get -qqq update
+ sudo apt-get install gcc-mingw-w64
+ CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ CFLAGS="-Werror -O1" make zstd
+
+ armbuild:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: ARM Build Test
+ run: |
+ sudo apt-get -qqq update
+ make arminstall
+ make armbuild
+
+ bourne-shell:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: Bourne shell compatibility (shellcheck)
+ run: |
+ wget https://github.com/koalaman/shellcheck/releases/download/v0.7.1/shellcheck-v0.7.1.linux.x86_64.tar.xz
+ tar -xf shellcheck-v0.7.1.linux.x86_64.tar.xz
+ shellcheck-v0.7.1/shellcheck --shell=sh --severity=warning --exclude=SC2010 tests/playTests.sh
+
+ zlib-wrapper:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: zlib wrapper test
+ run: |
+ sudo apt-get -qqq update
+ make valgrindinstall
+ make -C zlibWrapper test
+ make -C zlibWrapper test-valgrind
+
+ lz4-threadpool-libs:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: LZ4, thread pool, and libs build testslib wrapper test
+ run: |
+ make lz4install
+ make -C tests test-lz4
+ make check < /dev/null | tee # mess with lz4 console detection
+ make clean
+ make -C tests test-pool
+ make clean
+ bash tests/libzstd_builds.sh
+
+ gcc-make-tests-32bit:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: Make all, 32bit mode
+ run: |
+ sudo apt-get -qqq update
+ make libc6install
+ CFLAGS="-Werror -m32" make -j all32
+
+ gcc-8-make:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: gcc-8 build
+ # See https://askubuntu.com/a/1428822
+ run: |
+ echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe" | sudo tee -a /etc/apt/sources.list
+ sudo apt-get -qqq update
+ make gcc8install
+ CC=gcc-8 CFLAGS="-Werror" make -j all
+
+ make-external-compressors:
+ strategy:
+ matrix:
+ include:
+ - name: "no external compressors"
+ flags: "HAVE_ZLIB=0 HAVE_LZ4=0 HAVE_LZMA=0"
+ - name: "only zlib"
+ flags: "HAVE_ZLIB=1 HAVE_LZ4=0 HAVE_LZMA=0"
+ - name: "only lz4"
+ flags: "HAVE_ZLIB=0 HAVE_LZ4=1 HAVE_LZMA=0"
+ - name: "only lzma"
+ flags: "HAVE_ZLIB=0 HAVE_LZ4=0 HAVE_LZMA=1"
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: Build with ${{matrix.name}}
+ run: ${{matrix.flags}} make zstd
+
+
+ implicit-fall-through:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: -Wimplicit-fallthrough build
+ run: |
+ make clean
+ CC=gcc MOREFLAGS="-Werror -Wimplicit-fallthrough=2 -O0" make -C lib -j libzstd.a ZSTD_LEGACY_SUPPORT=0
+ make clean
+ CC=clang MOREFLAGS="-Werror -Wimplicit-fallthrough -O0" make -C lib -j libzstd.a ZSTD_LEGACY_SUPPORT=0
+
+ meson-linux:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: Install packages
+ run: |
+ sudo apt-get update
+ sudo apt-get -y install build-essential python3-pip ninja-build liblz4-dev
+ pip install --pre meson
+ - name: Build with Meson
+ run: |
+ meson setup \
+ --buildtype=debugoptimized \
+ -Db_lundef=false \
+ -Dauto_features=enabled \
+ -Dbin_programs=true \
+ -Dbin_tests=true \
+ -Dbin_contrib=true \
+ -Ddefault_library=both \
+ build/meson builddir
+ ninja -C builddir/
+ meson test -C builddir/ --print-errorlogs
+ meson install -C builddir --destdir staging/
+
+ meson-windows:
+ runs-on: windows-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: Install packages
+ run: pip install --pre meson
+ - name: Initialize the MSVC dev command prompt
+ uses: ilammy/msvc-dev-cmd@cec98b9d092141f74527d0afa6feb2af698cfe89
+ - name: Configure with Meson
+ run: |
+ meson setup build/meson/ builddir -Dbin_tests=true -Dbin_programs=true -Dbin_contrib=true
+ - name: Build with Meson
+ run: |
+ ninja -C builddir/
+ - name: Test with Meson
+ run: |
+ meson test -C builddir/ --print-errorlogs
+ - name: Install with Meson
+ run: |
+ meson install -C builddir --destdir staging/
+
+ cmake-visual-2022:
+ strategy:
+ matrix:
+ include:
+ - generator: "Visual Studio 17 2022"
+ flags: "-A x64"
+ - generator: "Visual Studio 17 2022"
+ flags: "-A Win32"
+ - generator: "MinGW Makefiles"
+ - generator: "Visual Studio 17 2022"
+ flags: "-T ClangCL"
+ runs-on: windows-2022
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: Add MSBuild to PATH
+ uses: microsoft/setup-msbuild@1ff57057b5cfdc39105cd07a01d78e9b0ea0c14c # tag=v1.3
+ - name: Build
+ working-directory: ${{env.GITHUB_WORKSPACE}}
+ run: |
+ cd build\cmake
+ mkdir build
+ cd build
+ cmake.exe -G "${{matrix.generator}}" ${{matrix.flags}} ..
+ cmake.exe --build .
+
+ msbuild-visual-studio:
+ strategy:
+ fail-fast: false # 'false' means Don't stop matrix workflows even if some matrix failed.
+ matrix:
+ include: [
+ { name: "VS 2022 x64 Debug", platform: x64, configuration: Debug, toolset: v143, runner: "windows-2022", arch: "" },
+ { name: "VS 2022 Win32 Debug", platform: Win32, configuration: Debug, toolset: v143, runner: "windows-2022", arch: "" },
+ { name: "VS 2022 x64 Release", platform: x64, configuration: Release, toolset: v143, runner: "windows-2022", arch: ""},
+ { name: "VS 2022 Win32 Release", platform: Win32, configuration: Release, toolset: v143, runner: "windows-2022", arch: ""},
+ { name: "VS 2019 x64 Release", platform: Win32, configuration: Release, toolset: v142, runner: "windows-2019", arch: ""},
+ { name: "VS 2019 Win32 Release", platform: x64, configuration: Release, toolset: v142, runner: "windows-2019", arch: ""},
+ { name: "VS 2022 x64 Release AVX2", platform: x64, configuration: Release, toolset: v143, runner: "windows-2022", arch: "AdvancedVectorExtensions2" },
+ ]
+ runs-on: ${{matrix.runner}}
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: Add MSBuild to PATH
+ uses: microsoft/setup-msbuild@1ff57057b5cfdc39105cd07a01d78e9b0ea0c14c # tag=v1.3
+ - name: Build ${{matrix.name}}
+ working-directory: ${{env.GITHUB_WORKSPACE}}
+ # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
+ if: ${{ matrix.arch == '' }}
+ run: >
+ msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=${{matrix.toolset}}
+ /t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}} /warnaserror
+ - name: Build ${{matrix.name}}
+ working-directory: ${{env.GITHUB_WORKSPACE}}
+ # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
+ if: ${{ matrix.arch != '' }}
+ run: >
+ msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=${{matrix.toolset}}
+ /t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}} /warnaserror
+ /p:InstructionSet=${{matrix.arch}}
+
+ # This tests that we don't accidentally grow the size too much.
+ # If the size grows intentionally, you can raise these numbers.
+ # But we do need to think about binary size, since it is a concern.
+ libzstd-size:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: libzstd size test
+ run: |
+ make clean && make -j -C lib libzstd && ./tests/check_size.py lib/libzstd.so 1100000
+ make clean && make -j -C lib libzstd ZSTD_LIB_COMPRESSION=0 ZSTD_LIB_DICTBUILDER=0 && ./tests/check_size.py lib/libzstd.so 400000
+ make clean && make -j -C lib libzstd ZSTD_LIB_MINIFY=1 && ./tests/check_size.py lib/libzstd.so 300000
+ make clean && make -j -C lib libzstd ZSTD_LIB_MINIFY=1 ZSTD_LIB_COMPRESSION=0 ZSTD_LIB_DICTBUILDER=0 && ./tests/check_size.py lib/libzstd.so 80000
+
+ minimal-decompressor-macros:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: minimal decompressor macros
+ run: |
+ make clean && make -j all ZSTD_LIB_MINIFY=1 MOREFLAGS="-Werror"
+ make clean && make check ZSTD_LIB_MINIFY=1 MOREFLAGS="-Werror"
+ make clean && make -j all MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X1 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT"
+ make clean && make check MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X1 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT"
+ make clean && make -j all MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X2 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG"
+ make clean && make check MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X2 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG"
+ make clean && make -j all MOREFLAGS="-Werror -DZSTD_NO_INLINE -DZSTD_STRIP_ERROR_STRINGS"
+ make clean && make check MOREFLAGS="-Werror -DZSTD_NO_INLINE -DZSTD_STRIP_ERROR_STRINGS"
+
+ dynamic-bmi2:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: dynamic bmi2 tests
+ run: |
+ make clean && make -j check MOREFLAGS="-O0 -Werror -mbmi2"
+ make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=1"
+ make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=1 -mbmi2"
+ make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=0"
+ make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=0 -mbmi2"
+
+ test-variants:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: make all variants & validate
+ run: |
+ make -j -C programs allVariants MOREFLAGS=-O0
+ ./tests/test-variants.sh
+
+ qemu-consistency:
+ name: QEMU ${{ matrix.name }}
+ runs-on: ubuntu-20.04
+ strategy:
+ fail-fast: false # 'false' means Don't stop matrix workflows even if some matrix failed.
+ matrix:
+ include: [
+ { name: ARM, xcc_pkg: gcc-arm-linux-gnueabi, xcc: arm-linux-gnueabi-gcc, xemu_pkg: qemu-system-arm, xemu: qemu-arm-static },
+ { name: ARM64, xcc_pkg: gcc-aarch64-linux-gnu, xcc: aarch64-linux-gnu-gcc, xemu_pkg: qemu-system-arm, xemu: qemu-aarch64-static },
+ { name: PPC, xcc_pkg: gcc-powerpc-linux-gnu, xcc: powerpc-linux-gnu-gcc, xemu_pkg: qemu-system-ppc, xemu: qemu-ppc-static },
+ { name: PPC64LE, xcc_pkg: gcc-powerpc64le-linux-gnu, xcc: powerpc64le-linux-gnu-gcc, xemu_pkg: qemu-system-ppc, xemu: qemu-ppc64le-static },
+ { name: S390X, xcc_pkg: gcc-s390x-linux-gnu, xcc: s390x-linux-gnu-gcc, xemu_pkg: qemu-system-s390x, xemu: qemu-s390x-static },
+ { name: MIPS, xcc_pkg: gcc-mips-linux-gnu, xcc: mips-linux-gnu-gcc, xemu_pkg: qemu-system-mips, xemu: qemu-mips-static },
+ { name: M68K, xcc_pkg: gcc-m68k-linux-gnu, xcc: m68k-linux-gnu-gcc, xemu_pkg: qemu-system-m68k, xemu: qemu-m68k-static },
+ ]
+ env: # Set environment variables
+ XCC: ${{ matrix.xcc }}
+ XEMU: ${{ matrix.xemu }}
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: apt update & install
+ run: |
+ sudo apt-get update
+ sudo apt-get install gcc-multilib g++-multilib qemu-utils qemu-user-static
+ sudo apt-get install ${{ matrix.xcc_pkg }} ${{ matrix.xemu_pkg }}
+ - name: Environment info
+ run: |
+ echo && which $XCC
+ echo && $XCC --version
+ echo && $XCC -v # Show built-in specs
+ echo && which $XEMU
+ echo && $XEMU --version
+ - name: ARM
+ if: ${{ matrix.name == 'ARM' }}
+ run: |
+ LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
+ - name: ARM64
+ if: ${{ matrix.name == 'ARM64' }}
+ run: |
+ LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
+ - name: PPC
+ if: ${{ matrix.name == 'PPC' }}
+ run: |
+ LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
+ - name: PPC64LE
+ if: ${{ matrix.name == 'PPC64LE' }}
+ run: |
+ LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
+ - name: S390X
+ if: ${{ matrix.name == 'S390X' }}
+ run: |
+ LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
+ - name: MIPS
+ if: ${{ matrix.name == 'MIPS' }}
+ run: |
+ LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
+ - name: M68K
+ if: ${{ matrix.name == 'M68K' }}
+ run: |
+ LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
+
+ mingw-short-test:
+ runs-on: windows-latest
+ strategy:
+ fail-fast: false # 'false' means Don't stop matrix workflows even if some matrix failed.
+ matrix:
+ include: [
+ { compiler: gcc, msystem: MINGW32, cflags: "-Werror"},
+ { compiler: gcc, msystem: MINGW64, cflags: "-Werror"},
+ { compiler: clang, msystem: MINGW64, cflags: "--target=x86_64-w64-mingw32 -Werror -Wconversion -Wno-sign-conversion -Wno-unused-command-line-argument"},
+ ]
+ defaults:
+ run:
+ shell: msys2 {0}
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - uses: msys2/setup-msys2@5beef6d11f48bba68b9eb503e3adc60b23c0cc36 # tag=v2
+ with:
+ msystem: ${{ matrix.msystem }}
+ install: make diffutils
+ update: true
+ # Based on https://ariya.io/2020/07/on-github-actions-with-msys2
+ - name: install mingw gcc i686
+ if: ${{ (matrix.msystem == 'MINGW32') && (matrix.compiler == 'gcc') }}
+ run: pacman --noconfirm -S mingw-w64-i686-gcc
+ - name: install mingw gcc x86_64
+ if: ${{ (matrix.msystem == 'MINGW64') && (matrix.compiler == 'gcc') }}
+ run: pacman --noconfirm -S mingw-w64-x86_64-gcc
+ - name: install mingw clang i686
+ if: ${{ (matrix.msystem == 'MINGW32') && (matrix.compiler == 'clang') }}
+ run: pacman --noconfirm -S mingw-w64-i686-clang
+ - name: install mingw clang x86_64
+ if: ${{ (matrix.msystem == 'MINGW64') && (matrix.compiler == 'clang') }}
+ run: pacman --noconfirm -S mingw-w64-x86_64-clang
+ - name: run mingw tests
+ run: |
+ make -v
+ export CC=${{ matrix.compiler }}
+ $CC --version
+ CFLAGS="${{ matrix.cflags }}" make -j allzstd
+ echo "Testing $CC ${{ matrix.msystem }}"
+ make clean
+ MSYS="" make check
+
+ visual-runtime-tests:
+ runs-on: windows-latest
+ strategy:
+ matrix:
+ platform: [x64, Win32]
+ configuration: [Release]
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: Add MSBuild to PATH
+ uses: microsoft/setup-msbuild@1ff57057b5cfdc39105cd07a01d78e9b0ea0c14c # tag=v1.3
+ - name: Build and run tests
+ working-directory: ${{env.GITHUB_WORKSPACE}}
+ env:
+ ZSTD_BIN: ./zstd.exe
+ DATAGEN_BIN: ./datagen.exe
+ # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
+ run: |
+ msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=v142 /t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}}
+ COPY build\VS2010\bin\${{matrix.platform}}_${{matrix.configuration}}\*.exe tests\
+ CD tests
+ sh -e playTests.sh
+ .\fuzzer.exe -T2m
+
+ # Following instructions at: https://github.com/marketplace/actions/install-cygwin-action
+ cygwin-tests:
+ runs-on: windows-latest
+ steps:
+ - run: git config --global core.autocrlf input
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - uses: cygwin/cygwin-install-action@f5e0f048310c425e84bc789f493a828c6dc80a25 # tag=master
+ with:
+ platform: x86_64
+ packages: >-
+ autoconf,
+ automake,
+ gcc-g++,
+ make,
+ mingw64-x86_64-gcc-g++,
+ patch,
+ perl
+ - name: cygwin tests
+ shell: C:\cygwin\bin\bash.exe --noprofile --norc -eo pipefail '{0}'
+ run: >-
+ export PATH=/usr/bin:$(cygpath ${SYSTEMROOT})/system32 &&
+ export CFLAGS="-Werror -O1" &&
+ ls &&
+ make -j allzstd &&
+ make -C tests fuzzer &&
+ ./tests/fuzzer.exe -v -T1m
+
+ intel-cet-compatibility:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: Build Zstd
+ run: |
+ make -j zstd V=1
+ readelf -n zstd
+ - name: Get Intel SDE
+ run: |
+ curl -LO https://downloadmirror.intel.com/684899/sde-external-9.0.0-2021-11-07-lin.tar.xz
+ tar xJvf sde-external-9.0.0-2021-11-07-lin.tar.xz
+ - name: Configure Permissions
+ run: |
+ echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
+ - name: Run Under SDE
+ run: |
+ sde-external-9.0.0-2021-11-07-lin/sde -cet -cet-raise 0 -cet-endbr-exe -cet-stderr -cet-abort -- ./zstd -b3
+
+ pkg-config:
+ runs-on: ubuntu-latest
+ container:
+ image: debian:testing
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: Install dependencies
+ run: |
+ apt -y update
+ apt -y install --no-install-recommends gcc libc6-dev make pkg-config
+ - name: Build and install
+ run: make -C lib install
+ - name: Test pkg-config
+ run: |
+ cc -Wall -Wextra -Wpedantic -Werror -o simple examples/simple_compression.c $(pkg-config --cflags --libs libzstd)
+ ./simple LICENSE
+
+ versions-compatibility:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: Versions Compatibility Test
+ run: |
+ make -C tests versionsTest
+
+ clangbuild:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: make clangbuild
+ run: |
+ make clangbuild
+
+ clang-pgo:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: Build PGO Zstd with Clang
+ env:
+ CC: clang-14
+ LLVM_PROFDATA: llvm-profdata-14
+ run: |
+ make -C programs zstd-pgo
+ ./programs/zstd -b
+
+ gcc-pgo:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+ - name: Build PGO Zstd with GCC
+ env:
+ CC: gcc
+ run: |
+ make -C programs zstd-pgo
+ ./programs/zstd -b
+
+
+# For reference : icc tests
+# icc tests are currently failing on Github Actions, likely to issues during installation stage
+# To be fixed later
+#
+# icc:
+# name: icc-check
+# runs-on: ubuntu-latest
+# steps:
+# - name: install icc
+# run: |
+# export DEBIAN_FRONTEND=noninteractive
+# sudo apt-get -qqq update
+# sudo apt-get install -y wget build-essential pkg-config cmake ca-certificates gnupg
+# sudo wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
+# sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
+# sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"
+# sudo apt-get update
+# sudo apt-get install -y intel-basekit intel-hpckit
+# - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # tag=v3
+# - name: make check
+# run: |
+# make CC=/opt/intel/oneapi/compiler/latest/linux/bin/intel64/icc check