[openwrt/openwrt] tools: zstd: add patch fixing wrong generated .pc with lib-mt

LEDE Commits lede-commits at lists.infradead.org
Sat Apr 6 06:01:50 PDT 2024


ansuel pushed a commit to openwrt/openwrt.git, branch main:
https://git.openwrt.org/f2fabf7aaaacec6fdc50226f57f4be2c19d8cace

commit f2fabf7aaaacec6fdc50226f57f4be2c19d8cace
Author: Christian Marangi <ansuelsmth at gmail.com>
AuthorDate: Sat Apr 6 14:58:48 2024 +0200

    tools: zstd: add patch fixing wrong generated .pc with lib-mt
    
    The current .pc generated by make build system for zstd is wrong and
    always assume a single-threaded library is used.
    
    This wasn't the case for the meson build system that used his own logic
    to generate the pkg-config file.
    
    Add a patch to fix this by introducing install-mt-pc make target to
    generate the correct pkg-config gile.
    
    Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
---
 tools/zstd/Makefile                                |  2 +-
 ...iant-pkg-config-file-for-multi-threaded-s.patch | 97 ++++++++++++++++++++++
 2 files changed, 98 insertions(+), 1 deletion(-)

diff --git a/tools/zstd/Makefile b/tools/zstd/Makefile
index 2bb055c93d..728cef26b8 100644
--- a/tools/zstd/Makefile
+++ b/tools/zstd/Makefile
@@ -34,7 +34,7 @@ define Host/Compile
 endef
 
 define Host/Install
-	+$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR)/lib install-pc install-static install-includes PREFIX=$(HOST_BUILD_PREFIX)
+	+$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR)/lib install-mt-pc install-static install-includes PREFIX=$(HOST_BUILD_PREFIX)
 	+$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR)/programs install PREFIX=$(HOST_BUILD_PREFIX)
 endef
 
diff --git a/tools/zstd/patches/100-Provide-variant-pkg-config-file-for-multi-threaded-s.patch b/tools/zstd/patches/100-Provide-variant-pkg-config-file-for-multi-threaded-s.patch
new file mode 100644
index 0000000000..a7b3823e66
--- /dev/null
+++ b/tools/zstd/patches/100-Provide-variant-pkg-config-file-for-multi-threaded-s.patch
@@ -0,0 +1,97 @@
+From 5886e6a45b3c20c8d8f837657d1506b580434136 Mon Sep 17 00:00:00 2001
+From: Christian Marangi <ansuelsmth at gmail.com>
+Date: Sat, 6 Apr 2024 14:41:54 +0200
+Subject: [PATCH] Provide variant pkg-config file for multi-threaded static lib
+
+Multi-threaded static library require -pthread to correctly link and works.
+The pkg-config we provide tho only works with dynamic multi-threaded library
+and won't provide the correct libs and cflags values if lib-mt is used.
+
+To handle this, introduce a variant of libzstd.pc.in, mt-libzstd.pc.in
+and intoduce a new make target, install-mt-pc to permit advanced user to
+install and generate a correct pkg-config file for lib-mt.
+
+This was notice while migrating from meson to make build system where
+meson generates a correct .pc file while make doesn't.
+
+Signed-off-by: Christian Marangi <ansuelsmth at gmail.com>
+---
+ lib/Makefile         | 16 ++++++++++++++++
+ lib/README.md        |  4 ++++
+ lib/mt-libzstd.pc.in | 15 +++++++++++++++
+ 3 files changed, 35 insertions(+)
+ create mode 100644 lib/mt-libzstd.pc.in
+
+diff --git a/lib/Makefile b/lib/Makefile
+index 8bfdade9..4933f0e9 100644
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -319,6 +319,17 @@ libzstd.pc: libzstd.pc.in
+ 	        -e 's|@LIBS_PRIVATE@|$(LDFLAGS_DYNLIB)|' \
+ 	        $< >$@
+ 
++mt-libzstd.pc: mt-libzstd.pc.in
++	@echo creating pkgconfig
++	@sed \
++	        -e 's|@PREFIX@|$(PREFIX)|' \
++	        -e 's|@EXEC_PREFIX@|$(PCEXEC_PREFIX)|' \
++	        -e 's|@INCLUDEDIR@|$(PCINCPREFIX)$(PCINCDIR)|' \
++	        -e 's|@LIBDIR@|$(PCLIBPREFIX)$(PCLIBDIR)|' \
++	        -e 's|@VERSION@|$(VERSION)|' \
++	        -e 's|@LIBS_PRIVATE@|$(LDFLAGS_DYNLIB)|' \
++	        $< >$@
++
+ .PHONY: install
+ install: install-pc install-static install-shared install-includes
+ 	@echo zstd static and shared library installed
+@@ -328,6 +339,11 @@ install-pc: libzstd.pc
+ 	[ -e $(DESTDIR)$(PKGCONFIGDIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(PKGCONFIGDIR)/
+ 	$(INSTALL_DATA) libzstd.pc $(DESTDIR)$(PKGCONFIGDIR)/
+ 
++.PHONY: install-mt-pc
++install-mt-pc: mt-libzstd.pc
++	[ -e $(DESTDIR)$(PKGCONFIGDIR) ] || $(INSTALL) -d -m 755 $(DESTDIR)$(PKGCONFIGDIR)/
++	$(INSTALL_DATA) mt-libzstd.pc $(DESTDIR)$(PKGCONFIGDIR)/libzstd.pc
++
+ .PHONY: install-static
+ install-static:
+ 	# only generate libzstd.a if it's not already present
+diff --git a/lib/README.md b/lib/README.md
+index a560f06c..3038bc7a 100644
+--- a/lib/README.md
++++ b/lib/README.md
+@@ -33,6 +33,10 @@ For convenience, we provide a build target to generate multi and single threaded
+ When linking a POSIX program with a multithreaded version of `libzstd`,
+ note that it's necessary to invoke the `-pthread` flag during link stage.
+ 
++The `.pc` generated from `make install` or `make install-pc` always assume a single-threaded static library
++is compiled. If `make lib-mt` is used, to correctly generate a `.pc` for the multi-threaded static library,
++`make install-mt-pc` is needed.
++
+ Multithreading capabilities are exposed
+ via the [advanced API defined in `lib/zstd.h`](https://github.com/facebook/zstd/blob/v1.4.3/lib/zstd.h#L351).
+ 
+diff --git a/lib/mt-libzstd.pc.in b/lib/mt-libzstd.pc.in
+new file mode 100644
+index 00000000..cd93301a
+--- /dev/null
++++ b/lib/mt-libzstd.pc.in
+@@ -0,0 +1,15 @@
++#   ZSTD - standard compression algorithm
++#   Copyright (c) Meta Platforms, Inc. and affiliates.
++#   BSD 2-Clause License (https://opensource.org/licenses/bsd-license.php)
++
++prefix=@PREFIX@
++exec_prefix=@EXEC_PREFIX@
++includedir=@INCLUDEDIR@
++libdir=@LIBDIR@
++
++Name: zstd
++Description: fast lossless compression algorithm library
++URL: https://facebook.github.io/zstd/
++Version: @VERSION@
++Libs: -L${libdir} -lzstd @LIBS_PRIVATE@
++Cflags: -I${includedir} @LIBS_PRIVATE@
+-- 
+2.43.0
+




More information about the lede-commits mailing list