1 1.1 christos 2 1.1 christos # ################################################################ 3 1.1 christos # Copyright (c) Meta Platforms, Inc. and affiliates. 4 1.1 christos # All rights reserved. 5 1.1 christos # 6 1.1 christos # This source code is licensed under both the BSD-style license (found in the 7 1.1 christos # LICENSE file in the root directory of this source tree) and the GPLv2 (found 8 1.1 christos # in the COPYING file in the root directory of this source tree). 9 1.1 christos # You may select, at your option, one of the above-listed licenses. 10 1.1 christos # ################################################################ 11 1.1 christos # datagen : Synthetic and parametrable data generator, for tests 12 1.1 christos # fullbench : Precisely measure speed for each zstd inner functions 13 1.1 christos # fullbench32: Same as fullbench, but forced to compile in 32-bits mode 14 1.1 christos # fuzzer : Test tool, to check zstd integrity on target platform 15 1.1 christos # fuzzer32: Same as fuzzer, but forced to compile in 32-bits mode 16 1.1 christos # paramgrill : parameter tester for zstd 17 1.1 christos # test-zstd-speed.py : script for testing zstd speed difference between commits 18 1.1 christos # versionsTest : compatibility test between zstd versions stored on Github (v0.1+) 19 1.1 christos # zstreamtest : Fuzzer test tool for zstd streaming API 20 1.1 christos # zstreamtest32: Same as zstreamtest, but forced to compile in 32-bits mode 21 1.1 christos # ########################################################################## 22 1.1 christos 23 1.1 christos ZSTD_LEGACY_SUPPORT ?= 5 24 1.1 christos export ZSTD_LEGACY_SUPPORT 25 1.1 christos 26 1.1 christos DEBUGLEVEL ?= 2 27 1.1 christos export DEBUGLEVEL # transmit value to sub-makefiles 28 1.1 christos 29 1.1.1.2 christos .PHONY: default 30 1.1.1.2 christos default: fullbench 31 1.1.1.2 christos 32 1.1 christos LIBZSTD_MK_DIR := ../lib 33 1.1 christos include $(LIBZSTD_MK_DIR)/libzstd.mk 34 1.1 christos 35 1.1 christos PRGDIR = ../programs 36 1.1 christos PYTHON ?= python3 37 1.1 christos TESTARTEFACT := versionsTest 38 1.1 christos 39 1.1 christos DEBUGFLAGS += -g -Wno-c++-compat 40 1.1 christos CPPFLAGS += -I$(LIB_SRCDIR) -I$(LIB_SRCDIR)/common -I$(LIB_SRCDIR)/compress -I$(LIB_SRCDIR)/legacy \ 41 1.1 christos -I$(LIB_SRCDIR)/dictBuilder -I$(LIB_SRCDIR)/deprecated -I$(PRGDIR) \ 42 1.1 christos -DZSTD_WINDOW_OVERFLOW_CORRECT_FREQUENTLY=1 43 1.1 christos 44 1.1 christos ZSTDCOMMON_FILES := $(sort $(ZSTD_COMMON_FILES)) 45 1.1 christos ZSTDCOMP_FILES := $(sort $(ZSTD_COMPRESS_FILES)) 46 1.1 christos ZSTDDECOMP_FILES := $(sort $(ZSTD_DECOMPRESS_FILES)) 47 1.1 christos ZSTDLEGACY_FILES := $(sort $(wildcard $(LIB_SRCDIR)/legacy/*.c)) 48 1.1 christos ZSTD_FILES := $(ZSTDDECOMP_FILES) $(ZSTDCOMMON_FILES) $(ZSTDCOMP_FILES) $(ZSTDLEGACY_FILES) 49 1.1 christos ZDICT_FILES := $(sort $(ZSTD_DICTBUILDER_FILES)) 50 1.1 christos 51 1.1 christos ZSTD_F1 := $(sort $(wildcard $(ZSTD_FILES))) 52 1.1 christos ZSTD_OBJ1 := $(subst $(LIB_SRCDIR)/common/,zstdm_,$(ZSTD_F1)) 53 1.1 christos ZSTD_OBJ2 := $(subst $(LIB_SRCDIR)/compress/,zstdc_,$(ZSTD_OBJ1)) 54 1.1 christos ZSTD_OBJ3 := $(subst $(LIB_SRCDIR)/decompress/,zstdd_,$(ZSTD_OBJ2)) 55 1.1 christos ZSTD_OBJ4 := $(subst $(LIB_SRCDIR)/legacy/,zstdl_,$(ZSTD_OBJ3)) 56 1.1 christos ZSTD_OBJ5 := $(ZSTD_OBJ4:.c=.o) 57 1.1 christos ZSTD_OBJECTS := $(ZSTD_OBJ5:.S=.o) 58 1.1 christos 59 1.1 christos ZSTDMT_OBJ1 := $(subst $(LIB_SRCDIR)/common/,zstdmt_m_,$(ZSTD_F1)) 60 1.1 christos ZSTDMT_OBJ2 := $(subst $(LIB_SRCDIR)/compress/,zstdmt_c_,$(ZSTDMT_OBJ1)) 61 1.1 christos ZSTDMT_OBJ3 := $(subst $(LIB_SRCDIR)/decompress/,zstdmt_d_,$(ZSTDMT_OBJ2)) 62 1.1 christos ZSTDMT_OBJ4 := $(subst $(LIB_SRCDIR)/legacy/,zstdmt_l_,$(ZSTDMT_OBJ3)) 63 1.1 christos ZSTDMT_OBJ5 := $(ZSTDMT_OBJ4:.c=.o) 64 1.1 christos ZSTDMT_OBJECTS := $(ZSTDMT_OBJ5:.S=.o) 65 1.1 christos 66 1.1 christos # Define *.exe as extension for Windows systems 67 1.1 christos ifneq (,$(filter Windows%,$(OS))) 68 1.1 christos EXT =.exe 69 1.1 christos MULTITHREAD_CPP = -DZSTD_MULTITHREAD 70 1.1 christos MULTITHREAD_LD = 71 1.1 christos else 72 1.1 christos EXT = 73 1.1 christos MULTITHREAD_CPP = -DZSTD_MULTITHREAD 74 1.1 christos MULTITHREAD_LD = -pthread 75 1.1 christos endif 76 1.1 christos MULTITHREAD = $(MULTITHREAD_CPP) $(MULTITHREAD_LD) 77 1.1 christos 78 1.1 christos VOID = /dev/null 79 1.1 christos ZSTREAM_TESTTIME ?= -T90s 80 1.1 christos FUZZERTEST ?= -T200s 81 1.1 christos ZSTDRTTEST = --test-large-data 82 1.1 christos DECODECORPUS_TESTTIME ?= -T30 83 1.1 christos 84 1.1 christos .PHONY: all 85 1.1 christos all: fullbench fuzzer zstreamtest paramgrill datagen decodecorpus roundTripCrash poolTests 86 1.1 christos 87 1.1 christos .PHONY: all32 88 1.1 christos all32: fullbench32 fuzzer32 zstreamtest32 89 1.1 christos 90 1.1 christos .PHONY: allnothread 91 1.1 christos allnothread: MULTITHREAD_CPP= 92 1.1 christos allnothread: MULTITHREAD_LD= 93 1.1 christos allnothread: fullbench fuzzer paramgrill datagen decodecorpus 94 1.1 christos 95 1.1 christos # note : broken : requires symbols unavailable from dynamic library 96 1.1 christos .PHONY: dll 97 1.1 christos dll: fuzzer-dll zstreamtest-dll 98 1.1 christos 99 1.1 christos .PHONY: zstd zstd32 zstd-nolegacy # only external makefile knows how to build or update them 100 1.1 christos zstd zstd32 zstd-nolegacy zstd-dll: 101 1.1 christos $(MAKE) -C $(PRGDIR) $@ MOREFLAGS+="$(DEBUGFLAGS)" 102 1.1 christos 103 1.1 christos .PHONY: libzstd 104 1.1 christos libzstd : 105 1.1 christos $(MAKE) -C $(LIB_SRCDIR) libzstd MOREFLAGS+="$(DEBUGFLAGS)" 106 1.1 christos 107 1.1 christos %-dll : libzstd 108 1.1 christos %-dll : LDFLAGS += -L$(LIB_BINDIR) -lzstd 109 1.1 christos 110 1.1 christos $(LIB_BINDIR)/libzstd.a : 111 1.1 christos $(MAKE) -C $(LIB_SRCDIR) libzstd.a 112 1.1 christos 113 1.1 christos zstdm_%.o : $(LIB_SRCDIR)/common/%.c 114 1.1 christos $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ 115 1.1 christos 116 1.1 christos zstdc_%.o : $(LIB_SRCDIR)/compress/%.c 117 1.1 christos $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ 118 1.1 christos 119 1.1 christos zstdd_%.o : $(LIB_SRCDIR)/decompress/%.c 120 1.1 christos $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ 121 1.1 christos 122 1.1 christos zstdd_%.o : $(LIB_SRCDIR)/decompress/%.S 123 1.1 christos $(CC) -c $(CPPFLAGS) $(ASFLAGS) $< -o $@ 124 1.1 christos 125 1.1 christos zstdl_%.o : $(LIB_SRCDIR)/legacy/%.c 126 1.1 christos $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ 127 1.1 christos 128 1.1 christos zstdmt%.o : CPPFLAGS += $(MULTITHREAD_CPP) 129 1.1 christos 130 1.1 christos zstdmt_m_%.o : $(LIB_SRCDIR)/common/%.c 131 1.1 christos $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ 132 1.1 christos 133 1.1 christos zstdmt_c_%.o : $(LIB_SRCDIR)/compress/%.c 134 1.1 christos $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ 135 1.1 christos 136 1.1 christos zstdmt_d_%.o : $(LIB_SRCDIR)/decompress/%.c 137 1.1 christos $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ 138 1.1 christos 139 1.1 christos zstdmt_d_%.o : $(LIB_SRCDIR)/decompress/%.S 140 1.1 christos $(CC) -c $(CPPFLAGS) $(ASFLAGS) $< -o $@ 141 1.1 christos 142 1.1 christos zstdmt_l_%.o : $(LIB_SRCDIR)/legacy/%.c 143 1.1 christos $(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@ 144 1.1 christos 145 1.1 christos FULLBENCHS := fullbench fullbench32 146 1.1 christos CLEAN += $(FULLBENCHS) 147 1.1 christos fullbench32: CPPFLAGS += -m32 148 1.1 christos $(FULLBENCHS) : CPPFLAGS += $(MULTITHREAD_CPP) -Wno-deprecated-declarations 149 1.1 christos $(FULLBENCHS) : LDFLAGS += $(MULTITHREAD_LD) 150 1.1 christos $(FULLBENCHS) : DEBUGFLAGS = -DNDEBUG # turn off assert() for speed measurements 151 1.1.1.2 christos $(FULLBENCHS) : DEBUGLEVEL = 0 # turn off assert() for speed measurements 152 1.1 christos $(FULLBENCHS) : $(ZSTD_FILES) 153 1.1.1.2 christos $(FULLBENCHS) : $(PRGDIR)/datagen.c $(PRGDIR)/lorem.c $(PRGDIR)/util.c $(PRGDIR)/timefn.c $(PRGDIR)/benchfn.c fullbench.c 154 1.1 christos $(LINK.c) $^ -o $@$(EXT) 155 1.1 christos 156 1.1 christos CLEAN += fullbench-lib 157 1.1 christos fullbench-lib : CPPFLAGS += -DXXH_NAMESPACE=ZSTD_ 158 1.1.1.2 christos fullbench-lib : $(PRGDIR)/datagen.c $(PRGDIR)/lorem.c $(PRGDIR)/util.c $(PRGDIR)/timefn.c $(PRGDIR)/benchfn.c $(LIB_SRCDIR)/libzstd.a fullbench.c 159 1.1 christos $(LINK.c) $^ -o $@$(EXT) 160 1.1 christos 161 1.1 christos # note : broken : requires symbols unavailable from dynamic library 162 1.1 christos fullbench-dll: $(PRGDIR)/datagen.c $(PRGDIR)/util.c $(PRGDIR)/benchfn.c $(PRGDIR)/timefn.c fullbench.c 163 1.1 christos # $(CC) $(FLAGS) $(filter %.c,$^) -o $@$(EXT) -DZSTD_DLL_IMPORT=1 $(LIB_SRCDIR)/dll/libzstd.dll 164 1.1 christos $(LINK.c) $^ $(LDLIBS) -o $@$(EXT) 165 1.1 christos 166 1.1 christos CLEAN += fuzzer fuzzer32 167 1.1 christos fuzzer : CPPFLAGS += $(MULTITHREAD_CPP) -Wno-deprecated-declarations 168 1.1 christos fuzzer : LDFLAGS += $(MULTITHREAD_LD) 169 1.1 christos fuzzer : $(ZSTDMT_OBJECTS) 170 1.1 christos fuzzer fuzzer32 : $(ZDICT_FILES) $(PRGDIR)/util.c $(PRGDIR)/timefn.c $(PRGDIR)/datagen.c fuzzer.c 171 1.1 christos 172 1.1 christos fuzzer32 : CFLAGS += -m32 $(MULTITHREAD) 173 1.1 christos fuzzer32 : $(ZSTD_FILES) 174 1.1 christos $(LINK.c) $^ -o $@$(EXT) 175 1.1 christos 176 1.1 christos # note : broken : requires symbols unavailable from dynamic library 177 1.1 christos fuzzer-dll : $(LIB_SRCDIR)/common/xxhash.c $(PRGDIR)/util.c $(PRGDIR)/timefn.c $(PRGDIR)/datagen.c fuzzer.c 178 1.1 christos $(CC) $(CPPFLAGS) $(CFLAGS) $(filter %.c,$^) $(LDFLAGS) -o $@$(EXT) 179 1.1 christos 180 1.1 christos CLEAN += zstreamtest zstreamtest32 181 1.1 christos ZSTREAM_LOCAL_FILES := $(PRGDIR)/datagen.c $(PRGDIR)/util.c $(PRGDIR)/timefn.c seqgen.c zstreamtest.c external_matchfinder.c 182 1.1 christos ZSTREAM_PROPER_FILES := $(ZDICT_FILES) $(ZSTREAM_LOCAL_FILES) 183 1.1 christos ZSTREAMFILES := $(ZSTD_FILES) $(ZSTREAM_PROPER_FILES) 184 1.1 christos zstreamtest32 : CFLAGS += -m32 185 1.1 christos zstreamtest zstreamtest32 : CPPFLAGS += $(MULTITHREAD_CPP) 186 1.1 christos zstreamtest zstreamtest32 : LDFLAGS += $(MULTITHREAD_LD) 187 1.1 christos zstreamtest : $(ZSTDMT_OBJECTS) $(ZSTREAM_PROPER_FILES) 188 1.1 christos zstreamtest32 : $(ZSTREAMFILES) 189 1.1 christos zstreamtest zstreamtest32 : 190 1.1 christos $(LINK.c) $^ -o $@$(EXT) 191 1.1 christos 192 1.1 christos CLEAN += zstreamtest_asan 193 1.1 christos zstreamtest_asan : CFLAGS += -fsanitize=address 194 1.1 christos zstreamtest_asan : $(ZSTREAMFILES) 195 1.1 christos $(LINK.c) $(MULTITHREAD) $^ -o $@$(EXT) 196 1.1 christos 197 1.1 christos CLEAN += zstreamtest_tsan 198 1.1 christos zstreamtest_tsan : CFLAGS += -fsanitize=thread 199 1.1 christos zstreamtest_tsan : $(ZSTREAMFILES) 200 1.1 christos $(LINK.c) $(MULTITHREAD) $^ -o $@$(EXT) 201 1.1 christos 202 1.1 christos CLEAN += zstreamtest_ubsan 203 1.1 christos zstreamtest_ubsan : CFLAGS += -fsanitize=undefined 204 1.1 christos zstreamtest_ubsan : $(ZSTREAMFILES) 205 1.1 christos $(LINK.c) $(MULTITHREAD) $^ -o $@$(EXT) 206 1.1 christos 207 1.1 christos # note : broken : requires symbols unavailable from dynamic library 208 1.1 christos zstreamtest-dll : $(LIB_SRCDIR)/common/xxhash.c # xxh symbols not exposed from dll 209 1.1 christos zstreamtest-dll : $(ZSTREAM_LOCAL_FILES) 210 1.1 christos $(CC) $(CPPFLAGS) $(CFLAGS) $(filter %.c,$^) $(LDFLAGS) -o $@$(EXT) 211 1.1 christos 212 1.1 christos CLEAN += paramgrill 213 1.1 christos paramgrill : DEBUGFLAGS = # turn off debug for speed measurements 214 1.1 christos paramgrill : LDLIBS += -lm 215 1.1 christos paramgrill : $(ZSTD_FILES) $(PRGDIR)/util.c $(PRGDIR)/timefn.c $(PRGDIR)/benchfn.c $(PRGDIR)/benchzstd.c $(PRGDIR)/datagen.c $(PRGDIR)/lorem.c paramgrill.c 216 1.1 christos 217 1.1 christos CLEAN += datagen 218 1.1 christos datagen : $(PRGDIR)/datagen.c $(PRGDIR)/lorem.c loremOut.c datagencli.c 219 1.1 christos $(LINK.c) $^ -o $@$(EXT) 220 1.1 christos 221 1.1 christos CLEAN += roundTripCrash 222 1.1 christos roundTripCrash: CFLAGS += $(MULTITHREAD) 223 1.1 christos roundTripCrash : $(ZSTD_OBJECTS) roundTripCrash.c 224 1.1 christos 225 1.1 christos CLEAN += longmatch 226 1.1 christos longmatch : $(ZSTD_OBJECTS) longmatch.c 227 1.1 christos 228 1.1.1.2 christos CLEAN += largeDictionary 229 1.1.1.2 christos largeDictionary: CFLAGS += $(MULTITHREAD) 230 1.1.1.2 christos largeDictionary: $(ZSTDMT_OBJECTS) $(PRGDIR)/datagen.c largeDictionary.c 231 1.1 christos 232 1.1 christos CLEAN += invalidDictionaries 233 1.1 christos invalidDictionaries : $(ZSTD_OBJECTS) invalidDictionaries.c 234 1.1 christos 235 1.1 christos CLEAN += legacy 236 1.1 christos legacy : CPPFLAGS += -UZSTD_LEGACY_SUPPORT -DZSTD_LEGACY_SUPPORT=4 237 1.1 christos legacy : $(ZSTD_FILES) legacy.c 238 1.1 christos 239 1.1 christos CLEAN += decodecorpus 240 1.1 christos decodecorpus : LDLIBS += -lm 241 1.1 christos decodecorpus : $(filter-out zstdc_zstd_compress.o, $(ZSTD_OBJECTS)) $(ZDICT_FILES) $(PRGDIR)/util.c $(PRGDIR)/timefn.c decodecorpus.c 242 1.1 christos 243 1.1 christos CLEAN += poolTests 244 1.1 christos poolTests : $(PRGDIR)/util.c $(PRGDIR)/timefn.c poolTests.c $(LIB_SRCDIR)/common/pool.c $(LIB_SRCDIR)/common/threading.c $(LIB_SRCDIR)/common/zstd_common.c $(LIB_SRCDIR)/common/error_private.c 245 1.1 christos $(LINK.c) $(MULTITHREAD) $^ -o $@$(EXT) 246 1.1 christos 247 1.1 christos .PHONY: versionsTest 248 1.1 christos versionsTest: clean 249 1.1 christos $(PYTHON) test-zstd-versions.py 250 1.1 christos 251 1.1 christos .PHONY: automated_benchmarking 252 1.1 christos automated_benchmarking: clean 253 1.1 christos $(PYTHON) automated_benchmarking.py 254 1.1 christos 255 1.1 christos # make checkTag : check that release tag corresponds to release version 256 1.1 christos CLEAN += checkTag 257 1.1 christos checkTag.o : $(LIB_SRCDIR)/zstd.h 258 1.1 christos 259 1.1 christos .PHONY: clean 260 1.1 christos clean: 261 1.1 christos $(MAKE) -C $(LIB_SRCDIR) clean 262 1.1 christos $(MAKE) -C $(PRGDIR) clean 263 1.1 christos $(MAKE) -C fuzz clean 264 1.1 christos $(RM) -R $(TESTARTEFACT) 265 1.1 christos $(RM) -r tmp* # some test directories are named tmp* 266 1.1 christos $(RM) $(CLEAN) core *.o *.tmp result* *.gcda dictionary *.zst \ 267 1.1 christos $(PRGDIR)/zstd$(EXT) $(PRGDIR)/zstd32$(EXT) \ 268 1.1 christos fullbench-dll$(EXT) fuzzer-dll$(EXT) zstreamtest-dll$(EXT) 269 1.1 christos @echo Cleaning completed 270 1.1 christos 271 1.1 christos 272 1.1 christos #---------------------------------------------------------------------------------- 273 1.1 christos # valgrind tests validated only for some posix platforms 274 1.1 christos #---------------------------------------------------------------------------------- 275 1.1.1.2 christos UNAME := $(shell sh -c 'MSYSTEM="MSYS" uname') 276 1.1.1.2 christos ifneq (,$(filter Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS AIX CYGWIN_NT%,$(UNAME))) 277 1.1 christos HOST_OS = POSIX 278 1.1 christos 279 1.1 christos .PHONY: test-valgrind 280 1.1 christos test-valgrind: VALGRIND = valgrind --leak-check=full --show-leak-kinds=all --error-exitcode=1 281 1.1 christos test-valgrind: zstd datagen fuzzer fullbench 282 1.1 christos @echo "\n ---- valgrind tests : memory analyzer ----" 283 1.1 christos $(VALGRIND) ./datagen -g50M > $(VOID) 284 1.1 christos $(VALGRIND) $(PRGDIR)/zstd ; if [ $$? -eq 0 ] ; then echo "zstd without argument should have failed"; false; fi 285 1.1 christos ./datagen -g80 | $(VALGRIND) $(PRGDIR)/zstd - -c > $(VOID) 286 1.1 christos ./datagen -g16KB | $(VALGRIND) $(PRGDIR)/zstd -vf - -c > $(VOID) 287 1.1 christos ./datagen -g2930KB | $(VALGRIND) $(PRGDIR)/zstd -5 -vf - -o tmp 288 1.1 christos $(VALGRIND) $(PRGDIR)/zstd -vdf tmp -c > $(VOID) 289 1.1 christos ./datagen -g64MB | $(VALGRIND) $(PRGDIR)/zstd -vf - -c > $(VOID) 290 1.1 christos $(RM) tmp 291 1.1 christos $(VALGRIND) ./fuzzer -T1mn -t1 292 1.1 christos $(VALGRIND) ./fullbench -i1 293 1.1 christos 294 1.1 christos endif 295 1.1 christos 296 1.1 christos ifneq (,$(filter MINGW% MSYS%,$(UNAME))) 297 1.1 christos HOST_OS = MSYS 298 1.1 christos endif 299 1.1 christos 300 1.1 christos 301 1.1 christos #----------------------------------------------------------------------------- 302 1.1 christos # make tests validated only for below targets 303 1.1 christos #----------------------------------------------------------------------------- 304 1.1.1.2 christos ifneq (,$(filter MSYS POSIX,$(HOST_OS))) 305 1.1 christos 306 1.1 christos DIFF:=diff 307 1.1.1.2 christos ifneq (,$(filter SunOS,$(UNAME))) 308 1.1 christos DIFF:=gdiff 309 1.1 christos endif 310 1.1 christos 311 1.1 christos .PHONY: list 312 1.1 christos list: 313 1.1 christos @$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' | xargs 314 1.1 christos 315 1.1 christos .PHONY: check 316 1.1.1.2 christos check: ZSTDRTTEST= # remove long tests 317 1.1.1.2 christos check: test-zstd 318 1.1.1.2 christos @echo "\n******************************" 319 1.1.1.2 christos @echo "All tests completed successfully" 320 1.1.1.2 christos @echo "******************************" 321 1.1 christos 322 1.1 christos .PHONY: fuzztest 323 1.1 christos fuzztest: test-fuzzer test-zstream test-decodecorpus 324 1.1 christos 325 1.1 christos .PHONY: test 326 1.1 christos test: test-zstd test-cli-tests test-fullbench test-fuzzer test-zstream test-invalidDictionaries test-legacy test-decodecorpus 327 1.1 christos ifeq ($(QEMU_SYS),) 328 1.1 christos test: test-pool 329 1.1 christos endif 330 1.1.1.2 christos @echo "\n******************************" 331 1.1.1.2 christos @echo "All tests completed successfully" 332 1.1.1.2 christos @echo "******************************" 333 1.1 christos 334 1.1 christos .PHONY: test32 335 1.1 christos test32: test-zstd32 test-fullbench32 test-fuzzer32 test-zstream32 336 1.1 christos 337 1.1 christos .PHONY: test-all 338 1.1 christos test-all: test test32 test-decodecorpus-cli 339 1.1 christos 340 1.1 christos .PHONY: test-zstd test-zstd32 test-zstd-nolegacy 341 1.1 christos test-zstd: ZSTD = $(PRGDIR)/zstd 342 1.1 christos test-zstd: zstd 343 1.1 christos 344 1.1 christos .PHONY: test-zstd-dll 345 1.1 christos test-zstd-dll: ZSTD = $(PRGDIR)/zstd 346 1.1 christos test-zstd-dll: zstd-dll 347 1.1 christos 348 1.1 christos test-zstd32: ZSTD = $(PRGDIR)/zstd32 349 1.1 christos test-zstd32: zstd32 350 1.1 christos 351 1.1 christos test-zstd-nolegacy: ZSTD = $(PRGDIR)/zstd-nolegacy 352 1.1 christos test-zstd-nolegacy: zstd-nolegacy 353 1.1 christos 354 1.1 christos test-zstd test-zstd32 test-zstd-nolegacy test-zstd-dll: datagen 355 1.1 christos file $(ZSTD) 356 1.1 christos EXE_PREFIX="$(QEMU_SYS)" ZSTD_BIN="$(ZSTD)" DATAGEN_BIN=./datagen ./playTests.sh $(ZSTDRTTEST) 357 1.1 christos 358 1.1 christos .PHONY: test-cli-tests 359 1.1 christos test-cli-tests: ZSTD = $(PRGDIR)/zstd 360 1.1 christos test-cli-tests: zstd datagen 361 1.1 christos file $(ZSTD) 362 1.1 christos ./cli-tests/run.py --exec-prefix="$(QEMU_SYS)" --zstd="$(ZSTD)" --datagen=./datagen 363 1.1 christos 364 1.1 christos .PHONY: test-fullbench 365 1.1 christos test-fullbench: fullbench datagen 366 1.1 christos $(QEMU_SYS) ./fullbench -i1 367 1.1 christos $(QEMU_SYS) ./fullbench -i1 -P0 368 1.1 christos 369 1.1 christos .PHONY: test-fullbench32 370 1.1 christos test-fullbench32: fullbench32 datagen 371 1.1 christos $(QEMU_SYS) ./fullbench32 -i1 372 1.1 christos $(QEMU_SYS) ./fullbench32 -i1 -P0 373 1.1 christos 374 1.1 christos .PHONY: test-fuzzer 375 1.1 christos test-fuzzer: fuzzer 376 1.1 christos $(QEMU_SYS) ./fuzzer -v $(FUZZERTEST) $(FUZZER_FLAGS) 377 1.1 christos 378 1.1 christos # Note : this test presumes `fuzzer` will be built 379 1.1 christos .PHONY: test-fuzzer-stackmode 380 1.1 christos test-fuzzer-stackmode: MOREFLAGS += -DZSTD_HEAPMODE=0 381 1.1 christos test-fuzzer-stackmode: test-fuzzer 382 1.1 christos 383 1.1 christos .PHONY: test-fuzzer32 384 1.1 christos test-fuzzer32: fuzzer32 385 1.1 christos $(QEMU_SYS) ./fuzzer32 -v $(FUZZERTEST) $(FUZZER_FLAGS) 386 1.1 christos 387 1.1 christos .PHONY: test-zstream 388 1.1 christos test-zstream: zstreamtest 389 1.1 christos $(QEMU_SYS) ./zstreamtest -v $(ZSTREAM_TESTTIME) $(FUZZER_FLAGS) 390 1.1 christos $(QEMU_SYS) ./zstreamtest --newapi -t1 $(ZSTREAM_TESTTIME) $(FUZZER_FLAGS) 391 1.1 christos 392 1.1 christos test-zstream32: zstreamtest32 393 1.1 christos $(QEMU_SYS) ./zstreamtest32 -v $(ZSTREAM_TESTTIME) $(FUZZER_FLAGS) 394 1.1 christos 395 1.1 christos test-longmatch: longmatch 396 1.1 christos $(QEMU_SYS) ./longmatch 397 1.1 christos 398 1.1.1.2 christos test-largeDictionary: largeDictionary 399 1.1.1.2 christos $(QEMU_SYS) ./largeDictionary 400 1.1 christos 401 1.1 christos test-invalidDictionaries: invalidDictionaries 402 1.1 christos $(QEMU_SYS) ./invalidDictionaries 403 1.1 christos 404 1.1 christos test-legacy: legacy 405 1.1 christos $(QEMU_SYS) ./legacy 406 1.1 christos 407 1.1 christos test-decodecorpus: decodecorpus 408 1.1 christos $(QEMU_SYS) ./decodecorpus -t $(DECODECORPUS_TESTTIME) 409 1.1 christos 410 1.1 christos test-decodecorpus-cli: decodecorpus 411 1.1 christos @echo "\n ---- decodecorpus basic cli tests ----" 412 1.1 christos @mkdir testdir 413 1.1 christos ./decodecorpus -n5 -otestdir -ptestdir 414 1.1 christos @cd testdir && \ 415 1.1 christos $(ZSTD) -d z000000.zst -o tmp0 && \ 416 1.1 christos $(ZSTD) -d z000001.zst -o tmp1 && \ 417 1.1 christos $(ZSTD) -d z000002.zst -o tmp2 && \ 418 1.1 christos $(ZSTD) -d z000003.zst -o tmp3 && \ 419 1.1 christos $(ZSTD) -d z000004.zst -o tmp4 && \ 420 1.1 christos diff z000000 tmp0 && \ 421 1.1 christos diff z000001 tmp1 && \ 422 1.1 christos diff z000002 tmp2 && \ 423 1.1 christos diff z000003 tmp3 && \ 424 1.1 christos diff z000004 tmp4 && \ 425 1.1 christos rm ./* && \ 426 1.1 christos cd .. 427 1.1 christos @echo "\n ---- decodecorpus dictionary cli tests ----" 428 1.1 christos ./decodecorpus -n5 -otestdir -ptestdir --use-dict=1MB 429 1.1 christos @cd testdir && \ 430 1.1 christos $(ZSTD) -d z000000.zst -D dictionary -o tmp0 && \ 431 1.1 christos $(ZSTD) -d z000001.zst -D dictionary -o tmp1 && \ 432 1.1 christos $(ZSTD) -d z000002.zst -D dictionary -o tmp2 && \ 433 1.1 christos $(ZSTD) -d z000003.zst -D dictionary -o tmp3 && \ 434 1.1 christos $(ZSTD) -d z000004.zst -D dictionary -o tmp4 && \ 435 1.1 christos diff z000000 tmp0 && \ 436 1.1 christos diff z000001 tmp1 && \ 437 1.1 christos diff z000002 tmp2 && \ 438 1.1 christos diff z000003 tmp3 && \ 439 1.1 christos diff z000004 tmp4 && \ 440 1.1 christos cd .. 441 1.1 christos @rm -rf testdir 442 1.1 christos 443 1.1 christos test-pool: poolTests 444 1.1 christos $(QEMU_SYS) ./poolTests 445 1.1 christos 446 1.1 christos test-lz4: ZSTD = LD_LIBRARY_PATH=/usr/local/lib $(PRGDIR)/zstd 447 1.1 christos test-lz4: ZSTD_LZ4 = LD_LIBRARY_PATH=/usr/local/lib ./lz4 448 1.1 christos test-lz4: ZSTD_UNLZ4 = LD_LIBRARY_PATH=/usr/local/lib ./unlz4 449 1.1 christos test-lz4: zstd decodecorpus datagen 450 1.1 christos [ -f lz4 ] || ln -s $(PRGDIR)/zstd lz4 451 1.1 christos [ -f unlz4 ] || ln -s $(PRGDIR)/zstd unlz4 452 1.1 christos 453 1.1 christos ./decodecorpus -ptmp 454 1.1 christos # lz4 -> zstd 455 1.1 christos lz4 < tmp | \ 456 1.1 christos $(ZSTD) -d | \ 457 1.1 christos cmp - tmp 458 1.1 christos lz4 < tmp | \ 459 1.1 christos $(ZSTD_UNLZ4) | \ 460 1.1 christos cmp - tmp 461 1.1 christos # zstd -> lz4 462 1.1 christos $(ZSTD) --format=lz4 < tmp | \ 463 1.1 christos lz4 -d | \ 464 1.1 christos cmp - tmp 465 1.1 christos $(ZSTD_LZ4) < tmp | \ 466 1.1 christos lz4 -d | \ 467 1.1 christos cmp - tmp 468 1.1 christos # zstd -> zstd 469 1.1 christos $(ZSTD) --format=lz4 < tmp | \ 470 1.1 christos $(ZSTD) -d | \ 471 1.1 christos cmp - tmp 472 1.1 christos # zstd -> zstd 473 1.1 christos $(ZSTD) < tmp | \ 474 1.1 christos $(ZSTD) -d | \ 475 1.1 christos cmp - tmp 476 1.1 christos 477 1.1 christos ./datagen -g384KB | $(ZSTD) --format=lz4 | $(ZSTD) -d > /dev/null 478 1.1 christos 479 1.1 christos rm tmp lz4 unlz4 480 1.1 christos 481 1.1 christos endif 482