From 8bca04ba9f2c3bc53b9bd4973875a55f8ed5583f Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Wed, 23 Jul 2025 15:59:23 -0700 Subject: [PATCH] regroup list of OSes for install inside common variable within lib/install_oses.mk. fixes #4445 --- Makefile | 5 ++++- lib/Makefile | 14 +++++++------- lib/install_oses.mk | 17 +++++++++++++++++ lib/libzstd.mk | 5 ++++- programs/Makefile | 16 ++++++++-------- 5 files changed, 40 insertions(+), 17 deletions(-) create mode 100644 lib/install_oses.mk diff --git a/Makefile b/Makefile index c9a640cba..b726f7970 100644 --- a/Makefile +++ b/Makefile @@ -144,10 +144,13 @@ clean: $(Q)$(RM) -r lz4 cmakebuild mesonbuild install @echo Cleaning completed +LIBZSTD_MK_DIR = $(ZSTDDIR) +include $(LIBZSTD_MK_DIR)/install_oses.mk # UNAME, INSTALL_OS_LIST + #------------------------------------------------------------------------------ # make install is validated only for Linux, macOS, Hurd and some BSD targets #------------------------------------------------------------------------------ -ifneq (,$(filter Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD DragonFly NetBSD MSYS_NT% CYGWIN_NT% Haiku AIX,$(shell sh -c 'MSYSTEM="MSYS" uname') )) +ifneq (,$(filter $(INSTALL_OS_LIST),$(UNAME))) HOST_OS = POSIX diff --git a/lib/Makefile b/lib/Makefile index e9a50a8f7..569bd6090 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -128,7 +128,7 @@ $(ZSTD_STATICLIB): $(ZSTD_STATICLIB_OBJ) $(AR) $(ARFLAGS) $@ $^ libzstd.a: $(ZSTD_STATICLIB) - cp -f $< $@ + $(CP) $< $@ endif @@ -168,11 +168,11 @@ $(ZSTD_DYNLIB): $(ZSTD_DYNLIB_OBJ) @echo compiling single-threaded dynamic library $(LIBVER)) $(CC) $(FLAGS) $^ $(SONAME_FLAGS) -o $@ @echo creating versioned links - ln -sf $@ libzstd.$(SHARED_EXT_MAJOR) - ln -sf $@ libzstd.$(SHARED_EXT) + $(LN) -sf $@ libzstd.$(SHARED_EXT_MAJOR) + $(LN) -sf $@ libzstd.$(SHARED_EXT) $(LIBZSTD): $(ZSTD_DYNLIB) - cp -f $< $@ + $(CP) $< $@ endif # ifndef BUILD_DIR endif # if windows @@ -268,7 +268,7 @@ clean: #----------------------------------------------------------------------------- # make install is validated only for below listed environments #----------------------------------------------------------------------------- -ifneq (,$(filter Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku AIX MSYS_NT% CYGWIN_NT%,$(UNAME))) +ifneq (,$(filter $(INSTALL_OS_LIST),$(UNAME))) lib: libzstd.pc @@ -363,8 +363,8 @@ install-shared: [ -e $(DESTDIR)$(LIBDIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(LIBDIR)/ @echo Installing shared library $(INSTALL_PROGRAM) $(LIBZSTD) $(DESTDIR)$(LIBDIR) - ln -sf $(LIBZSTD) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR) - ln -sf $(LIBZSTD) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT) + $(LN) -sf $(LIBZSTD) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR) + $(LN) -sf $(LIBZSTD) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT) .PHONY: install-includes install-includes: diff --git a/lib/install_oses.mk b/lib/install_oses.mk new file mode 100644 index 000000000..c2cdd1635 --- /dev/null +++ b/lib/install_oses.mk @@ -0,0 +1,17 @@ +# ################################################################ +# Copyright (c) Meta Platforms, Inc. and affiliates. +# All rights reserved. +# +# This source code is licensed under both the BSD-style license (found in the +# LICENSE file in the root directory of this source tree) and the GPLv2 (found +# in the COPYING file in the root directory of this source tree). +# You may select, at your option, one of the above-listed licenses. +# ################################################################ + +# This included Makefile provides the following variables : +# UNAME, INSTALL_OS_LIST + +UNAME := $(shell sh -c 'MSYSTEM="MSYS" uname') + +# List of OSes for which target install is supported +INSTALL_OS_LIST ?= Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku AIX MSYS_NT% CYGWIN_NT% diff --git a/lib/libzstd.mk b/lib/libzstd.mk index 91bd4caf3..d1744973e 100644 --- a/lib/libzstd.mk +++ b/lib/libzstd.mk @@ -206,7 +206,10 @@ endif endif CPPFLAGS += -DZSTD_LEGACY_SUPPORT=$(ZSTD_LEGACY_SUPPORT) -UNAME := $(shell sh -c 'MSYSTEM="MSYS" uname') +# Include install_oses.mk from the same directory +include $(dir $(lastword $(MAKEFILE_LIST)))/install_oses.mk +LN ?= ln +CP ?= cp -f ifndef BUILD_DIR ifeq ($(UNAME), Darwin) diff --git a/programs/Makefile b/programs/Makefile index f4af5e981..94f2179d0 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -170,7 +170,7 @@ endif zstd : $(BUILD_DIR)/zstd if [ $(BIN_ISDIFFERENT) -eq 1 ]; then \ - cp -f $<$(EXT) $@$(EXT); \ + $(CP) $<$(EXT) $@$(EXT); \ echo zstd build completed; \ else \ echo zstd already built; \ @@ -271,7 +271,7 @@ zstd-dictBuilder: $(ZSTDLIB_COMMON_SRC) $(ZSTDLIB_COMPRESS_SRC) $(ZDICT_SRC) zst CLEAN += zstdmt zstdmt: zstd - ln -sf zstd zstdmt + $(LN) -sf zstd zstdmt .PHONY: generate_res generate_res: $(RES64_FILE) $(RES32_FILE) @@ -345,7 +345,7 @@ include $(wildcard $(DEPFILES)) #----------------------------------------------------------------------------- # make install is validated only for Linux, macOS, BSD, Hurd and Solaris targets #----------------------------------------------------------------------------- -ifneq (,$(filter Linux Darwin GNU/kFreeBSD GNU OpenBSD FreeBSD NetBSD DragonFly SunOS Haiku AIX MSYS_NT% CYGWIN_NT%,$(UNAME))) +ifneq (,$(filter $(INSTALL_OS_LIST),$(UNAME))) HAVE_COLORNEVER = $(shell echo a | egrep --color=never a > /dev/null 2> /dev/null && echo 1 || echo 0) EGREP_OPTIONS ?= @@ -414,15 +414,15 @@ install: [ -e $(DESTDIR)$(MAN1DIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(MAN1DIR)/ @echo Installing binaries $(INSTALL_PROGRAM) zstd$(EXT) $(DESTDIR)$(BINDIR)/zstd$(EXT) - ln -sf zstd$(EXT) $(DESTDIR)$(BINDIR)/zstdcat$(EXT) - ln -sf zstd$(EXT) $(DESTDIR)$(BINDIR)/unzstd$(EXT) - ln -sf zstd$(EXT) $(DESTDIR)$(BINDIR)/zstdmt$(EXT) + $(LN) -sf zstd$(EXT) $(DESTDIR)$(BINDIR)/zstdcat$(EXT) + $(LN) -sf zstd$(EXT) $(DESTDIR)$(BINDIR)/unzstd$(EXT) + $(LN) -sf zstd$(EXT) $(DESTDIR)$(BINDIR)/zstdmt$(EXT) $(INSTALL_SCRIPT) zstdless $(DESTDIR)$(BINDIR)/zstdless $(INSTALL_SCRIPT) zstdgrep $(DESTDIR)$(BINDIR)/zstdgrep @echo Installing man pages $(INSTALL_MAN) zstd.1 $(DESTDIR)$(MAN1DIR)/zstd.1 - ln -sf zstd.1 $(DESTDIR)$(MAN1DIR)/zstdcat.1 - ln -sf zstd.1 $(DESTDIR)$(MAN1DIR)/unzstd.1 + $(LN) -sf zstd.1 $(DESTDIR)$(MAN1DIR)/zstdcat.1 + $(LN) -sf zstd.1 $(DESTDIR)$(MAN1DIR)/unzstd.1 $(INSTALL_MAN) zstdgrep.1 $(DESTDIR)$(MAN1DIR)/zstdgrep.1 $(INSTALL_MAN) zstdless.1 $(DESTDIR)$(MAN1DIR)/zstdless.1 @echo zstd installation completed