summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/dll/Makefile61
-rw-r--r--lib/dll/README.md50
2 files changed, 111 insertions, 0 deletions
diff --git a/lib/dll/Makefile b/lib/dll/Makefile
new file mode 100644
index 0000000..32e13fc
--- /dev/null
+++ b/lib/dll/Makefile
@@ -0,0 +1,61 @@
+# ##########################################################################
+# LZ4 programs - Makefile
+# Copyright (C) Yann Collet 2016
+#
+# GPL v2 License
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# You can contact the author at :
+# - LZ4 homepage : http://www.lz4.org
+# - LZ4 source repository : https://github.com/lz4/lz4
+# ##########################################################################
+
+VOID := /dev/null
+LZ4DIR := ./include
+
+CFLAGS ?= -O3 # can select custom flags. For example : CFLAGS="-O2 -g" make
+CFLAGS += -Wall -Wextra -Wundef -Wcast-qual -Wcast-align -Wshadow -Wswitch-enum \
+ -Wdeclaration-after-statement -Wstrict-prototypes \
+ -Wpointer-arith -Wstrict-aliasing=1
+CFLAGS += $(MOREFLAGS)
+CPPFLAGS:= -I$(LZ4DIR) -DXXH_NAMESPACE=LZ4_
+FLAGS := $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+
+
+# Define *.exe as extension for Windows systems
+ifneq (,$(filter Windows%,$(OS)))
+EXT =.exe
+else
+EXT =
+endif
+
+.PHONY: default fullbench-dll fullbench-lib
+
+
+default: all
+
+all: fullbench-dll fullbench-lib
+
+
+fullbench-lib: fullbench/fullbench.c fullbench/xxhash.c
+ $(CC) $(FLAGS) $^ -o $@$(EXT) static/liblz4_static.lib
+
+fullbench-dll: fullbench/fullbench.c fullbench/xxhash.c
+ $(CC) $(FLAGS) $^ -o $@$(EXT) -DLZ4_DLL_IMPORT=1 dll/liblz4.lib
+
+clean:
+ @$(RM) fullbench-dll$(EXT) fullbench-lib$(EXT) \
+ @echo Cleaning completed
diff --git a/lib/dll/README.md b/lib/dll/README.md
new file mode 100644
index 0000000..bbbd768
--- /dev/null
+++ b/lib/dll/README.md
@@ -0,0 +1,50 @@
+The static and dynamic LZ4 libraries
+====================================
+
+#### The package content
+
+- `dll\liblz4.dll` : The DLL of LZ4 library
+- `dll\liblz4.lib` : The import library of LZ4 library
+- `include\` : Header files required with LZ4 library
+- `fullbench\` : The example of usage of LZ4 library
+- `static\liblz4_static.lib` : The static LZ4 library
+
+
+#### The example of usage of static and dynamic LZ4 libraries with gcc/MinGW
+
+Use `make` to build `fullbench-dll` and `fullbench-lib`.
+`fullbench-dll` uses a dynamic LZ4 library from the `dll` directory.
+`fullbench-lib` uses a static LZ4 library from the `lib` directory.
+
+
+#### Using LZ4 DLL with gcc/MinGW
+
+The header files from `include\` and the import library `dll\liblz4.lib`
+are required to compile a project using gcc/MinGW.
+The import library has to be added to linking options.
+It means that if a project that uses LZ4 consists of a single `test-dll.c`
+file it should be compiled with "liblz4.lib". For example:
+```
+ gcc $(CFLAGS) -Iinclude/ test-dll.c -o test-dll dll\liblz4.lib
+```
+The compiled executable will require LZ4 DLL which is available at `dll\liblz4.dll`.
+
+
+#### The example of usage of static and dynamic LZ4 libraries with Visual C++
+
+Open `fullbench\fullbench-dll.sln` to compile `fullbench-dll` that uses a
+dynamic LZ4 library from the `dll` directory.
+
+
+#### Using LZ4 DLL with Visual C++
+
+The header files from `include\` and the import library `dll\liblz4.lib`
+are required to compile a project using Visual C++.
+1. The header files should be added to a given project or referenced within
+ `Additional Include Directories` that can be found in project properties
+ `C/C++` then `General`.
+2. The import library has to be added to `Additional Dependencies` that can
+ be found in project properties `Linker` then `Input`.
+ If one will provide only the name `liblz4.lib` without a full path to the library
+ the directory has to be added to `Linker\General\Additional Library Directories`.
+The compiled executable will require LZ4 DLL which is available at `dll\liblz4.dll`.