From 0314027051fd931ef4bd06591fdf30ea03a0de3d Mon Sep 17 00:00:00 2001 From: Vincent Torri Date: Tue, 20 Nov 2018 21:08:23 +0100 Subject: [PATCH 1/3] Allow installation of lz4 for Windows (MSYS2 or when cross-compiling) --- Makefile | 2 +- lib/Makefile | 15 +++++++++++++-- programs/Makefile | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 2f8b85c..091b256 100644 --- a/Makefile +++ b/Makefile @@ -89,7 +89,7 @@ clean: #----------------------------------------------------------------------------- # make install is validated only for Linux, OSX, BSD, Hurd and Solaris targets #----------------------------------------------------------------------------- -ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku MidnightBSD)) +ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku MidnightBSD MINGW32_NT-6.1 MINGW64_NT-6.1)) HOST_OS = POSIX .PHONY: install uninstall diff --git a/lib/Makefile b/lib/Makefile index f535435..fc96bbd 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -73,7 +73,11 @@ else SHARED_EXT_VER = $(SHARED_EXT).$(LIBVER) endif +ifneq (,$(filter Windows%,$(OS))) +LIBLZ4 = liblz4-$(LIBVER_MAJOR) +else LIBLZ4 = liblz4.$(SHARED_EXT_VER) +endif .PHONY: default default: lib-release @@ -126,7 +130,7 @@ clean: #----------------------------------------------------------------------------- # make install is validated only for Linux, OSX, BSD, Hurd and Solaris targets #----------------------------------------------------------------------------- -ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku MidnightBSD)) +ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku MidnightBSD MINGW32_NT-6.1 MINGW64_NT-6.1)) .PHONY: listL120 listL120: # extract lines >= 120 characters in *.{c,h}, by Takayuki Matsuoka (note : $$, for Makefile compatibility) @@ -140,6 +144,8 @@ PREFIX ?= /usr/local prefix ?= $(PREFIX) EXEC_PREFIX ?= $(prefix) exec_prefix ?= $(EXEC_PREFIX) +BINDIR ?= $(exec_prefix)/bin +bindir ?= $(BINDIR) LIBDIR ?= $(exec_prefix)/lib libdir ?= $(LIBDIR) INCLUDEDIR ?= $(prefix)/include @@ -170,7 +176,7 @@ liblz4.pc: liblz4.pc.in Makefile $< >$@ install: lib liblz4.pc - $(Q)$(INSTALL) -d -m 755 $(DESTDIR)$(pkgconfigdir)/ $(DESTDIR)$(includedir)/ $(DESTDIR)$(libdir)/ + $(Q)$(INSTALL) -d -m 755 $(DESTDIR)$(pkgconfigdir)/ $(DESTDIR)$(includedir)/ $(DESTDIR)$(libdir)/ $(DESTDIR)$(bindir)/ $(Q)$(INSTALL_DATA) liblz4.pc $(DESTDIR)$(pkgconfigdir)/ @echo Installing libraries ifeq ($(BUILD_STATIC),yes) @@ -178,9 +184,14 @@ ifeq ($(BUILD_STATIC),yes) $(Q)$(INSTALL_DATA) lz4frame_static.h $(DESTDIR)$(includedir)/lz4frame_static.h endif ifeq ($(BUILD_SHARED),yes) +ifneq (,$(filter Windows%,$(OS))) + $(Q)$(INSTALL_PROGRAM) dll/$(LIBLZ4).dll $(DESTDIR)$(bindir) + $(Q)$(INSTALL_PROGRAM) dll/liblz4.lib $(DESTDIR)$(libdir) +else $(Q)$(INSTALL_PROGRAM) liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(libdir) $(Q)ln -sf liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT_MAJOR) $(Q)ln -sf liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT) +endif endif @echo Installing headers in $(includedir) $(Q)$(INSTALL_DATA) lz4.h $(DESTDIR)$(includedir)/lz4.h diff --git a/programs/Makefile b/programs/Makefile index bd33d9b..8a2ad65 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -109,7 +109,7 @@ clean: #----------------------------------------------------------------------------- # make install is validated only for Linux, OSX, BSD, Hurd and Solaris targets #----------------------------------------------------------------------------- -ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku MidnightBSD)) +ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku MidnightBSD MINGW32_NT-6.1 MINGW64_NT-6.1)) unlz4: lz4 ln -s lz4$(EXT) unlz4$(EXT) From 8e8b658bde8aa8d5f6c162d53193b4422554444c Mon Sep 17 00:00:00 2001 From: Vincent Torri Date: Wed, 21 Nov 2018 08:40:51 +0100 Subject: [PATCH 2/3] Add explanation for the installation of the DLL in the bin directory --- lib/Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/Makefile b/lib/Makefile index fc96bbd..74ddd59 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -184,6 +184,9 @@ ifeq ($(BUILD_STATIC),yes) $(Q)$(INSTALL_DATA) lz4frame_static.h $(DESTDIR)$(includedir)/lz4frame_static.h endif ifeq ($(BUILD_SHARED),yes) +# Traditionnally, one installs the DLLs in the bin directory as programs +# search them first in their directory. This allows to not pollute system +# directories (like c:/windows/system32), nor modify the PATH variable. ifneq (,$(filter Windows%,$(OS))) $(Q)$(INSTALL_PROGRAM) dll/$(LIBLZ4).dll $(DESTDIR)$(bindir) $(Q)$(INSTALL_PROGRAM) dll/liblz4.lib $(DESTDIR)$(libdir) From bd2b259760f08f606363732a1c21d7b9331e909e Mon Sep 17 00:00:00 2001 From: Vincent Torri Date: Wed, 21 Nov 2018 09:07:26 +0100 Subject: [PATCH 3/3] Uninstall DLL and import lib --- lib/Makefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/Makefile b/lib/Makefile index 74ddd59..8a8d618 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -204,9 +204,14 @@ endif uninstall: $(Q)$(RM) $(DESTDIR)$(pkgconfigdir)/liblz4.pc +ifneq (,$(filter Windows%,$(OS))) + $(Q)$(RM) $(DESTDIR)$(bindir)/$(LIBLZ4).dll + $(Q)$(RM) $(DESTDIR)$(libdir)/liblz4.lib +else $(Q)$(RM) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT) $(Q)$(RM) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT_MAJOR) $(Q)$(RM) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT_VER) +endif $(Q)$(RM) $(DESTDIR)$(libdir)/liblz4.a $(Q)$(RM) $(DESTDIR)$(includedir)/lz4.h $(Q)$(RM) $(DESTDIR)$(includedir)/lz4hc.h