@@ -19,23 +19,28 @@ LIBVER := $(shell echo $(LIBVER_SCRIPT))
1919VERSION? = $(LIBVER )
2020
2121CPPFLAGS+ = -I. -I./common -DXXH_NAMESPACE=ZSTD_
22+ ifeq ($(OS ) ,Windows_NT) # MinGW assumed
23+ CPPFLAGS += -D__USE_MINGW_ANSI_STDIO # compatibility with %zu formatting
24+ endif
2225CFLAGS ?= -O3
23- DEBUGFLAGS = -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
26+ DEBUGFLAGS = -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
2427 -Wstrict-aliasing=1 -Wswitch-enum -Wdeclaration-after-statement \
2528 -Wstrict-prototypes -Wundef -Wpointer-arith -Wformat-security \
2629 -Wvla -Wformat=2 -Winit-self -Wfloat-equal -Wwrite-strings \
27- -Wredundant-decls
30+ -Wredundant-decls -Wmissing-prototypes
2831CFLAGS += $(DEBUGFLAGS ) $(MOREFLAGS )
2932FLAGS = $(CPPFLAGS ) $(CFLAGS )
3033
34+ GREP = grep --color=never
35+
3136ZSTDCOMMON_FILES := $(sort $(wildcard common/* .c) )
3237ZSTDCOMP_FILES := $(sort $(wildcard compress/* .c) )
3338ZSTDDECOMP_FILES := $(sort $(wildcard decompress/* .c) )
3439ZDICT_FILES := $(sort $(wildcard dictBuilder/* .c) )
3540ZDEPR_FILES := $(sort $(wildcard deprecated/* .c) )
3641ZSTD_FILES := $(ZSTDCOMMON_FILES )
3742
38- ZSTD_LEGACY_SUPPORT ?= 4
43+ ZSTD_LEGACY_SUPPORT ?= 5
3944ZSTD_LIB_COMPRESSION ?= 1
4045ZSTD_LIB_DECOMPRESSION ?= 1
4146ZSTD_LIB_DICTBUILDER ?= 1
@@ -52,11 +57,11 @@ ifeq ($(ZSTD_LIB_DECOMPRESSION), 0)
5257endif
5358
5459ifneq ($(ZSTD_LIB_COMPRESSION ) , 0)
55- ZSTD_FILES += $(ZSTDCOMP_FILES)
60+ ZSTD_FILES += $(ZSTDCOMP_FILES)
5661endif
5762
5863ifneq ($(ZSTD_LIB_DECOMPRESSION ) , 0)
59- ZSTD_FILES += $(ZSTDDECOMP_FILES)
64+ ZSTD_FILES += $(ZSTDDECOMP_FILES)
6065endif
6166
6267ifneq ($(ZSTD_LIB_DEPRECATED ) , 0)
6974
7075ifneq ($(ZSTD_LEGACY_SUPPORT ) , 0)
7176ifeq ($(shell test $(ZSTD_LEGACY_SUPPORT ) -lt 8; echo $$? ) , 0)
72- ZSTD_FILES += $(shell ls legacy/*.c | grep 'v0[$(ZSTD_LEGACY_SUPPORT)-7]')
77+ ZSTD_FILES += $(shell ls legacy/*.c | $(GREP) 'v0[$(ZSTD_LEGACY_SUPPORT)-7]')
7378endif
7479 CPPFLAGS += -I./legacy
7580endif
9196 SHARED_EXT_VER = $(SHARED_EXT).$(LIBVER)
9297endif
9398
94- LIBZSTD = libzstd.$(SHARED_EXT_VER )
95-
9699
97100.PHONY : default all clean install uninstall
98101
@@ -108,19 +111,28 @@ libzstd.a: $(ZSTD_OBJ)
108111libzstd.a-mt : CPPFLAGS += -DZSTD_MULTITHREAD
109112libzstd.a-mt : libzstd.a
110113
111- $(LIBZSTD ) : LDFLAGS += -shared -fPIC -fvisibility=hidden
114+ ifneq (,$(filter Windows% ,$(OS ) ) )
115+
116+ LIBZSTD = dll\libzstd.dll
112117$(LIBZSTD ) : $(ZSTD_FILES )
113118 @echo compiling dynamic library $(LIBVER )
114- ifneq (, $( filter Windows % , $( OS ) ) )
115- @$(CC) $(FLAGS) -DZSTD_DLL_EXPORT=1 -shared $^ -o dll\libzstd.dll
116- dlltool -D dll\libzstd.dll -d dll\libzstd.def -l dll\libzstd.lib
119+ @ $( CC ) $( FLAGS ) -DZSTD_DLL_EXPORT=1 -shared $^ -o $@
120+ dlltool -D $@ -d dll\l ibzstd.def -l dll\l ibzstd.lib
121+
117122else
123+
124+ LIBZSTD = libzstd.$(SHARED_EXT_VER )
125+ $(LIBZSTD ) : LDFLAGS += -shared -fPIC -fvisibility=hidden
126+ $(LIBZSTD ) : $(ZSTD_FILES )
127+ @echo compiling dynamic library $(LIBVER )
118128 @$(CC ) $(FLAGS ) $^ $(LDFLAGS ) $(SONAME_FLAGS ) -o $@
119129 @echo creating versioned links
120130 @ln -sf $@ libzstd.$(SHARED_EXT_MAJOR )
121131 @ln -sf $@ libzstd.$(SHARED_EXT )
132+
122133endif
123134
135+
124136libzstd : $(LIBZSTD )
125137
126138libzstd-mt : CPPFLAGS += -DZSTD_MULTITHREAD
@@ -154,7 +166,7 @@ clean:
154166# -----------------------------------------------------------------------------
155167# make install is validated only for Linux, macOS, BSD, Hurd and Solaris targets
156168# -----------------------------------------------------------------------------
157- ifneq (,$(filter $(shell uname) ,Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS) )
169+ ifneq (,$(filter $(shell uname) ,Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku ) )
158170
159171DESTDIR ?=
160172# directory variables : GNU conventions prefer lowercase
0 commit comments