labwc/meson.build
Eli Schwartz 2656cf525f
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
2022-05-09 17:48:43 -04:00

111 lines
2.5 KiB
Meson

project(
'labwc',
'c',
version: '0.5.0',
license: 'GPL-2.0-only',
meson_version: '>=0.59.0',
default_options: [
'c_std=c11',
'warning_level=2',
],
)
add_project_arguments(
[
'-DWLR_USE_UNSTABLE',
],
language: 'c',
)
cc = meson.get_compiler('c')
add_project_arguments(cc.get_supported_arguments(
[
'-Wno-unused-parameter',
'-Wundef',
]),
language: 'c',
)
version='"@0@"'.format(meson.project_version())
git = find_program('git', native: true, required: false)
if git.found()
git_commit = run_command([git, 'describe', '--dirty'], check: false)
if git_commit.returncode() == 0
version = '"@0@"'.format(git_commit.stdout().strip())
endif
endif
add_project_arguments('-DLABWC_VERSION=@0@'.format(version), language: 'c')
wlroots = dependency(
'wlroots',
default_options: ['default_library=static', 'examples=false'],
version: ['>=0.16.0', '<0.17.0'],
)
wlroots_has_xwayland = wlroots.get_variable('have_xwayland') == 'true'
wayland_server = dependency('wayland-server', version: '>=1.19.0')
wayland_protos = dependency('wayland-protocols')
xkbcommon = dependency('xkbcommon')
xcb = dependency('xcb', required: get_option('xwayland'))
xcb_icccm = dependency('xcb-icccm', required: get_option('xwayland'))
drm_full = dependency('libdrm')
drm = drm_full.partial_dependency(compile_args: true, includes: true)
xml2 = dependency('libxml-2.0')
glib = dependency('glib-2.0')
cairo = dependency('cairo')
pangocairo = dependency('pangocairo')
input = dependency('libinput', version: '>=1.14')
pixman = dependency('pixman-1')
math = cc.find_library('m')
if get_option('xwayland').enabled() and not wlroots_has_xwayland
error('no wlroots Xwayland support')
endif
have_xwayland = xcb.found() and wlroots_has_xwayland
conf_data = configuration_data()
conf_data.set10('HAVE_XWAYLAND', have_xwayland)
msgfmt = find_program('msgfmt', required: get_option('nls'))
if msgfmt.found()
source_root = meson.current_source_dir()
conf_data.set('HAVE_NLS', 1)
subdir('po')
else
conf_data.set('HAVE_NLS', 0)
endif
labwc_inc = include_directories('include')
subdir('protocols')
labwc_deps = [
server_protos,
wayland_server,
wlroots,
xkbcommon,
xcb_icccm,
xml2,
glib,
cairo,
drm,
pangocairo,
input,
pixman,
math,
]
subdir('include')
subdir('src')
subdir('docs')
executable(
meson.project_name(),
labwc_sources,
include_directories: [labwc_inc],
dependencies: labwc_deps,
install: true,
)
install_data('docs/labwc.desktop', install_dir: get_option('datadir') / 'wayland-sessions')