1*01826a49SYabin Cui# Makefile for example of using zstd wrapper for zlib 2*01826a49SYabin Cui# 3*01826a49SYabin Cui# make - compiles examples 4*01826a49SYabin Cui# make MOREFLAGS=-DZWRAP_USE_ZSTD=1 - compiles examples with zstd compression turned on 5*01826a49SYabin Cui# make test - runs examples 6*01826a49SYabin Cui 7*01826a49SYabin Cui 8*01826a49SYabin Cui# Paths to static and dynamic zlib and zstd libraries 9*01826a49SYabin Cui# Use "make ZLIB_PATH=path/to/zlib ZLIB_LIBRARY=path/to/libz.so" to select a path to library 10*01826a49SYabin CuiZLIB_LIBRARY ?= -lz 11*01826a49SYabin CuiZLIB_PATH ?= . 12*01826a49SYabin Cui 13*01826a49SYabin CuiZSTDLIBDIR = ../lib 14*01826a49SYabin CuiZSTDLIBRARY = $(ZSTDLIBDIR)/libzstd.a 15*01826a49SYabin CuiZLIBWRAPPER_PATH = . 16*01826a49SYabin CuiGZFILES = gzclose.o gzlib.o gzread.o gzwrite.o 17*01826a49SYabin CuiEXAMPLE_PATH = examples 18*01826a49SYabin CuiPROGRAMS_PATH = ../programs 19*01826a49SYabin CuiTEST_FILE = ../doc/zstd_compression_format.md 20*01826a49SYabin Cui 21*01826a49SYabin Cuivpath %.c $(PROGRAMS_PATH) $(EXAMPLE_PATH) $(ZLIBWRAPPER_PATH) 22*01826a49SYabin Cui 23*01826a49SYabin Cui 24*01826a49SYabin CuiCPPFLAGS += -DXXH_NAMESPACE=ZSTD_ -I$(ZLIB_PATH) -I$(PROGRAMS_PATH) \ 25*01826a49SYabin Cui -I$(ZSTDLIBDIR) -I$(ZSTDLIBDIR)/common -I$(ZLIBWRAPPER_PATH) 26*01826a49SYabin CuiSTDFLAGS = -std=c89 -pedantic -Wno-long-long -Wno-variadic-macros -Wc++-compat \ 27*01826a49SYabin Cui -DNO_snprintf -DNO_vsnprintf # strict ANSI C89 is missing these prototypes 28*01826a49SYabin CuiDEBUGFLAGS= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow -Wswitch-enum \ 29*01826a49SYabin Cui -Wdeclaration-after-statement -Wstrict-prototypes -Wundef \ 30*01826a49SYabin Cui -Wstrict-aliasing=1 31*01826a49SYabin CuiCFLAGS ?= -O3 32*01826a49SYabin CuiCFLAGS += $(STDFLAGS) $(DEBUGFLAGS) 33*01826a49SYabin CuiCPPFLAGS += $(MOREFLAGS) 34*01826a49SYabin CuiLDLIBS += $(ZLIB_LIBRARY) 35*01826a49SYabin Cui 36*01826a49SYabin Cui# Define *.exe as extension for Windows systems 37*01826a49SYabin Cuiifneq (,$(filter Windows%,$(OS))) 38*01826a49SYabin CuiEXT =.exe 39*01826a49SYabin Cuielse 40*01826a49SYabin CuiEXT = 41*01826a49SYabin Cuiendif 42*01826a49SYabin Cui 43*01826a49SYabin Cuidefault : release 44*01826a49SYabin Cui 45*01826a49SYabin Cuirelease : STDFLAGS = 46*01826a49SYabin Cuirelease : DEBUGFLAGS = 47*01826a49SYabin Cuirelease : all 48*01826a49SYabin Cui 49*01826a49SYabin Cuiall: fitblk example zwrapbench minigzip 50*01826a49SYabin Cui 51*01826a49SYabin Cuitest: example fitblk example_zstd fitblk_zstd zwrapbench minigzip minigzip_zstd 52*01826a49SYabin Cui ./example 53*01826a49SYabin Cui ./example_zstd 54*01826a49SYabin Cui ./fitblk 10240 <$(TEST_FILE) 55*01826a49SYabin Cui ./fitblk 40960 <$(TEST_FILE) 56*01826a49SYabin Cui ./fitblk_zstd 10240 <$(TEST_FILE) 57*01826a49SYabin Cui ./fitblk_zstd 40960 <$(TEST_FILE) 58*01826a49SYabin Cui @echo ---- minigzip start ---- 59*01826a49SYabin Cui ./minigzip_zstd example$(EXT) 60*01826a49SYabin Cui #cp example$(EXT).gz example$(EXT)_zstd.gz 61*01826a49SYabin Cui ./minigzip_zstd -d example$(EXT).gz 62*01826a49SYabin Cui ./minigzip example$(EXT) 63*01826a49SYabin Cui #cp example$(EXT).gz example$(EXT)_gz.gz 64*01826a49SYabin Cui ./minigzip_zstd -d example$(EXT).gz 65*01826a49SYabin Cui @echo ---- minigzip end ---- 66*01826a49SYabin Cui ./zwrapbench -qi1b3B1K $(TEST_FILE) 67*01826a49SYabin Cui ./zwrapbench -rqi1b1e3 ../lib 68*01826a49SYabin Cui 69*01826a49SYabin Cui.PHONY: test-valgrind 70*01826a49SYabin Cui#test-valgrind: ZSTDLIBRARY = $(ZSTDLIBDIR)/libzstd.so 71*01826a49SYabin Cuitest-valgrind: VALGRIND = LD_LIBRARY_PATH=$(ZSTDLIBDIR) valgrind --track-origins=yes --leak-check=full --error-exitcode=1 72*01826a49SYabin Cuitest-valgrind: clean example fitblk example_zstd fitblk_zstd zwrapbench 73*01826a49SYabin Cui @echo "\n ---- valgrind tests ----" 74*01826a49SYabin Cui $(VALGRIND) ./example 75*01826a49SYabin Cui $(VALGRIND) ./example_zstd 76*01826a49SYabin Cui $(VALGRIND) ./fitblk 10240 <$(TEST_FILE) 77*01826a49SYabin Cui $(VALGRIND) ./fitblk 40960 <$(TEST_FILE) 78*01826a49SYabin Cui $(VALGRIND) ./fitblk_zstd 10240 <$(TEST_FILE) 79*01826a49SYabin Cui $(VALGRIND) ./fitblk_zstd 40960 <$(TEST_FILE) 80*01826a49SYabin Cui $(VALGRIND) ./zwrapbench -qi1b3B1K $(TEST_FILE) 81*01826a49SYabin Cui $(VALGRIND) ./zwrapbench -rqi1b1e5 ../lib ../programs ../tests 82*01826a49SYabin Cui 83*01826a49SYabin Cui#.c.o: 84*01826a49SYabin Cui# $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ 85*01826a49SYabin Cui 86*01826a49SYabin Cuiminigzip: minigzip.o zstd_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY) 87*01826a49SYabin Cui 88*01826a49SYabin Cuiminigzip_zstd: minigzip.o zstdTurnedOn_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY) 89*01826a49SYabin Cui $(LINK.o) $^ $(LDLIBS) $(OUTPUT_OPTION) 90*01826a49SYabin Cui 91*01826a49SYabin Cuiexample: example.o zstd_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY) 92*01826a49SYabin Cui 93*01826a49SYabin Cuiexample_zstd: example.o zstdTurnedOn_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY) 94*01826a49SYabin Cui $(LINK.o) $^ $(LDLIBS) $(OUTPUT_OPTION) 95*01826a49SYabin Cui 96*01826a49SYabin Cuifitblk: fitblk.o zstd_zlibwrapper.o $(ZSTDLIBRARY) 97*01826a49SYabin Cui 98*01826a49SYabin Cuifitblk_zstd: fitblk.o zstdTurnedOn_zlibwrapper.o $(ZSTDLIBRARY) 99*01826a49SYabin Cui $(LINK.o) $^ $(LDLIBS) $(OUTPUT_OPTION) 100*01826a49SYabin Cui 101*01826a49SYabin Cuizwrapbench: zwrapbench.o zstd_zlibwrapper.o util.o timefn.o datagen.o $(ZSTDLIBRARY) 102*01826a49SYabin Cui 103*01826a49SYabin Cui 104*01826a49SYabin Cuizstd_zlibwrapper.o: zstd_zlibwrapper.h 105*01826a49SYabin Cui 106*01826a49SYabin CuizstdTurnedOn_zlibwrapper.o: CPPFLAGS += -DZWRAP_USE_ZSTD=1 107*01826a49SYabin CuizstdTurnedOn_zlibwrapper.o: zstd_zlibwrapper.c zstd_zlibwrapper.h 108*01826a49SYabin Cui $(COMPILE.c) $< $(OUTPUT_OPTION) 109*01826a49SYabin Cui 110*01826a49SYabin Cui 111*01826a49SYabin Cui$(ZSTDLIBRARY): 112*01826a49SYabin Cui $(MAKE) -C $(ZSTDLIBDIR) libzstd.a 113*01826a49SYabin Cui 114*01826a49SYabin Cui$(ZSTDLIBDIR)/libzstd.so: 115*01826a49SYabin Cui $(MAKE) -C $(ZSTDLIBDIR) libzstd 116*01826a49SYabin Cui 117*01826a49SYabin Cui 118*01826a49SYabin Cuiclean: 119*01826a49SYabin Cui -$(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) 120*01826a49SYabin Cui @echo Cleaning completed 121