aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2021-04-07 13:24:19 +0200
committerKenny Levinsen <kl@kl.wtf>2021-04-08 23:07:35 +0200
commit385cc0039db13448856f4241b05d46533dc98b16 (patch)
tree5b5d7e6adaf7ce3b8c7e44b1fc0bb37ab5481a9a
parent3ce4c5781462a06bb08458e73df39840f9e2f731 (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.build22
-rw-r--r--meson_options.txt2
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')