mirror of
https://github.com/facebook/zstd.git
synced 2025-08-05 19:15:58 +03:00
programs/zstd also automatically generate object dir per conf
same rules as lib/libzstd can also be controlled via HASH and BUILD_DIR
This commit is contained in:
@@ -201,7 +201,7 @@ ZSTD_STATLIB_OBJ := $(addprefix $(ZSTD_STATLIB_DIR)/, $(ZSTD_LOCAL_OBJ))
|
|||||||
|
|
||||||
# macOS linker doesn't support -soname, and use different extension
|
# macOS linker doesn't support -soname, and use different extension
|
||||||
# see : https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html
|
# see : https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html
|
||||||
ifeq ($(shell uname), Darwin)
|
ifeq ($(UNAME), Darwin)
|
||||||
SHARED_EXT = dylib
|
SHARED_EXT = dylib
|
||||||
SHARED_EXT_MAJOR = $(LIBVER_MAJOR).$(SHARED_EXT)
|
SHARED_EXT_MAJOR = $(LIBVER_MAJOR).$(SHARED_EXT)
|
||||||
SHARED_EXT_VER = $(LIBVER).$(SHARED_EXT)
|
SHARED_EXT_VER = $(LIBVER).$(SHARED_EXT)
|
||||||
@@ -318,7 +318,7 @@ clean:
|
|||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
# make install is validated only for below listed environments
|
# make install is validated only for below listed environments
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku))
|
ifneq (,$(filter $(UNAME),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku))
|
||||||
|
|
||||||
all: libzstd.pc
|
all: libzstd.pc
|
||||||
|
|
||||||
@@ -354,13 +354,13 @@ $(error configured includedir ($(INCLUDEDIR)) is outside of exec_prefix ($(PREFI
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq (,$(filter $(shell uname),FreeBSD NetBSD DragonFly))
|
ifneq (,$(filter $(UNAME),FreeBSD NetBSD DragonFly))
|
||||||
PKGCONFIGDIR ?= $(PREFIX)/libdata/pkgconfig
|
PKGCONFIGDIR ?= $(PREFIX)/libdata/pkgconfig
|
||||||
else
|
else
|
||||||
PKGCONFIGDIR ?= $(LIBDIR)/pkgconfig
|
PKGCONFIGDIR ?= $(LIBDIR)/pkgconfig
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq (,$(filter $(shell uname),SunOS))
|
ifneq (,$(filter $(UNAME),SunOS))
|
||||||
INSTALL ?= ginstall
|
INSTALL ?= ginstall
|
||||||
else
|
else
|
||||||
INSTALL ?= install
|
INSTALL ?= install
|
||||||
|
@@ -91,6 +91,31 @@ ZSTD_CLI_SRC := $(wildcard *.c)
|
|||||||
ZSTD_CLI_OBJ := $(ZSTD_CLI_SRC:.c=.o)
|
ZSTD_CLI_OBJ := $(ZSTD_CLI_SRC:.c=.o)
|
||||||
|
|
||||||
ZSTD_ALL_SRC := $(ZSTDLIB_LOCAL_SRC) $(ZSTD_CLI_SRC)
|
ZSTD_ALL_SRC := $(ZSTDLIB_LOCAL_SRC) $(ZSTD_CLI_SRC)
|
||||||
|
ZSTD_ALL_OBJ := $(ZSTD_ALL_SRC:.c=.o)
|
||||||
|
|
||||||
|
UNAME := $(shell uname)
|
||||||
|
ifeq ($(UNAME), Darwin)
|
||||||
|
HASH ?= md5
|
||||||
|
endif
|
||||||
|
ifeq ($(UNAME), FreeBSD)
|
||||||
|
HASH ?= gmd5sum
|
||||||
|
endif
|
||||||
|
ifeq ($(UNAME), OpenBSD)
|
||||||
|
HASH ?= md5
|
||||||
|
endif
|
||||||
|
HASH ?= md5sum
|
||||||
|
|
||||||
|
HAVE_HASH := $(shell echo 1 | $(HASH) > /dev/null && echo 1 || echo 0)
|
||||||
|
ifeq ($(HAVE_HASH), 1)
|
||||||
|
HASH_VALUE := $(shell echo $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) | $(HASH) | head -c 16)
|
||||||
|
HASH_DIR := conf_$(HASH_VALUE)
|
||||||
|
else
|
||||||
|
$(info warning : could not find hash function to differentiate builds with different flags)
|
||||||
|
HASH_DIR := 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
BUILD_DIR ?= obj/$(HASH_DIR)
|
||||||
|
ZSTD_OBJ := $(addprefix $(BUILD_DIR)/, $(ZSTD_ALL_OBJ))
|
||||||
|
|
||||||
# Define *.exe as extension for Windows systems
|
# Define *.exe as extension for Windows systems
|
||||||
ifneq (,$(filter Windows%,$(OS)))
|
ifneq (,$(filter Windows%,$(OS)))
|
||||||
@@ -177,18 +202,23 @@ all: zstd
|
|||||||
.PHONY: allVariants
|
.PHONY: allVariants
|
||||||
allVariants: zstd zstd-compress zstd-decompress zstd-small zstd-nolegacy zstd-dictBuilder
|
allVariants: zstd zstd-compress zstd-decompress zstd-small zstd-nolegacy zstd-dictBuilder
|
||||||
|
|
||||||
|
$(BUILD_DIR)/zstd : $(ZSTD_OBJ)
|
||||||
|
@echo "$(THREAD_MSG)"
|
||||||
|
@echo "$(ZLIB_MSG)"
|
||||||
|
@echo "$(LZMA_MSG)"
|
||||||
|
@echo "$(LZ4_MSG)"
|
||||||
|
$(Q)$(CC) $(FLAGS) $^ -o $@$(EXT) $(LDFLAGS)
|
||||||
|
|
||||||
|
.PHONY: zstd
|
||||||
zstd : CPPFLAGS += $(THREAD_CPP) $(ZLIBCPP) $(LZMACPP) $(LZ4CPP)
|
zstd : CPPFLAGS += $(THREAD_CPP) $(ZLIBCPP) $(LZMACPP) $(LZ4CPP)
|
||||||
zstd : LDFLAGS += $(THREAD_LD) $(ZLIBLD) $(LZMALD) $(LZ4LD) $(DEBUGFLAGS_LD)
|
zstd : LDFLAGS += $(THREAD_LD) $(ZLIBLD) $(LZMALD) $(LZ4LD) $(DEBUGFLAGS_LD)
|
||||||
zstd : CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT)
|
zstd : CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT)
|
||||||
ifneq (,$(filter Windows%,$(OS)))
|
ifneq (,$(filter Windows%,$(OS)))
|
||||||
zstd : $(RES_FILE)
|
zstd : $(RES_FILE)
|
||||||
endif
|
endif
|
||||||
zstd : $(ZSTDLIB_LOCAL_OBJ) $(ZSTD_CLI_OBJ)
|
zstd : $(BUILD_DIR)/zstd
|
||||||
@echo "$(THREAD_MSG)"
|
$(Q)ln -sf $^ $@
|
||||||
@echo "$(ZLIB_MSG)"
|
@echo zstd build completed
|
||||||
@echo "$(LZMA_MSG)"
|
|
||||||
@echo "$(LZ4_MSG)"
|
|
||||||
$(CC) $(FLAGS) $^ -o $@$(EXT) $(LDFLAGS)
|
|
||||||
|
|
||||||
.PHONY: zstd-release
|
.PHONY: zstd-release
|
||||||
zstd-release: DEBUGFLAGS := -DBACKTRACE_ENABLE=0
|
zstd-release: DEBUGFLAGS := -DBACKTRACE_ENABLE=0
|
||||||
@@ -289,6 +319,7 @@ clean:
|
|||||||
zstd$(EXT) zstd32$(EXT) zstd-compress$(EXT) zstd-decompress$(EXT) \
|
zstd$(EXT) zstd32$(EXT) zstd-compress$(EXT) zstd-decompress$(EXT) \
|
||||||
zstd-small$(EXT) zstd-frugal$(EXT) zstd-nolegacy$(EXT) zstd4$(EXT) \
|
zstd-small$(EXT) zstd-frugal$(EXT) zstd-nolegacy$(EXT) zstd4$(EXT) \
|
||||||
zstd-dictBuilder$(EXT) *.gcda default*.profraw default.profdata have_zlib$(EXT)
|
zstd-dictBuilder$(EXT) *.gcda default*.profraw default.profdata have_zlib$(EXT)
|
||||||
|
$(Q)$(RM) -r obj/*
|
||||||
@echo Cleaning completed
|
@echo Cleaning completed
|
||||||
|
|
||||||
MD2ROFF = ronn
|
MD2ROFF = ronn
|
||||||
@@ -321,35 +352,32 @@ preview-man: clean-man man
|
|||||||
|
|
||||||
# Generate .h dependencies automatically
|
# Generate .h dependencies automatically
|
||||||
|
|
||||||
MKDIR = mkdir
|
DEPFLAGS = -MT $@ -MMD -MP -MF
|
||||||
|
|
||||||
DEPDIR := .deps
|
$(BUILD_DIR)/%.o : %.c $(BUILD_DIR)/%.d | $(BUILD_DIR)
|
||||||
DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$*.d
|
|
||||||
|
|
||||||
COMPILE.c = $(CC) $(DEPFLAGS) $(CFLAGS) $(CPPFLAGS) -c
|
|
||||||
|
|
||||||
%.o : %.c
|
|
||||||
%.o : %.c $(DEPDIR)/%.d | $(DEPDIR)
|
|
||||||
@echo $@
|
@echo $@
|
||||||
$(Q)$(COMPILE.c) $(OUTPUT_OPTION) $<
|
$(Q)$(COMPILE.c) $(DEPFLAGS) $(BUILD_DIR)/$*.d $(OUTPUT_OPTION) $<
|
||||||
|
|
||||||
$(DEPDIR): ; $(Q)$(MKDIR) -p $@
|
MKDIR ?= mkdir
|
||||||
|
$(BUILD_DIR): ; $(Q)$(MKDIR) -p $@
|
||||||
|
|
||||||
DEPFILES := $(ZSTD_ALL_SRC:%.c=$(DEPDIR)/%.d)
|
DEPFILES := $(ZSTD_OBJ:.o=.d)
|
||||||
$(DEPFILES):
|
$(DEPFILES):
|
||||||
|
|
||||||
include $(wildcard $(DEPFILES))
|
include $(wildcard $(DEPFILES))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
# make install is validated only for Linux, macOS, BSD, Hurd and Solaris targets
|
# make install is validated only for Linux, macOS, BSD, Hurd and Solaris targets
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
ifneq (,$(filter $(shell uname),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku))
|
UNAME := $(shell uname)
|
||||||
|
ifneq (,$(filter $(UNAME),Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku))
|
||||||
|
|
||||||
HAVE_COLORNEVER = $(shell echo a | egrep --color=never a > /dev/null 2> /dev/null && echo 1 || echo 0)
|
HAVE_COLORNEVER = $(shell echo a | egrep --color=never a > /dev/null 2> /dev/null && echo 1 || echo 0)
|
||||||
EGREP_OPTIONS ?=
|
EGREP_OPTIONS ?=
|
||||||
ifeq ($HAVE_COLORNEVER, 1)
|
ifeq ($HAVE_COLORNEVER, 1)
|
||||||
EGREP_OPTIONS += --color=never
|
EGREP_OPTIONS += --color=never
|
||||||
endif
|
endif
|
||||||
EGREP = egrep $(EGREP_OPTIONS)
|
EGREP = egrep $(EGREP_OPTIONS)
|
||||||
AWK = awk
|
AWK = awk
|
||||||
@@ -387,17 +415,17 @@ datarootdir ?= $(PREFIX)/share
|
|||||||
mandir ?= $(datarootdir)/man
|
mandir ?= $(datarootdir)/man
|
||||||
man1dir ?= $(mandir)/man1
|
man1dir ?= $(mandir)/man1
|
||||||
|
|
||||||
ifneq (,$(filter $(shell uname),OpenBSD FreeBSD NetBSD DragonFly SunOS))
|
ifneq (,$(filter $(UNAME),OpenBSD FreeBSD NetBSD DragonFly SunOS))
|
||||||
MANDIR ?= $(PREFIX)/man
|
MANDIR ?= $(PREFIX)/man
|
||||||
MAN1DIR ?= $(MANDIR)/man1
|
MAN1DIR ?= $(MANDIR)/man1
|
||||||
else
|
else
|
||||||
MAN1DIR ?= $(man1dir)
|
MAN1DIR ?= $(man1dir)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq (,$(filter $(shell uname),SunOS))
|
ifneq (,$(filter $(UNAME),SunOS))
|
||||||
INSTALL ?= ginstall
|
INSTALL ?= ginstall
|
||||||
else
|
else
|
||||||
INSTALL ?= install
|
INSTALL ?= install
|
||||||
endif
|
endif
|
||||||
|
|
||||||
INSTALL_PROGRAM ?= $(INSTALL)
|
INSTALL_PROGRAM ?= $(INSTALL)
|
||||||
|
Reference in New Issue
Block a user