blob: d74c41bc4b84026586c7e65a043bd6948fa4e7f7 [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 Colletabf5c062020-10-15 10:56:37 -070021VPATH = $(PROGRAMS_PATH)
22
Yann Colletc69ed0f2019-10-02 17:32:19 -070023CPPFLAGS += -DXXH_NAMESPACE=ZSTD_ -I$(ZLIB_PATH) -I$(PROGRAMS_PATH) \
24 -I$(ZSTDLIBDIR) -I$(ZSTDLIBDIR)/common -I$(ZLIBWRAPPER_PATH)
Ryan Schmidt6ddb7832019-11-07 11:01:13 -060025STDFLAGS = -std=c89 -pedantic -Wno-long-long -Wno-variadic-macros -Wc++-compat \
26 -DNO_snprintf -DNO_vsnprintf # strict ANSI C89 is missing these prototypes
Yann Colletc69ed0f2019-10-02 17:32:19 -070027DEBUGFLAGS= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow -Wswitch-enum \
28 -Wdeclaration-after-statement -Wstrict-prototypes -Wundef \
29 -Wstrict-aliasing=1
30CFLAGS ?= -O3
31CFLAGS += $(STDFLAGS) $(DEBUGFLAGS) $(MOREFLAGS)
inikep3eabe9b2016-05-12 17:15:41 +020032
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010033# Define *.exe as extension for Windows systems
34ifneq (,$(filter Windows%,$(OS)))
35EXT =.exe
36else
37EXT =
38endif
inikep3eabe9b2016-05-12 17:15:41 +020039
Yann Colletc69ed0f2019-10-02 17:32:19 -070040default : release
41
42release : STDFLAGS =
Yann Colletcadff8c2019-10-02 17:41:19 -070043release : DEBUGFLAGS =
Yann Colletc69ed0f2019-10-02 17:32:19 -070044release : all
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010045
Yann Collet058ed2a2017-09-09 01:03:29 -070046all: fitblk example zwrapbench minigzip
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010047
Przemyslaw Skibinski087bd2c2016-11-29 17:57:00 +010048test: example fitblk example_zstd fitblk_zstd zwrapbench minigzip minigzip_zstd
inikep3eabe9b2016-05-12 17:15:41 +020049 ./example
inikep68cd4762016-09-23 12:42:21 +020050 ./example_zstd
Przemyslaw Skibinski3ee94a72016-10-24 15:58:07 +020051 ./fitblk 10240 <$(TEST_FILE)
52 ./fitblk 40960 <$(TEST_FILE)
53 ./fitblk_zstd 10240 <$(TEST_FILE)
54 ./fitblk_zstd 40960 <$(TEST_FILE)
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010055 @echo ---- minigzip start ----
Przemyslaw Skibinski8b3e2f12016-11-28 15:41:36 +010056 ./minigzip_zstd example$(EXT)
Przemyslaw Skibinski95f34e02016-12-06 11:36:24 +010057 #cp example$(EXT).gz example$(EXT)_zstd.gz
Przemyslaw Skibinski087bd2c2016-11-29 17:57:00 +010058 ./minigzip_zstd -d example$(EXT).gz
59 ./minigzip example$(EXT)
Przemyslaw Skibinski95f34e02016-12-06 11:36:24 +010060 #cp example$(EXT).gz example$(EXT)_gz.gz
Przemyslaw Skibinski8b3e2f12016-11-28 15:41:36 +010061 ./minigzip_zstd -d example$(EXT).gz
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010062 @echo ---- minigzip end ----
Yann Collet33a7e672017-06-02 17:10:49 -070063 ./zwrapbench -qi1b3B1K $(TEST_FILE)
64 ./zwrapbench -rqi1b1e5 ../lib ../programs ../tests
inikep7b546e52016-09-20 12:49:39 +020065
inikep57b97082016-09-23 14:59:46 +020066#valgrindTest: ZSTDLIBRARY = $(ZSTDLIBDIR)/libzstd.so
inikepb88accf2016-09-23 13:38:02 +020067valgrindTest: VALGRIND = LD_LIBRARY_PATH=$(ZSTDLIBDIR) valgrind --track-origins=yes --leak-check=full --error-exitcode=1
inikepf77a1132016-09-23 12:01:38 +020068valgrindTest: clean example fitblk example_zstd fitblk_zstd zwrapbench
inikep4602e532016-09-23 10:43:37 +020069 @echo "\n ---- valgrind tests ----"
inikepf77a1132016-09-23 12:01:38 +020070 $(VALGRIND) ./example
inikep68cd4762016-09-23 12:42:21 +020071 $(VALGRIND) ./example_zstd
Przemyslaw Skibinski3ee94a72016-10-24 15:58:07 +020072 $(VALGRIND) ./fitblk 10240 <$(TEST_FILE)
73 $(VALGRIND) ./fitblk 40960 <$(TEST_FILE)
74 $(VALGRIND) ./fitblk_zstd 10240 <$(TEST_FILE)
75 $(VALGRIND) ./fitblk_zstd 40960 <$(TEST_FILE)
Yann Collet33a7e672017-06-02 17:10:49 -070076 $(VALGRIND) ./zwrapbench -qi1b3B1K $(TEST_FILE)
77 $(VALGRIND) ./zwrapbench -rqi1b1e5 ../lib ../programs ../tests
inikep4602e532016-09-23 10:43:37 +020078
Przemyslaw Skibinski7e06e6a2016-11-04 16:50:39 +010079#.c.o:
Yann Collet69c94012019-09-26 15:01:29 -070080# $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
Yann Collet6c111fa2016-11-03 00:44:02 -070081
Yann Collet69c94012019-09-26 15:01:29 -070082minigzip: $(EXAMPLE_PATH)/minigzip.o zstd_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY)
Yann Collet068c9b82018-12-20 15:28:03 -080083 $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZSTDLIBRARY) $(ZLIB_LIBRARY) -o $@
Przemyslaw Skibinski6b3c2012016-11-24 18:26:47 +010084
Yann Collet69c94012019-09-26 15:01:29 -070085minigzip_zstd: $(EXAMPLE_PATH)/minigzip.o zstdTurnedOn_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY)
Yann Collet068c9b82018-12-20 15:28:03 -080086 $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZSTDLIBRARY) $(ZLIB_LIBRARY) -o $@
inikep3eabe9b2016-05-12 17:15:41 +020087
Yann Collet69c94012019-09-26 15:01:29 -070088example: $(EXAMPLE_PATH)/example.o zstd_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY)
Yann Collet068c9b82018-12-20 15:28:03 -080089 $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZLIB_LIBRARY) -o $@
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +010090
Yann Collet69c94012019-09-26 15:01:29 -070091example_zstd: $(EXAMPLE_PATH)/example.o zstdTurnedOn_zlibwrapper.o $(GZFILES) $(ZSTDLIBRARY)
Yann Collet068c9b82018-12-20 15:28:03 -080092 $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZLIB_LIBRARY) -o $@
inikep3eabe9b2016-05-12 17:15:41 +020093
Yann Collet69c94012019-09-26 15:01:29 -070094fitblk: $(EXAMPLE_PATH)/fitblk.o zstd_zlibwrapper.o $(ZSTDLIBRARY)
Yann Collet068c9b82018-12-20 15:28:03 -080095 $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZLIB_LIBRARY) -o $@
inikep043b3c02016-06-01 10:15:25 +020096
Yann Collet69c94012019-09-26 15:01:29 -070097fitblk_zstd: $(EXAMPLE_PATH)/fitblk.o zstdTurnedOn_zlibwrapper.o $(ZSTDLIBRARY)
Yann Collet068c9b82018-12-20 15:28:03 -080098 $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZLIB_LIBRARY) -o $@
inikep7b546e52016-09-20 12:49:39 +020099
Yann Colletabf5c062020-10-15 10:56:37 -0700100zwrapbench: $(EXAMPLE_PATH)/zwrapbench.o zstd_zlibwrapper.o util.o timefn.o datagen.o $(ZSTDLIBRARY)
Yann Collet068c9b82018-12-20 15:28:03 -0800101 $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $^ $(ZLIB_LIBRARY) -o $@
inikep3eabe9b2016-05-12 17:15:41 +0200102
inikepd7557172016-09-22 11:52:00 +0200103
Yann Collet69c94012019-09-26 15:01:29 -0700104zstd_zlibwrapper.o: $(ZLIBWRAPPER_PATH)/zstd_zlibwrapper.c $(ZLIBWRAPPER_PATH)/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
107zstdTurnedOn_zlibwrapper.o: $(ZLIBWRAPPER_PATH)/zstd_zlibwrapper.c $(ZLIBWRAPPER_PATH)/zstd_zlibwrapper.h
Yann Colletd770a2a2019-10-31 10:47:06 -0700108 $(CC) $(CPPFLAGS) $(CFLAGS) $< -c -o $@
inikep043b3c02016-06-01 10:15:25 +0200109
inikep8e8b0462016-09-22 14:42:32 +0200110$(ZSTDLIBDIR)/libzstd.a:
Yann Collet6c111fa2016-11-03 00:44:02 -0700111 $(MAKE) -C $(ZSTDLIBDIR) libzstd.a
inikep8e8b0462016-09-22 14:42:32 +0200112
inikepb88accf2016-09-23 13:38:02 +0200113$(ZSTDLIBDIR)/libzstd.so:
Yann Collet6c111fa2016-11-03 00:44:02 -0700114 $(MAKE) -C $(ZSTDLIBDIR) libzstd
inikepb88accf2016-09-23 13:38:02 +0200115
Przemyslaw Skibinski4c690502016-11-25 14:45:55 +0100116
inikep3eabe9b2016-05-12 17:15:41 +0200117clean:
Przemyslaw Skibinskia6417762016-11-25 17:13:25 +0100118 -$(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 +0200119 @echo Cleaning completed