1
0
mirror of https://github.com/systemd/systemd.git synced 2024-12-22 17:35:35 +03:00

meson: Convert options to meson features (find_library fallback)

This uses a two-step approach to make sure we can fall back to
find_library(), while also skipping the detection if the features are
explicitly disabled.
This commit is contained in:
Jan Janssen 2023-08-09 19:52:57 +02:00
parent 9ee80846f8
commit a0c9ac9ae4
3 changed files with 43 additions and 59 deletions

View File

@ -1178,18 +1178,13 @@ if have
conf.set_quoted('SMACK_DEFAULT_PROCESS_LABEL', get_option('smack-default-process-label'))
endif
want_polkit = get_option('polkit')
install_polkit = false
install_polkit_pkla = false
if want_polkit != 'false' and not skip_deps
install_polkit = true
libpolkit = dependency('polkit-gobject-1',
required : false)
if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
message('Old polkit detected, will install pkla files')
install_polkit_pkla = true
endif
feature = get_option('polkit')
libpolkit = dependency('polkit-gobject-1',
required : feature.disabled() ? feature : false)
install_polkit = feature.allowed()
install_polkit_pkla = libpolkit.found() and libpolkit.version().version_compare('< 0.106')
if install_polkit_pkla
message('Old polkit detected, will install pkla files')
endif
conf.set10('ENABLE_POLKIT', install_polkit)
@ -1217,24 +1212,19 @@ libxenctrl = dependency('xencontrol',
required : get_option('xenctrl'))
conf.set10('HAVE_XENCTRL', libxenctrl.found())
want_pam = get_option('pam')
if want_pam != 'false' and not skip_deps
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
libpam = []
libpam_misc = []
feature = get_option('pam')
libpam = dependency('pam',
required : feature.disabled() ? feature : 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 : feature)
endif
conf.set10('HAVE_PAM', have)
libpam_misc = dependency('pam_misc',
required : feature.disabled() ? feature : false)
if not libpam_misc.found()
libpam_misc = cc.find_library('pam_misc', required : feature)
endif
conf.set10('HAVE_PAM', libpam.found() and libpam_misc.found())
libmicrohttpd = dependency('libmicrohttpd',
version : '>= 0.9.33',
@ -1326,18 +1316,17 @@ libqrencode = dependency('libqrencode',
required : get_option('qrencode'))
conf.set10('HAVE_QRENCODE', libqrencode.found())
want_gcrypt = get_option('gcrypt')
if want_gcrypt != 'false' and not skip_deps
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
feature = get_option('gcrypt')
libgcrypt = dependency('libgcrypt',
required : feature)
libgpg_error = dependency('gpg-error',
required : feature.disabled() ? feature : false)
if not libgpg_error.found()
# CentOS 8 does not provide the .pc file.
libgpg_error = cc.find_library('gpg-error', required : feature)
endif
have = libgcrypt.found() and libgpg_error.found()
if not have
# link to neither of the libs if one is not found
libgcrypt = []
@ -1395,19 +1384,14 @@ libz = dependency('zlib',
required : get_option('zlib'))
conf.set10('HAVE_ZLIB', libz.found())
want_bzip2 = get_option('bzip2')
if want_bzip2 != 'false' and not skip_deps
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
libbzip2 = []
feature = get_option('bzip2')
libbzip2 = dependency('bzip2',
required : feature.disabled() ? feature : false)
if not libbzip2.found()
# Debian and Ubuntu do not provide the .pc file.
libbzip2 = cc.find_library('bz2', required : feature)
endif
conf.set10('HAVE_BZIP2', have)
conf.set10('HAVE_BZIP2', libbzip2.found())
libxz = dependency('liblzma',
required : get_option('xz'))

View File

@ -362,7 +362,7 @@ option('smack-run-label', type : 'string',
description : 'run systemd --system itself with a specific SMACK label')
option('smack-default-process-label', type : 'string',
description : 'default SMACK label for executed processes')
option('polkit', type : 'combo', choices : ['auto', 'true', 'false'],
option('polkit', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'polkit support')
option('ima', type : 'boolean',
description : 'IMA support')
@ -379,7 +379,7 @@ option('kmod', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'd
description : 'support for loadable modules')
option('xenctrl', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'support for Xen kexec')
option('pam', type : 'combo', choices : ['auto', 'true', 'false'],
option('pam', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'PAM support')
option('passwdqc', type : 'combo', choices : ['auto', 'true', 'false'],
description : 'libpasswdqc support')
@ -403,7 +403,7 @@ option('libiptc', type : 'feature', deprecated : { 'true' : 'enabled', 'false' :
description : 'libiptc support')
option('qrencode', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'libqrencode support')
option('gcrypt', type : 'combo', choices : ['auto', 'true', 'false'],
option('gcrypt', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'gcrypt support')
option('gnutls', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'gnutls support')
@ -421,7 +421,7 @@ option('elfutils', type : 'feature', deprecated : { 'true' : 'enabled', 'false'
description : 'elfutils support')
option('zlib', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'zlib compression support')
option('bzip2', type : 'combo', choices : ['auto', 'true', 'false'],
option('bzip2', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'bzip2 compression support')
option('xz', type : 'feature', deprecated : { 'true' : 'enabled', 'false' : 'disabled' },
description : 'xz compression support')

View File

@ -116,13 +116,13 @@ if [ ! -f "$BUILDDIR"/build.ninja ]; then
-D rfkill=true
-D xdg-autostart=true
-D translations=true
-D polkit=true
-D polkit=enabled
-D acl=enabled
-D audit=enabled
-D blkid=enabled
-D fdisk=enabled
-D kmod=enabled
-D pam=true
-D pam=enabled
-D pwquality=true
-D microhttpd=enabled
-D libcryptsetup=true
@ -130,7 +130,7 @@ if [ ! -f "$BUILDDIR"/build.ninja ]; then
-D idn=true
-D libidn2=true
-D qrencode=enabled
-D gcrypt=true
-D gcrypt=enabled
-D gnutls=enabled
-D openssl=enabled
-D cryptolib=openssl