summaryrefslogtreecommitdiffstats
path: root/meson.build
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2023-06-26 21:53:13 +0200
committerYu Watanabe <watanabe.yu+github@gmail.com>2023-06-29 08:38:53 +0200
commitd625f717db6e151fd78742593c35eaba4cd2841d (patch)
treeac6b30e4c60c9fc1d720ef1206bd6d358b727432 /meson.build
parentNEWS: various fixes/additions (diff)
downloadsystemd-d625f717db6e151fd78742593c35eaba4cd2841d.tar.xz
systemd-d625f717db6e151fd78742593c35eaba4cd2841d.zip
meson: first try dependency(), then fallback to find_library()
This also drops the fallback for libacl, libcap, libcrypt, and libgcrypt, as recent Ubuntu (at least, 20.04 LTS and newer) and Debian (at least, buster and newer) have relevant .pc files. Fixes #28161.
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build37
1 files changed, 23 insertions, 14 deletions
diff --git a/meson.build b/meson.build
index c50de25146..fa2f7e3544 100644
--- a/meson.build
+++ b/meson.build
@@ -1060,7 +1060,8 @@ threads = dependency('threads')
librt = cc.find_library('rt')
libm = cc.find_library('m')
libdl = cc.find_library('dl')
-libcrypt = cc.find_library('crypt')
+libcrypt = dependency('libcrypt')
+libcap = dependency('libcap')
# On some architectures, libatomic is required. But on some installations,
# it is found, but actual linking fails. So let's try to use it opportunistically.
@@ -1084,12 +1085,6 @@ foreach ident : [
conf.set10('HAVE_' + ident[0].to_upper(), have)
endforeach
-libcap = dependency('libcap', required : false)
-if not libcap.found()
- # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
- libcap = cc.find_library('cap')
-endif
-
want_bpf_framework = get_option('bpf-framework')
bpf_compiler = get_option('bpf-compiler')
bpf_framework_required = want_bpf_framework == 'true'
@@ -1270,7 +1265,7 @@ conf.set10('ENABLE_POLKIT', install_polkit)
want_acl = get_option('acl')
if want_acl != 'false' and not skip_deps
- libacl = cc.find_library('acl', required : want_acl == 'true')
+ libacl = dependency('libacl', required : want_acl == 'true')
have = libacl.found()
else
have = false
@@ -1327,8 +1322,15 @@ conf.set10('HAVE_XENCTRL', have)
want_pam = get_option('pam')
if want_pam != 'false' and not skip_deps
- libpam = cc.find_library('pam', required : want_pam == 'true')
- libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
+ libpam = dependency('pam', required : false)
+ if not libpam.found()
+ # Debian older than bookworm and Ubuntu older than 22.10 do not provide the .pc file.
+ libpam = cc.find_library('pam', required : want_pam == 'true')
+ endif
+ libpam_misc = dependency('pam_misc', required : false)
+ if not libpam_misc.found()
+ libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
+ endif
have = libpam.found() and libpam_misc.found()
else
have = false
@@ -1457,8 +1459,12 @@ conf.set10('HAVE_QRENCODE', have)
want_gcrypt = get_option('gcrypt')
if want_gcrypt != 'false' and not skip_deps
- libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
- libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
+ libgcrypt = dependency('libgcrypt', required : want_gcrypt == 'true')
+ libgpg_error = dependency('gpg-error', required : false)
+ if not libgpg_error.found()
+ # CentOS 8 does not provide the .pc file.
+ libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
+ endif
have = libgcrypt.found() and libgpg_error.found()
else
have = false
@@ -1568,8 +1574,11 @@ conf.set10('HAVE_ZLIB', have)
want_bzip2 = get_option('bzip2')
if want_bzip2 != 'false' and not skip_deps
- libbzip2 = cc.find_library('bz2',
- required : want_bzip2 == 'true')
+ libbzip2 = dependency('bzip2', required : false)
+ if not libbzip2.found()
+ # Debian and Ubuntu do not provide the .pc file.
+ libbzip2 = cc.find_library('bz2', required : want_bzip2 == 'true')
+ endif
have = libbzip2.found()
else
have = false