Home | History | Annotate | Line # | Download | only in tests
Makefile revision 1.1.1.2
      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