Skip to content

Commit e585a43

Browse files
committed
refactor Makefile
remove usage of include Makefile.inc in too Makefile as it seems to somehow unexport CFLAGS ...
1 parent 87a80ac commit e585a43

4 files changed

Lines changed: 152 additions & 101 deletions

File tree

Makefile

Lines changed: 38 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,25 @@ TESTDIR = tests
3636
EXDIR = examples
3737
FUZZDIR = ossfuzz
3838

39-
include Makefile.inc
39+
#include Makefile.inc
40+
#determine if dev/nul based on host environment
41+
ifneq (,$(filter MINGW% MSYS% CYGWIN%,$(shell uname)))
42+
VOID := /dev/null
43+
else
44+
ifneq (,$(filter Windows%,$(OS)))
45+
VOID := nul
46+
else
47+
VOID := /dev/null
48+
endif
49+
endif
50+
4051

4152
.PHONY: default
4253
default: lib-release lz4-release
4354

55+
# silent mode by default; verbose can be triggered by V=1 or VERBOSE=1
56+
$(V)$(VERBOSE).SILENT:
57+
4458
.PHONY: all
4559
all: allmost examples manuals build_tests
4660

@@ -50,36 +64,36 @@ allmost: lib lz4
5064
.PHONY: lib lib-release liblz4.a
5165
lib: liblz4.a
5266
lib lib-release liblz4.a:
53-
@$(MAKE) -C $(LZ4DIR) $@
67+
$(MAKE) -C $(LZ4DIR) $@
5468

5569
.PHONY: lz4 lz4-release
5670
lz4 : liblz4.a
5771
lz4-release : lib-release
5872
lz4 lz4-release :
59-
@$(MAKE) -C $(PRGDIR) $@
60-
@cp $(PRGDIR)/lz4$(EXT) .
73+
$(MAKE) -C $(PRGDIR) $@
74+
cp $(PRGDIR)/lz4$(EXT) .
6175

6276
.PHONY: examples
6377
examples: liblz4.a
6478
$(MAKE) -C $(EXDIR) all
6579

6680
.PHONY: manuals
6781
manuals:
68-
@$(MAKE) -C contrib/gen_manual $@
82+
$(MAKE) -C contrib/gen_manual $@
6983

7084
.PHONY: build_tests
7185
build_tests:
72-
@$(MAKE) -C $(TESTDIR) all
86+
$(MAKE) -C $(TESTDIR) all
7387

7488
.PHONY: clean
7589
clean:
76-
@$(MAKE) -C $(LZ4DIR) $@ > $(VOID)
77-
@$(MAKE) -C $(PRGDIR) $@ > $(VOID)
78-
@$(MAKE) -C $(TESTDIR) $@ > $(VOID)
79-
@$(MAKE) -C $(EXDIR) $@ > $(VOID)
80-
@$(MAKE) -C $(FUZZDIR) $@ > $(VOID)
81-
@$(MAKE) -C contrib/gen_manual $@ > $(VOID)
82-
@$(RM) lz4$(EXT)
90+
$(MAKE) -C $(LZ4DIR) $@ > $(VOID)
91+
$(MAKE) -C $(PRGDIR) $@ > $(VOID)
92+
$(MAKE) -C $(TESTDIR) $@ > $(VOID)
93+
$(MAKE) -C $(EXDIR) $@ > $(VOID)
94+
$(MAKE) -C $(FUZZDIR) $@ > $(VOID)
95+
$(MAKE) -C contrib/gen_manual $@ > $(VOID)
96+
$(RM) lz4$(EXT)
8397
@echo Cleaning completed
8498

8599

@@ -91,14 +105,14 @@ HOST_OS = POSIX
91105

92106
.PHONY: install uninstall
93107
install uninstall:
94-
@$(MAKE) -C $(LZ4DIR) $@
95-
@$(MAKE) -C $(PRGDIR) $@
108+
$(MAKE) -C $(LZ4DIR) $@
109+
$(MAKE) -C $(PRGDIR) $@
96110

97111
travis-install:
98112
$(MAKE) -j1 install DESTDIR=~/install_test_dir
99113

