1*22ce4affSfengbojiang# Makefile for example of using zstd wrapper for zlib 2*22ce4affSfengbojiang# 3*22ce4affSfengbojiang# make - compiles examples 4*22ce4affSfengbojiang# make MOREFLAGS=-DZWRAP_USE_ZSTD=1 - compiles examples with zstd compression turned on 5*22ce4affSfengbojiang# make test - runs examples 6*22ce4affSfengbojiang 7*22ce4affSfengbojiang 8*22ce4affSfengbojiang# Paths to static and dynamic zlib and zstd libraries 9*22ce4affSfengbojiang# Use "make ZLIB_PATH=path/to/zlib ZLIB_LIBRARY=path/to/libz.a" to select a path to library 10*22ce4affSfengbojiangZLIB_LIBRARY ?= -lz 11*22ce4affSfengbojiangZLIB_PATH ?= . 12*22ce4affSfengbojiang 13*22ce4affSfengbojiangZSTDLIBDIR = ../lib 14*22ce4affSfengbojiangZSTDLIBRARY = $(ZSTDLIBDIR)/libzstd.a 15*22ce4affSfengbojiangZLIBWRAPPER_PATH = . 16*22ce4affSfengbojiangGZFILES = gzclose.o gzlib.o gzread.o gzwrite.o 17*22ce4affSfengbojiangEXAMPLE_PATH = examples 18*22ce4affSfengbojiangPROGRAMS_PATH = ../programs 19*22ce4affSfengbojiangTEST_FILE = ../doc/zstd_compression_format.md 20*22ce4affSfengbojiang 21*22ce4affSfengbojiangVPATH = $(PROGRAMS_PATH) 22*22ce4affSfengbojiang 23*22ce4affSfengbojiangCPPFLAGS += -DXXH_NAMESPACE=ZSTD_ -I$(ZLIB_PATH) -I$(PROGRAMS_PATH) \ 24*22ce4affSfengbojiang -I$(ZSTDLIBDIR) -I$(ZSTDLIBDIR)/common -I$(ZLIBWRAPPER_PATH) 25*22ce4affSfengbojiangSTDFLAGS = -std=c89 -pedantic -Wno-long-long -Wno-variadic-macros -Wc++-compat \ 26*22ce4affSfengbojiang -DNO_snprintf -DNO_vsnprintf # strict ANSI C89 is missing these prototypes 27*22ce4affSfengbojiangDEBUGFLAGS= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow -Wswitch-enum \ 28*22ce4affSfengbojiang -Wdeclaration-after-statement -Wstrict-prototypes -Wundef \ 29*22ce4affSfengbojiang -Wstrict-aliasing=1 30*22ce4affSfengbojiangCFLAGS ?= -O3 31*22ce4affSfengbojiangCFLAGS += $(STDFLAGS) $(DEBUGFLAGS) $(MOREFLAGS) 32*22ce4affSfengbojiang 33*22ce4affSfengbojiang# Define *.exe as extension for Windows systems 34*22ce4affSfengbojiangifneq (,$(filter Windows%,$(OS))) 35*22ce4affSfengbojiangEXT =.exe 36*22ce4affSfengbojiangelse 37*22ce4affSfengbojiangEXT = 38*22ce4affSfengbojiangendif 39*22ce4affSfengbojiang 40*22ce4affSfengbojiangdefault : release 41*22ce4affSfengbojiang 42*22ce4affSfengbojiangrelease : STDFLAGS = 43*22ce4affSfengbojiangrelease : DEBUGFLAGS = 44*22ce4affSfengbojiangrelease : all 45*22ce4affSfengbojiang 46*22ce4affSfengbojiangall: fitblk example zwrapbench minigzip 47*22ce4affSfengbojiang 48*22ce4affSfengbojiangtest: example fitblk example_zstd fitblk_zstd zwrapbench minigzip minigzip_zstd 49*22ce4affSfengbojiang ./example 50*22ce4affSfengbojiang ./example_zstd 51*22ce4affSfengbojiang ./fitblk 10240 <$(TEST_FILE) 52*22ce4affSfengbojiang ./fitblk 40960 <$(TEST_FILE) 53*22ce4affSfengbojiang ./fitblk_zstd 10240 <$(TEST_FILE) 54*22ce4affSfengbojiang ./fitblk_zstd 40960 <$(TEST_FILE) 55*22ce4affSfengbojiang @echo ---- minigzip start ---- 56*22ce4affSfengbojiang ./minigzip_zstd example$(EXT) 57*22ce4affSfengbojiang #cp example$(EXT).gz example$(EXT)_zstd.gz 58*22ce4affSfengbojiang ./minigzip_zstd -d example$(EXT).gz 59*22ce4affSfengbojiang ./minigzip example$(EXT) 60*22ce4affSfengbojiang #cp example$(EXT).gz example$(EXT)_gz.gz 61*22ce4affSfengbojiang ./minigzip_zstd -d example$(EXT).gz 62*22ce4affSfengbojiang @echo ---- minigzip end ---- 63*22ce4affSfengbojiang ./zwrapbench -qi1b3B1K $(TEST_FILE) 64*22ce4affSfengbojiang ./zwrapbench -rqi1b1e5 ../lib ../programs ../tests 65*22ce4affSfengbojiang 66*22ce4affSfengbojiang#valgrindTest: ZSTDLIBRARY = $(ZSTDLIBDIR)/libzstd.so 67*22ce4affSfengbojiangvalgrindTest: VALGRIND = LD_LIBRARY_PATH=$(ZSTDLIBDIR) valgrind --track-origins=yes --leak-check=full --error-exitcode=1 68*22ce4affSfengbojiangvalgrindTest: clean example fitblk example_zstd fitblk_zstd zwrapbench 69*22ce4affSfengbojiang @echo "\n ---- valgrind tests ----" 70*22ce4affSfengbojiang $(VALGRIND) ./example 71*22ce4affSfengbojiang $(VALGRIND) ./example_zstd 72*22ce4affSfengbojiang $(VALGRIND) ./fitblk 10240 <$(TEST_FILE) 73*22ce4affSfengbojiang $(VALGRIND) ./fitblk 40960 <$(TEST_FILE) 74*22ce4affSfengbojiang $(VALGRIND) ./fitblk_zstd 10240 <$(TEST_FILE) 75*22ce4affSfengbojiang $(VALGRIND) ./fitblk_zstd 40960 <$(TEST_FILE) 76*22ce4affSfengbojiang $(VALGRIND) ./zwrapbench -qi1b3B1K $(TEST_FILE) 77*22ce4affSfengbojiang $(VALGRIND) ./zwrapbench -rqi1b1e5 ../lib ../programs ../tests 78*22ce4affSfengbojiang 79*22ce4affSfengbojiang#.c.o: 80*22ce4affSfengbojiang# $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ 81*22ce4affSfengbojiang 82*22ce4affSfengbojiangminigzip: $(EXAMPLE_PATH)/minigzip.o zstd_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY) 83*22ce4affSfengbojiang $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZSTDLIBRARY) $(ZLIB_LIBRARY) -o $@ 84*22ce4affSfengbojiang 85*22ce4affSfengbojiangminigzip_zstd: $(EXAMPLE_PATH)/minigzip.o zstdTurnedOn_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY) 86*22ce4affSfengbojiang $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZSTDLIBRARY) $(ZLIB_LIBRARY) -o $@ 87*22ce4affSfengbojiang 88*22ce4affSfengbojiangexample: $(EXAMPLE_PATH)/example.o zstd_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY) 89*22ce4affSfengbojiang $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZLIB_LIBRARY) -o $@ 90*22ce4affSfengbojiang 91*22ce4affSfengbojiangexample_zstd: $(EXAMPLE_PATH)/example.o zstdTurnedOn_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY) 92*22ce4affSfengbojiang $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZLIB_LIBRARY) -o $@ 93*22ce4affSfengbojiang 94*22ce4affSfengbojiangfitblk: $(EXAMPLE_PATH)/fitblk.o zstd_zlibwrapper.o $(ZSTDLIBRARY) 95*22ce4affSfengbojiang $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZLIB_LIBRARY) -o $@ 96*22ce4affSfengbojiang 97*22ce4affSfengbojiangfitblk_zstd: $(EXAMPLE_PATH)/fitblk.o zstdTurnedOn_zlibwrapper.o $(ZSTDLIBRARY) 98*22ce4affSfengbojiang $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZLIB_LIBRARY) -o $@ 99*22ce4affSfengbojiang 100*22ce4affSfengbojiangzwrapbench: $(EXAMPLE_PATH)/zwrapbench.o zstd_zlibwrapper.o util.o timefn.o datagen.o $(ZSTDLIBRARY) 101*22ce4affSfengbojiang $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZLIB_LIBRARY) -o $@ 102*22ce4affSfengbojiang 103*22ce4affSfengbojiang 104*22ce4affSfengbojiangzstd_zlibwrapper.o: $(ZLIBWRAPPER_PATH)/zstd_zlibwrapper.c $(ZLIBWRAPPER_PATH)/zstd_zlibwrapper.h 105*22ce4affSfengbojiang 106*22ce4affSfengbojiangzstdTurnedOn_zlibwrapper.o: CPPFLAGS += -DZWRAP_USE_ZSTD=1 107*22ce4affSfengbojiangzstdTurnedOn_zlibwrapper.o: $(ZLIBWRAPPER_PATH)/zstd_zlibwrapper.c $(ZLIBWRAPPER_PATH)/zstd_zlibwrapper.h 108*22ce4affSfengbojiang $(CC) $(CPPFLAGS) $(CFLAGS) $< -c -o $@ 109*22ce4affSfengbojiang 110*22ce4affSfengbojiang$(ZSTDLIBDIR)/libzstd.a: 111*22ce4affSfengbojiang $(MAKE) -C $(ZSTDLIBDIR) libzstd.a 112*22ce4affSfengbojiang 113*22ce4affSfengbojiang$(ZSTDLIBDIR)/libzstd.so: 114*22ce4affSfengbojiang $(MAKE) -C $(ZSTDLIBDIR) libzstd 115*22ce4affSfengbojiang 116*22ce4affSfengbojiang 117*22ce4affSfengbojiangclean: 118*22ce4affSfengbojiang -$(RM) $(ZLIBWRAPPER_PATH)/*.o $(EXAMPLE_PATH)/*.o *.o foo.gz example$(EXT) example_zstd$(EXT) fitblk$(EXT) fitblk_zstd$(EXT) zwrapbench$(EXT) minigzip$(EXT) minigzip_zstd$(EXT) 119*22ce4affSfengbojiang @echo Cleaning completed 120