Makefile : generates *.o for faster processing
authorYann Collet <yann.collet.73@gmail.com>
Sat, 15 Aug 2015 16:21:45 +0000 (17:21 +0100)
committerYann Collet <yann.collet.73@gmail.com>
Sat, 15 Aug 2015 16:21:45 +0000 (17:21 +0100)
Makefile
NEWS
lib/LICENSE
lib/Makefile
programs/Makefile

index b69c930367cce7f45d1aa69ee1cd06a188a1228d..ec2233cbdcfee7142864de5356f223a749f9b182 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -58,18 +58,18 @@ VOID = /dev/null
 endif
 
 
-.PHONY: default all lib lz4programs clean test versionsTest
+.PHONY: default all lib lz4programs clean test versionsTest examples
 
 default: lz4programs
 
 all: lib
-       @cd $(PRGDIR); $(MAKE) -e all
+       @cd $(PRGDIR); $(MAKE) all
 
 lib:
-       @cd $(LZ4DIR); $(MAKE) -e all
+       @cd $(LZ4DIR); $(MAKE) all
 
 lz4programs:
-       @cd $(PRGDIR); $(MAKE) -e
+       @cd $(PRGDIR); $(MAKE)
 
 clean:
        @cd $(PRGDIR); $(MAKE) clean > $(VOID)
@@ -84,8 +84,8 @@ clean:
 ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU))
 
 install:
-       @cd $(LZ4DIR); $(MAKE) -e install
-       @cd $(PRGDIR); $(MAKE) -e install
+       @cd $(LZ4DIR); $(MAKE) install
+       @cd $(PRGDIR); $(MAKE) install
 
 uninstall:
        @cd $(LZ4DIR); $(MAKE) uninstall
@@ -95,7 +95,7 @@ travis-install:
        sudo $(MAKE) install
 
 test:
-       @cd $(PRGDIR); $(MAKE) -e test
+       @cd $(PRGDIR); $(MAKE) test
 
 test-travis: $(TRAVIS_TARGET)
 
@@ -103,30 +103,30 @@ cmake:
        @cd cmake_unofficial; cmake CMakeLists.txt; $(MAKE)
 
 gpptest: clean
-       $(MAKE) all CC=g++ CFLAGS="-O3 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Werror"
+       $(MAKE) all CC=g++ CFLAGS="-O3 -I../lib -Wall -Wextra -Wundef -Wshadow -Wcast-align -Werror"
 
 clangtest: clean
-       $(MAKE) all CC=clang CPPFLAGS="-Werror -Wconversion -Wno-sign-conversion"
+       CFLAGS="-O3 -Werror -Wconversion -Wno-sign-conversion" $(MAKE) all CC=clang
 
 sanitize: clean
-       $(MAKE) test CC=clang CPPFLAGS="-g -fsanitize=undefined" FUZZER_TIME="-T1mn" NB_LOOPS=-i1
+       CFLAGS="-g -fsanitize=undefined" $(MAKE) test CC=clang FUZZER_TIME="-T1mn" NB_LOOPS=-i1
 
 staticAnalyze: clean
-       CPPFLAGS=-g scan-build --status-bugs -v $(MAKE) all
+       CFLAGS=-g scan-build --status-bugs -v $(MAKE) all
 
 armtest: clean
-       cd lib; $(MAKE) -e all CC=arm-linux-gnueabi-gcc CPPFLAGS="-Werror"
-       cd programs; $(MAKE) -e bins CC=arm-linux-gnueabi-gcc CPPFLAGS="-Werror"
+       cd lib; CFLAGS="-O3 -Werror" $(MAKE) all CC=arm-linux-gnueabi-gcc
+       cd programs; CFLAGS="-O3 -Werror" $(MAKE) bins CC=arm-linux-gnueabi-gcc
 
 versionsTest: clean
        @cd versionsTest; $(MAKE)
 
 examples:
-       cd lib; $(MAKE) -e
-       cd programs; $(MAKE) -e lz4
-       cd examples; $(MAKE) -e test
+       cd lib; $(MAKE)
+       cd programs; $(MAKE) lz4
+       cd examples; $(MAKE) test
 
 prg-travis:
-       @cd $(PRGDIR); $(MAKE) -e test-travis
+       @cd $(PRGDIR); $(MAKE) test-travis
 
 endif
diff --git a/NEWS b/NEWS
index 88512b0a5d06cb23635d20e9fd24c23ae7941597..021d04257a9b10e961ca74fef43ba5d7f5e2147e 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,6 @@
 r132
