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 ColletCPPFLAGS+= -DXXH_NAMESPACE=LZ4_
46f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann ColletCFLAGS  ?= -O3
47f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann ColletDEBUGFLAGS:=-g -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
48f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Collet           -Wswitch-enum -Wdeclaration-after-statement -Wstrict-prototypes -Wundef \
49f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Collet           -Wpointer-arith -Wstrict-aliasing=1
50d06ab4f4159ed930b36dc4f24d750628daf28f07Przemyslaw SkibinskiCFLAGS  += $(MOREFLAGS)
51f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann ColletFLAGS    = $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)
52d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet
53d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet
54d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet
55d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# OS X linker doesn't support -soname, and use different extension
56d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet# see : https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html
57d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Colletifeq ($(shell uname), Darwin)
58d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet	SHARED_EXT = dylib
59d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet	SHARED_EXT_MAJOR = $(LIBVER_MAJOR).$(SHARED_EXT)
60d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet	SHARED_EXT_VER = $(LIBVER).$(SHARED_EXT)
61d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet	SONAME_FLAGS = -install_name $(PREFIX)/lib/liblz4.$(SHARED_EXT_MAJOR) -compatibility_version $(LIBVER_MAJOR) -current_version $(LIBVER)
62d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Colletelse
63d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet	SONAME_FLAGS = -Wl,-soname=liblz4.$(SHARED_EXT).$(LIBVER_MAJOR)
64d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet	SHARED_EXT = so
65d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet	SHARED_EXT_MAJOR = $(SHARED_EXT).$(LIBVER_MAJOR)
66d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet	SHARED_EXT_VER = $(SHARED_EXT).$(LIBVER)
67d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Colletendif
68d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet
69385cb4f539134b3cb855a29eef99a4a876f728d2Yann ColletLIBLZ4 = liblz4.$(SHARED_EXT_VER)
70385cb4f539134b3cb855a29eef99a4a876f728d2Yann Collet
711abecbc33c8ec5b84d2623dcbe73136aeb99db37Yann Colletdefault: lib-release
72d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet
73f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Colletlib-release: liblz4.a liblz4
74f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Collet
75f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Colletlib: CFLAGS += $(DEBUGFLAGS)
76f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Colletlib: lib-release
77f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Collet
78063b4d92e10bb6b430e515e5cdd36b64fce6a01aPrzemyslaw Skibinskiall: lib
79063b4d92e10bb6b430e515e5cdd36b64fce6a01aPrzemyslaw Skibinski
801abecbc33c8ec5b84d2623dcbe73136aeb99db37Yann Colletall32: CFLAGS+=-m32
811abecbc33c8ec5b84d2623dcbe73136aeb99db37Yann Colletall32: all
821abecbc33c8ec5b84d2623dcbe73136aeb99db37Yann Collet
83ca80a7c8f77f5405cba5b8a52abb1dda78602bf7Przemyslaw Skibinskiliblz4.a: *.c
8443b631223b2d0425a0970876974074934f89c450Mike Frysingerifeq ($(BUILD_STATIC),yes)
85d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet	@echo compiling static library
867819d58787082f794afcc38c1a19ee20a805f4bdYann Collet	@$(CC) $(CPPFLAGS) $(CFLAGS) -c $^
87ca80a7c8f77f5405cba5b8a52abb1dda78602bf7Przemyslaw Skibinski	@$(AR) rcs $@ *.o
8843b631223b2d0425a0970876974074934f89c450Mike Frysingerendif
89ca80a7c8f77f5405cba5b8a52abb1dda78602bf7Przemyslaw Skibinski
90385cb4f539134b3cb855a29eef99a4a876f728d2Yann Collet$(LIBLZ4): *.c
91d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet	@echo compiling dynamic library $(LIBVER)
925a5ebeec15d272b0b85aa2cef2a0da3dce920b80Yann Colletifneq (,$(filter Windows%,$(OS)))
93f71340ce1d8daa9f13cf4f1ecf2a21f23e3790ffPrzemyslaw Skibinski	@$(CC) $(FLAGS) -DLZ4_DLL_EXPORT=1 -shared $^ -o dll\$@.dll
94f71340ce1d8daa9f13cf4f1ecf2a21f23e3790ffPrzemyslaw Skibinski	dlltool -D dll\liblz4.dll -d dll\liblz4.def -l dll\liblz4.lib
95ca80a7c8f77f5405cba5b8a52abb1dda78602bf7Przemyslaw Skibinskielse
96385cb4f539134b3cb855a29eef99a4a876f728d2Yann Collet	@$(CC) $(FLAGS) -shared $^ -fPIC $(SONAME_FLAGS) -o $@
97d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet	@echo creating versioned links
98385cb4f539134b3cb855a29eef99a4a876f728d2Yann Collet	@ln -sf $@ liblz4.$(SHARED_EXT_MAJOR)
99385cb4f539134b3cb855a29eef99a4a876f728d2Yann Collet	@ln -sf $@ liblz4.$(SHARED_EXT)
100ca80a7c8f77f5405cba5b8a52abb1dda78602bf7Przemyslaw Skibinskiendif
101d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet
102385cb4f539134b3cb855a29eef99a4a876f728d2Yann Colletliblz4: $(LIBLZ4)
103385cb4f539134b3cb855a29eef99a4a876f728d2Yann Collet
104d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Colletclean:
10570526a11e033a640fb9e7ae80fe75b465d484bf0Yann Collet	@$(RM) core *.o liblz4.pc dll/liblz4.dll dll/liblz4.lib
10670526a11e033a640fb9e7ae80fe75b465d484bf0Yann Collet	@$(RM) *.a *.$(SHARED_EXT) *.$(SHARED_EXT_MAJOR) *.$(SHARED_EXT_VER)
107d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet	@echo Cleaning library completed
108d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet
109d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet
110ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinski#-----------------------------------------------------------------------------
111ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinski# make install is validated only for Linux, OSX, BSD, Hurd and Solaris targets
112ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinski#-----------------------------------------------------------------------------
113ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinskiifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS))
114ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinski
115ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinskiifneq (,$(filter $(shell uname),SunOS))
116ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw SkibinskiINSTALL ?= ginstall
117ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinskielse
118ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw SkibinskiINSTALL ?= install
119ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinskiendif
120b22e2bed5e44f2cdacb11cf01d4a15a00bcb76caPrzemyslaw Skibinski
1217a73c5c1fe1cf3c95fded86cf5051a70327dcfd1Przemyslaw SkibinskiPREFIX     ?= /usr/local
122b22e2bed5e44f2cdacb11cf01d4a15a00bcb76caPrzemyslaw SkibinskiDESTDIR    ?=
123b22e2bed5e44f2cdacb11cf01d4a15a00bcb76caPrzemyslaw SkibinskiLIBDIR     ?= $(PREFIX)/lib
124b22e2bed5e44f2cdacb11cf01d4a15a00bcb76caPrzemyslaw SkibinskiINCLUDEDIR ?= $(PREFIX)/include
125ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinski
126ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinskiifneq (,$(filter $(shell uname),OpenBSD FreeBSD NetBSD DragonFly))
127ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw SkibinskiPKGCONFIGDIR ?= $(PREFIX)/libdata/pkgconfig
128ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinskielse
129ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw SkibinskiPKGCONFIGDIR ?= $(LIBDIR)/pkgconfig
130ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinskiendif
131ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinski
132b22e2bed5e44f2cdacb11cf01d4a15a00bcb76caPrzemyslaw SkibinskiINSTALL_LIB  ?= $(INSTALL) -m 755
133ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw SkibinskiINSTALL_DATA ?= $(INSTALL) -m 644
134d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet
135d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Colletliblz4.pc: liblz4.pc.in Makefile
136d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet	@echo creating pkgconfig
137d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet	@sed -e 's|@PREFIX@|$(PREFIX)|' \
138f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Collet         -e 's|@LIBDIR@|$(LIBDIR)|' \
139f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Collet         -e 's|@INCLUDEDIR@|$(INCLUDEDIR)|' \
140f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Collet         -e 's|@VERSION@|$(LIBVER)|' \
141f4c74e6fac82d090d4511dc2d83b09725ff5e639Yann Collet          $< >$@
142d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet
143063b4d92e10bb6b430e515e5cdd36b64fce6a01aPrzemyslaw Skibinskiinstall: lib liblz4.pc
144ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinski	@$(INSTALL) -d -m 755 $(DESTDIR)$(PKGCONFIGDIR)/ $(DESTDIR)$(INCLUDEDIR)/
145ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinski	@$(INSTALL_DATA) liblz4.pc $(DESTDIR)$(PKGCONFIGDIR)/
146ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinski	@echo Installing libraries
14743b631223b2d0425a0970876974074934f89c450Mike Frysingerifeq ($(BUILD_STATIC),yes)
148ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinski	@$(INSTALL_LIB) liblz4.a $(DESTDIR)$(LIBDIR)/liblz4.a
14943b631223b2d0425a0970876974074934f89c450Mike Frysingerendif
150ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinski	@$(INSTALL_LIB) liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR)
151ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinski	@ln -sf liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT_MAJOR)
152ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinski	@ln -sf liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT)
153ea51ad0ceefd0a47df706a9301a8baf9b2629cc0Przemyslaw Skibinski	@echo Installing includes
154e6536faf337e1c4e202f32bec860e2c87511d7f3Przemyslaw Skibinski	@$(INSTALL_DATA) lz4.h $(DESTDIR)$(INCLUDEDIR)/lz4.h
155e6536faf337e1c4e202f32bec860e2c87511d7f3Przemyslaw Skibinski	@$(INSTALL_DATA) lz4hc.h $(DESTDIR)$(INCLUDEDIR)/lz4hc.h
156e6536faf337e1c4e202f32bec860e2c87511d7f3Przemyslaw Skibinski	@$(INSTALL_DATA) lz4frame.h $(DESTDIR)$(INCLUDEDIR)/lz4frame.h
157cd18ed3086a3eaf5d6531412959bd875b74dc6c1Yann Collet	@echo lz4 static and shared libraries installed
158d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet
159d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Colletuninstall:
160385cb4f539134b3cb855a29eef99a4a876f728d2Yann Collet	@$(RM) $(DESTDIR)$(LIBDIR)/pkgconfig/liblz4.pc
1613b9439ccd043fe5704af6528f3b3155cf6f8f0c4Yann Collet	@$(RM) $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT)
1623b9439ccd043fe5704af6528f3b3155cf6f8f0c4Yann Collet	@$(RM) $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT_MAJOR)
1633b9439ccd043fe5704af6528f3b3155cf6f8f0c4Yann Collet	@$(RM) $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT_VER)
1643b9439ccd043fe5704af6528f3b3155cf6f8f0c4Yann Collet	@$(RM) $(DESTDIR)$(LIBDIR)/liblz4.a
1653b9439ccd043fe5704af6528f3b3155cf6f8f0c4Yann Collet	@$(RM) $(DESTDIR)$(INCLUDEDIR)/lz4.h
1663b9439ccd043fe5704af6528f3b3155cf6f8f0c4Yann Collet	@$(RM) $(DESTDIR)$(INCLUDEDIR)/lz4hc.h
1673b9439ccd043fe5704af6528f3b3155cf6f8f0c4Yann Collet	@$(RM) $(DESTDIR)$(INCLUDEDIR)/lz4frame.h
168d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet	@echo lz4 libraries successfully uninstalled
169d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Collet
170d008c87151abf8c36a9f98d28461bf6f3dfdc6aeYann Colletendif
171