100114
cmake:
101-
@cd build/cmake; cmake $(CMAKE_PARAMS) CMakeLists.txt; $(MAKE)
115+
cd build/cmake; cmake $(CMAKE_PARAMS) CMakeLists.txt; $(MAKE)
102116

103117
endif
104118

@@ -116,7 +130,7 @@ ifneq (,$(filter $(HOST_OS),MSYS POSIX))
116130

117131
.PHONY: list
118132
list:
119-
@$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' | xargs
133+
$(MAKE) -pRrq -f $(lastword $(MAKEFILE_LIST)) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$' | xargs
120134

121135
.PHONY: check
122136
check:
@@ -132,15 +146,15 @@ clangtest: CFLAGS += -Werror -Wconversion -Wno-sign-conversion
132146
clangtest: CC = clang
133147
clangtest: clean
134148
$(CC) -v
135-
@CFLAGS="$(CFLAGS)" $(MAKE) -C $(LZ4DIR) all CC=$(CC)
136-
@CFLAGS="$(CFLAGS)" $(MAKE) -C $(PRGDIR) all CC=$(CC)
137-
@CFLAGS="$(CFLAGS)" $(MAKE) -C $(TESTDIR) all CC=$(CC)
149+
CFLAGS="$(CFLAGS)" $(MAKE) -C $(LZ4DIR) all CC=$(CC)
150+
CFLAGS="$(CFLAGS)" $(MAKE) -C $(PRGDIR) all CC=$(CC)
151+
CFLAGS="$(CFLAGS)" $(MAKE) -C $(TESTDIR) all CC=$(CC)
138152

139153
clangtest-native: clean
140154
clang -v
141-
@CFLAGS="-O3 -Werror -Wconversion -Wno-sign-conversion" $(MAKE) -C $(LZ4DIR) all CC=clang
142-
@CFLAGS="-O3 -Werror -Wconversion -Wno-sign-conversion" $(MAKE) -C $(PRGDIR) native CC=clang
143-
@CFLAGS="-O3 -Werror -Wconversion -Wno-sign-conversion" $(MAKE) -C $(TESTDIR) native CC=clang
155+
CFLAGS="-O3 -Werror -Wconversion -Wno-sign-conversion" $(MAKE) -C $(LZ4DIR) all CC=clang
156+
CFLAGS="-O3 -Werror -Wconversion -Wno-sign-conversion" $(MAKE) -C $(PRGDIR) native CC=clang
157+
CFLAGS="-O3 -Werror -Wconversion -Wno-sign-conversion" $(MAKE) -C $(TESTDIR) native CC=clang
144158

145159
usan: CC = clang
146160
usan: CFLAGS = -O3 -g -fsanitize=undefined -fno-sanitize-recover=undefined -fsanitize-recover=pointer-overflow
@@ -163,7 +177,7 @@ cppcheck:
163177

164178
platformTest: clean
165179
@echo "\n ---- test lz4 with $(CC) compiler ----"
166-
@$(CC) -v
180+
$(CC) -v
167181
CFLAGS="-O3 -Werror" $(MAKE) -C $(LZ4DIR) all
168182
CFLAGS="-O3 -Werror -static" $(MAKE) -C $(PRGDIR) all
169183
CFLAGS="-O3 -Werror -static" $(MAKE) -C $(TESTDIR) all

Makefile.inc

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,34 @@
1-
ifeq ($(V), 1)
2-
Q =
3-
else
4-
Q = @
5-
endif
1+
# ################################################################
2+
# LZ4 - Makefile common definitions
3+
# Copyright (C) Yann Collet 2020
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/lz4/lz4
30+
# - LZ4 forum froup : https://groups.google.com/forum/#!forum/lz4c
31+
# ################################################################
632

733
TARGET_OS ?= $(shell uname)
834
ifeq ($(TARGET_OS),)

lib/Makefile

Lines changed: 54 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,12 @@
3131
# - LZ4 source repository : https://github.com/lz4/lz4
3232
# - LZ4 forum froup : https://groups.google.com/forum/#!forum/lz4c
3333
# ################################################################
34+
SED = sed
3435