-Improved: Small decompression speed boost (+5%)
+Improved: Small decompression speed boost (+4%)
+Makefile: Generate intermediate object files (*.o) for faster compilation on low power systems
 
 r131
 New    : Dos/DJGPP target, thanks to Louis Santillan (#114)
index b566df30352d64f904f217872fbf45bcfaac46ff..bd3c80db7cf2b6a09a5f978c2af25f8ca9b0fb1c 100644 (file)
@@ -1,5 +1,5 @@
 LZ4 Library
-Copyright (c) 2011-2014, Yann Collet
+Copyright (c) 2011-2015, Yann Collet
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without modification,
@@ -21,4 +21,4 @@ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
index de410df0ff471b166b8528e318f54b66f143a1a0..77d787ecfab7391931537d76ca276d4cf26d5b0b 100644 (file)
 # ################################################################
 
 # Version numbers
-VERSION ?= 132
-LIBVER_MAJOR=`sed -n '/define LZ4_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lz4.h`
-LIBVER_MINOR=`sed -n '/define LZ4_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lz4.h`
-LIBVER_PATCH=`sed -n '/define LZ4_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lz4.h`
-LIBVER=$(LIBVER_MAJOR).$(LIBVER_MINOR).$(LIBVER_PATCH)
+VERSION?= 132
+LIBVER_MAJOR:=`sed -n '/define LZ4_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lz4.h`
+LIBVER_MINOR:=`sed -n '/define LZ4_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lz4.h`
+LIBVER_PATCH:=`sed -n '/define LZ4_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < lz4.h`
+LIBVER := $(LIBVER_MAJOR).$(LIBVER_MINOR).$(LIBVER_PATCH)
 
 DESTDIR?=
 PREFIX ?= /usr/local
 CPPFLAGS= -DXXH_NAMESPACE=LZ4_
 CFLAGS ?= -O3
 CFLAGS += -std=c99 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Wcast-qual -Wstrict-prototypes -pedantic
-LDFLAGS = -I.
-FLAGS   = $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+FLAGS   = $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)
 
 LIBDIR?= $(PREFIX)/lib
 INCLUDEDIR=$(PREFIX)/include
@@ -67,10 +66,9 @@ default: liblz4
 
 all: liblz4
 
-liblz4: lz4.c lz4hc.c lz4frame.c xxhash.c
+liblz4: lz4.c lz4hc.c lz4frame.c xxhash.c   # need to compile once with -fPIC, and once without -fPIC
        @echo compiling static library
-       @$(CC) $(FLAGS) -c $^
-       @$(AR) rcs liblz4.a lz4.o lz4hc.o lz4frame.o xxhash.o
+       @$(AR) rcs $@.a $^
        @echo compiling dynamic library $(LIBVER)
        @$(CC) $(FLAGS) -shared $^ -fPIC $(SONAME_FLAGS) -o $@.$(SHARED_EXT_VER)
        @echo creating versioned links
index 3e3726029ba1a1a06409b674d3d8d8d9cecf351d..0a6f91a73d1c601fe88085783953deda8ab506c4 100644 (file)
 # datagen : generates synthetic data samples for tests & benchmarks
 # ##########################################################################
 
-RELEASE?= r132
+RELEASE ?= r132
 
-DESTDIR?=
-PREFIX ?= /usr/local
-CFLAGS ?= -O3
-CFLAGS += -std=c99 -Wall -Wextra -Wundef -Wshadow -Wcast-qual -Wcast-align -Wstrict-prototypes -pedantic -DLZ4_VERSION=\"$(RELEASE)\"
-FLAGS  := -I../lib $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)
+DESTDIR ?=
+PREFIX  ?= /usr/local
+CFLAGS  ?= -O3 # can select your own settings, for example : CFLAGS="-O2 -g" make
+CFLAGS  += -I../lib -std=c99 -Wall -Wextra -Wundef -Wshadow -Wcast-qual -Wcast-align -Wstrict-prototypes -pedantic
+CPPFLAGS:= -DXXH_NAMESPACE=LZ4_ -DLZ4_VERSION=\"$(RELEASE)\"
+FLAGS   := $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
 
-BINDIR := $(PREFIX)/bin
-MANDIR := $(PREFIX)/share/man/man1
-LZ4DIR := ../lib
+BINDIR  := $(PREFIX)/bin
+MANDIR  := $(PREFIX)/share/man/man1
+LZ4DIR  := ../lib
 
 
 # Define *.exe as extension for Windows systems
@@ -72,35 +73,35 @@ bins: lz4 lz4c fullbench fuzzer frametest datagen
 
 all: bins m32
 
