build: Use Xwayland pkg-config if available

Xwayland in its main development branch now provides a pkg-config file
which can be used to determine Xwayland installation path and various
options enabled at build time.

Change mutter build system to optionally use that mechanism if
available. If not (as with Xwayland from the current stable branch),
keep the fallback mechanisms (basically search for the Xwayland and parse
its command line options to determine if initfd is available).

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1635>
This commit is contained in:
Olivier Fourdan 2020-12-15 10:19:05 +01:00 committed by Marge Bot
parent baff123af2
commit 533e6768da

View File

@ -392,9 +392,15 @@ endif
have_xwayland_initfd = false have_xwayland_initfd = false
if have_wayland if have_wayland
xwayland_dep = dependency('xwayland', required: false)
xwayland_path = get_option('xwayland_path') xwayland_path = get_option('xwayland_path')
if xwayland_path == '' if xwayland_path == ''
xwayland_path = find_program('Xwayland').path() if xwayland_dep.found()
xwayland_path = xwayland_dep.get_pkgconfig_variable('xwayland')
else
xwayland_path = find_program('Xwayland').path()
endif
endif endif
cdata.set_quoted('XWAYLAND_PATH', xwayland_path) cdata.set_quoted('XWAYLAND_PATH', xwayland_path)
@ -409,12 +415,18 @@ if have_wayland
# For Xwayland -initfd usage # For Xwayland -initfd usage
use_initfd = get_option('xwayland_initfd') use_initfd = get_option('xwayland_initfd')
xwayland_options = run_command(xwayland_path, '-help') if xwayland_dep.found()
xwayland_supports_initfd = xwayland_dep.get_pkgconfig_variable('have_initfd') == 'true'
else
xwayland_options = run_command(xwayland_path, '-help')
xwayland_supports_initfd = xwayland_options.stderr().contains('-initfd')
endif
if use_initfd.auto() if use_initfd.auto()
have_xwayland_initfd = xwayland_options.stderr().contains('-initfd') have_xwayland_initfd = xwayland_supports_initfd
else else
have_xwayland_initfd = use_initfd.enabled() have_xwayland_initfd = use_initfd.enabled()
if have_xwayland_initfd and not xwayland_options.stderr().contains('-initfd') if have_xwayland_initfd and not xwayland_supports_initfd
error('XWayland -initfd support requested but not available') error('XWayland -initfd support requested but not available')
endif endif
endif endif