From c1359a49b61016031287d62f44a363cb76242c91 Mon Sep 17 00:00:00 2001 From: Matt Weber Date: Sat, 26 Oct 2019 09:17:29 -0500 Subject: [PATCH] Prefer ext static libs when --default-library=static This patch adds a case in the library pattern logic to prefer static libraries when the Meson Core option for "default_library" is set to solely static. The existing library search order makes sense for cases of shared and shared / static mixed. However if using a prebuilt cross-toolchain, they usually provide both a static and shared version of sysroot libraries. This presents a problem in a complete static build where there won't be shared libraries at runtime and during build time there are failures like "ld: attempted static link of dynamic object". Bug: https://github.com/mesonbuild/meson/issues/6108 Fixes: http://autobuild.buildroot.net/results/db1740b4777f436324218c52bc7b08e5c21b667d/ http://autobuild.buildroot.net/results/c17/c17bbb12d9deadd64a441b36e324cfbbe8aba5be/ Signed-off-by: Matthew Weber [Updated for 0.57.1 - get_builtin_option() vs. get_option(OptionKey())] Signed-off-by: Peter Seiderer [Bernd: rebased for 1.6.0] Signed-off-by: Bernd Kuhls --- mesonbuild/compilers/mixins/clike.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mesonbuild/compilers/mixins/clike.py b/mesonbuild/compilers/mixins/clike.py index 09ad837b1..b7f6b9f22 100644 --- a/mesonbuild/compilers/mixins/clike.py +++ b/mesonbuild/compilers/mixins/clike.py @@ -27,6 +27,7 @@ from ... import mlog from ...linkers.linkers import GnuLikeDynamicLinkerMixin, SolarisDynamicLinker, CompCertDynamicLinker from ...mesonlib import LibType +from ...options import OptionKey from .. import compilers from ..compilers import CompileCheckMode from .visualstudio import VisualStudioLikeCompiler @@ -1038,6 +1038,9 @@ class CLikeCompiler(Compiler): # TI C6000 compiler can use both extensions for static or dynamic libs. stlibext = ['a', 'lib'] shlibext = ['dll', 'so'] + elif env.coredata.get_option(OptionKey('default_library')) == 'static': + # Linux/BSDs + shlibext = ['a'] else: # Linux/BSDs shlibext = ['so'] -- 2.25.1