From afc6c935f1b52ca74d96f1ea2cbfb3e47ffb7fd4 Mon Sep 17 00:00:00 2001 From: Dylan Baker 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