blob: feed5b84a34f632f257fff46af963fdf84fb158a [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
Przemyslaw Skibinski8b3e2f12016-11-28 15:41:36 +01009# Use "make ZLIB_PATH=path/to/zlib ZLIB_LIBRARY=path/to/libz.a" 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 Colletc69ed0f2019-10-02 17:32:19 -070021CPPFLAGS += -DXXH_NAMESPACE=ZSTD_ -I$(ZLIB_PATH) -I$(PROGRAMS_PATH) \
22 -I$(ZSTDLIBDIR) -I$(ZSTDLIBDIR)/common -I$(ZLIBWRAPPER_PATH)
Ryan Schmidt6ddb7832019-11-07 11:01:13 -060023STDFLAGS = -std=c89 -pedantic -Wno-long-long -Wno-variadic-macros -Wc++-compat \
24 -DNO_snprintf -DNO_vsnprintf # strict ANSI C89 is missing these prototypes
Yann Colletc69ed0f2019-10-02 17:32:19 -070025DEBUGFLAGS= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow -Wswitch-enum \
26 -Wdeclaration-after-statement -Wstrict-prototypes -Wundef \
27 -Wstrict-aliasing=1
28CFLAGS ?= -O3
29CFLAGS += $(STDFLAGS) $(DEBUGFLAGS) $(MOREFLAGS)
inikep3eabe9b2016-05-12 17:15:41 +020030
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010031# Define *.exe as extension for Windows systems
32ifneq (,$(filter Windows%,$(OS)))
33EXT =.exe
34else
35EXT =
36endif
inikep3eabe9b2016-05-12 17:15:41 +020037
Yann Colletc69ed0f2019-10-02 17:32:19 -070038default : release
39
40release : STDFLAGS =
Yann Colletcadff8c2019-10-02 17:41:19 -070041release : DEBUGFLAGS =
Yann Colletc69ed0f2019-10-02 17:32:19 -070042release : all
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010043
Yann Collet058ed2a2017-09-09 01:03:29 -070044all: fitblk example zwrapbench minigzip
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010045
Przemyslaw Skibinski087bd2c2016-11-29 17:57:00 +010046test: example fitblk example_zstd fitblk_zstd zwrapbench minigzip minigzip_zstd
inikep3eabe9b2016-05-12 17:15:41 +020047 ./example
inikep68cd4762016-09-23 12:42:21 +020048 ./example_zstd
Przemyslaw Skibinski3ee94a72016-10-24 15:58:07 +020049 ./fitblk 10240 <$(TEST_FILE)
50 ./fitblk 40960 <$(TEST_FILE)
51 ./fitblk_zstd 10240 <$(TEST_FILE)
52 ./fitblk_zstd 40960 <$(TEST_FILE)
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010053 @echo ---- minigzip start ----
Przemyslaw Skibinski8b3e2f12016-11-28 15:41:36 +010054 ./minigzip_zstd example$(EXT)
Przemyslaw Skibinski95f34e02016-12-06 11:36:24 +010055 #cp example$(EXT).gz example$(EXT)_zstd.gz
Przemyslaw Skibinski087bd2c2016-11-29 17:57:00 +010056 ./minigzip_zstd -d example$(EXT).gz
57 ./minigzip example$(EXT)
Przemyslaw Skibinski95f34e02016-12-06 11:36:24 +010058 #cp example$(EXT).gz example$(EXT)_gz.gz
Przemyslaw Skibinski8b3e2f12016-11-28 15:41:36 +010059 ./minigzip_zstd -d example$(EXT).gz
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010060 @echo ---- minigzip end ----
Yann Collet33a7e672017-06-02 17:10:49 -070061 ./zwrapbench -qi1b3B1K $(TEST_FILE)
62 ./zwrapbench -rqi1b1e5 ../lib ../programs ../tests
inikep7b546e52016-09-20 12:49:39 +020063
inikep57b97082016-09-23 14:59:46 +020064#valgrindTest: ZSTDLIBRARY = $(ZSTDLIBDIR)/libzstd.so
inikepb88accf2016-09-23 13:38:02 +020065valgrindTest: VALGRIND = LD_LIBRARY_PATH=$(ZSTDLIBDIR) valgrind --track-origins=yes --leak-check=full --error-exitcode=1
inikepf77a1132016-09-23 12:01:38 +020066valgrindTest: clean example fitblk example_zstd fitblk_zstd zwrapbench
inikep4602e532016-09-23 10:43:37 +020067 @echo "\n ---- valgrind tests ----"
inikepf77a1132016-09-23 12:01:38 +020068 $(VALGRIND) ./example
inikep68cd4762016-09-23 12:42:21 +020069 $(VALGRIND) ./example_zstd
Przemyslaw Skibinski3ee94a72016-10-24 15:58:07 +020070 $(VALGRIND) ./fitblk 10240 <$(TEST_FILE)
71 $(VALGRIND) ./fitblk 40960 <$(TEST_FILE)
72 $(VALGRIND) ./fitblk_zstd 10240 <$(TEST_FILE)
73 $(VALGRIND) ./fitblk_zstd 40960 <$(TEST_FILE)
Yann Collet33a7e672017-06-02 17:10:49 -070074 $(VALGRIND) ./zwrapbench -qi1b3B1K $(TEST_FILE)
75 $(VALGRIND) ./zwrapbench -rqi1b1e5 ../lib ../programs ../tests
inikep4602e532016-09-23 10:43:37 +020076
Przemyslaw Skibinski7e06e6a2016-11-04 16:50:39 +010077#.c.o:
Yann Collet69c94012019-09-26 15:01:29 -070078# $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
Yann Collet6c111fa2016-11-03 00:44:02 -070079
Yann Collet69c94012019-09-26 15:01:29 -070080minigzip: $(EXAMPLE_PATH)/minigzip.o zstd_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY)
Yann Collet068c9b82018-12-20 15:28:03 -080081 $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZSTDLIBRARY) $(ZLIB_LIBRARY) -o $@
Przemyslaw Skibinski6b3c2012016-11-24 18:26:47 +010082
Yann Collet69c94012019-09-26 15:01:29 -070083minigzip_zstd: $(EXAMPLE_PATH)/minigzip.o zstdTurnedOn_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY)
Yann Collet068c9b82018-12-20 15:28:03 -080084 $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZSTDLIBRARY) $(ZLIB_LIBRARY) -o $@
inikep3eabe9b2016-05-12 17:15:41 +020085
Yann Collet69c94012019-09-26 15:01:29 -070086example: $(EXAMPLE_PATH)/example.o zstd_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY)
Yann Collet068c9b82018-12-20 15:28:03 -080087 $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZLIB_LIBRARY) -o $@
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010088
Yann Collet69c94012019-09-26 15:01:29 -070089example_zstd: $(EXAMPLE_PATH)/example.o zstdTurnedOn_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY)
Yann Collet068c9b82018-12-20 15:28:03 -080090 $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZLIB_LIBRARY) -o $@
inikep3eabe9b2016-05-12 17:15:41 +020091
Yann Collet69c94012019-09-26 15:01:29 -070092fitblk: $(EXAMPLE_PATH)/fitblk.o zstd_zlibwrapper.o $(ZSTDLIBRARY)
Yann Collet068c9b82018-12-20 15:28:03 -080093 $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZLIB_LIBRARY) -o $@
inikep043b3c02016-06-01 10:15:25 +020094
Yann Collet69c94012019-09-26 15:01:29 -070095fitblk_zstd: $(EXAMPLE_PATH)/fitblk.o zstdTurnedOn_zlibwrapper.o $(ZSTDLIBRARY)
Yann Collet068c9b82018-12-20 15:28:03 -080096 $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZLIB_LIBRARY) -o $@
inikep7b546e52016-09-20 12:49:39 +020097
Yann Collet69c94012019-09-26 15:01:29 -070098zwrapbench: $(EXAMPLE_PATH)/zwrapbench.o zstd_zlibwrapper.o $(PROGRAMS_PATH)/util.o $(PROGRAMS_PATH)/timefn.o $(PROGRAMS_PATH)/datagen.o $(ZSTDLIBRARY)
Yann Collet068c9b82018-12-20 15:28:03 -080099 $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZLIB_LIBRARY) -o $@
inikep3eabe9b2016-05-12 17:15:41 +0200100
inikepd7557172016-09-22 11:52:00 +0200101
Yann Collet69c94012019-09-26 15:01:29 -0700102zstd_zlibwrapper.o: $(ZLIBWRAPPER_PATH)/zstd_zlibwrapper.c $(ZLIBWRAPPER_PATH)/zstd_zlibwrapper.h
inikep3eabe9b2016-05-12 17:15:41 +0200103
Yann Collet69c94012019-09-26 15:01:29 -0700104zstdTurnedOn_zlibwrapper.o: CPPFLAGS += -DZWRAP_USE_ZSTD=1
105zstdTurnedOn_zlibwrapper.o: $(ZLIBWRAPPER_PATH)/zstd_zlibwrapper.c $(ZLIBWRAPPER_PATH)/zstd_zlibwrapper.h
Yann Colletd770a2a2019-10-31 10:47:06 -0700106 $(CC) $(CPPFLAGS) $(CFLAGS) $< -c -o $@
inikep043b3c02016-06-01 10:15:25 +0200107
inikep8e8b0462016-09-22 14:42:32 +0200108$(ZSTDLIBDIR)/libzstd.a:
Yann Collet6c111fa2016-11-03 00:44:02 -0700109 $(MAKE) -C $(ZSTDLIBDIR) libzstd.a
inikep8e8b0462016-09-22 14:42:32 +0200110
inikepb88accf2016-09-23 13:38:02 +0200111$(ZSTDLIBDIR)/libzstd.so:
Yann Collet6c111fa2016-11-03 00:44:02 -0700112 $(MAKE) -C $(ZSTDLIBDIR) libzstd
inikepb88accf2016-09-23 13:38:02 +0200113
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +0100114
inikep3eabe9b2016-05-12 17:15:41 +0200115clean:
Przemyslaw Skibinskia6417762016-11-25 17:13:25 +0100116 -$(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 +0200117 @echo Cleaning completed