summaryrefslogtreecommitdiffstats
path: root/meson.build
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2019-10-02 03:20:13 -0400
committerAllan McRae <allan@archlinux.org>2019-10-07 14:09:34 +1000
commit0e3a4bd1fbb740b6bfce2ceb3e6acdfe84a4d486 (patch)
tree0875d6a203427baa5c44edd2a2dbf4f74990cacc /meson.build
parentfacd9533b002194e58cc47672ce7e23d40968e96 (diff)
downloadpacman-0e3a4bd1fbb740b6bfce2ceb3e6acdfe84a4d486.tar.gz
pacman-0e3a4bd1fbb740b6bfce2ceb3e6acdfe84a4d486.zip
meson: work around broken pkg-config file with private requires
In addition to the general issue of staticlibs linkage, linking a static lib to a library() does not seem to generate the needed Libs.private. Rework how we handle this entirely. Instead of relying on convenience libraries, we will *sigh* go extract a boatload of .o files again, then relink those to the installable libalpm, while mentioning our dependencies again. We still have our guaranteed static library for linking arbitrary programs with (e.g. vercmp), and we still only generate one identical copy of the .o files, but now we potentially `ar` it up twice, which isn't so bad. And linking still works, and pkg-config files also still work. One alternative would be to explicitly list our dependencies to pkgconfig.generate with requires_private, but since gpgme might be an elevated config-tool dependency, this can fail with: meson.build:341:10: ERROR: requires argument not a string, library with pkgconfig-generated file or pkgconfig-dependency object, got <GpgmeDependency gpgme: True> Signed-off-by: Eli Schwartz <eschwartz@archlinux.org> Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build22
1 files changed, 10 insertions, 12 deletions
diff --git a/meson.build b/meson.build
index f0f708d8..29f89c45 100644
--- a/meson.build
+++ b/meson.build
@@ -314,24 +314,22 @@ libcommon = static_library(
include_directories : includes,
install : false)
+alpm_deps = [crypto_provider, libarchive, libcurl, gpgme]
+
libalpm_a = static_library(
- 'alpm',
+ 'alpm_objlib',
libalpm_sources,
# https://github.com/mesonbuild/meson/issues/3937
objects : libcommon.extract_all_objects(),
include_directories : includes,
- dependencies : [crypto_provider, libarchive, libcurl, gpgme],
- install : true)
+ dependencies : alpm_deps)
-if get_option('default_library') != 'static'
- libalpm = library(
- 'alpm',
- version : libalpm_version,
- link_whole: [libalpm_a],
- install : true)
-else
- libalpm = libalpm_a
-endif
+libalpm = library(
+ 'alpm',
+ version : libalpm_version,
+ objects: libalpm_a.extract_all_objects(recursive: true),
+ dependencies : alpm_deps,
+ install : true)
install_headers(
'lib/libalpm/alpm.h',