diff options
Diffstat (limited to 'backend/session/meson.build')
-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 |