build: set pkgconfig/dependency variables for features

This allows libseat users to e.g. advise people to chmod a+s the
executable if libseat is built with the builtin backend.

While bumping the Meson version, adjust the scdoc logic to avoid
the following warnings:

    WARNING: Project targeting '>=0.56.0' but tried to use feature deprecated since '0.56.0': Dependency.get_pkgconfig_variable. use Dependency.get_variable(pkgconfig : ...) instead
    WARNING: Project targeting '>=0.56.0' but tried to use feature deprecated since '0.55.0': ExternalProgram.path. use ExternalProgram.full_path() instead
build: disable logind on -Dauto_features=disabled -Dlogind=auto

Setting auto_features=disabled is supposed to disable all optional
dependencies. Since we aren't using a feature option here, we need
to manually add logic to disable logind in this case.
build: don't allow "auto" for seatd, builtin, server and examples

These features don't have any dependencies, so "auto" doesn't make
build: don't explicitly search for sh

This removes the "Program sh found" line in the build logs, and
should not change anything else.
build: fix logind feature summary when auto-detected

If -Dlogind=auto but systemd/elogind isn't available,
logind_provider would get set to the last item of the foreach loop.
This would incorrectly report "systemd: YES".
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.
meson: make 'logind' var always available
ci: Use 'auto' for arch linux logind
Avoid a clang-format quirk

clang-format wants to put the terminating NULLs on the same line as the
noop backend when it doens't have any immediate non-NULL neighbors.

Add a newline to stop it.
meson: declare libseat dependency

This can be used by parent projects when seatd is a subproject:

    libseat = dependency('libseat', fallback: ['seatd', 'libseat'])
Add no-op session

This is useful for headless testing, for instance with VKMS:

    modprobe vkms
    export WLR_DRM_DEVICES=/dev/dri/card1
    export WLR_BACKENDS=drm
    export LIBSEAT_BACKEND=noop

We don't need any of the VT handling in this case.
5ad91ae9 — Jan Beich 21 days ago
client: enable cr_pid on FreeBSD >= 12.3

readme: Remove alpha label
contrib: Add Documentation to systemd unit
ci: Remove unnecessary env vars
ci: Reduce test runs from 5 to 2
meson: Disable examples by default
Correct minor misspellings
meson: Minor cleanup
meson: Fix logind backend auto mode
Bump version to 0.5.0