meson: use proper dependency fallback for wlroots

Make the subproject wrap file declare the dependencies it provides.

Remove the manual subproject invocation and allow Meson to select
whichever wlroots it finds which satisfies the version requirement --
either a system one via pkg-config, or the subproject fallback.

Use a dependency-generic method of acquiring wlroots configuration info
-- enabled features are present in the pkg-config file and additionally
exported as declare_dependency() variables, so there is no need to do C
preprocessor checks for it.

This ensures that Meson best practices are followed, and also...

Fixes #318
This commit is contained in:
Eli Schwartz 2022-05-09 17:44:47 -04:00
parent e2632e8587
commit 2656cf525f
No known key found for this signature in database
GPG key ID: CEB167EFB5722BD6
2 changed files with 7 additions and 12 deletions

View file

@ -37,22 +37,14 @@ if git.found()
endif endif
add_project_arguments('-DLABWC_VERSION=@0@'.format(version), language: 'c') add_project_arguments('-DLABWC_VERSION=@0@'.format(version), language: 'c')
wlroots_version = ['>=0.16.0', '<0.17.0'] wlroots = dependency(
wlroots_proj = subproject(
'wlroots', 'wlroots',
default_options: ['default_library=static', 'examples=false'], default_options: ['default_library=static', 'examples=false'],
required: false, version: ['>=0.16.0', '<0.17.0'],
version: wlroots_version,
) )
if wlroots_proj.found() wlroots_has_xwayland = wlroots.get_variable('have_xwayland') == 'true'
wlroots = wlroots_proj.get_variable('wlroots')
wlroots_conf = wlroots_proj.get_variable('conf_data')
wlroots_has_xwayland = wlroots_conf.get('WLR_HAS_XWAYLAND') == 1
else
wlroots = dependency('wlroots', version: wlroots_version)
wlroots_has_xwayland = cc.get_define('WLR_HAS_XWAYLAND', prefix: '#include <wlr/config.h>', dependencies: wlroots) == '1'
endif
wayland_server = dependency('wayland-server', version: '>=1.19.0') wayland_server = dependency('wayland-server', version: '>=1.19.0')
wayland_protos = dependency('wayland-protocols') wayland_protos = dependency('wayland-protocols')
xkbcommon = dependency('xkbcommon') xkbcommon = dependency('xkbcommon')

View file

@ -1,3 +1,6 @@
[wrap-git] [wrap-git]
url = https://gitlab.freedesktop.org/wlroots/wlroots.git url = https://gitlab.freedesktop.org/wlroots/wlroots.git
revision = 640f3b9f2156a007c5d1a36afdee570e123c95e4 revision = 640f3b9f2156a007c5d1a36afdee570e123c95e4
[provide]
dependency_names = wlroots