git subrepo pull (merge) --force deps/libchdr
[pcsx_rearmed.git] / deps / libchdr / deps / zstd-1.5.6 / .github / workflows / dev-short-tests.yml
CommitLineData
648db22b 1name: dev-short-tests
2# Faster tests: mostly build tests, along with some other
3# misc tests
4
5concurrency:
6 group: fast-${{ github.ref }}
7 cancel-in-progress: true
8
9on:
10 pull_request:
11 branches: [ dev, release, actionsTest ]
12
13permissions: read-all
14
15jobs:
16 linux-kernel:
17 runs-on: ubuntu-latest
18 steps:
f535537f 19 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 20 - name: linux kernel, library + build + test
21 run: make -C contrib/linux-kernel test CFLAGS="-Werror -Wunused-const-variable -Wunused-but-set-variable"
22
23 benchmarking:
24 runs-on: ubuntu-latest
25 steps:
f535537f 26 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 27 - name: make benchmarking
28 run: make benchmarking
29
30 check-32bit: # designed to catch https://github.com/facebook/zstd/issues/2428
31 runs-on: ubuntu-latest
32 steps:
f535537f 33 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 34 - name: make check on 32-bit
35 run: |
36 sudo apt update
37 APT_PACKAGES="gcc-multilib" make apt-install
38 CFLAGS="-m32 -O1 -fstack-protector" make check V=1
39
40 check-x32:
f535537f 41 runs-on: ubuntu-20.04 # ubuntu-latest == ubuntu-22.04 have issues currently with x32
648db22b 42 steps:
f535537f 43 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 44 - name: make check on x32 ABI # https://en.wikipedia.org/wiki/X32_ABI
45 env:
46 CHECK_CONSTRAINED_MEM: true
47 run: |
48 sudo apt update
49 APT_PACKAGES="gcc-multilib" make apt-install
50 CFLAGS="-mx32 -O1 -fstack-protector" make check V=1
51
52 build-c89:
53 runs-on: ubuntu-latest
54 steps:
f535537f 55 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 56 - name: ensure zstd can be build with c89/c90 compilers (+ long long support + variadic macros)
57 run: |
58 make c89build V=1
59
60 build-zstd-dll:
61 runs-on: ubuntu-latest
62 steps:
f535537f 63 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 64 - name: build zstd bin against a dynamic lib (debuglevel for more dependencies)
65 run: |
f535537f 66 make -C lib lib-mt-release
648db22b 67 DEBUGLEVEL=2 make -C programs zstd-dll
68
69 gcc-7-libzstd:
70 runs-on: ubuntu-latest
71 steps:
f535537f 72 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 73 - name: gcc-7 + libzstdmt compilation
74 # See https://askubuntu.com/a/1428822
75 run: |
76 echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe" | sudo tee -a /etc/apt/sources.list
77 sudo apt-get -qqq update
78 make gcc7install
79 CC=gcc-7 CFLAGS=-Werror make -j all
80 make clean
81 LDFLAGS=-Wl,--no-undefined make -C lib libzstd-mt
82
f535537f 83 # candidate test (for discussion) : underlink test
648db22b 84 # LDFLAGS=-Wl,--no-undefined : will make the linker fail if dll is underlinked
85
86 cmake-build-and-test-check:
87 runs-on: ubuntu-latest
88 steps:
f535537f 89 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
90 - name: cmake build and test
648db22b 91 run: |
f535537f 92 FUZZERTEST=-T1mn ZSTREAM_TESTTIME=-T1mn make cmakebuild V=1
648db22b 93
94 cpp-gnu90-c99-compatibility:
95 runs-on: ubuntu-latest
96 steps:
f535537f 97 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 98 - name: C++, gnu90 and c99 compatibility
99 run: |
100 make cxxtest
101 make clean
102 make gnu90build
103 make clean
104 make c99build
105 make clean
106 make travis-install # just ensures `make install` works
107
108 mingw-cross-compilation:
109 runs-on: ubuntu-latest
110 steps:
f535537f 111 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 112 - name: mingw cross-compilation
113 run: |
114 # sudo update-alternatives --set x86_64-w64-mingw32-g++ /usr/bin/x86_64-w64-mingw32-g++-posix; (doesn't work)
115 sudo apt-get -qqq update
116 sudo apt-get install gcc-mingw-w64
117 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ CFLAGS="-Werror -O1" make zstd
118
119 armbuild:
120 runs-on: ubuntu-latest
121 steps:
f535537f 122 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 123 - name: ARM Build Test
124 run: |
125 sudo apt-get -qqq update
126 make arminstall
127 make armbuild
128
129 bourne-shell:
130 runs-on: ubuntu-latest
131 steps:
f535537f 132 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 133 - name: Bourne shell compatibility (shellcheck)
134 run: |
135 wget https://github.com/koalaman/shellcheck/releases/download/v0.7.1/shellcheck-v0.7.1.linux.x86_64.tar.xz
136 tar -xf shellcheck-v0.7.1.linux.x86_64.tar.xz
137 shellcheck-v0.7.1/shellcheck --shell=sh --severity=warning --exclude=SC2010 tests/playTests.sh
138
139 zlib-wrapper:
140 runs-on: ubuntu-latest
141 steps:
f535537f 142 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 143 - name: zlib wrapper test
144 run: |
145 sudo apt-get -qqq update
146 make valgrindinstall
147 make -C zlibWrapper test
148 make -C zlibWrapper test-valgrind
149
150 lz4-threadpool-libs:
151 runs-on: ubuntu-latest
152 steps:
f535537f 153 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 154 - name: LZ4, thread pool, and libs build testslib wrapper test
155 run: |
156 make lz4install
157 make -C tests test-lz4
158 make check < /dev/null | tee # mess with lz4 console detection
159 make clean
160 make -C tests test-pool
161 make clean
162 bash tests/libzstd_builds.sh
163
164 gcc-make-tests-32bit:
165 runs-on: ubuntu-latest
166 steps:
f535537f 167 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 168 - name: Make all, 32bit mode
169 run: |
170 sudo apt-get -qqq update
171 make libc6install
172 CFLAGS="-Werror -m32" make -j all32
173
174 gcc-8-make:
175 runs-on: ubuntu-latest
176 steps:
f535537f 177 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 178 - name: gcc-8 build
179 # See https://askubuntu.com/a/1428822
180 run: |
181 echo "deb [arch=amd64] http://archive.ubuntu.com/ubuntu focal main universe" | sudo tee -a /etc/apt/sources.list
182 sudo apt-get -qqq update
183 make gcc8install
184 CC=gcc-8 CFLAGS="-Werror" make -j all
185
186 make-external-compressors:
187 strategy:
188 matrix:
189 include:
190 - name: "no external compressors"
191 flags: "HAVE_ZLIB=0 HAVE_LZ4=0 HAVE_LZMA=0"
192 - name: "only zlib"
193 flags: "HAVE_ZLIB=1 HAVE_LZ4=0 HAVE_LZMA=0"
194 - name: "only lz4"
195 flags: "HAVE_ZLIB=0 HAVE_LZ4=1 HAVE_LZMA=0"
196 - name: "only lzma"
197 flags: "HAVE_ZLIB=0 HAVE_LZ4=0 HAVE_LZMA=1"
198 runs-on: ubuntu-latest
199 steps:
f535537f 200 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 201 - name: Build with ${{matrix.name}}
202 run: ${{matrix.flags}} make zstd
203
204
205 implicit-fall-through:
206 runs-on: ubuntu-latest
207 steps:
f535537f 208 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 209 - name: -Wimplicit-fallthrough build
210 run: |
211 make clean
212 CC=gcc MOREFLAGS="-Werror -Wimplicit-fallthrough=2 -O0" make -C lib -j libzstd.a ZSTD_LEGACY_SUPPORT=0
213 make clean
214 CC=clang MOREFLAGS="-Werror -Wimplicit-fallthrough -O0" make -C lib -j libzstd.a ZSTD_LEGACY_SUPPORT=0
215
216 meson-linux:
217 runs-on: ubuntu-latest
218 steps:
f535537f 219 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 220 - name: Install packages
221 run: |
222 sudo apt-get update
223 sudo apt-get -y install build-essential python3-pip ninja-build liblz4-dev
224 pip install --pre meson
225 - name: Build with Meson
226 run: |
227 meson setup \
228 --buildtype=debugoptimized \
229 -Db_lundef=false \
230 -Dauto_features=enabled \
231 -Dbin_programs=true \
232 -Dbin_tests=true \
233 -Dbin_contrib=true \
234 -Ddefault_library=both \
235 build/meson builddir
236 ninja -C builddir/
237 meson test -C builddir/ --print-errorlogs
238 meson install -C builddir --destdir staging/
239
240 meson-windows:
241 runs-on: windows-latest
242 steps:
f535537f 243 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 244 - name: Install packages
245 run: pip install --pre meson
648db22b 246 - name: Configure with Meson
247 run: |
f535537f 248 meson setup --vsenv build/meson/ builddir -Dbin_tests=true -Dbin_programs=true -Dbin_contrib=true
648db22b 249 - name: Build with Meson
250 run: |
f535537f 251 meson compile -C builddir/
648db22b 252 - name: Test with Meson
253 run: |
254 meson test -C builddir/ --print-errorlogs
255 - name: Install with Meson
256 run: |
257 meson install -C builddir --destdir staging/
258
259 cmake-visual-2022:
260 strategy:
261 matrix:
262 include:
263 - generator: "Visual Studio 17 2022"
264 flags: "-A x64"
265 - generator: "Visual Studio 17 2022"
266 flags: "-A Win32"
267 - generator: "MinGW Makefiles"
268 - generator: "Visual Studio 17 2022"
269 flags: "-T ClangCL"
270 runs-on: windows-2022
271 steps:
f535537f 272 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 273 - name: Add MSBuild to PATH
f535537f 274 uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # tag=v2.0.0
275 - name: Build & Test
648db22b 276 working-directory: ${{env.GITHUB_WORKSPACE}}
277 run: |
278 cd build\cmake
279 mkdir build
280 cd build
f535537f 281 cmake.exe -G "${{matrix.generator}}" ${{matrix.flags}} -DCMAKE_BUILD_TYPE=Debug -DZSTD_BUILD_TESTS:BOOL=ON -DZSTD_ZSTREAM_FLAGS=-T30s -DZSTD_FUZZER_FLAGS=-T30s -DZSTD_FULLBENCH_FLAGS=-i0 ..
648db22b 282 cmake.exe --build .
f535537f 283 ctest.exe -V -C Debug
648db22b 284
285 msbuild-visual-studio:
286 strategy:
287 fail-fast: false # 'false' means Don't stop matrix workflows even if some matrix failed.
288 matrix:
289 include: [
290 { name: "VS 2022 x64 Debug", platform: x64, configuration: Debug, toolset: v143, runner: "windows-2022", arch: "" },
291 { name: "VS 2022 Win32 Debug", platform: Win32, configuration: Debug, toolset: v143, runner: "windows-2022", arch: "" },
292 { name: "VS 2022 x64 Release", platform: x64, configuration: Release, toolset: v143, runner: "windows-2022", arch: ""},
293 { name: "VS 2022 Win32 Release", platform: Win32, configuration: Release, toolset: v143, runner: "windows-2022", arch: ""},
294 { name: "VS 2019 x64 Release", platform: Win32, configuration: Release, toolset: v142, runner: "windows-2019", arch: ""},
295 { name: "VS 2019 Win32 Release", platform: x64, configuration: Release, toolset: v142, runner: "windows-2019", arch: ""},
296 { name: "VS 2022 x64 Release AVX2", platform: x64, configuration: Release, toolset: v143, runner: "windows-2022", arch: "AdvancedVectorExtensions2" },
297 ]
298 runs-on: ${{matrix.runner}}
299 steps:
f535537f 300 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 301 - name: Add MSBuild to PATH
f535537f 302 uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # tag=v2.0.0
648db22b 303 - name: Build ${{matrix.name}}
304 working-directory: ${{env.GITHUB_WORKSPACE}}
305 # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
306 if: ${{ matrix.arch == '' }}
307 run: >
308 msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=${{matrix.toolset}}
309 /t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}} /warnaserror
310 - name: Build ${{matrix.name}}
311 working-directory: ${{env.GITHUB_WORKSPACE}}
312 # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
313 if: ${{ matrix.arch != '' }}
314 run: >
315 msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=${{matrix.toolset}}
316 /t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}} /warnaserror
317 /p:InstructionSet=${{matrix.arch}}
318
319 # This tests that we don't accidentally grow the size too much.
320 # If the size grows intentionally, you can raise these numbers.
321 # But we do need to think about binary size, since it is a concern.
322 libzstd-size:
323 runs-on: ubuntu-latest
324 steps:
f535537f 325 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 326 - name: libzstd size test
327 run: |
328 make clean && make -j -C lib libzstd && ./tests/check_size.py lib/libzstd.so 1100000
329 make clean && make -j -C lib libzstd ZSTD_LIB_COMPRESSION=0 ZSTD_LIB_DICTBUILDER=0 && ./tests/check_size.py lib/libzstd.so 400000
330 make clean && make -j -C lib libzstd ZSTD_LIB_MINIFY=1 && ./tests/check_size.py lib/libzstd.so 300000
331 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
332
333 minimal-decompressor-macros:
334 runs-on: ubuntu-latest
335 steps:
f535537f 336 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 337 - name: minimal decompressor macros
338 run: |
339 make clean && make -j all ZSTD_LIB_MINIFY=1 MOREFLAGS="-Werror"
340 make clean && make check ZSTD_LIB_MINIFY=1 MOREFLAGS="-Werror"
341 make clean && make -j all MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X1 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT"
342 make clean && make check MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X1 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_SHORT"
343 make clean && make -j all MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X2 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG"
344 make clean && make check MOREFLAGS="-Werror -DHUF_FORCE_DECOMPRESS_X2 -DZSTD_FORCE_DECOMPRESS_SEQUENCES_LONG"
345 make clean && make -j all MOREFLAGS="-Werror -DZSTD_NO_INLINE -DZSTD_STRIP_ERROR_STRINGS"
346 make clean && make check MOREFLAGS="-Werror -DZSTD_NO_INLINE -DZSTD_STRIP_ERROR_STRINGS"
f535537f 347 make clean && make check ZSTD_LIB_EXCLUDE_COMPRESSORS_DFAST_AND_UP=1 MOREFLAGS="-Werror"
348 make clean && make check ZSTD_LIB_EXCLUDE_COMPRESSORS_GREEDY_AND_UP=1 MOREFLAGS="-Werror"
648db22b 349
350 dynamic-bmi2:
351 runs-on: ubuntu-latest
352 steps:
f535537f 353 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 354 - name: dynamic bmi2 tests
355 run: |
356 make clean && make -j check MOREFLAGS="-O0 -Werror -mbmi2"
357 make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=1"
358 make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=1 -mbmi2"
359 make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=0"
360 make clean && make -j check MOREFLAGS="-O0 -Werror -DDYNAMIC_BMI2=0 -mbmi2"
361
362 test-variants:
363 runs-on: ubuntu-latest
364 steps:
f535537f 365 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 366 - name: make all variants & validate
367 run: |
368 make -j -C programs allVariants MOREFLAGS=-O0
369 ./tests/test-variants.sh
370
371 qemu-consistency:
372 name: QEMU ${{ matrix.name }}
373 runs-on: ubuntu-20.04
374 strategy:
375 fail-fast: false # 'false' means Don't stop matrix workflows even if some matrix failed.
376 matrix:
377 include: [
378 { name: ARM, xcc_pkg: gcc-arm-linux-gnueabi, xcc: arm-linux-gnueabi-gcc, xemu_pkg: qemu-system-arm, xemu: qemu-arm-static },
379 { name: ARM64, xcc_pkg: gcc-aarch64-linux-gnu, xcc: aarch64-linux-gnu-gcc, xemu_pkg: qemu-system-arm, xemu: qemu-aarch64-static },
380 { name: PPC, xcc_pkg: gcc-powerpc-linux-gnu, xcc: powerpc-linux-gnu-gcc, xemu_pkg: qemu-system-ppc, xemu: qemu-ppc-static },
381 { name: PPC64LE, xcc_pkg: gcc-powerpc64le-linux-gnu, xcc: powerpc64le-linux-gnu-gcc, xemu_pkg: qemu-system-ppc, xemu: qemu-ppc64le-static },
382 { name: S390X, xcc_pkg: gcc-s390x-linux-gnu, xcc: s390x-linux-gnu-gcc, xemu_pkg: qemu-system-s390x, xemu: qemu-s390x-static },
383 { name: MIPS, xcc_pkg: gcc-mips-linux-gnu, xcc: mips-linux-gnu-gcc, xemu_pkg: qemu-system-mips, xemu: qemu-mips-static },
f535537f 384 { name: RISC-V, xcc_pkg: gcc-riscv64-linux-gnu, xcc: riscv64-linux-gnu-gcc, xemu_pkg: qemu-system-riscv64,xemu: qemu-riscv64-static },
648db22b 385 { name: M68K, xcc_pkg: gcc-m68k-linux-gnu, xcc: m68k-linux-gnu-gcc, xemu_pkg: qemu-system-m68k, xemu: qemu-m68k-static },
f535537f 386 { name: SPARC, xcc_pkg: gcc-sparc64-linux-gnu, xcc: sparc64-linux-gnu-gcc, xemu_pkg: qemu-system-sparc, xemu: qemu-sparc64-static },
648db22b 387 ]
388 env: # Set environment variables
389 XCC: ${{ matrix.xcc }}
390 XEMU: ${{ matrix.xemu }}
391 steps:
f535537f 392 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 393 - name: apt update & install
394 run: |
395 sudo apt-get update
396 sudo apt-get install gcc-multilib g++-multilib qemu-utils qemu-user-static
397 sudo apt-get install ${{ matrix.xcc_pkg }} ${{ matrix.xemu_pkg }}
398 - name: Environment info
399 run: |
400 echo && which $XCC
401 echo && $XCC --version
402 echo && $XCC -v # Show built-in specs
403 echo && which $XEMU
404 echo && $XEMU --version
405 - name: ARM
406 if: ${{ matrix.name == 'ARM' }}
407 run: |
408 LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
409 - name: ARM64
410 if: ${{ matrix.name == 'ARM64' }}
411 run: |
f535537f 412 LDFLAGS="-static -z force-bti" MOREFLAGS="-mbranch-protection=standard" CC=$XCC QEMU_SYS=$XEMU make clean check
648db22b 413 LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
414 - name: PPC
415 if: ${{ matrix.name == 'PPC' }}
416 run: |
417 LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
418 - name: PPC64LE
419 if: ${{ matrix.name == 'PPC64LE' }}
420 run: |
421 LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
422 - name: S390X
423 if: ${{ matrix.name == 'S390X' }}
424 run: |
425 LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
426 - name: MIPS
427 if: ${{ matrix.name == 'MIPS' }}
428 run: |
429 LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
f535537f 430 - name: RISC-V
431 if: ${{ matrix.name == 'RISC-V' }}
432 run: |
433 LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
648db22b 434 - name: M68K
435 if: ${{ matrix.name == 'M68K' }}
436 run: |
437 LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
f535537f 438 - name: SPARC
439 if: ${{ matrix.name == 'SPARC' }}
440 run: |
441 LDFLAGS="-static" CC=$XCC QEMU_SYS=$XEMU make clean check
648db22b 442
443 mingw-short-test:
444 runs-on: windows-latest
445 strategy:
446 fail-fast: false # 'false' means Don't stop matrix workflows even if some matrix failed.
447 matrix:
448 include: [
449 { compiler: gcc, msystem: MINGW32, cflags: "-Werror"},
450 { compiler: gcc, msystem: MINGW64, cflags: "-Werror"},
451 { compiler: clang, msystem: MINGW64, cflags: "--target=x86_64-w64-mingw32 -Werror -Wconversion -Wno-sign-conversion -Wno-unused-command-line-argument"},
452 ]
453 defaults:
454 run:
455 shell: msys2 {0}
456 steps:
f535537f 457 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
458 - uses: msys2/setup-msys2@cc11e9188b693c2b100158c3322424c4cc1dadea # tag=v2.22.0
648db22b 459 with:
460 msystem: ${{ matrix.msystem }}
461 install: make diffutils
462 update: true
463 # Based on https://ariya.io/2020/07/on-github-actions-with-msys2
464 - name: install mingw gcc i686
465 if: ${{ (matrix.msystem == 'MINGW32') && (matrix.compiler == 'gcc') }}
466 run: pacman --noconfirm -S mingw-w64-i686-gcc
467 - name: install mingw gcc x86_64
468 if: ${{ (matrix.msystem == 'MINGW64') && (matrix.compiler == 'gcc') }}
469 run: pacman --noconfirm -S mingw-w64-x86_64-gcc
470 - name: install mingw clang i686
471 if: ${{ (matrix.msystem == 'MINGW32') && (matrix.compiler == 'clang') }}
472 run: pacman --noconfirm -S mingw-w64-i686-clang
473 - name: install mingw clang x86_64
474 if: ${{ (matrix.msystem == 'MINGW64') && (matrix.compiler == 'clang') }}
475 run: pacman --noconfirm -S mingw-w64-x86_64-clang
476 - name: run mingw tests
477 run: |
478 make -v
479 export CC=${{ matrix.compiler }}
480 $CC --version
481 CFLAGS="${{ matrix.cflags }}" make -j allzstd
482 echo "Testing $CC ${{ matrix.msystem }}"
483 make clean
484 MSYS="" make check
485
486 visual-runtime-tests:
487 runs-on: windows-latest
488 strategy:
489 matrix:
490 platform: [x64, Win32]
491 configuration: [Release]
492 steps:
f535537f 493 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 494 - name: Add MSBuild to PATH
f535537f 495 uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # tag=v2.0.0
648db22b 496 - name: Build and run tests
497 working-directory: ${{env.GITHUB_WORKSPACE}}
498 env:
499 ZSTD_BIN: ./zstd.exe
500 DATAGEN_BIN: ./datagen.exe
501 # See https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
502 run: |
503 msbuild "build\VS2010\zstd.sln" /m /verbosity:minimal /property:PlatformToolset=v142 /t:Clean,Build /p:Platform=${{matrix.platform}} /p:Configuration=${{matrix.configuration}}
504 COPY build\VS2010\bin\${{matrix.platform}}_${{matrix.configuration}}\*.exe tests\
505 CD tests
506 sh -e playTests.sh
507 .\fuzzer.exe -T2m
508
509 # Following instructions at: https://github.com/marketplace/actions/install-cygwin-action
510 cygwin-tests:
511 runs-on: windows-latest
512 steps:
513 - run: git config --global core.autocrlf input
f535537f 514 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
515 - uses: cygwin/cygwin-install-action@006ad0b0946ca6d0a3ea2d4437677fa767392401 # tag=master
648db22b 516 with:
517 platform: x86_64
518 packages: >-
519 autoconf,
520 automake,
521 gcc-g++,
522 make,
523 mingw64-x86_64-gcc-g++,
524 patch,
525 perl
526 - name: cygwin tests
527 shell: C:\cygwin\bin\bash.exe --noprofile --norc -eo pipefail '{0}'
528 run: >-
529 export PATH=/usr/bin:$(cygpath ${SYSTEMROOT})/system32 &&
530 export CFLAGS="-Werror -O1" &&
531 ls &&
532 make -j allzstd &&
533 make -C tests fuzzer &&
534 ./tests/fuzzer.exe -v -T1m
535
648db22b 536 pkg-config:
537 runs-on: ubuntu-latest
538 container:
539 image: debian:testing
540 steps:
f535537f 541 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 542 - name: Install dependencies
543 run: |
544 apt -y update
545 apt -y install --no-install-recommends gcc libc6-dev make pkg-config
546 - name: Build and install
547 run: make -C lib install
548 - name: Test pkg-config
549 run: |
550 cc -Wall -Wextra -Wpedantic -Werror -o simple examples/simple_compression.c $(pkg-config --cflags --libs libzstd)
551 ./simple LICENSE
552
553 versions-compatibility:
554 runs-on: ubuntu-latest
555 steps:
f535537f 556 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 557 - name: Versions Compatibility Test
558 run: |
559 make -C tests versionsTest
560
561 clangbuild:
562 runs-on: ubuntu-latest
563 steps:
f535537f 564 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 565 - name: make clangbuild
566 run: |
567 make clangbuild
568
569 clang-pgo:
570 runs-on: ubuntu-latest
571 steps:
f535537f 572 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 573 - name: Build PGO Zstd with Clang
574 env:
575 CC: clang-14
576 LLVM_PROFDATA: llvm-profdata-14
577 run: |
578 make -C programs zstd-pgo
579 ./programs/zstd -b
580
581 gcc-pgo:
582 runs-on: ubuntu-latest
583 steps:
f535537f 584 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 585 - name: Build PGO Zstd with GCC
586 env:
587 CC: gcc
588 run: |
589 make -C programs zstd-pgo
590 ./programs/zstd -b
591
f535537f 592 intel-cet-compatibility:
593 runs-on: ubuntu-latest
594 steps:
595 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
596 - name: Build Zstd
597 run: |
598 make -j zstd V=1
599 readelf -n zstd
600 - name: Get Intel SDE
601 run: |
602 curl -LO https://downloadmirror.intel.com/813591/sde-external-9.33.0-2024-01-07-lin.tar.xz
603 tar xJvf sde-external-9.33.0-2024-01-07-lin.tar.xz
604 - name: Configure Permissions
605 run: |
606 echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
607 - name: Run Under SDE
608 run: |
609 sde-external-9.33.0-2024-01-07-lin/sde -cet -cet-raise 0 -cet-endbr-exe -cet-stderr -cet-abort -- ./zstd -b3
610
611
612# Failing tests, for reference
648db22b 613
648db22b 614# icc tests are currently failing on Github Actions, likely to issues during installation stage
648db22b 615#
616# icc:
617# name: icc-check
618# runs-on: ubuntu-latest
619# steps:
620# - name: install icc
621# run: |
622# export DEBIAN_FRONTEND=noninteractive
623# sudo apt-get -qqq update
624# sudo apt-get install -y wget build-essential pkg-config cmake ca-certificates gnupg
625# sudo wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
626# sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
627# sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"
628# sudo apt-get update
629# sudo apt-get install -y intel-basekit intel-hpckit
f535537f 630# - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # tag=v4.1.1
648db22b 631# - name: make check
632# run: |
633# make CC=/opt/intel/oneapi/compiler/latest/linux/bin/intel64/icc check