hc
2023-11-22 f743a7adbd6e230d66a6206fa115b59fec2d88eb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
From c1359a49b61016031287d62f44a363cb76242c91 Mon Sep 17 00:00:00 2001
From: Matt Weber <matthew.weber@rockwellcollins.com>
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 <matthew.weber@rockwellcollins.com>
[Updated for 0.57.1 - get_builtin_option() vs. get_option(OptionKey())]
Signed-off-by: Peter Seiderer <ps.report@gmx.net>
---
 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
@@ -978,6 +978,9 @@ class CLikeCompiler(Compiler):
         elif env.machines[self.for_machine].is_cygwin():
             shlibext = ['dll', 'dll.a']
             prefixes = ['cyg'] + prefixes
+        elif env.coredata.get_option(OptionKey('default_library')) == 'static':
+            # Linux/BSDs
+            shlibext = ['a']
         else:
             # Linux/BSDs
             shlibext = ['so']
-- 
2.25.1