Commit 7f87de78 authored by Jörg Krause's avatar Jörg Krause Committed by Max Kellermann

src/lib/gcrypt/meson.build: use dependency() for quering linker flags

Since version 0.49.0 the Meson build system has native support for finding and using the gcrypt library using the `dependency()` function. `dependency()` has the advantage over `find_library()` as it queries the required linker flags for proper linking with external libraries, e.g. libgpg-error. As the latest released version 1.8.4 of libgcrypt does not provide a .pc file, using `libgcrypt-config` is the only way to query the required linker flags. Unfortunately, there is an issue when cross compiling mpd and the user does not define `libgcrypt-config` in the cross file. If the user sets the qobuz feature to `auto` and the target does not have libgcrypt installed, the Meson build system will falsly assume libgcrypt is available for the target as it uses the native `libgcrypt-config` on the host and pretend is has found the library. Therefore, we still rely on `find_library()` to workaround this buggy behavior. This way, if qobuz feature detection is set to `auto`, the feature is disabled in case there is no target libgcrypt available. Fixes building mpd statically with the qobuz feature enabled. Otherwise the build fails with undefined references because of the missing libgpg-error dependency: ``` /sysroot/usr/lib/libgcrypt.a(libgcrypt_la-visibility.o): In function `gcry_strerror': visibility.c:(.text+0x14): undefined reference to `gpg_strerror' ```
parent c66389a4
# Since version 0.49.0 Meson has native libgcrypt dependency support, which has
# the advantage over find_library() as it uses libgcrypt-config to query the
# required linker flags.
# However, we still need to use find_library() first, to prevent Meson
# falsly assuming a target libgcrypt is available in case there is no
# libgcrypt-config entry in the cross file and libgcrypt is installed on the
# host. In this case, Meson will falsly use the native libgcrypt-config and
# will falsly assume it has found the gcrypt library for the target.
#
# See: https://github.com/MusicPlayerDaemon/MPD/pull/495
gcrypt_dep = c_compiler.find_library('gcrypt', required: get_option('qobuz'))
if gcrypt_dep.found()
gcrypt_dep = dependency('libgcrypt')
endif
if not gcrypt_dep.found()
subdir_done()
endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment