]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
regroup list of OSes for install inside common variable 4448/head
authorYann Collet <cyan@fb.com>
Wed, 23 Jul 2025 22:59:23 +0000 (15:59 -0700)
committerYann Collet <cyan@fb.com>
Mon, 28 Jul 2025 18:33:22 +0000 (11:33 -0700)
within lib/install_oses.mk.

fixes #4445

Makefile
lib/Makefile
lib/install_oses.mk [new file with mode: 0644]
lib/libzstd.mk
programs/Makefile

index c9a640cbafa35876e464be77af7613ac24a4efe8..b726f7970ce18d9423e90a754ff98f9cc07f9be1 100644 (file)
--- 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
 
index e9a50a8f7c342e43e37991f0178698d32f8894bb..569bd6090c93cf71748fb0f187a20b5ecca871db 100644 (file)
@@ -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 (file)
index 0000000..c2cdd16
--- /dev/null
@@ -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%
index 91bd4caf3826407cc82b26284f991134d8400c31..d1744973e2c8abdb1db4dd984b7bfbb1eb04c8c7 100644 (file)
@@ -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)
index f4af5e98134ebb0118556337446eb7a71965c7b4..94f2179d0281bb1dd06b23ebbba7fb27e51410a1 100644 (file)
@@ -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