diff options
author | Simon Ser <contact@emersion.fr> | 2021-04-07 13:24:19 +0200 |
---|---|---|
committer | Kenny Levinsen <kl@kl.wtf> | 2021-04-08 23:07:35 +0200 |
commit | 385cc0039db13448856f4241b05d46533dc98b16 (patch) | |
tree | 5b5d7e6adaf7ce3b8c7e44b1fc0bb37ab5481a9a | |
parent | 3ce4c5781462a06bb08458e73df39840f9e2f731 (diff) |
build: add explicit logind provider option, auto-detect by default
Allow package maintainers to explicitly select a logind provider
by passing -Dlogind=systemd or -Dlogind=elogind. In case both are
available (e.g. for distributions which support both), this makes
it possible to gte deterministic behavior.
By default, auto-detect the logind provider. That way, users which
have systemd or elogind installed get the backend built by default.
-rw-r--r-- | meson.build | 22 | ||||
-rw-r--r-- | meson_options.txt | 2 |
2 files changed, 14 insertions, 10 deletions
diff --git a/meson.build b/meson.build index beb121c..5454053 100644 --- a/meson.build +++ b/meson.build @@ -109,13 +109,19 @@ endif logind = disabler() logind_provider = '' -if not get_option('logind').disabled() - foreach logind_provider : ['elogind', 'systemd'] - logind = dependency('lib@0@'.format(logind_provider), required: false) - if logind.found() - break - endif - endforeach +if get_option('logind') != 'disabled' + if get_option('logind') == 'auto' + assert(get_option('auto_features').auto(), '-Dlogind must be set to systemd or elogind since auto_features != auto') + foreach logind_provider : ['elogind', 'systemd'] + logind = dependency('lib@0@'.format(logind_provider), required: false) + if logind.found() + break + endif + endforeach + else + logind_provider = get_option('logind') + logind = dependency('lib@0@'.format(logind_provider)) + endif if logind.found() add_project_arguments('-DLOGIND_ENABLED=1', language: 'c') @@ -125,8 +131,6 @@ if not get_option('logind').disabled() 'common/drm.c', ] private_deps += logind - elif get_option('logind').enabled() - error('logind backend was enabled but no supported logind provider was found') endif endif diff --git a/meson_options.txt b/meson_options.txt index 73b9634..9c36fa3 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -1,4 +1,4 @@ -option('logind', type: 'feature', value: 'disabled', description: 'logind support') +option('logind', type: 'combo', choices: ['auto', 'disabled', 'elogind', 'systemd'], value: 'auto', description: 'logind support') option('seatd', type: 'feature', value: 'enabled', description: 'seatd support') option('builtin', type: 'feature', value: 'disabled', description: 'builtin seatd server') option('server', type: 'feature', value: 'enabled', description: 'seatd server') |