* Extract out common portion of `lib/Makefile` into `lib/libzstd.mk`. Most relevantly, the way we find library files. * Use `lib/libzstd.mk` in the other Makefiles instead of repeating the same code. * Add a test `tests/test-variants.sh` that checks that the builds of `make -C programs allVariants` are correct, and run it in Actions. * Adds support for ASM files in the CMake build. The Meson build is not updated because it lists every file in zstd, and supports ASM off the bat, so the Huffman ASM commit will just add the ASM file to the list. The Visual Studios build is not updated because I'm not adding ASM support to Visual Studios yet.
Regression tests
The regression tests run zstd in many scenarios and ensures that the size of the compressed results doesn't change. This helps us ensure that we don't accidentally regress zstd's compression ratio.
These tests get run every night by CircleCI. If the job fails you can read the diff printed by the job to ensure the change isn't a regression. If all is well you can download the results.csv artifact and commit the new results. Or you can rebuild it yourself following the instructions below.
Rebuilding results.csv
From the root of the zstd repo run:
# Build the zstd binary
make clean
make -j zstd
# Build the regression test binary
cd tests/regression
make clean
make -j test
# Run the regression test
./test --cache data-cache --zstd ../../zstd --output results.csv
# Check results.csv to ensure the new results are okay
git diff
# Then submit the PR