1 # ################################################################
2 # Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
5 # This source code is licensed under the BSD-style license found in the
6 # LICENSE file in the root directory of this source tree. An additional grant
7 # of patent rights can be found in the PATENTS file in the same directory.
8 # ################################################################
11 LIBVER_MAJOR_SCRIPT
:=`sed -n '/define ZSTD_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./zstd.h`
12 LIBVER_MINOR_SCRIPT
:=`sed -n '/define ZSTD_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./zstd.h`
13 LIBVER_PATCH_SCRIPT
:=`sed -n '/define ZSTD_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./zstd.h`
14 LIBVER_SCRIPT
:= $(LIBVER_MAJOR_SCRIPT
).
$(LIBVER_MINOR_SCRIPT
).
$(LIBVER_PATCH_SCRIPT
)
15 LIBVER_MAJOR
:= $(shell echo
$(LIBVER_MAJOR_SCRIPT
))
16 LIBVER_MINOR
:= $(shell echo
$(LIBVER_MINOR_SCRIPT
))
17 LIBVER_PATCH
:= $(shell echo
$(LIBVER_PATCH_SCRIPT
))
18 LIBVER
:= $(shell echo
$(LIBVER_SCRIPT
))
23 LIBDIR ?
= $(PREFIX
)/lib
24 INCLUDEDIR
=$(PREFIX
)/include
26 CPPFLAGS
+= -I.
-I.
/common
-DXXH_NAMESPACE
=ZSTD_
28 CFLAGS
+= -Wall
-Wextra
-Wcast-qual
-Wcast-align
-Wshadow
-Wstrict-aliasing
=1 \
29 -Wswitch-enum
-Wdeclaration-after-statement
-Wstrict-prototypes
-Wundef \
31 CFLAGS
+= $(MOREFLAGS
)
32 FLAGS
= $(CPPFLAGS
) $(CFLAGS
)
35 ZSTD_FILES
:= $(wildcard common
/*.c compress
/*.c decompress
/*.c dictBuilder
/*.c deprecated
/*.c
)
37 ifeq ($(ZSTD_LEGACY_SUPPORT
), 0)
38 CPPFLAGS
+= -DZSTD_LEGACY_SUPPORT
=0
40 CPPFLAGS
+= -I.
/legacy
-DZSTD_LEGACY_SUPPORT
=1
41 ZSTD_FILES
+= $(wildcard legacy
/*.c
)
44 # OS X linker doesn't support -soname, and use different extension
45 # see : https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html
46 ifeq ($(shell uname
), Darwin
)
48 SHARED_EXT_MAJOR
= $(LIBVER_MAJOR
).
$(SHARED_EXT
)
49 SHARED_EXT_VER
= $(LIBVER
).
$(SHARED_EXT
)
50 SONAME_FLAGS
= -install_name
$(LIBDIR
)/libzstd.
$(SHARED_EXT_MAJOR
) -compatibility_version
$(LIBVER_MAJOR
) -current_version
$(LIBVER
)
52 SONAME_FLAGS
= -Wl
,-soname
=libzstd.
$(SHARED_EXT
).
$(LIBVER_MAJOR
)
54 SHARED_EXT_MAJOR
= $(SHARED_EXT
).
$(LIBVER_MAJOR
)
55 SHARED_EXT_VER
= $(SHARED_EXT
).
$(LIBVER
)
58 LIBZSTD
= libzstd.
$(SHARED_EXT_VER
)
61 .PHONY
: default
all clean install uninstall
67 libzstd.a
: ARFLAGS
= rcs
68 libzstd.a
: $(ZSTD_FILES
)
69 @echo compiling static library
71 @
$(AR
) $(ARFLAGS
) $@
*.o
73 $(LIBZSTD
): LDFLAGS
+= -shared
-fPIC
-fvisibility
=hidden
74 $(LIBZSTD
): $(ZSTD_FILES
)
75 @echo compiling dynamic library
$(LIBVER
)
76 ifneq (,$(filter Windows
%,$(OS
)))
77 @
$(CC
) $(FLAGS
) -DZSTD_DLL_EXPORT
=1 -shared
$^
-o dll\libzstd.dll
78 dlltool
-D dll\libzstd.dll
-d dll\libzstd.def
-l dll\libzstd.lib
80 @
$(CC
) $(FLAGS
) $^
$(LDFLAGS
) $(SONAME_FLAGS
) -o
$@
81 @echo creating versioned links
82 @ln
-sf
$@ libzstd.
$(SHARED_EXT_MAJOR
)
83 @ln
-sf
$@ libzstd.
$(SHARED_EXT
)
88 lib
: libzstd.a libzstd
91 @
$(RM
) core
*.o
*.a
*.gcda
*.
$(SHARED_EXT
) *.
$(SHARED_EXT
).
* libzstd.
pc dll
/libzstd.dll dll
/libzstd.lib
93 @echo Cleaning library completed
95 #------------------------------------------------------------------------
96 #make install is validated only for Linux, OSX, kFreeBSD, Hurd and some BSD targets
97 ifneq (,$(filter $(shell uname
),Linux Darwin GNU
/kFreeBSD GNU FreeBSD DragonFly NetBSD
))
100 libzstd.
pc: libzstd.
pc.in
101 @echo creating pkgconfig
102 @sed
-e
's|@PREFIX@|$(PREFIX)|' \
103 -e
's|@LIBDIR@|$(LIBDIR)|' \
104 -e
's|@INCLUDEDIR@|$(INCLUDEDIR)|' \
105 -e
's|@VERSION@|$(VERSION)|' \
108 install: libzstd.a libzstd libzstd.
pc
109 @
install -d
-m
755 $(DESTDIR
)$(LIBDIR
)/pkgconfig
/ $(DESTDIR
)$(INCLUDEDIR
)/
110 @
install -m
755 libzstd.
$(SHARED_EXT_VER
) $(DESTDIR
)$(LIBDIR
)
111 @cp
-a libzstd.
$(SHARED_EXT_MAJOR
) $(DESTDIR
)$(LIBDIR
)
112 @cp
-a libzstd.
$(SHARED_EXT
) $(DESTDIR
)$(LIBDIR
)
113 @cp
-a libzstd.
pc $(DESTDIR
)$(LIBDIR
)/pkgconfig
/
114 @
install -m
644 libzstd.a
$(DESTDIR
)$(LIBDIR
)
115 @
install -m
644 zstd.h
$(DESTDIR
)$(INCLUDEDIR
)
116 @
install -m
644 common
/zstd_errors.h
$(DESTDIR
)$(INCLUDEDIR
)
117 @
install -m
644 deprecated
/zbuff.h
$(DESTDIR
)$(INCLUDEDIR
) # prototypes generate deprecation warnings
118 @
install -m
644 dictBuilder
/zdict.h
$(DESTDIR
)$(INCLUDEDIR
)
119 @echo zstd static and shared library installed
122 @
$(RM
) $(DESTDIR
)$(LIBDIR
)/libzstd.a
123 @
$(RM
) $(DESTDIR
)$(LIBDIR
)/libzstd.
$(SHARED_EXT
)
124 @
$(RM
) $(DESTDIR
)$(LIBDIR
)/libzstd.
$(SHARED_EXT_MAJOR
)
125 @
$(RM
) $(DESTDIR
)$(LIBDIR
)/libzstd.
$(SHARED_EXT_VER
)
126 @
$(RM
) $(DESTDIR
)$(LIBDIR
)/pkgconfig
/libzstd.
pc
127 @
$(RM
) $(DESTDIR
)$(INCLUDEDIR
)/zstd.h
128 @
$(RM
) $(DESTDIR
)$(INCLUDEDIR
)/zstd_errors.h
129 @
$(RM
) $(DESTDIR
)$(INCLUDEDIR
)/zbuff.h
# Deprecated streaming functions
130 @
$(RM
) $(DESTDIR
)$(INCLUDEDIR
)/zdict.h
131 @echo zstd libraries successfully uninstalled