| From ab9a34c92eec815ef214470c927ddbe2e950e7e5 Mon Sep 17 00:00:00 2001 |
| From: Joshua Watt <JPEWhacker@gmail.com> |
| Date: Wed, 26 May 2021 09:15:40 -0500 |
| Subject: [PATCH] MinGW Build Fixes |
| |
| Fixes building on MinGW by |
| 1) Exporting the OS variable so that it is visible to sub-make |
| invocations |
| 2) Fixing the extension handling so that make correctly identifies when |
| targets need to be rebuilt. Without the correct handling, make would |
| rebuild the executable targets when running `make install` because |
| it couldn't find them with the correct extension. |
| |
| Upstream-Status: Submitted [https://github.com/facebook/zstd/pull/2685] |
| Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> |
| --- |
| Makefile | 1 + |
| programs/Makefile | 74 +++++++++++++++++++++++------------------------ |
| 2 files changed, 38 insertions(+), 37 deletions(-) |
| |
| diff --git a/Makefile b/Makefile |
| index c1908f0a..f9ce9504 100644 |
| --- a/Makefile |
| +++ b/Makefile |
| @@ -29,6 +29,7 @@ VOID = /dev/null |
| # fail on other tested distros (ubuntu, debian) even |
| # without manually specifying the TARGET_SYSTEM. |
| TARGET_SYSTEM ?= $(OS) |
| +export OS |
| |
| ifneq (,$(filter Windows%,$(TARGET_SYSTEM))) |
| EXT =.exe |
| diff --git a/programs/Makefile b/programs/Makefile |
| index 599fb02f..79b45c83 100644 |
| --- a/programs/Makefile |
| +++ b/programs/Makefile |
| @@ -209,37 +209,37 @@ SET_CACHE_DIRECTORY = \ |
| |
| |
| .PHONY: all |
| -all: zstd |
| +all: zstd$(EXT) |
| |
| .PHONY: allVariants |
| -allVariants: zstd zstd-compress zstd-decompress zstd-small zstd-nolegacy zstd-dictBuilder |
| +allVariants: zstd$(EXT) zstd-compress$(EXT) zstd-decompress$(EXT) zstd-small$(EXT) zstd-nolegacy$(EXT) zstd-dictBuilder$(EXT) |
| |
| .PHONY: zstd # must always be run |
| -zstd : CPPFLAGS += $(THREAD_CPP) $(ZLIBCPP) $(LZMACPP) $(LZ4CPP) |
| -zstd : LDFLAGS += $(THREAD_LD) $(DEBUGFLAGS_LD) |
| -zstd : LDLIBS += $(ZLIBLD) $(LZMALD) $(LZ4LD) |
| -zstd : CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) |
| +zstd$(EXT) : CPPFLAGS += $(THREAD_CPP) $(ZLIBCPP) $(LZMACPP) $(LZ4CPP) |
| +zstd$(EXT) : LDFLAGS += $(THREAD_LD) $(DEBUGFLAGS_LD) |
| +zstd$(EXT) : LDLIBS += $(ZLIBLD) $(LZMALD) $(LZ4LD) |
| +zstd$(EXT) : CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) |
| ifneq (,$(filter Windows%,$(OS))) |
| -zstd : $(RES_FILE) |
| +zstd$(EXT) : $(RES_FILE) |
| endif |
| |
| ifndef BUILD_DIR |
| # generate BUILD_DIR from flags |
| |
| -zstd: |
| +zstd$(EXT): |
| $(SET_CACHE_DIRECTORY) |
| |
| else |
| # BUILD_DIR is defined |
| |
| ZSTD_OBJ := $(addprefix $(BUILD_DIR)/, $(ZSTD_ALL_OBJ)) |
| -$(BUILD_DIR)/zstd : $(ZSTD_OBJ) |
| +$(BUILD_DIR)/zstd$(EXT) : $(ZSTD_OBJ) |
| @echo "$(THREAD_MSG)" |
| @echo "$(ZLIB_MSG)" |
| @echo "$(LZMA_MSG)" |
| @echo "$(LZ4_MSG)" |
| @echo LINK $@ |
| - $(CC) $(FLAGS) $^ $(LDLIBS) -o $@$(EXT) |
| + $(CC) $(FLAGS) $^ $(LDLIBS) -o $@ |
| |
| ifeq ($(HAVE_HASH),1) |
| SRCBIN_HASH = $(shell cat $(BUILD_DIR)/zstd 2> $(VOID) | $(HASH) | cut -f 1 -d " ") |
| @@ -249,7 +249,7 @@ else |
| BIN_ISDIFFERENT = 1 |
| endif |
| |
| -zstd : $(BUILD_DIR)/zstd |
| +zstd$(EXT) : $(BUILD_DIR)/zstd$(EXT) |
| if [ $(BIN_ISDIFFERENT) -eq 1 ]; then \ |
| cp -f $< $@; \ |
| echo zstd build completed; \ |
| @@ -263,46 +263,46 @@ endif # BUILD_DIR |
| .PHONY: zstd-release |
| zstd-release: DEBUGFLAGS := -DBACKTRACE_ENABLE=0 |
| zstd-release: DEBUGFLAGS_LD := |
| -zstd-release: zstd |
| +zstd-release: zstd$(EXT) |
| |
| -zstd32 : CPPFLAGS += $(THREAD_CPP) |
| -zstd32 : LDFLAGS += $(THREAD_LD) |
| -zstd32 : CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) |
| +zstd32$(EXT) : CPPFLAGS += $(THREAD_CPP) |
| +zstd32$(EXT) : LDFLAGS += $(THREAD_LD) |
| +zstd32$(EXT) : CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) |
| ifneq (,$(filter Windows%,$(OS))) |
| -zstd32 : $(RES32_FILE) |
| +zstd32$(EXT) : $(RES32_FILE) |
| endif |
| -zstd32 : $(ZSTDLIB_FULL_SRC) $(ZSTD_CLI_SRC) |
| - $(CC) -m32 $(FLAGS) $^ -o $@$(EXT) |
| +zstd32$(EXT) : $(ZSTDLIB_FULL_SRC) $(ZSTD_CLI_SRC) |
| + $(CC) -m32 $(FLAGS) $^ -o $@ |
| |
| ## zstd-nolegacy: same scope as zstd, with just support of legacy formats removed |
| -zstd-nolegacy : LDFLAGS += $(THREAD_LD) $(ZLIBLD) $(LZMALD) $(LZ4LD) $(DEBUGFLAGS_LD) |
| -zstd-nolegacy : $(ZSTDLIB_CORE_SRC) $(ZDICT_SRC) $(ZSTD_CLI_OBJ) |
| - $(CC) $(FLAGS) $^ -o $@$(EXT) $(LDFLAGS) |
| +zstd-nolegacy$(EXT) : LDFLAGS += $(THREAD_LD) $(ZLIBLD) $(LZMALD) $(LZ4LD) $(DEBUGFLAGS_LD) |
| +zstd-nolegacy$(EXT) : $(ZSTDLIB_CORE_SRC) $(ZDICT_SRC) $(ZSTD_CLI_OBJ) |
| + $(CC) $(FLAGS) $^ -o $@ $(LDFLAGS) |
| |
| .PHONY: zstd-nomt |
| zstd-nomt : THREAD_CPP := |
| zstd-nomt : THREAD_LD := |
| zstd-nomt : THREAD_MSG := - multi-threading disabled |
| -zstd-nomt : zstd |
| +zstd-nomt : zstd$(EXT) |
| |
| .PHONY: zstd-nogz |
| zstd-nogz : ZLIBCPP := |
| zstd-nogz : ZLIBLD := |
| zstd-nogz : ZLIB_MSG := - gzip support is disabled |
| -zstd-nogz : zstd |
| +zstd-nogz : zstd$(EXT) |
| |
| .PHONY: zstd-noxz |
| zstd-noxz : LZMACPP := |
| zstd-noxz : LZMALD := |
| zstd-noxz : LZMA_MSG := - xz/lzma support is disabled |
| -zstd-noxz : zstd |
| +zstd-noxz : zstd$(EXT) |
| |
| ## zstd-dll: zstd executable linked to dynamic library libzstd (must have same version) |
| .PHONY: zstd-dll |
| zstd-dll : LDFLAGS+= -L$(ZSTDDIR) |
| zstd-dll : LDLIBS += -lzstd |
| zstd-dll : ZSTDLIB_LOCAL_SRC = xxhash.c |
| -zstd-dll : zstd |
| +zstd-dll : zstd$(EXT) |
| |
| |
| ## zstd-pgo: zstd executable optimized with PGO. |
| @@ -321,23 +321,23 @@ zstd-pgo : |
| $(MAKE) zstd MOREFLAGS=-fprofile-use |
| |
| ## zstd-small: minimal target, supporting only zstd compression and decompression. no bench. no legacy. no other format. |
| -zstd-small: CFLAGS = -Os -s |
| -zstd-frugal zstd-small: $(ZSTDLIB_CORE_SRC) zstdcli.c util.c timefn.c fileio.c |
| - $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NOTRACE $^ -o $@$(EXT) |
| +zstd-small$(EXT): CFLAGS = -Os -s |
| +zstd-frugal$(EXT) zstd-small$(EXT): $(ZSTDLIB_CORE_SRC) zstdcli.c util.c timefn.c fileio.c |
| + $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NOTRACE $^ -o $@ |
| |
| -zstd-decompress: $(ZSTDLIB_COMMON_C) $(ZSTDLIB_DECOMPRESS_C) zstdcli.c util.c timefn.c fileio.c |
| - $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NOCOMPRESS -DZSTD_NOTRACE $^ -o $@$(EXT) |
| +zstd-decompress$(EXT): $(ZSTDLIB_COMMON_C) $(ZSTDLIB_DECOMPRESS_C) zstdcli.c util.c timefn.c fileio.c |
| + $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NOCOMPRESS -DZSTD_NOTRACE $^ -o $@ |
| |
| -zstd-compress: $(ZSTDLIB_COMMON_C) $(ZSTDLIB_COMPRESS_C) zstdcli.c util.c timefn.c fileio.c |
| - $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NODECOMPRESS -DZSTD_NOTRACE $^ -o $@$(EXT) |
| +zstd-compress$(EXT): $(ZSTDLIB_COMMON_C) $(ZSTDLIB_COMPRESS_C) zstdcli.c util.c timefn.c fileio.c |
| + $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NODECOMPRESS -DZSTD_NOTRACE $^ -o $@ |
| |
| ## zstd-dictBuilder: executable supporting dictionary creation and compression (only) |
| -zstd-dictBuilder: CPPFLAGS += -DZSTD_NOBENCH -DZSTD_NODECOMPRESS -DZSTD_NOTRACE |
| -zstd-dictBuilder: $(ZSTDLIB_COMMON_C) $(ZSTDLIB_COMPRESS_C) $(ZDICT_SRC) zstdcli.c util.c timefn.c fileio.c dibio.c |
| - $(CC) $(FLAGS) $^ -o $@$(EXT) |
| +zstd-dictBuilder$(EXT): CPPFLAGS += -DZSTD_NOBENCH -DZSTD_NODECOMPRESS -DZSTD_NOTRACE |
| +zstd-dictBuilder$(EXT): $(ZSTDLIB_COMMON_C) $(ZSTDLIB_COMPRESS_C) $(ZDICT_SRC) zstdcli.c util.c timefn.c fileio.c dibio.c |
| + $(CC) $(FLAGS) $^ -o $@ |
| |
| -zstdmt: zstd |
| - ln -sf zstd zstdmt |
| +zstdmt$(EXT): zstd$(EXT) |
| + ln -sf zstd$(EXT) zstdmt$(EXT) |
| |
| .PHONY: generate_res |
| generate_res: $(RES64_FILE) $(RES32_FILE) |
| -- |
| 2.31.1 |
| |