3536
# Version numbers
36-
LIBVER_MAJOR_SCRIPT:=`sed -n '/define LZ4_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./lz4.h`
37-
LIBVER_MINOR_SCRIPT:=`sed -n '/define LZ4_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./lz4.h`
38-
LIBVER_PATCH_SCRIPT:=`sed -n '/define LZ4_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./lz4.h`
37+
LIBVER_MAJOR_SCRIPT:=`$(SED) -n '/define LZ4_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./lz4.h`
38+
LIBVER_MINOR_SCRIPT:=`$(SED) -n '/define LZ4_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./lz4.h`
39+
LIBVER_PATCH_SCRIPT:=`$(SED) -n '/define LZ4_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./lz4.h`
3940
LIBVER_SCRIPT:= $(LIBVER_MAJOR_SCRIPT).$(LIBVER_MINOR_SCRIPT).$(LIBVER_PATCH_SCRIPT)
4041
LIBVER_MAJOR := $(shell echo $(LIBVER_MAJOR_SCRIPT))
4142
LIBVER_MINOR := $(shell echo $(LIBVER_MINOR_SCRIPT))
@@ -46,12 +47,13 @@ BUILD_SHARED:=yes
4647
BUILD_STATIC:=yes
4748

4849
CPPFLAGS+= -DXXH_NAMESPACE=LZ4_
50+
CPPFLAGS+= $(MOREFLAGS)
4951
CFLAGS ?= -O3
5052
DEBUGFLAGS:= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \
5153
-Wswitch-enum -Wdeclaration-after-statement -Wstrict-prototypes \
5254
-Wundef -Wpointer-arith -Wstrict-aliasing=1
53-
CFLAGS += $(DEBUGFLAGS) $(MOREFLAGS)
54-
FLAGS = $(CPPFLAGS) $(CFLAGS) $(LDFLAGS)
55+
CFLAGS += $(DEBUGFLAGS)
56+
FLAGS = $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
5557

5658
SRCFILES := $(sort $(wildcard *.c))
5759

@@ -74,27 +76,33 @@ endif
7476
.PHONY: default
7577
default: lib-release
7678

79+
# silent mode by default; verbose can be triggered by V=1 or VERBOSE=1
80+
$(V)$(VERBOSE).SILENT:
81+
7782
lib-release: DEBUGFLAGS :=
7883
lib-release: lib
7984

85+
.PHONY: lib
8086
lib: liblz4.a liblz4
8187

88+
.PHONY: all
8289
all: lib
8390

91+
.PHONY: all32
8492
all32: CFLAGS+=-m32
8593
all32: all
8694