-lz4: $(LZ4DIR)/lz4.c $(LZ4DIR)/lz4hc.c $(LZ4DIR)/lz4frame.c $(LZ4DIR)/xxhash.c bench.c lz4io.c lz4cli.c
-       $(CC)      $(FLAGS) $^ -o $@$(EXT)
+lz4: $(LZ4DIR)/lz4.o $(LZ4DIR)/lz4hc.o $(LZ4DIR)/lz4frame.o $(LZ4DIR)/xxhash.o bench.o lz4io.o lz4cli.o
+       $(CC) $(FLAGS) $^ -o $@$(EXT)
 
-lz4c  : $(LZ4DIR)/lz4.c $(LZ4DIR)/lz4hc.c $(LZ4DIR)/lz4frame.c $(LZ4DIR)/xxhash.c bench.c lz4io.c lz4cli.c
-       $(CC)      $(FLAGS) -DENABLE_LZ4C_LEGACY_OPTIONS $^ -o $@$(EXT)
+lz4c  : $(LZ4DIR)/lz4.o $(LZ4DIR)/lz4hc.o $(LZ4DIR)/lz4frame.o $(LZ4DIR)/xxhash.o bench.o lz4io.o lz4cli.o
+       $(CC) $(FLAGS) -DENABLE_LZ4C_LEGACY_OPTIONS $^ -o $@$(EXT)
 
 lz4c32: $(LZ4DIR)/lz4.c $(LZ4DIR)/lz4hc.c $(LZ4DIR)/lz4frame.c $(LZ4DIR)/xxhash.c bench.c lz4io.c lz4cli.c
        $(CC) -m32 $(FLAGS) -DENABLE_LZ4C_LEGACY_OPTIONS $^ -o $@$(EXT)
 
-fullbench  : $(LZ4DIR)/lz4.c $(LZ4DIR)/lz4hc.c $(LZ4DIR)/lz4frame.c $(LZ4DIR)/xxhash.c fullbench.c
-       $(CC)      $(FLAGS) $^ -o $@$(EXT)
+fullbench  : $(LZ4DIR)/lz4.o $(LZ4DIR)/lz4hc.o $(LZ4DIR)/lz4frame.o $(LZ4DIR)/xxhash.o fullbench.c
+       $(CC) $(FLAGS) $^ -o $@$(EXT)
 
 fullbench32: $(LZ4DIR)/lz4.c $(LZ4DIR)/lz4hc.c $(LZ4DIR)/lz4frame.c $(LZ4DIR)/xxhash.c fullbench.c
        $(CC) -m32 $(FLAGS) $^ -o $@$(EXT)
 
-fuzzer  : $(LZ4DIR)/lz4.c $(LZ4DIR)/lz4hc.c $(LZ4DIR)/xxhash.c fuzzer.c
-       $(CC)      $(FLAGS) $^ -o $@$(EXT)
+fuzzer  : $(LZ4DIR)/lz4.o $(LZ4DIR)/lz4hc.o $(LZ4DIR)/xxhash.o fuzzer.c
+       $(CC) $(FLAGS) $^ -o $@$(EXT)
 
 fuzzer32: $(LZ4DIR)/lz4.c $(LZ4DIR)/lz4hc.c $(LZ4DIR)/xxhash.c fuzzer.c
        $(CC) -m32 $(FLAGS) $^ -o $@$(EXT)
 
-frametest: $(LZ4DIR)/lz4frame.c $(LZ4DIR)/lz4.c $(LZ4DIR)/lz4hc.c $(LZ4DIR)/xxhash.c frametest.c
-       $(CC)      $(FLAGS) $^ -o $@$(EXT)
+frametest: $(LZ4DIR)/lz4frame.o $(LZ4DIR)/lz4.o $(LZ4DIR)/lz4hc.o $(LZ4DIR)/xxhash.o frametest.c
+       $(CC) $(FLAGS) $^ -o $@$(EXT)
 
 frametest32: $(LZ4DIR)/lz4frame.c $(LZ4DIR)/lz4.c $(LZ4DIR)/lz4hc.c $(LZ4DIR)/xxhash.c frametest.c
        $(CC) -m32 $(FLAGS) $^ -o $@$(EXT)
 
-datagen : datagen.c datagencli.c
-       $(CC)      $(FLAGS) $^ -o $@$(EXT)
+datagen : datagen.o datagencli.c
+       $(CC) $(FLAGS) $^ -o $@$(EXT)
 
 clean:
        @rm -f core *.o *.test tmp* \