summarylogtreecommitdiffstats
path: root/afc6c935f1b52ca74d96f1ea2cbfb3e47ffb7fd4.patch
blob: 311db2252eb4fcb876cd386f87f5aa7cb5f59b87 (plain)
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
From afc6c935f1b52ca74d96f1ea2cbfb3e47ffb7fd4 Mon Sep 17 00:00:00 2001
From: Dylan Baker <dylan@pnwbakers.com>
Date: Mon, 9 Sep 2019 16:00:56 -0700
Subject: [PATCH] meson: don't use link_with for library()

Meson doesn't do the expected thing when library() creates a static
library. Instead of combining the libraries together into a single
archive it effectively discards them, resulting in missing symbols.

To work around this we manually unpack the archives and shove the .o
files into the final library. This doesn't affect the shared library at
all, but makes the static library have the necessary symbols

Fixes #33
---
 pixman/meson.build | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/pixman/meson.build b/pixman/meson.build
index 7b66827..31be9d2 100644
--- a/pixman/meson.build
+++ b/pixman/meson.build
@@ -97,10 +97,17 @@ pixman_files = files(
   'pixman-utils.c',
 )
 
+# We cannot use 'link_with' or 'link_whole' because meson wont do the right
+# thing for static archives.
+_obs = []
+foreach l : pixman_simd_libs
+  _obs += l.extract_all_objects()
+endforeach
+
 libpixman = library(
   'pixman-1',
   [pixman_files, config_h, version_h],
-  link_with : [pixman_simd_libs],
+  objects: _obs,
   dependencies : [dep_m, dep_threads],
   version : meson.project_version(),
   install : true,
-- 
2.24.1