aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorScott Moreau <oreaus@gmail.com>2020-03-23 20:45:36 -0600
committerDrew DeVault <sir@cmpwn.com>2020-03-24 14:11:39 +0100
commit30308e35fac0491ab777495e2ee7e472378d375a (patch)
tree91f3bf5f3381bef2441a3e467282ebbc782e5c1e /backend
parent8707a9b7ecbba0321804604d9ea954a46ecced21 (diff)
build: Add 'auto' to logind-provider combo option
The logind provider defaulted to systemd and in order to use elogind, -Dlogin-provider=elogind was required. This adds 'auto' as a choice for the login-provider option and sets it as default. Using 'auto', the build will check for systemd first and if it's not found, try to find and use elogind automatically.
Diffstat (limited to 'backend')
-rw-r--r--backend/session/meson.build45
1 files changed, 38 insertions, 7 deletions
diff --git a/backend/session/meson.build b/backend/session/meson.build
index 2c3f09c7..65e4595d 100644
--- a/backend/session/meson.build
+++ b/backend/session/meson.build
@@ -21,15 +21,46 @@ if not get_option('logind').disabled()
msg += 'You may need to pass "-Dlogind-provider=elogind" or "-Dlogind-provider=systemd" to ensure the correct library is detected.'
endif
-logind = dependency('lib' + get_option('logind-provider'),
- required: get_option('logind'),
- not_found_message: '\n'.join(msg).format(get_option('logind-provider')),
- version: '>=237',
-)
-if logind.found()
+logind_version = '>=237'
+logind_found = false
+
+if get_option('logind-provider') == 'auto'
+ if not get_option('logind').disabled()
+ assert(get_option('auto_features').auto(), '-Dlogind-provider must be set to systemd or elogind since auto_features != auto')
+ logind = dependency('libsystemd',
+ required: get_option('logind'),
+ not_found_message: 'libsystemd not found, trying libelogind\n' + '\n'.join(msg),
+ version: logind_version,
+ )
+ if logind.found()
+ conf_data.set10('WLR_HAS_SYSTEMD', true)
+ else
+ logind = dependency('libelogind',
+ required: get_option('logind'),
+ not_found_message: 'libelogind not found\n' + '\n'.join(msg),
+ version: logind_version,
+ )
+ if logind.found()
+ conf_data.set10('WLR_HAS_ELOGIND', true)
+ endif
+ endif
+ logind_found = logind.found()
+ endif
+else
+ logind = dependency('lib' + get_option('logind-provider'),
+ required: get_option('logind'),
+ not_found_message: '\n'.join(msg).format(get_option('logind-provider')),
+ version: logind_version,
+ )
+ if logind.found()
+ conf_data.set10('WLR_HAS_' + get_option('logind-provider').to_upper(), true)
+ logind_found = true
+ endif
+endif
+
+if logind_found
wlr_files += files('logind.c')
wlr_deps += logind
- conf_data.set10('WLR_HAS_' + get_option('logind-provider').to_upper(), true)
endif
# libcap