8795
liblz4.a: $(SRCFILES)
8896
ifeq ($(BUILD_STATIC),yes) # can be disabled on command line
8997
@echo compiling static library
90-
$(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -c $^
91-
$(Q)$(AR) rcs $@ *.o
98+
$(COMPILE.c) $^
99+
$(AR) rcs $@ *.o
92100
endif
93101

94102
ifeq ($(WINBASED),yes)
95103
liblz4-dll.rc: liblz4-dll.rc.in
96104
@echo creating library resource
97-
$(Q)sed -e 's|@LIBLZ4@|$(LIBLZ4)|' \
105+
$(SED) -e 's|@LIBLZ4@|$(LIBLZ4)|' \
98106
-e 's|@LIBVER_MAJOR@|$(LIBVER_MAJOR)|g' \
99107
-e 's|@LIBVER_MINOR@|$(LIBVER_MINOR)|g' \
100108
-e 's|@LIBVER_PATCH@|$(LIBVER_PATCH)|g' \
@@ -104,31 +112,30 @@ liblz4-dll.o: liblz4-dll.rc
104112
$(WINDRES) -i liblz4-dll.rc -o liblz4-dll.o
105113

106114
$(LIBLZ4): $(SRCFILES) liblz4-dll.o
107-
else
115+
@echo compiling dynamic library $(LIBVER)
116+
$(CC) $(FLAGS) -DLZ4_DLL_EXPORT=1 -shared $^ -o dll/$@.dll -Wl,--out-implib,dll/$(LIBLZ4_EXP)
117+
118+
else # not windows
119+
108120
$(LIBLZ4): $(SRCFILES)
109-
endif
110-
ifeq ($(BUILD_SHARED),yes) # can be disabled on command line
111121
@echo compiling dynamic library $(LIBVER)
112-
ifeq ($(WINBASED),yes)
113-
$(Q)$(CC) $(FLAGS) -DLZ4_DLL_EXPORT=1 -shared $^ -o dll/$@.dll -Wl,--out-implib,dll/$(LIBLZ4_EXP)
114-
else
115-
$(Q)$(CC) $(FLAGS) -shared $^ -fPIC -fvisibility=hidden $(SONAME_FLAGS) -o $@
122+
$(CC) $(FLAGS) -shared $^ -fPIC -fvisibility=hidden $(SONAME_FLAGS) -o $@
116123
@echo creating versioned links
117-
$(Q)$(LN_SF) $@ liblz4.$(SHARED_EXT_MAJOR)
118-
$(Q)$(LN_SF) $@ liblz4.$(SHARED_EXT)
119-
endif
124+
$(LN_SF) $@ liblz4.$(SHARED_EXT_MAJOR)
125+
$(LN_SF) $@ liblz4.$(SHARED_EXT)
126+
120127
endif
121128

122-
ifeq (,$(filter MINGW%,$(TARGET_OS)))
129+
.PHONY: liblz4
123130
liblz4: $(LIBLZ4)
124-
endif
125131

132+
.PHONY: clean
126133
clean:
127134
ifeq ($(WINBASED),yes)
128-
$(Q)$(RM) *.rc
135+
$(RM) *.rc
129136
endif
130-
$(Q)$(RM) core *.o liblz4.pc dll/$(LIBLZ4).dll dll/$(LIBLZ4_EXP)
131-
$(Q)$(RM) *.a *.$(SHARED_EXT) *.$(SHARED_EXT_MAJOR) *.$(SHARED_EXT_VER)
137+
$(RM) core *.o liblz4.pc dll/$(LIBLZ4).dll dll/$(LIBLZ4_EXP)
138+
$(RM) *.a *.$(SHARED_EXT) *.$(SHARED_EXT_MAJOR) *.$(SHARED_EXT_VER)
132139
@echo Cleaning library completed
133140

134141
#-----------------------------------------------------------------------------
@@ -164,54 +171,54 @@ pkgconfigdir ?= $(PKGCONFIGDIR)
164171

165172
liblz4.pc: liblz4.pc.in Makefile
166173
@echo creating pkgconfig
167-
$(Q)sed -e 's|@PREFIX@|$(prefix)|' \
174+
$(SED) -e 's|@PREFIX@|$(prefix)|' \
168175
-e 's|@LIBDIR@|$(libdir)|' \
169176
-e 's|@INCLUDEDIR@|$(includedir)|' \
170177
-e 's|@VERSION@|$(LIBVER)|' \
171178
$< >$@
172179

173180
install: lib liblz4.pc
174-
$(Q)$(INSTALL_DIR) $(DESTDIR)$(pkgconfigdir)/ $(DESTDIR)$(includedir)/ $(DESTDIR)$(libdir)/ $(DESTDIR)$(bindir)/
175-
$(Q)$(INSTALL_DATA) liblz4.pc $(DESTDIR)$(pkgconfigdir)/
181+
$(INSTALL_DIR) $(DESTDIR)$(pkgconfigdir)/ $(DESTDIR)$(includedir)/ $(DESTDIR)$(libdir)/ $(DESTDIR)$(bindir)/
182+
$(INSTALL_DATA) liblz4.pc $(DESTDIR)$(pkgconfigdir)/
176183
@echo Installing libraries
177184
ifeq ($(BUILD_STATIC),yes)
178-
$(Q)$(INSTALL_DATA) liblz4.a $(DESTDIR)$(libdir)/liblz4.a
179-
$(Q)$(INSTALL_DATA) lz4frame_static.h $(DESTDIR)$(includedir)/lz4frame_static.h
185+
$(INSTALL_DATA) liblz4.a $(DESTDIR)$(libdir)/liblz4.a
186+
$(INSTALL_DATA) lz4frame_static.h $(DESTDIR)$(includedir)/lz4frame_static.h
180187
endif
181188
ifeq ($(BUILD_SHARED),yes)
182189
# Traditionnally, one installs the DLLs in the bin directory as programs
183190
# search them first in their directory. This allows to not pollute system
184191
# directories (like c:/windows/system32), nor modify the PATH variable.
185192
ifeq ($(WINBASED),yes)
186-
$(Q)$(INSTALL_PROGRAM) dll/$(LIBLZ4).dll $(DESTDIR)$(bindir)
187-
$(Q)$(INSTALL_PROGRAM) dll/$(LIBLZ4_EXP) $(DESTDIR)$(libdir)
193+
$(INSTALL_PROGRAM) dll/$(LIBLZ4).dll $(DESTDIR)$(bindir)
194+
$(INSTALL_PROGRAM) dll/$(LIBLZ4_EXP) $(DESTDIR)$(libdir)
188195
else
189-
$(Q)$(INSTALL_PROGRAM) liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(libdir)
190-
$(Q)$(LN_SF) liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT_MAJOR)
191-
$(Q)$(LN_SF) liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT)
196+
$(INSTALL_PROGRAM) liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(libdir)
197+
$(LN_SF) liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT_MAJOR)
198+
$(LN_SF) liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT)
192199
endif
193200
endif
194201
@echo Installing headers in $(includedir)
195-
$(Q)$(INSTALL_DATA) lz4.h $(DESTDIR)$(includedir)/lz4.h
196-
$(Q)$(INSTALL_DATA) lz4hc.h $(DESTDIR)$(includedir)/lz4hc.h
197-
$(Q)$(INSTALL_DATA) lz4frame.h $(DESTDIR)$(includedir)/lz4frame.h
202+
$(INSTALL_DATA) lz4.h $(DESTDIR)$(includedir)/lz4.h
203+
$(INSTALL_DATA) lz4hc.h $(DESTDIR)$(includedir)/lz4hc.h
204+
$(INSTALL_DATA) lz4frame.h $(DESTDIR)$(includedir)/lz4frame.h
198205
@echo lz4 libraries installed
199206

