Browse Source

tools: meson: don't use "allow-shlib-undefined" with LLVM if not supported

From https://github.com/mesonbuild/meson/pull/5912

This solves the -lpthread detection issue with libplacebo when compiling with
LLVM for Windows.
pull/103/head
Steve Lhomme 7 years ago
parent
commit
f079504ccf
  1. 2
      extras/package/win32/build.sh
  2. 21
      extras/tools/meson-shlib-undefined.patch
  3. 1
      extras/tools/tools.mak

2
extras/package/win32/build.sh

@ -111,7 +111,7 @@ mkdir -p extras/tools
cd extras/tools
export PATH="$PWD/build/bin":"$PATH"
# Force meson 0.51.1 as newer versions don't add -lpthread properly in libplacebo.pc
# Force patched meson as newer versions don't add -lpthread properly in libplacebo.pc
FORCED_TOOLS="meson"
# Force libtool build when compiling with clang
if [ "$COMPILING_WITH_CLANG" -gt 0 ] && [ ! -d "libtool" ]; then

21
extras/tools/meson-shlib-undefined.patch

@ -0,0 +1,21 @@
--- meson/mesonbuild/linkers.py.shlib 2020-01-31 11:54:36.928015800 +0100
+++ meson/mesonbuild/linkers.py 2020-01-31 11:54:55.088659900 +0100
@@ -659,8 +659,17 @@ class LLVMDynamicLinker(GnuLikeDynamicLi
This is only the posix-like linker.
"""
- pass
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ # Some targets don't seem to support this argument (windows, wasm, ...)
+ _, _, e = mesonlib.Popen_safe(self.exelist + self._apply_prefix('--allow-shlib-undefined'))
+ self.has_allow_shlib_undefined = not ('unknown argument: --allow-shlib-undefined' in e)
+
+ def get_allow_undefined_args(self) -> T.List[str]:
+ if self.has_allow_shlib_undefined:
+ return self._apply_prefix('--allow-shlib-undefined')
+ return []
class CcrxDynamicLinker(DynamicLinker):

1
extras/tools/tools.mak

@ -410,6 +410,7 @@ meson-$(MESON_VERSION).tar.gz:
meson: meson-$(MESON_VERSION).tar.gz
$(UNPACK)
$(APPLY) $(TOOLS)/meson-shlib-undefined.patch
$(MOVE)
.buildmeson: meson

Loading…
Cancel
Save