xref: /aosp_15_r20/external/zstd/zlibWrapper/Makefile (revision 01826a4963a0d8a59bc3812d29bdf0fb76416722)
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