200207
uninstall:
201-
$(Q)$(RM) $(DESTDIR)$(pkgconfigdir)/liblz4.pc
208+
$(RM) $(DESTDIR)$(pkgconfigdir)/liblz4.pc
202209
ifeq (WINBASED,1)
203-
$(Q)$(RM) $(DESTDIR)$(bindir)/$(LIBLZ4).dll
204-
$(Q)$(RM) $(DESTDIR)$(libdir)/$(LIBLZ4_EXP)
210+
$(RM) $(DESTDIR)$(bindir)/$(LIBLZ4).dll
211+
$(RM) $(DESTDIR)$(libdir)/$(LIBLZ4_EXP)
205212
else
206-
$(Q)$(RM) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT)
207-
$(Q)$(RM) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT_MAJOR)
208-
$(Q)$(RM) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT_VER)
213+
$(RM) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT)
214+
$(RM) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT_MAJOR)
215+
$(RM) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT_VER)
209216
endif
210-
$(Q)$(RM) $(DESTDIR)$(libdir)/liblz4.a
211-
$(Q)$(RM) $(DESTDIR)$(includedir)/lz4.h
212-
$(Q)$(RM) $(DESTDIR)$(includedir)/lz4hc.h
213-
$(Q)$(RM) $(DESTDIR)$(includedir)/lz4frame.h
214-
$(Q)$(RM) $(DESTDIR)$(includedir)/lz4frame_static.h
217+
$(RM) $(DESTDIR)$(libdir)/liblz4.a
218+
$(RM) $(DESTDIR)$(includedir)/lz4.h
219+
$(RM) $(DESTDIR)$(includedir)/lz4hc.h
220+
$(RM) $(DESTDIR)$(includedir)/lz4frame.h
221+
$(RM) $(DESTDIR)$(includedir)/lz4frame_static.h
215222
@echo lz4 libraries successfully uninstalled
216223

217224
endif

0 commit comments

Comments
 (0)