diff options
author | Scott Moreau <oreaus@gmail.com> | 2020-03-23 20:45:36 -0600 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2020-03-24 14:11:39 +0100 |
commit | 30308e35fac0491ab777495e2ee7e472378d375a (patch) | |
tree | 91f3bf5f3381bef2441a3e467282ebbc782e5c1e /backend | |
parent | 8707a9b7ecbba0321804604d9ea954a46ecced21 (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.build | 45 |
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 |