Makefile revision f4c74e6fac82d090d4511dc2d83b09725ff5e639
1d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# ################################################################ 2d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# LZ4 library - Makefile 38b233b228dbda484d1d545c5a3ecaf06aef3e930Yann Collet# Copyright (C) Yann Collet 2011-2016 4d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# All rights reserved. 54fcb2e17fb065f1d061a9c72066dd4dc1eb94a3fJulius Werner# 6d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# BSD license 7d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# Redistribution and use in source and binary forms, with or without modification, 8d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# are permitted provided that the following conditions are met: 94fcb2e17fb065f1d061a9c72066dd4dc1eb94a3fJulius Werner# 10d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# * Redistributions of source code must retain the above copyright notice, this 11d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# list of conditions and the following disclaimer. 124fcb2e17fb065f1d061a9c72066dd4dc1eb94a3fJulius Werner# 13d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# * Redistributions in binary form must reproduce the above copyright notice, this 14d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# list of conditions and the following disclaimer in the documentation and/or 15d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# other materials provided with the distribution. 164fcb2e17fb065f1d061a9c72066dd4dc1eb94a3fJulius Werner# 17d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 21d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 24d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 26d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 274fcb2e17fb065f1d061a9c72066dd4dc1eb94a3fJulius Werner# 28d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# You can contact the author at : 292b55752a5c749e57bbd4c9b830ccf939510beec1Yann Collet# - LZ4 source repository : https://github.com/Cyan4973/lz4 30d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# - LZ4 forum froup : https://groups.google.com/forum/#!forum/lz4c 31d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# ################################################################ 32d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet 33d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# Version numbers 3428f98647e3349a4a0a9c8975199aa89f2a02f6b9Yann ColletLIBVER_MAJOR_SCRIPT:=`sed -n '/define LZ4_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./lz4.h` 3528f98647e3349a4a0a9c8975199aa89f2a02f6b9Yann ColletLIBVER_MINOR_SCRIPT:=`sed -n '/define LZ4_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./lz4.h` 3628f98647e3349a4a0a9c8975199aa89f2a02f6b9Yann ColletLIBVER_PATCH_SCRIPT:=`sed -n '/define LZ4_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./lz4.h` 3728f98647e3349a4a0a9c8975199aa89f2a02f6b9Yann ColletLIBVER_SCRIPT:= $(LIBVER_MAJOR_SCRIPT).$(LIBVER_MINOR_SCRIPT).$(LIBVER_PATCH_SCRIPT) 3828f98647e3349a4a0a9c8975199aa89f2a02f6b9Yann ColletLIBVER_MAJOR := $(shell echo $(LIBVER_MAJOR_SCRIPT)) 3928f98647e3349a4a0a9c8975199aa89f2a02f6b9Yann ColletLIBVER_MINOR := $(shell echo $(LIBVER_MINOR_SCRIPT)) 4028f98647e3349a4a0a9c8975199aa89f2a02f6b9Yann ColletLIBVER_PATCH := $(shell echo $(LIBVER_PATCH_SCRIPT)) 41f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann ColletLIBVER := $(shell echo $(LIBVER_SCRIPT)) 4228f98647e3349a4a0a9c8975199aa89f2a02f6b9Yann Collet 4343b631223b2d0425a0970876974074934f89c450Mike FrysingerBUILD_STATIC:= yes 44d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet 45f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann ColletDESTDIR ?= 46f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann ColletPREFIX ?= /usr/local 47f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann ColletLIBDIR ?= $(PREFIX)/lib 48f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann ColletINCLUDEDIR=$(PREFIX)/include 49f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Collet 50f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann ColletCPPFLAGS+= -DXXH_NAMESPACE=LZ4_ 51f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann ColletCFLAGS ?= -O3 52f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann ColletDEBUGFLAGS:=-g -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \ 53f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Collet -Wswitch-enum -Wdeclaration-after-statement -Wstrict-prototypes -Wundef \ 54f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Collet -Wpointer-arith -Wstrict-aliasing=1 55d06ab4f4159ed930b36dc4f24d750628daf28f07Przemyslaw SkibinskiCFLAGS += $(MOREFLAGS) 56f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann ColletFLAGS = $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) 57d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet 58d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet 59d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet 60d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# OS X linker doesn't support -soname, and use different extension 61d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# see : https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html 62d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Colletifeq ($(shell uname), Darwin) 63d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet SHARED_EXT = dylib 64d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet SHARED_EXT_MAJOR = $(LIBVER_MAJOR).$(SHARED_EXT) 65d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet SHARED_EXT_VER = $(LIBVER).$(SHARED_EXT) 66d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet SONAME_FLAGS = -install_name $(PREFIX)/lib/liblz4.$(SHARED_EXT_MAJOR) -compatibility_version $(LIBVER_MAJOR) -current_version $(LIBVER) 67d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Colletelse 68d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet SONAME_FLAGS = -Wl,-soname=liblz4.$(SHARED_EXT).$(LIBVER_MAJOR) 69d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet SHARED_EXT = so 70d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet SHARED_EXT_MAJOR = $(SHARED_EXT).$(LIBVER_MAJOR) 71d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet SHARED_EXT_VER = $(SHARED_EXT).$(LIBVER) 72d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Colletendif 73d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet 741abecbc33c8ec5b84d2623dcbe73136aeb99db37Yann Colletdefault: lib-release 75d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet 76f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Colletlib-release: liblz4.a liblz4 77f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Collet 78f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Colletlib: CFLAGS += $(DEBUGFLAGS) 79f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Colletlib: lib-release 80f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Collet 81063b4d92e10bb6b430e515e5cdd36b64fce6a01aPrzemyslaw Skibinskiall: lib 82063b4d92e10bb6b430e515e5cdd36b64fce6a01aPrzemyslaw Skibinski 831abecbc33c8ec5b84d2623dcbe73136aeb99db37Yann Colletall32: CFLAGS+=-m32 841abecbc33c8ec5b84d2623dcbe73136aeb99db37Yann Colletall32: all 851abecbc33c8ec5b84d2623dcbe73136aeb99db37Yann Collet 86ca80a7c8f77f5405cba5b8a52abb1dda78602bf7Przemyslaw Skibinskiliblz4.a: *.c 8743b631223b2d0425a0970876974074934f89c450Mike Frysingerifeq ($(BUILD_STATIC),yes) 88d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet @echo compiling static library 897819d58787082f794afcc38c1a19ee20a805f4bdYann Collet @$(CC) $(CPPFLAGS) $(CFLAGS) -c $^ 90ca80a7c8f77f5405cba5b8a52abb1dda78602bf7Przemyslaw Skibinski @$(AR) rcs $@ *.o 9143b631223b2d0425a0970876974074934f89c450Mike Frysingerendif 92ca80a7c8f77f5405cba5b8a52abb1dda78602bf7Przemyslaw Skibinski 93ca80a7c8f77f5405cba5b8a52abb1dda78602bf7Przemyslaw Skibinskiliblz4: *.c 94d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet @echo compiling dynamic library $(LIBVER) 955a5ebeec15d272b0b85aa2cef2a0da3dce920b80Yann Colletifneq (,$(filter Windows%,$(OS))) 96f71340ce1d8daa9f13cf4f1ecf2a21f23e3790ffPrzemyslaw Skibinski @$(CC) $(FLAGS) -DLZ4_DLL_EXPORT=1 -shared $^ -o dll\$@.dll 97f71340ce1d8daa9f13cf4f1ecf2a21f23e3790ffPrzemyslaw Skibinski dlltool -D dll\liblz4.dll -d dll\liblz4.def -l dll\liblz4.lib 98ca80a7c8f77f5405cba5b8a52abb1dda78602bf7Przemyslaw Skibinskielse 99a3c6daba6e582094897e98c63ccc18ec8097ee5fYann Collet @$(CC) $(FLAGS) -shared $^ -fPIC $(SONAME_FLAGS) -o $@.$(SHARED_EXT_VER) 100d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet @echo creating versioned links 101d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet @ln -sf $@.$(SHARED_EXT_VER) $@.$(SHARED_EXT_MAJOR) 102d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet @ln -sf $@.$(SHARED_EXT_VER) $@.$(SHARED_EXT) 103ca80a7c8f77f5405cba5b8a52abb1dda78602bf7Przemyslaw Skibinskiendif 104d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet 105d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Colletclean: 10619df3029e234e4c48c31377c9ef5f7c940da5106Yann Collet @$(RM) core *.o *.a *.$(SHARED_EXT) liblz4.pc dll/liblz4.dll dll/liblz4.lib 107d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet @echo Cleaning library completed 108d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet 109d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet 110d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet#------------------------------------------------------------------------ 1117bfbccb972d349b66f45c9791a12477bfee4c40eMartin Waschbüsch#make install is validated only for Linux, OSX, kFreeBSD, Hurd and 1127bfbccb972d349b66f45c9791a12477bfee4c40eMartin Waschbüsch#FreeBSD targets 1137bfbccb972d349b66f45c9791a12477bfee4c40eMartin Waschbüschifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU FreeBSD)) 114d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet 115d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Colletliblz4.pc: liblz4.pc.in Makefile 116d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet @echo creating pkgconfig 117d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet @sed -e 's|@PREFIX@|$(PREFIX)|' \ 118f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Collet -e 's|@LIBDIR@|$(LIBDIR)|' \ 119f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Collet -e 's|@INCLUDEDIR@|$(INCLUDEDIR)|' \ 120f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Collet -e 's|@VERSION@|$(LIBVER)|' \ 121f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Collet $< >$@ 122d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet 123063b4d92e10bb6b430e515e5cdd36b64fce6a01aPrzemyslaw Skibinskiinstall: lib liblz4.pc 124d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet @install -d -m 755 $(DESTDIR)$(LIBDIR)/pkgconfig/ $(DESTDIR)$(INCLUDEDIR)/ 125cd18ed3086a3eaf5d6531412959bd875b74dc6c1Yann Collet @install -m 755 liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR) 126cd18ed3086a3eaf5d6531412959bd875b74dc6c1Yann Collet @ln -sf liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT_MAJOR) 127cd18ed3086a3eaf5d6531412959bd875b74dc6c1Yann Collet @ln -sf liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT) 128cd18ed3086a3eaf5d6531412959bd875b74dc6c1Yann Collet @install -m 644 liblz4.pc $(DESTDIR)$(LIBDIR)/pkgconfig/ 12943b631223b2d0425a0970876974074934f89c450Mike Frysingerifeq ($(BUILD_STATIC),yes) 130d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet @install -m 644 liblz4.a $(DESTDIR)$(LIBDIR)/liblz4.a 13143b631223b2d0425a0970876974074934f89c450Mike Frysingerendif 132d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet @install -m 644 lz4.h $(DESTDIR)$(INCLUDEDIR)/lz4.h 133d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet @install -m 644 lz4hc.h $(DESTDIR)$(INCLUDEDIR)/lz4hc.h 134daa320f3f7bd9cc121462ef7a201fad87f540bd6Yann Collet @install -m 644 lz4frame.h $(DESTDIR)$(INCLUDEDIR)/lz4frame.h 135cd18ed3086a3eaf5d6531412959bd875b74dc6c1Yann Collet @echo lz4 static and shared libraries installed 136d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet 137d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Colletuninstall: 1383b9439ccd043fe5704af6528f3b3155cf6f8f0c4Yann Collet @$(RM) $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT) 1393b9439ccd043fe5704af6528f3b3155cf6f8f0c4Yann Collet @$(RM) $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT_MAJOR) 1403b9439ccd043fe5704af6528f3b3155cf6f8f0c4Yann Collet @$(RM) $(DESTDIR)$(LIBDIR)/pkgconfig/liblz4.pc 1413b9439ccd043fe5704af6528f3b3155cf6f8f0c4Yann Collet @$(RM) $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT_VER) 1423b9439ccd043fe5704af6528f3b3155cf6f8f0c4Yann Collet @$(RM) $(DESTDIR)$(LIBDIR)/liblz4.a 1433b9439ccd043fe5704af6528f3b3155cf6f8f0c4Yann Collet @$(RM) $(DESTDIR)$(INCLUDEDIR)/lz4.h 1443b9439ccd043fe5704af6528f3b3155cf6f8f0c4Yann Collet @$(RM) $(DESTDIR)$(INCLUDEDIR)/lz4hc.h 1453b9439ccd043fe5704af6528f3b3155cf6f8f0c4Yann Collet @$(RM) $(DESTDIR)$(INCLUDEDIR)/lz4frame.h 146d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet @echo lz4 libraries successfully uninstalled 147d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet 148d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Colletendif 149