From 60119e2585fd652a9c6dfd06aafa4c8f49208501 Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Sat, 15 Aug 2015 17:21:45 +0100 Subject: Makefile : generates *.o for faster processing --- Makefile | 34 +++++++++++++++++----------------- NEWS | 3 ++- lib/LICENSE | 4 ++-- lib/Makefile | 18 ++++++++---------- programs/Makefile | 43 ++++++++++++++++++++++--------------------- 5 files changed, 51 insertions(+), 51 deletions(-) diff --git a/Makefile b/Makefile index b69c930..ec2233c 100644 --- 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 88512b0..021d042 100644 --- 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) diff --git a/lib/LICENSE b/lib/LICENSE index b566df3..bd3c80d 100644 --- a/lib/LICENSE +++ b/lib/LICENSE @@ -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. diff --git a/lib/Makefile b/lib/Makefile index de410df..77d787e 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -31,19 +31,18 @@ # ################################################################ # 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 diff --git a/programs/Makefile b/programs/Makefile index 3e37260..0a6f91a 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -34,17 +34,18 @@ # 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* \ -- cgit v0.12