summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2019-09-09 16:00:56 -0700
committerDylan Baker <dylan@pnwbakers.com>2019-09-09 16:06:18 -0700
commitafc6c935f1b52ca74d96f1ea2cbfb3e47ffb7fd4 (patch)
treea334d18490575c1855612fcd5c46481e983653d1
parentc558647fdf38f6d881ca924f5930c05c015561c9 (diff)
downloadpixman-afc6c935f1b52ca74d96f1ea2cbfb3e47ffb7fd4.tar.gz
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
-rw-r--r--pixman/meson.build9
1 files changed, 8 insertions, 1 deletions
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,