Makefile revision 7bfbccb972d349b66f45c9791a12477bfee4c40e
1# ################################################################ 2# LZ4 library - Makefile 3# Copyright (C) Yann Collet 2011-2015 4# All rights reserved. 5# 6# BSD license 7# Redistribution and use in source and binary forms, with or without modification, 8# are permitted provided that the following conditions are met: 9# 10# * Redistributions of source code must retain the above copyright notice, this 11# list of conditions and the following disclaimer. 12# 13# * Redistributions in binary form must reproduce the above copyright notice, this 14# list of conditions and the following disclaimer in the documentation and/or 15# other materials provided with the distribution. 16# 17# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 21# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 24# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 26# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27# 28# You can contact the author at : 29# - LZ4 source repository : https://github.com/Cyan4973/lz4 30# - LZ4 forum froup : https://groups.google.com/forum/#!forum/lz4c 31# ################################################################ 32 33# Version numbers 34VERSION?= 132 35LIBVER_MAJOR:=`sed -n '/define LZ4_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lz4.h` 36LIBVER_MINOR:=`sed -n '/define LZ4_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lz4.h` 37LIBVER_PATCH:=`sed -n '/define LZ4_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lz4.h` 38LIBVER := $(LIBVER_MAJOR).$(LIBVER_MINOR).$(LIBVER_PATCH) 39 40DESTDIR?= 41PREFIX ?= /usr/local 42CPPFLAGS= -DXXH_NAMESPACE=LZ4_ 43CFLAGS ?= -O3 44CFLAGS += -std=c99 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Wcast-qual -Wstrict-prototypes -pedantic 45FLAGS = $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) 46 47LIBDIR?= $(PREFIX)/lib 48INCLUDEDIR=$(PREFIX)/include 49 50 51# OS X linker doesn't support -soname, and use different extension 52# see : https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html 53ifeq ($(shell uname), Darwin) 54 SHARED_EXT = dylib 55 SHARED_EXT_MAJOR = $(LIBVER_MAJOR).$(SHARED_EXT) 56 SHARED_EXT_VER = $(LIBVER).$(SHARED_EXT) 57 SONAME_FLAGS = -install_name $(PREFIX)/lib/liblz4.$(SHARED_EXT_MAJOR) -compatibility_version $(LIBVER_MAJOR) -current_version $(LIBVER) 58else 59 SONAME_FLAGS = -Wl,-soname=liblz4.$(SHARED_EXT).$(LIBVER_MAJOR) 60 SHARED_EXT = so 61 SHARED_EXT_MAJOR = $(SHARED_EXT).$(LIBVER_MAJOR) 62 SHARED_EXT_VER = $(SHARED_EXT).$(LIBVER) 63endif 64 65default: liblz4 66 67all: liblz4 68 69liblz4: lz4.c lz4hc.c lz4frame.c xxhash.c # need to compile once with -fPIC, and once without -fPIC 70 @echo compiling static library 71 @$(AR) rcs $@.a $^ 72 @echo compiling dynamic library $(LIBVER) 73 @$(CC) $(FLAGS) -shared $^ -fPIC $(SONAME_FLAGS) -o $@.$(SHARED_EXT_VER) 74 @echo creating versioned links 75 @ln -sf $@.$(SHARED_EXT_VER) $@.$(SHARED_EXT_MAJOR) 76 @ln -sf $@.$(SHARED_EXT_VER) $@.$(SHARED_EXT) 77 78clean: 79 @rm -f core *.o *.a *.$(SHARED_EXT) *.$(SHARED_EXT).* liblz4.pc 80 @echo Cleaning library completed 81 82 83#------------------------------------------------------------------------ 84#make install is validated only for Linux, OSX, kFreeBSD, Hurd and 85#FreeBSD targets 86ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU FreeBSD)) 87 88liblz4.pc: liblz4.pc.in Makefile 89 @echo creating pkgconfig 90 @sed -e 's|@PREFIX@|$(PREFIX)|' \ 91 -e 's|@LIBDIR@|$(LIBDIR)|' \ 92 -e 's|@INCLUDEDIR@|$(INCLUDEDIR)|' \ 93 -e 's|@VERSION@|$(VERSION)|' \ 94 $< >$@ 95 96install: liblz4 liblz4.pc 97 @install -d -m 755 $(DESTDIR)$(LIBDIR)/pkgconfig/ $(DESTDIR)$(INCLUDEDIR)/ 98 @install -m 755 liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR) 99 @ln -sf liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT_MAJOR) 100 @ln -sf liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT) 101 @install -m 644 liblz4.pc $(DESTDIR)$(LIBDIR)/pkgconfig/ 102 @install -m 644 liblz4.a $(DESTDIR)$(LIBDIR)/liblz4.a 103 @install -m 644 lz4.h $(DESTDIR)$(INCLUDEDIR)/lz4.h 104 @install -m 644 lz4hc.h $(DESTDIR)$(INCLUDEDIR)/lz4hc.h 105 @install -m 644 lz4frame.h $(DESTDIR)$(INCLUDEDIR)/lz4frame.h 106 @echo lz4 static and shared libraries installed 107 108uninstall: 109 @rm -f $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT) 110 @rm -f $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT_MAJOR) 111 @rm -f $(DESTDIR)$(LIBDIR)/pkgconfig/liblz4.pc 112 @[ -x $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT_VER) ] && rm -f $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT_VER) 113 @[ -f $(DESTDIR)$(LIBDIR)/liblz4.a ] && rm -f $(DESTDIR)$(LIBDIR)/liblz4.a 114 @[ -f $(DESTDIR)$(INCLUDEDIR)/lz4.h ] && rm -f $(DESTDIR)$(INCLUDEDIR)/lz4.h 115 @[ -f $(DESTDIR)$(INCLUDEDIR)/lz4hc.h ] && rm -f $(DESTDIR)$(INCLUDEDIR)/lz4hc.h 116 @[ -f $(DESTDIR)$(INCLUDEDIR)/lz4frame.h ] && rm -f $(DESTDIR)$(INCLUDEDIR)/lz4frame.h 117 @echo lz4 libraries successfully uninstalled 118 119endif 120