1
1
2
- # ################################################################
2
+ # ################################################################
3
3
# Copyright (c) Yann Collet, Facebook, Inc.
4
4
# All rights reserved.
5
5
#
@@ -37,7 +37,7 @@ TESTARTEFACT := versionsTest
37
37
DEBUGFLAGS += -g -Wno-c++-compat
38
38
CPPFLAGS += -I$(ZSTDDIR ) -I$(ZSTDDIR ) /common -I$(ZSTDDIR ) /compress \
39
39
-I$(ZSTDDIR ) /dictBuilder -I$(ZSTDDIR ) /deprecated -I$(PRGDIR ) \
40
- -DZSTD_WINDOW_OVERFLOW_CORRECT_FREQUENTLY=1
40
+ -DZSTD_WINDOW_OVERFLOW_CORRECT_FREQUENTLY=1
41
41
42
42
ZSTDCOMMON_FILES := $(sort $(ZSTD_COMMON_FILES ) )
43
43
ZSTDCOMP_FILES := $(sort $(ZSTD_COMPRESS_FILES ) )
@@ -134,14 +134,17 @@ zstdmt_d_%.o : $(ZSTDDIR)/decompress/%.c
134
134
zstdmt_d_% .o : $(ZSTDDIR ) /decompress/% .S
135
135
$(CC ) -c $(CPPFLAGS ) $(ASFLAGS ) $< -o $@
136
136
137
+ FULLBENCHS := fullbench fullbench32
138
+ CLEAN += $(FULLBENCHS )
137
139
fullbench32 : CPPFLAGS += -m32
138
- fullbench fullbench32 : CPPFLAGS += $(MULTITHREAD_CPP ) -Wno-deprecated-declarations
139
- fullbench fullbench32 : LDFLAGS += $(MULTITHREAD_LD )
140
- fullbench fullbench32 : DEBUGFLAGS = -DNDEBUG # turn off assert() for speed measurements
141
- fullbench fullbench32 : $(ZSTD_FILES )
142
- fullbench fullbench32 : $(PRGDIR ) /datagen.c $(PRGDIR ) /util.c $(PRGDIR ) /timefn.c $(PRGDIR ) /benchfn.c fullbench.c
140
+ $( FULLBENCHS ) : CPPFLAGS += $(MULTITHREAD_CPP ) -Wno-deprecated-declarations
141
+ $( FULLBENCHS ) : LDFLAGS += $(MULTITHREAD_LD )
142
+ $( FULLBENCHS ) : DEBUGFLAGS = -DNDEBUG # turn off assert() for speed measurements
143
+ $( FULLBENCHS ) : $(ZSTD_FILES )
144
+ $( FULLBENCHS ) : $(PRGDIR ) /datagen.c $(PRGDIR ) /util.c $(PRGDIR ) /timefn.c $(PRGDIR ) /benchfn.c fullbench.c
143
145
$(LINK.c ) $^ -o $@ $(EXT )
144
146
147
+ CLEAN += fullbench-lib
145
148
fullbench-lib : CPPFLAGS += -DXXH_NAMESPACE=ZSTD_
146
149
fullbench-lib : $(PRGDIR ) /datagen.c $(PRGDIR ) /util.c $(PRGDIR ) /timefn.c $(PRGDIR ) /benchfn.c $(ZSTDDIR ) /libzstd.a fullbench.c
147
150
$(LINK.c ) $^ -o $@ $(EXT )
@@ -151,6 +154,7 @@ fullbench-dll: $(PRGDIR)/datagen.c $(PRGDIR)/util.c $(PRGDIR)/benchfn.c $(PRGDIR
151
154
# $(CC) $(FLAGS) $(filter %.c,$^) -o $@$(EXT) -DZSTD_DLL_IMPORT=1 $(ZSTDDIR)/dll/libzstd.dll
152
155
$(LINK.c) $^ $(LDLIBS) -o $@$(EXT)
153
156
157
+ CLEAN += fuzzer fuzzer32
154
158
fuzzer : CPPFLAGS += $(MULTITHREAD_CPP ) -Wno-deprecated-declarations
155
159
fuzzer : LDFLAGS += $(MULTITHREAD_LD )
156
160
fuzzer : $(ZSTDMT_OBJECTS )
@@ -164,6 +168,7 @@ fuzzer32 : $(ZSTD_FILES)
164
168
fuzzer-dll : $(ZSTDDIR ) /common/xxhash.c $(PRGDIR ) /util.c $(PRGDIR ) /timefn.c $(PRGDIR ) /datagen.c fuzzer.c
165
169
$(CC ) $(CPPFLAGS ) $(CFLAGS ) $(filter % .c,$^ ) $(LDFLAGS ) -o $@ $(EXT )
166
170
171
+ CLEAN += zstreamtest zstreamtest32
167
172
ZSTREAM_LOCAL_FILES := $(PRGDIR ) /datagen.c $(PRGDIR ) /util.c $(PRGDIR ) /timefn.c seqgen.c zstreamtest.c
168
173
ZSTREAM_PROPER_FILES := $(ZDICT_FILES ) $(ZSTREAM_LOCAL_FILES )
169
174
ZSTREAMFILES := $(ZSTD_FILES ) $(ZSTREAM_PROPER_FILES )
@@ -175,10 +180,12 @@ zstreamtest32 : $(ZSTREAMFILES)
175
180
zstreamtest zstreamtest32 :
176
181
$(LINK.c ) $^ -o $@ $(EXT )
177
182
183
+ CLEAN += zstreamtest_asan
178
184
zstreamtest_asan : CFLAGS += -fsanitize=address
179
185
zstreamtest_asan : $(ZSTREAMFILES )
180
186
$(LINK.c ) $(MULTITHREAD ) $^ -o $@ $(EXT )
181
187
188
+ CLEAN += zstreamtest_tsan
182
189
zstreamtest_tsan : CFLAGS += -fsanitize=thread
183
190
zstreamtest_tsan : $(ZSTREAMFILES )
184
191
$(LINK.c ) $(MULTITHREAD ) $^ -o $@ $(EXT )
@@ -188,29 +195,38 @@ zstreamtest-dll : $(ZSTDDIR)/common/xxhash.c # xxh symbols not exposed from dll
188
195
zstreamtest-dll : $(ZSTREAM_LOCAL_FILES )
189
196
$(CC ) $(CPPFLAGS ) $(CFLAGS ) $(filter % .c,$^ ) $(LDFLAGS ) -o $@ $(EXT )
190
197
198
+ CLEAN += paramgrill
191
199
paramgrill : DEBUGFLAGS = # turn off debug for speed measurements
192
200
paramgrill : LDLIBS += -lm
193
201
paramgrill : $(ZSTD_FILES ) $(PRGDIR ) /util.c $(PRGDIR ) /timefn.c $(PRGDIR ) /benchfn.c $(PRGDIR ) /benchzstd.c $(PRGDIR ) /datagen.c paramgrill.c
194
202
203
+ CLEAN += datagen
195
204
datagen : $(PRGDIR ) /datagen.c datagencli.c
196
205
$(LINK.c ) $^ -o $@ $(EXT )
197
206
207
+ CLEAN += roundTripCrash
198
208
roundTripCrash : CFLAGS += $(MULTITHREAD )
199
209
roundTripCrash : $(ZSTD_OBJECTS ) roundTripCrash.c
200
210
211
+ CLEAN += longmatch
201
212
longmatch : $(ZSTD_OBJECTS ) longmatch.c
202
213
214
+ CLEAN += bigdict
203
215
bigdict : CFLAGS += $(MULTITHREAD )
204
216
bigdict : $(ZSTDMT_OBJECTS ) $(PRGDIR ) /datagen.c bigdict.c
205
217
218
+ CLEAN += invalidDictionaries
206
219
invalidDictionaries : $(ZSTD_OBJECTS ) invalidDictionaries.c
207
220
221
+ CLEAN += legacy
208
222
legacy : CPPFLAGS += -I$(ZSTDDIR ) /legacy -UZSTD_LEGACY_SUPPORT -DZSTD_LEGACY_SUPPORT=4
209
223
legacy : $(ZSTD_FILES ) $(sort $(wildcard $(ZSTDDIR ) /legacy/* .c) ) legacy.c
210
224
225
+ CLEAN += decodecorpus
211
226
decodecorpus : LDLIBS += -lm
212
227
decodecorpus : $(filter-out zstdc_zstd_compress.o, $(ZSTD_OBJECTS ) ) $(ZDICT_FILES ) $(PRGDIR ) /util.c $(PRGDIR ) /timefn.c decodecorpus.c
213
228
229
+ CLEAN += poolTests
214
230
poolTests : $(PRGDIR ) /util.c $(PRGDIR ) /timefn.c poolTests.c $(ZSTDDIR ) /common/pool.c $(ZSTDDIR ) /common/threading.c $(ZSTDDIR ) /common/zstd_common.c $(ZSTDDIR ) /common/error_private.c
215
231
$(LINK.c ) $(MULTITHREAD ) $^ -o $@ $(EXT )
216
232
@@ -222,7 +238,8 @@ versionsTest: clean
222
238
automated_benchmarking : clean
223
239
$(PYTHON ) automated_benchmarking.py
224
240
225
- # make checkTag
241
+ # make checkTag : check that release tag corresponds to release version
242
+ CLEAN += checkTag
226
243
checkTag.o : $(ZSTDDIR ) /zstd.h
227
244
228
245
.PHONY : clean
@@ -231,28 +248,22 @@ clean:
231
248
$(MAKE ) -C $(PRGDIR ) clean
232
249
$(RM ) -fR $(TESTARTEFACT )
233
250
$(RM ) -rf tmp* # some test directories are named tmp*
234
- $(RM ) core * .o * .tmp result* * .gcda dictionary * .zst \
251
+ $(RM ) $( CLEAN ) core * .o * .tmp result* * .gcda dictionary * .zst \
235
252
$(PRGDIR)/zstd$(EXT) $(PRGDIR)/zstd32$(EXT) \
236
- fullbench$(EXT) fullbench32$(EXT) \
237
- fullbench-lib$(EXT) fullbench-dll$(EXT) \
238
- fuzzer$(EXT) fuzzer32$(EXT) \
239
- fuzzer-dll$(EXT) zstreamtest-dll$(EXT) \
240
- zstreamtest$(EXT) zstreamtest32$(EXT) \
241
- datagen$(EXT) paramgrill$(EXT) roundTripCrash$(EXT) longmatch$(EXT) \
242
- symbols$(EXT) invalidDictionaries$(EXT) legacy$(EXT) poolTests$(EXT) \
243
- decodecorpus$(EXT) checkTag$(EXT) bigdict$(EXT)
253
+ fullbench-dll$(EXT) fuzzer-dll$(EXT) zstreamtest-dll$(EXT)
244
254
@echo Cleaning completed
245
255
246
256
247
257
# ----------------------------------------------------------------------------------
248
- # valgrind tests are validated only for some posix platforms
258
+ # valgrind tests validated only for some posix platforms
249
259
# ----------------------------------------------------------------------------------
250
260
UNAME := $(shell uname)
251
261
ifneq (,$(filter $(UNAME ) ,Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS AIX) )
252
262
HOST_OS = POSIX
253
263
254
- valgrindTest : VALGRIND = valgrind --leak-check=full --show-leak-kinds=all --error-exitcode=1
255
- valgrindTest : zstd datagen fuzzer fullbench
264
+ .PHONY : test-valgrind
265
+ test-valgrind : VALGRIND = valgrind --leak-check=full --show-leak-kinds=all --error-exitcode=1
266
+ test-valgrind : zstd datagen fuzzer fullbench
256
267
@echo " \n ---- valgrind tests : memory analyzer ----"
257
268
$(VALGRIND ) ./datagen -g50M > $(VOID )
258
269
$(VALGRIND ) $(PRGDIR ) /zstd ; if [ $$ ? -eq 0 ] ; then echo " zstd without argument should have failed" ; false ; fi
@@ -261,7 +272,7 @@ valgrindTest: zstd datagen fuzzer fullbench
261
272
./datagen -g2930KB | $(VALGRIND ) $(PRGDIR ) /zstd -5 -vf - -o tmp
262
273
$(VALGRIND ) $(PRGDIR ) /zstd -vdf tmp -c > $(VOID )
263
274
./datagen -g64MB | $(VALGRIND ) $(PRGDIR ) /zstd -vf - -c > $(VOID )
264
- @rm tmp
275
+ $( RM ) tmp
265
276
$(VALGRIND ) ./fuzzer -T1mn -t1
266
277
$(VALGRIND ) ./fullbench -i1
267
278
@@ -306,9 +317,9 @@ endif
306
317
test32 : test-zstd32 test-fullbench32 test-fuzzer32 test-zstream32
307
318
308
319
.PHONY : test-all
309
- test-all : test test32 valgrindTest test-decodecorpus-cli
320
+ test-all : test test32 test-decodecorpus-cli
310
321
311
- .PHONY : test-zstd test-zstd32 test-zstd-nolegacy test-zstdgrep
322
+ .PHONY : test-zstd test-zstd32 test-zstd-nolegacy
312
323
test-zstd : ZSTD = $(PRGDIR ) /zstd
313
324
test-zstd : zstd
314
325
@@ -322,29 +333,36 @@ test-zstd test-zstd32 test-zstd-nolegacy: datagen
322
333
file $(ZSTD )
323
334
EXE_PREFIX=" $( QEMU_SYS) " ZSTD_BIN=" $( ZSTD) " DATAGEN_BIN=./datagen ./playTests.sh $(ZSTDRTTEST )
324
335
336
+ .PHONY : test-cli-tests
325
337
test-cli-tests : ZSTD = $(PRGDIR ) /zstd
326
338
test-cli-tests : zstd datagen
327
339
file $(ZSTD )
328
340
./cli-tests/run.py --exec-prefix=" $( QEMU_SYS) " --zstd=" $( ZSTD) " --datagen=./datagen
329
341
330
-
342
+ .PHONY : test-fullbench
331
343
test-fullbench : fullbench datagen
332
344
$(QEMU_SYS ) ./fullbench -i1
333
345
$(QEMU_SYS ) ./fullbench -i1 -P0
334
346
347
+ .PHONY : test-fullbench32
335
348
test-fullbench32 : fullbench32 datagen
336
349
$(QEMU_SYS ) ./fullbench32 -i1
337
350
$(QEMU_SYS ) ./fullbench32 -i1 -P0
338
351
352
+ .PHONY : test-fuzzer
339
353
test-fuzzer : fuzzer
340
354
$(QEMU_SYS ) ./fuzzer -v $(FUZZERTEST ) $(FUZZER_FLAGS )
341
355
356
+ # Note : this test presumes `fuzzer` will be built
357
+ .PHONY : test-fuzzer-stackmode
342
358
test-fuzzer-stackmode : MOREFLAGS += -DZSTD_HEAPMODE=0
343
359
test-fuzzer-stackmode : test-fuzzer
344
360
361
+ .PHONY : test-fuzzer32
345
362
test-fuzzer32 : fuzzer32
346
363
$(QEMU_SYS ) ./fuzzer32 -v $(FUZZERTEST ) $(FUZZER_FLAGS )
347
364
365
+ .PHONY : test-zstream
348
366
test-zstream : zstreamtest
349
367
$(QEMU_SYS ) ./zstreamtest -v $(ZSTREAM_TESTTIME ) $(FUZZER_FLAGS )
350
368
$(QEMU_SYS ) ./zstreamtest --newapi -t1 $(ZSTREAM_TESTTIME ) $(FUZZER_FLAGS )
0 commit comments