meson: fix dlopen support for cryptsetup

dlopen is treated as a dependency, but that's not quite right, it
should be an alternative way to link to libcryptsetup.
Search for it only if cryptsetup is not disabled, and if the cryptsetup-dlopen
is explicitly set to enabled. If it is, do not link to libcryptsetup.

Add cryptsetup support status to the meson summary.
This commit is contained in:
Luca Boccassi 2021-07-02 19:44:59 +01:00
parent 5a6e9adfdc
commit e6a4b4a163
2 changed files with 14 additions and 5 deletions

View File

@ -81,7 +81,7 @@ lib_mount = library(
link_with : [lib_common,
lib_blkid],
dependencies : [lib_selinux,
lib_cryptsetup,
get_option('cryptsetup-dlopen').enabled() ? lib_dl : lib_cryptsetup,
realtime_libs],
install : build_libmount)

View File

@ -315,10 +315,19 @@ lib_cryptsetup = dependency(
required : get_option('cryptsetup'))
conf.set('HAVE_CRYPTSETUP', lib_cryptsetup.found() ? 1 : false)
lib_cryptsetup_dl = dependency(
'dl',
required : get_option('cryptsetup-dlopen'))
conf.set('CRYPTSETUP_VIA_DLOPEN', lib_cryptsetup_dl.found() ? 1 : false)
if not get_option('cryptsetup').disabled() and get_option('cryptsetup-dlopen').enabled()
lib_dl = cc.find_library(
'libdl',
required : true)
conf.set('CRYPTSETUP_VIA_DLOPEN', 1)
summary('cryptsetup support (dlopen)',
'enabled',
section : 'components')
else
summary('cryptsetup support',
lib_cryptsetup.found() ? 'enabled' : 'disabled',
section : 'components')
endif
have = cc.has_function(
'crypt_activate_by_signed_key',