1# ################################################################ 2# LZ4 - Makefile 3# Copyright (C) Yann Collet 2011-2016 4# All rights reserved. 5# 6# BSD license 7# Redistribution and use in source and binary forms, with or without modification, 8# are permitted provided that the following conditions are met: 9# 10# * Redistributions of source code must retain the above copyright notice, this 11# list of conditions and the following disclaimer. 12# 13# * Redistributions in binary form must reproduce the above copyright notice, this 14# list of conditions and the following disclaimer in the documentation and/or 15# other materials provided with the distribution. 16# 17# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 21# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 24# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 26# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27# 28# You can contact the author at : 29# - LZ4 source repository : https://github.com/Cyan4973/lz4 30# - LZ4 forum froup : https://groups.google.com/forum/#!forum/lz4c 31# ################################################################ 32 33DESTDIR ?= 34PREFIX ?= /usr/local 35VOID := /dev/null 36 37LIBDIR ?= $(PREFIX)/lib 38INCLUDEDIR=$(PREFIX)/include 39LZ4DIR = lib 40PRGDIR = programs 41TESTDIR = tests 42EXDIR = examples 43 44 45# Define nul output 46ifneq (,$(filter Windows%,$(OS))) 47EXT = .exe 48else 49EXT = 50endif 51 52 53.PHONY: default all lib lz4 clean test versionsTest examples 54 55default: 56 @$(MAKE) -C $(LZ4DIR) 57 @$(MAKE) -C $(PRGDIR) 58 @cp $(PRGDIR)/lz4$(EXT) . 59 60all: 61 @$(MAKE) -C $(LZ4DIR) $@ 62 @$(MAKE) -C $(PRGDIR) $@ 63 @$(MAKE) -C $(TESTDIR) $@ 64 @$(MAKE) -C $(EXDIR) $@ 65 66lib: 67 @$(MAKE) -C $(LZ4DIR) 68 69lz4: 70 @$(MAKE) -C $(PRGDIR) $@ 71 @cp $(PRGDIR)/lz4$(EXT) . 72 73lz4-release: 74 @$(MAKE) -C $(PRGDIR) 75 @cp $(PRGDIR)/lz4$(EXT) . 76 77clean: 78 @$(MAKE) -C $(PRGDIR) $@ > $(VOID) 79 @$(MAKE) -C $(TESTDIR) $@ > $(VOID) 80 @$(MAKE) -C $(LZ4DIR) $@ > $(VOID) 81 @$(MAKE) -C $(EXDIR) $@ > $(VOID) 82 @$(MAKE) -C examples $@ > $(VOID) 83 @$(RM) lz4$(EXT) 84 @echo Cleaning completed 85 86 87#------------------------------------------------------------------------ 88#make install is validated only for Linux, OSX, kFreeBSD, Hurd and 89#FreeBSD targets 90ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU FreeBSD)) 91HOST_OS = POSIX 92 93install: 94 @$(MAKE) -C $(LZ4DIR) $@ 95 @$(MAKE) -C $(PRGDIR) $@ 96 97uninstall: 98 @$(MAKE) -C $(LZ4DIR) $@ 99 @$(MAKE) -C $(PRGDIR) $@ 100 101travis-install: 102 $(MAKE) -j1 install PREFIX=~/install_test_dir 103 104test: 105 $(MAKE) -C $(TESTDIR) $@ 106 107clangtest: clean 108 clang -v 109 @CFLAGS="-O3 -Werror -Wconversion -Wno-sign-conversion" $(MAKE) -C $(LZ4DIR) all CC=clang 110 @CFLAGS="-O3 -Werror -Wconversion -Wno-sign-conversion" $(MAKE) -C $(PRGDIR) all CC=clang 111 @CFLAGS="-O3 -Werror -Wconversion -Wno-sign-conversion" $(MAKE) -C $(TESTDIR) all CC=clang 112 113clangtest-native: clean 114 clang -v 115 @CFLAGS="-O3 -Werror -Wconversion -Wno-sign-conversion" $(MAKE) -C $(LZ4DIR) all CC=clang 116 @CFLAGS="-O3 -Werror -Wconversion -Wno-sign-conversion" $(MAKE) -C $(PRGDIR) native CC=clang 117 @CFLAGS="-O3 -Werror -Wconversion -Wno-sign-conversion" $(MAKE) -C $(TESTDIR) native CC=clang 118 119usan: clean 120 CC=clang CFLAGS="-O3 -g -fsanitize=undefined" $(MAKE) test FUZZER_TIME="-T1mn" NB_LOOPS=-i1 121 122usan32: clean 123 CFLAGS="-m32 -O3 -g -fsanitize=undefined" $(MAKE) test FUZZER_TIME="-T1mn" NB_LOOPS=-i1 124 125staticAnalyze: clean 126 CFLAGS=-g scan-build --status-bugs -v $(MAKE) all 127 128platformTest: clean 129 @echo "\n ---- test lz4 with $(CC) compiler ----" 130 @$(CC) -v 131 CFLAGS="-O3 -Werror" $(MAKE) -C $(LZ4DIR) all 132 CFLAGS="-O3 -Werror -static" $(MAKE) -C $(PRGDIR) all 133 CFLAGS="-O3 -Werror -static" $(MAKE) -C $(TESTDIR) all 134 $(MAKE) -C $(TESTDIR) test-platform 135 136versionsTest: clean 137 $(MAKE) -C $(TESTDIR) $@ 138 139examples: 140 $(MAKE) -C $(LZ4DIR) 141 $(MAKE) -C $(PRGDIR) lz4 142 $(MAKE) -C examples test 143 144endif 145 146 147ifneq (,$(filter MSYS%,$(shell uname))) 148HOST_OS = MSYS 149CMAKE_PARAMS = -G"MSYS Makefiles" 150endif 151 152 153#------------------------------------------------------------------------ 154#make tests validated only for MSYS, Linux, OSX, kFreeBSD and Hurd targets 155#------------------------------------------------------------------------ 156ifneq (,$(filter $(HOST_OS),MSYS POSIX)) 157 158cmake: 159 @cd contrib/cmake_unofficial; cmake $(CMAKE_PARAMS) CMakeLists.txt; $(MAKE) 160 161gpptest: clean 162 g++ -v 163 CC=g++ $(MAKE) -C $(LZ4DIR) all CFLAGS="-O3 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Werror" 164 CC=g++ $(MAKE) -C $(PRGDIR) all CFLAGS="-O3 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Werror" 165 CC=g++ $(MAKE) -C $(TESTDIR) all CFLAGS="-O3 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Werror" 166 167gpptest32: clean 168 g++ -v 169 CC=g++ $(MAKE) -C $(LZ4DIR) all CFLAGS="-m32 -O3 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Werror" 170 CC=g++ $(MAKE) -C $(PRGDIR) native CFLAGS="-m32 -O3 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Werror" 171 CC=g++ $(MAKE) -C $(TESTDIR) native CFLAGS="-m32 -O3 -Wall -Wextra -Wundef -Wshadow -Wcast-align -Werror" 172 173c_standards: clean 174 $(MAKE) all MOREFLAGS="-std=gnu90 -Werror" 175 $(MAKE) clean 176 $(MAKE) all MOREFLAGS="-std=c99 -Werror" 177 $(MAKE) clean 178 $(MAKE) all MOREFLAGS="-std=gnu99 -Werror" 179 $(MAKE) clean 180 $(MAKE) all MOREFLAGS="-std=c11 -Werror" 181 $(MAKE) clean 182 183endif 184