blob: 830b294bb6f46a4e4e19d6a15c3b7c7fc50442b8 [file] [log] [blame]
inikep3eabe9b2016-05-12 17:15:41 +02001# Makefile for example of using zstd wrapper for zlib
2#
inikep57b97082016-09-23 14:59:46 +02003# make - compiles examples
Przemyslaw Skibinski7e06e6a2016-11-04 16:50:39 +01004# make MOREFLAGS=-DZWRAP_USE_ZSTD=1 - compiles examples with zstd compression turned on
inikep57b97082016-09-23 14:59:46 +02005# make test - runs examples
inikep3eabe9b2016-05-12 17:15:41 +02006
7
8# Paths to static and dynamic zlib and zstd libraries
Yann Colletf78917c2020-12-20 09:23:07 -08009# Use "make ZLIB_PATH=path/to/zlib ZLIB_LIBRARY=path/to/libz.so" to select a path to library
inikepb88accf2016-09-23 13:38:02 +020010ZLIB_LIBRARY ?= -lz
Przemyslaw Skibinski0fa34472016-11-28 16:55:14 +010011ZLIB_PATH ?= .
inikep3eabe9b2016-05-12 17:15:41 +020012
inikep8e8b0462016-09-22 14:42:32 +020013ZSTDLIBDIR = ../lib
inikepb88accf2016-09-23 13:38:02 +020014ZSTDLIBRARY = $(ZSTDLIBDIR)/libzstd.a
inikep3eabe9b2016-05-12 17:15:41 +020015ZLIBWRAPPER_PATH = .
Yann Collet2f902f92016-12-06 08:52:53 +010016GZFILES = gzclose.o gzlib.o gzread.o gzwrite.o
inikepe9dfdf62016-05-27 11:56:15 +020017EXAMPLE_PATH = examples
inikep3be5c6e2016-09-22 10:23:58 +020018PROGRAMS_PATH = ../programs
Przemyslaw Skibinski3ee94a72016-10-24 15:58:07 +020019TEST_FILE = ../doc/zstd_compression_format.md
Przemyslaw Skibinski7e06e6a2016-11-04 16:50:39 +010020
Yann Colletf78917c2020-12-20 09:23:07 -080021vpath %.c $(PROGRAMS_PATH) $(EXAMPLE_PATH) $(ZLIBWRAPPER_PATH)
22
Yann Colletabf5c062020-10-15 10:56:37 -070023
Yann Colletc69ed0f2019-10-02 17:32:19 -070024CPPFLAGS += -DXXH_NAMESPACE=ZSTD_ -I$(ZLIB_PATH) -I$(PROGRAMS_PATH) \
25 -I$(ZSTDLIBDIR) -I$(ZSTDLIBDIR)/common -I$(ZLIBWRAPPER_PATH)
Ryan Schmidt6ddb7832019-11-07 11:01:13 -060026STDFLAGS = -std=c89 -pedantic -Wno-long-long -Wno-variadic-macros -Wc++-compat \
27 -DNO_snprintf -DNO_vsnprintf # strict ANSI C89 is missing these prototypes
Yann Colletc69ed0f2019-10-02 17:32:19 -070028DEBUGFLAGS= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow -Wswitch-enum \
29 -Wdeclaration-after-statement -Wstrict-prototypes -Wundef \
30 -Wstrict-aliasing=1
31CFLAGS ?= -O3
Yann Colletf78917c2020-12-20 09:23:07 -080032CFLAGS += $(STDFLAGS) $(DEBUGFLAGS)
33CPPFLAGS += $(MOREFLAGS)
34LDLIBS += $(ZLIB_LIBRARY)
inikep3eabe9b2016-05-12 17:15:41 +020035
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010036# Define *.exe as extension for Windows systems
37ifneq (,$(filter Windows%,$(OS)))
38EXT =.exe
39else
40EXT =
41endif
inikep3eabe9b2016-05-12 17:15:41 +020042
Yann Colletc69ed0f2019-10-02 17:32:19 -070043default : release
44
45release : STDFLAGS =
Yann Colletcadff8c2019-10-02 17:41:19 -070046release : DEBUGFLAGS =
Yann Colletc69ed0f2019-10-02 17:32:19 -070047release : all
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010048
Yann Collet058ed2a2017-09-09 01:03:29 -070049all: fitblk example zwrapbench minigzip
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010050
Przemyslaw Skibinski087bd2c2016-11-29 17:57:00 +010051test: example fitblk example_zstd fitblk_zstd zwrapbench minigzip minigzip_zstd
inikep3eabe9b2016-05-12 17:15:41 +020052 ./example
inikep68cd4762016-09-23 12:42:21 +020053 ./example_zstd
Przemyslaw Skibinski3ee94a72016-10-24 15:58:07 +020054 ./fitblk 10240 <$(TEST_FILE)
55 ./fitblk 40960 <$(TEST_FILE)
56 ./fitblk_zstd 10240 <$(TEST_FILE)
57 ./fitblk_zstd 40960 <$(TEST_FILE)
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010058 @echo ---- minigzip start ----
Przemyslaw Skibinski8b3e2f12016-11-28 15:41:36 +010059 ./minigzip_zstd example$(EXT)
Przemyslaw Skibinski95f34e02016-12-06 11:36:24 +010060 #cp example$(EXT).gz example$(EXT)_zstd.gz
Przemyslaw Skibinski087bd2c2016-11-29 17:57:00 +010061 ./minigzip_zstd -d example$(EXT).gz
62 ./minigzip example$(EXT)
Przemyslaw Skibinski95f34e02016-12-06 11:36:24 +010063 #cp example$(EXT).gz example$(EXT)_gz.gz
Przemyslaw Skibinski8b3e2f12016-11-28 15:41:36 +010064 ./minigzip_zstd -d example$(EXT).gz
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010065 @echo ---- minigzip end ----
Yann Collet33a7e672017-06-02 17:10:49 -070066 ./zwrapbench -qi1b3B1K $(TEST_FILE)
Yann Colletf78917c2020-12-20 09:23:07 -080067 ./zwrapbench -rqi1b1e3 ../lib
inikep7b546e52016-09-20 12:49:39 +020068
Elliott Hughes44aba642023-09-12 20:18:59 +000069.PHONY: test-valgrind
70#test-valgrind: ZSTDLIBRARY = $(ZSTDLIBDIR)/libzstd.so
71test-valgrind: VALGRIND = LD_LIBRARY_PATH=$(ZSTDLIBDIR) valgrind --track-origins=yes --leak-check=full --error-exitcode=1
72test-valgrind: clean example fitblk example_zstd fitblk_zstd zwrapbench
inikep4602e532016-09-23 10:43:37 +020073 @echo "\n ---- valgrind tests ----"
inikepf77a1132016-09-23 12:01:38 +020074 $(VALGRIND) ./example
inikep68cd4762016-09-23 12:42:21 +020075 $(VALGRIND) ./example_zstd
Przemyslaw Skibinski3ee94a72016-10-24 15:58:07 +020076 $(VALGRIND) ./fitblk 10240 <$(TEST_FILE)
77 $(VALGRIND) ./fitblk 40960 <$(TEST_FILE)
78 $(VALGRIND) ./fitblk_zstd 10240 <$(TEST_FILE)
79 $(VALGRIND) ./fitblk_zstd 40960 <$(TEST_FILE)
Yann Collet33a7e672017-06-02 17:10:49 -070080 $(VALGRIND) ./zwrapbench -qi1b3B1K $(TEST_FILE)
81 $(VALGRIND) ./zwrapbench -rqi1b1e5 ../lib ../programs ../tests
inikep4602e532016-09-23 10:43:37 +020082
Przemyslaw Skibinski7e06e6a2016-11-04 16:50:39 +010083#.c.o:
Yann Collet69c94012019-09-26 15:01:29 -070084# $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
Yann Collet6c111fa2016-11-03 00:44:02 -070085
Yann Colletf78917c2020-12-20 09:23:07 -080086minigzip: minigzip.o zstd_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY)
Przemyslaw Skibinski6b3c2012016-11-24 18:26:47 +010087
Yann Colletf78917c2020-12-20 09:23:07 -080088minigzip_zstd: minigzip.o zstdTurnedOn_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY)
89 $(LINK.o) $^ $(LDLIBS) $(OUTPUT_OPTION)
inikep3eabe9b2016-05-12 17:15:41 +020090
Yann Colletf78917c2020-12-20 09:23:07 -080091example: example.o zstd_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY)
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010092
Yann Colletf78917c2020-12-20 09:23:07 -080093example_zstd: example.o zstdTurnedOn_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY)
94 $(LINK.o) $^ $(LDLIBS) $(OUTPUT_OPTION)
inikep3eabe9b2016-05-12 17:15:41 +020095
Yann Colletf78917c2020-12-20 09:23:07 -080096fitblk: fitblk.o zstd_zlibwrapper.o $(ZSTDLIBRARY)
inikep043b3c02016-06-01 10:15:25 +020097
Yann Colletf78917c2020-12-20 09:23:07 -080098fitblk_zstd: fitblk.o zstdTurnedOn_zlibwrapper.o $(ZSTDLIBRARY)
99 $(LINK.o) $^ $(LDLIBS) $(OUTPUT_OPTION)
inikep7b546e52016-09-20 12:49:39 +0200100
Yann Colletf78917c2020-12-20 09:23:07 -0800101zwrapbench: zwrapbench.o zstd_zlibwrapper.o util.o timefn.o datagen.o $(ZSTDLIBRARY)
inikep3eabe9b2016-05-12 17:15:41 +0200102
inikepd7557172016-09-22 11:52:00 +0200103
Yann Colletf78917c2020-12-20 09:23:07 -0800104zstd_zlibwrapper.o: zstd_zlibwrapper.h
inikep3eabe9b2016-05-12 17:15:41 +0200105
Yann Collet69c94012019-09-26 15:01:29 -0700106zstdTurnedOn_zlibwrapper.o: CPPFLAGS += -DZWRAP_USE_ZSTD=1
Yann Colletf78917c2020-12-20 09:23:07 -0800107zstdTurnedOn_zlibwrapper.o: zstd_zlibwrapper.c zstd_zlibwrapper.h
108 $(COMPILE.c) $< $(OUTPUT_OPTION)
inikep043b3c02016-06-01 10:15:25 +0200109
Yann Colletf78917c2020-12-20 09:23:07 -0800110
111$(ZSTDLIBRARY):
Yann Collet6c111fa2016-11-03 00:44:02 -0700112 $(MAKE) -C $(ZSTDLIBDIR) libzstd.a
inikep8e8b0462016-09-22 14:42:32 +0200113
inikepb88accf2016-09-23 13:38:02 +0200114$(ZSTDLIBDIR)/libzstd.so:
Yann Collet6c111fa2016-11-03 00:44:02 -0700115 $(MAKE) -C $(ZSTDLIBDIR) libzstd
inikepb88accf2016-09-23 13:38:02 +0200116
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +0100117
inikep3eabe9b2016-05-12 17:15:41 +0200118clean:
Przemyslaw Skibinskia6417762016-11-25 17:13:25 +0100119 -$(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)
inikep36403962016-06-03 16:36:50 +0200120 @echo Cleaning completed