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.
This commit is contained in:
Scott Moreau 2020-03-23 20:45:36 -06:00 committed by Drew DeVault
parent 8707a9b7ec
commit 30308e35fa
3 changed files with 41 additions and 10 deletions

View File

@ -18,8 +18,8 @@ sources:
tasks: tasks:
- setup: | - setup: |
cd wlroots cd wlroots
CC=gcc meson build-gcc -Dauto_features=enabled CC=gcc meson build-gcc -Dauto_features=enabled -Dlogind-provider=systemd
CC=clang meson build-clang -Dauto_features=enabled CC=clang meson build-clang -Dauto_features=enabled -Dlogind-provider=systemd
- gcc: | - gcc: |
cd wlroots/build-gcc cd wlroots/build-gcc
ninja ninja

View File

@ -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.' msg += 'You may need to pass "-Dlogind-provider=elogind" or "-Dlogind-provider=systemd" to ensure the correct library is detected.'
endif endif
logind = dependency('lib' + get_option('logind-provider'), logind_version = '>=237'
required: get_option('logind'), logind_found = false
not_found_message: '\n'.join(msg).format(get_option('logind-provider')),
version: '>=237', if get_option('logind-provider') == 'auto'
) if not get_option('logind').disabled()
if logind.found() 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_files += files('logind.c')
wlr_deps += logind wlr_deps += logind
conf_data.set10('WLR_HAS_' + get_option('logind-provider').to_upper(), true)
endif endif
# libcap # libcap

View File

@ -1,6 +1,6 @@
option('libcap', type: 'feature', value: 'auto', description: 'Enable support for rootless session via capabilities (cap_sys_admin)') option('libcap', type: 'feature', value: 'auto', description: 'Enable support for rootless session via capabilities (cap_sys_admin)')
option('logind', type: 'feature', value: 'auto', description: 'Enable support for rootless session via logind') option('logind', type: 'feature', value: 'auto', description: 'Enable support for rootless session via logind')
option('logind-provider', type: 'combo', choices: ['systemd', 'elogind'], value: 'systemd', description: 'Provider of logind support library') option('logind-provider', type: 'combo', choices: ['auto', 'systemd', 'elogind'], value: 'auto', description: 'Provider of logind support library')
option('xcb-errors', type: 'feature', value: 'auto', description: 'Use xcb-errors util library') option('xcb-errors', type: 'feature', value: 'auto', description: 'Use xcb-errors util library')
option('xcb-icccm', type: 'feature', value: 'auto', description: 'Use xcb-icccm util library') option('xcb-icccm', type: 'feature', value: 'auto', description: 'Use xcb-icccm util library')
option('xwayland', type: 'feature', value: 'auto', yield: true, description: 'Enable support for X11 applications') option('xwayland', type: 'feature', value: 'auto', yield: true, description: 'Enable support for X11 applications')