1- # ################################################################
1+ # ##########################################################################
22# Copyright (c) 2016-present, Yann Collet, Facebook, Inc.
33# All rights reserved.
44#
5+ # This Makefile is validated for Linux, macOS, *BSD, Hurd, Solaris, MSYS2 targets
6+ #
57# This source code is licensed under the BSD-style license found in the
68# LICENSE file in the root directory of this source tree. An additional grant
79# of patent rights can be found in the PATENTS file in the same directory.
8- # ################################################################
10+ # ##########################################################################
911
1012# Version numbers
1113LIBVER_MAJOR_SCRIPT: =` sed -n ' /define ZSTD_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./zstd.h `
@@ -18,17 +20,12 @@ LIBVER_PATCH := $(shell echo $(LIBVER_PATCH_SCRIPT))
1820LIBVER := $(shell echo $(LIBVER_SCRIPT ) )
1921VERSION? = $(LIBVER )
2022
21- DESTDIR? =
22- PREFIX ?= /usr/local
23- LIBDIR ?= $(PREFIX ) /lib
24- INCLUDEDIR =$(PREFIX ) /include
25-
2623CPPFLAGS+ = -I. -I./common -DXXH_NAMESPACE=ZSTD_
2724CFLAGS ?= -O3
28- CFLAGS + = -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow -Wstrict-aliasing=1 \
29- -Wswitch-enum -Wdeclaration-after-statement -Wstrict-prototypes -Wundef \
30- -Wpointer-arith
31- CFLAGS += $(MOREFLAGS )
25+ DEBUGFLAGS = -g - Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
26+ -Wstrict-aliasing=1 - Wswitch-enum -Wdeclaration-after-statement \
27+ -Wstrict-prototypes -Wundef - Wpointer-arith
28+ CFLAGS += $(DEBUGFLAGS ) $( MOREFLAGS )
3229FLAGS = $(CPPFLAGS ) $(CFLAGS )
3330
3431
@@ -41,6 +38,8 @@ CPPFLAGS += -I./legacy -DZSTD_LEGACY_SUPPORT=1
4138ZSTD_FILES+ = $(wildcard legacy/* .c)
4239endif
4340
41+ ZSTD_OBJ := $(patsubst % .c,% .o,$(ZSTD_FILES ) )
42+
4443# OS X linker doesn't support -soname, and use different extension
4544# see : https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html
4645ifeq ($(shell uname) , Darwin)
@@ -60,15 +59,14 @@ LIBZSTD = libzstd.$(SHARED_EXT_VER)
6059
6160.PHONY : default all clean install uninstall
6261
63- default : lib
62+ default : lib-release
6463
6564all : lib
6665
6766libzstd.a : ARFLAGS = rcs
68- libzstd.a : $(ZSTD_FILES )
67+ libzstd.a : $(ZSTD_OBJ )
6968 @echo compiling static library
70- @$(CC ) $(FLAGS ) -c $^
71- @$(AR ) $(ARFLAGS ) $@ * .o
69+ @$(AR ) $(ARFLAGS ) $@ $^
7270
7371$(LIBZSTD ) : LDFLAGS += -shared -fPIC -fvisibility=hidden
7472$(LIBZSTD ) : $(ZSTD_FILES )
@@ -87,14 +85,41 @@ libzstd : $(LIBZSTD)
8785
8886lib : libzstd.a libzstd
8987
88+ lib-release : DEBUGFLAGS :=
89+ lib-release : lib
90+
9091clean :
91- @$(RM ) core * .o * .a * .gcda * .$(SHARED_EXT ) * .$(SHARED_EXT ) .* libzstd.pc dll/libzstd.dll dll/libzstd.lib
92- @$(RM ) decompress/* .o
92+ @$(RM ) -r * .dSYM # Mac OS-X specific
93+ @$(RM ) core * .o * .a * .gcda * .$(SHARED_EXT ) * .$(SHARED_EXT ) .* libzstd.pc
94+ @$(RM ) dll/libzstd.dll dll/libzstd.lib
95+ @$(RM ) common/* .o compress/* .o decompress/* .o dictBuilder/* .o legacy/* .o deprecated/* .o
9396 @echo Cleaning library completed
9497
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) )
98+ # -----------------------------------------------------------------------------
99+ # make install is validated only for Linux, OSX, BSD, Hurd and Solaris targets
100+ # -----------------------------------------------------------------------------
101+ ifneq (,$(filter $(shell uname) ,Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS) )
102+
103+ ifneq (,$(filter $(shell uname) ,SunOS) )
104+ INSTALL ?= ginstall
105+ else
106+ INSTALL ?= install
107+ endif
108+
109+ PREFIX ?= /usr/local
110+ DESTDIR ?=
111+ LIBDIR ?= $(PREFIX ) /lib
112+ INCLUDEDIR ?= $(PREFIX ) /include
113+
114+ ifneq (,$(filter $(shell uname) ,OpenBSD FreeBSD NetBSD DragonFly) )
115+ PKGCONFIGDIR ?= $(PREFIX ) /libdata/pkgconfig
116+ else
117+ PKGCONFIGDIR ?= $(LIBDIR ) /pkgconfig
118+ endif
119+
120+ INSTALL_LIB ?= $(INSTALL ) -m 755
121+ INSTALL_DATA ?= $(INSTALL ) -m 644
122+
98123
99124libzstd.pc :
100125libzstd.pc : libzstd.pc.in
@@ -106,24 +131,26 @@ libzstd.pc: libzstd.pc.in
106131 $< >$@
107132
108133install : 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 )
134+ @$(INSTALL ) -d -m 755 $(DESTDIR )$(PKGCONFIGDIR ) / $(DESTDIR )$(INCLUDEDIR ) /
135+ @$(INSTALL_DATA ) libzstd.pc $(DESTDIR )$(PKGCONFIGDIR ) /
136+ @echo Installing libraries
137+ @$(INSTALL_LIB ) libzstd.a $(DESTDIR )$(LIBDIR )
138+ @$(INSTALL_LIB ) libzstd.$(SHARED_EXT_VER ) $(DESTDIR )$(LIBDIR )
139+ @ln -sf libzstd.$(SHARED_EXT_VER ) $(DESTDIR )$(LIBDIR ) /libzstd.$(SHARED_EXT_MAJOR )
140+ @ln -sf libzstd.$(SHARED_EXT_VER ) $(DESTDIR )$(LIBDIR ) /libzstd.$(SHARED_EXT )
141+ @echo Installing includes
142+ @$(INSTALL_DATA ) zstd.h $(DESTDIR )$(INCLUDEDIR )
143+ @$(INSTALL_DATA ) common/zstd_errors.h $(DESTDIR )$(INCLUDEDIR )
144+ @$(INSTALL_DATA ) deprecated/zbuff.h $(DESTDIR )$(INCLUDEDIR ) # prototypes generate deprecation warnings
145+ @$(INSTALL_DATA ) dictBuilder/zdict.h $(DESTDIR )$(INCLUDEDIR )
119146 @echo zstd static and shared library installed
120147
121148uninstall :
122149 @$(RM ) $(DESTDIR )$(LIBDIR ) /libzstd.a
123150 @$(RM ) $(DESTDIR )$(LIBDIR ) /libzstd.$(SHARED_EXT )
124151 @$(RM ) $(DESTDIR )$(LIBDIR ) /libzstd.$(SHARED_EXT_MAJOR )
125152 @$(RM ) $(DESTDIR )$(LIBDIR ) /libzstd.$(SHARED_EXT_VER )
126- @$(RM ) $(DESTDIR )$(LIBDIR ) /pkgconfig /libzstd.pc
153+ @$(RM ) $(DESTDIR )$(PKGCONFIGDIR ) /libzstd.pc
127154 @$(RM ) $(DESTDIR )$(INCLUDEDIR ) /zstd.h
128155 @$(RM ) $(DESTDIR )$(INCLUDEDIR ) /zstd_errors.h
129156 @$(RM ) $(DESTDIR )$(INCLUDEDIR ) /zbuff.h # Deprecated streaming functions
0 commit comments