summaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build42
1 files changed, 40 insertions, 2 deletions
diff --git a/meson.build b/meson.build
index 171d7bcfab..cb023f7f13 100644
--- a/meson.build
+++ b/meson.build
@@ -209,6 +209,11 @@ if pamconfdir == ''
pamconfdir = join_paths(prefixdir, 'lib/pam.d')
endif
+libcryptsetup_plugins_dir = get_option('libcryptsetup-plugins-dir')
+if libcryptsetup_plugins_dir == ''
+ libcryptsetup_plugins_dir = join_paths(rootlibdir, 'cryptsetup')
+endif
+
memory_accounting_default = get_option('memory-accounting-default')
status_unit_format_default = get_option('status-unit-format-default')
@@ -1106,10 +1111,16 @@ endif
conf.set10('HAVE_MICROHTTPD', have)
want_libcryptsetup = get_option('libcryptsetup')
+want_libcryptsetup_plugins = get_option('libcryptsetup-plugins')
+
+if want_libcryptsetup_plugins == 'true' and want_libcryptsetup == 'false'
+ error('libcryptsetup-plugins can not be requested without libcryptsetup')
+endif
+
if want_libcryptsetup != 'false' and not skip_deps
libcryptsetup = dependency('libcryptsetup',
- version : '>= 2.0.1',
- required : want_libcryptsetup == 'true')
+ version : want_libcryptsetup_plugins == 'true' ? '>= 2.4.0' : '>= 2.0.1',
+ required : want_libcryptsetup == 'true' or want_libcryptsetup_plugins == 'true')
have = libcryptsetup.found()
conf.set10('HAVE_CRYPT_SET_METADATA_SIZE',
@@ -1124,6 +1135,14 @@ else
endif
conf.set10('HAVE_LIBCRYPTSETUP', have)
+if want_libcryptsetup_plugins != 'false' and not skip_deps
+ have = (cc.has_function('crypt_activate_by_token_pin', dependencies : libcryptsetup) and
+ cc.has_function('crypt_token_external_path', dependencies : libcryptsetup))
+else
+ have = false
+endif
+conf.set10('HAVE_LIBCRYPTSETUP_PLUGINS', have)
+
want_libcurl = get_option('libcurl')
if want_libcurl != 'false' and not skip_deps
libcurl = dependency('libcurl',
@@ -1676,6 +1695,7 @@ subdir('src/libsystemd')
subdir('src/shared')
subdir('src/udev')
subdir('src/libudev')
+subdir('src/cryptsetup/cryptsetup-tokens')
libsystemd = shared_library(
'systemd',
@@ -1752,6 +1772,22 @@ install_libudev_static = static_library(
c_args : static_libudev_pic ? [] : ['-fno-PIC'],
pic : static_libudev_pic)
+if conf.get('HAVE_LIBCRYPTSETUP_PLUGINS') == 1
+ if conf.get('HAVE_TPM2') == 1
+ cryptsetup_token_systemd_tpm2 = shared_library(
+ 'cryptsetup-token-systemd-tpm2',
+ link_args : ['-shared',
+ '-Wl,--version-script=' + cryptsetup_token_sym_path],
+ dependencies : libshared_deps + [libcryptsetup],
+ link_with : [libshared],
+ link_whole : [cryptsetup_token_systemd_tpm2_static],
+ link_depends : cryptsetup_token_sym,
+ install_rpath : rootlibexecdir,
+ install : true,
+ install_dir : libcryptsetup_plugins_dir)
+ endif
+endif
+
############################################################
# systemd-analyze requires 'libcore'
@@ -3747,6 +3783,7 @@ status = [
'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
'PAM modules directory: @0@'.format(pamlibdir),
'PAM configuration directory: @0@'.format(pamconfdir),
+ 'libcryptsetup plugins directory: @0@'.format(libcryptsetup_plugins_dir),
'RPM macros directory: @0@'.format(rpmmacrosdir),
'modprobe.d directory: @0@'.format(modprobedir),
'D-Bus policy directory: @0@'.format(dbuspolicydir),
@@ -3831,6 +3868,7 @@ foreach tuple : [
['gnutls'],
['libbpf'],
['libcryptsetup'],
+ ['libcryptsetup-plugins'],
['libcurl'],
['libfdisk'],
['libfido2'],