From f3f13211ae6a016c696f68a2f915c318ec2cf7c3 Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Wed, 2 Nov 2016 17:02:45 -0700 Subject: [PATCH] Fix #419 : no warning when setting custom LDFLAGS --- Makefile | 14 ++++++++++---- lib/Makefile | 25 +++++++++++++++++-------- programs/Makefile | 19 +++++++------------ 3 files changed, 34 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index 20ae31e4..96f5a9ad 100644 --- a/Makefile +++ b/Makefile @@ -20,28 +20,32 @@ else VOID = /dev/null endif -.PHONY: default all zlibwrapper zstd clean install uninstall travis-install test clangtest gpptest armtest usan asan uasan - -default: libzstd zstd +.PHONY: default +default: lib zstd +.PHONY: all all: $(MAKE) -C $(ZSTDDIR) $@ $(MAKE) -C $(PRGDIR) $@ zstd32 $(MAKE) -C $(TESTDIR) $@ all32 -libzstd: +.PHONY: lib +lib: @$(MAKE) -C $(ZSTDDIR) zstd: @$(MAKE) -C $(PRGDIR) cp $(PRGDIR)/zstd . +.PHONY: zlibwrapper zlibwrapper: $(MAKE) -C $(ZWRAPDIR) test +.PHONY: test test: $(MAKE) -C $(TESTDIR) $@ +.PHONY: clean clean: @$(MAKE) -C $(ZSTDDIR) $@ > $(VOID) @$(MAKE) -C $(PRGDIR) $@ > $(VOID) @@ -56,6 +60,8 @@ clean: #------------------------------------------------------------------------------ ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU FreeBSD DragonFly NetBSD)) HOST_OS = POSIX +.PHONY: install uninstall travis-install clangtest gpptest armtest usan asan uasan + install: @$(MAKE) -C $(ZSTDDIR) $@ @$(MAKE) -C $(PRGDIR) $@ diff --git a/lib/Makefile b/lib/Makefile index 1117b491..31219e38 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -27,7 +27,7 @@ CPPFLAGS= -I. -I./common CFLAGS ?= -O3 CFLAGS += -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow -Wstrict-aliasing=1 \ -Wswitch-enum -Wdeclaration-after-statement -Wstrict-prototypes -Wundef -FLAGS = $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $(MOREFLAGS) +FLAGS = $(CPPFLAGS) $(CFLAGS) $(MOREFLAGS) ZSTD_FILES := common/*.c compress/*.c decompress/*.c dictBuilder/*.c @@ -39,7 +39,6 @@ ZSTD_FILES+= legacy/*.c CPPFLAGS += -I./legacy -DZSTD_LEGACY_SUPPORT=1 endif - # OS X linker doesn't support -soname, and use different extension # see : https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html ifeq ($(shell uname), Darwin) @@ -54,23 +53,33 @@ else SHARED_EXT_VER = $(SHARED_EXT).$(LIBVER) endif +LIBZSTD = libzstd.$(SHARED_EXT_VER) + .PHONY: default all clean install uninstall -default: clean libzstd +default: lib -all: clean libzstd +all: lib -libzstd: $(ZSTD_FILES) +libzstd.a: ARFLAGS = rcs +libzstd.a: $(ZSTD_FILES) @echo compiling static library @$(CC) $(FLAGS) -c $^ - @$(AR) rcs $@.a *.o + @$(AR) $(ARFLAGS) $@ *.o + +$(LIBZSTD): LDFLAGS += -shared -fPIC +$(LIBZSTD): $(ZSTD_FILES) @echo compiling dynamic library $(LIBVER) - @$(CC) $(FLAGS) -shared $^ -fPIC $(SONAME_FLAGS) -o $@.$(SHARED_EXT_VER) + @$(CC) $(FLAGS) $^ $(LDFLAGS) $(SONAME_FLAGS) -o $@ @echo creating versioned links @ln -sf $@.$(SHARED_EXT_VER) $@.$(SHARED_EXT_MAJOR) @ln -sf $@.$(SHARED_EXT_VER) $@.$(SHARED_EXT) +libzstd : $(LIBZSTD) + +lib: libzstd.a libzstd + clean: @rm -f core *.o *.a *.gcda *.$(SHARED_EXT) *.$(SHARED_EXT).* libzstd.pc @rm -f decompress/*.o @@ -89,7 +98,7 @@ libzstd.pc: libzstd.pc.in -e 's|@VERSION@|$(VERSION)|' \ $< >$@ -install: libzstd libzstd.pc +install: libzstd.a libzstd libzstd.pc @install -d -m 755 $(DESTDIR)$(LIBDIR)/pkgconfig/ $(DESTDIR)$(INCLUDEDIR)/ @install -m 755 libzstd.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT_VER) @cp -a libzstd.$(SHARED_EXT_MAJOR) $(DESTDIR)$(LIBDIR) diff --git a/programs/Makefile b/programs/Makefile index f5e625f0..c4ead25f 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -41,7 +41,6 @@ ZSTDDECOMP_FILES := $(ZSTDDIR)/decompress/huf_decompress.c ZSTD_FILES := $(ZSTDDECOMP_FILES) $(ZSTDCOMMON_FILES) $(ZSTDCOMP_FILES) ZDICT_FILES := $(ZSTDDIR)/dictBuilder/*.c ZSTDDECOMP_O = $(ZSTDDIR)/decompress/zstd_decompress.o -ZSTDDECOMP32_O = $(ZSTDDIR)/decompress/zstd_decompress32.o ifeq ($(ZSTD_LEGACY_SUPPORT), 0) CPPFLAGS += -DZSTD_LEGACY_SUPPORT=0 @@ -76,30 +75,27 @@ default: zstd all: zstd -$(ZSTDDECOMP_O): CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) $(ZSTDDECOMP_O): CFLAGS += $(ALIGN_LOOP) -$(ZSTDDECOMP_O): $(ZSTDDIR)/decompress/zstd_decompress.c +zstd : CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) zstd : $(ZSTDDECOMP_O) $(ZSTD_FILES) $(ZSTDLEGACY_FILES) $(ZDICT_FILES) \ zstdcli.c fileio.c bench.c datagen.c dibio.c ifneq (,$(filter Windows%,$(OS))) windres\generate_res.bat endif - $(CC) $(FLAGS) -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) $^ $(RES_FILE) -o $@$(EXT) + $(CC) $(FLAGS) $^ $(RES_FILE) -o $@$(EXT) -$(ZSTDDECOMP32_O): $(ZSTDDIR)/decompress/zstd_decompress.c - $(CC) -m32 $(ALIGN_LOOP) $(FLAGS) -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) $^ -c -o $@ - -zstd32 : $(ZSTDDECOMP32_O) $(ZSTD_FILES) $(ZSTDLEGACY_FILES) $(ZDICT_FILES) \ +zstd32 : CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) +zstd32 : $(ZSTDDIR)/decompress/zstd_decompress.c $(ZSTD_FILES) $(ZSTDLEGACY_FILES) $(ZDICT_FILES) \ zstdcli.c fileio.c bench.c datagen.c dibio.c ifneq (,$(filter Windows%,$(OS))) windres\generate_res.bat endif - $(CC) -m32 $(FLAGS) -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) $^ $(RES32_FILE) -o $@$(EXT) + $(CC) -m32 $(FLAGS) $^ $(RES32_FILE) -o $@$(EXT) -zstd_nolegacy : clean_decomp_o +zstd-nolegacy : clean_decomp_o $(MAKE) zstd ZSTD_LEGACY_SUPPORT=0 zstd-pgo : MOREFLAGS = -fprofile-generate @@ -111,7 +107,7 @@ zstd-pgo : clean zstd ./zstd -b7i2 $(PROFILE_WITH) ./zstd -b5 $(PROFILE_WITH) $(RM) zstd - $(RM) $(ZSTDDIR)/decompress/zstd_decompress.o + $(RM) $(ZSTDDECOMP_O) $(MAKE) zstd MOREFLAGS=-fprofile-use zstd-frugal: $(ZSTDDECOMP_O) $(ZSTD_FILES) zstdcli.c fileio.c @@ -142,7 +138,6 @@ clean: clean_decomp_o: @$(RM) $(ZSTDDECOMP_O) - @$(RM) $(ZSTDDECOMP32_O) #----------------------------------------------------------------------------------