mirror of
https://gitlab.freedesktop.org/wayland/wayland-protocols.git
synced 2025-12-20 04:40:06 +01:00
Add a new protocol for adding timestamps to wayland surface state to allow deferring processing until later. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
161 lines
4.1 KiB
Meson
161 lines
4.1 KiB
Meson
project('wayland-protocols',
|
|
version: '1.37',
|
|
meson_version: '>= 0.58.0',
|
|
license: 'MIT/Expat',
|
|
)
|
|
|
|
wayland_protocols_version = meson.project_version()
|
|
|
|
fs = import('fs')
|
|
|
|
dep_scanner = dependency('wayland-scanner', version: '>=1.20.0', native: true, fallback: 'wayland')
|
|
prog_scanner = find_program(dep_scanner.get_variable(pkgconfig: 'wayland_scanner', internal: 'wayland_scanner'))
|
|
|
|
stable_protocols = {
|
|
'presentation-time': [''],
|
|
'viewporter': [''],
|
|
'xdg-shell': [''],
|
|
'linux-dmabuf': ['v1'],
|
|
'tablet': ['v2'],
|
|
}
|
|
|
|
unstable_protocols = {
|
|
'fullscreen-shell': ['v1'],
|
|
'idle-inhibit': ['v1'],
|
|
'input-method': ['v1'],
|
|
'input-timestamps': ['v1'],
|
|
'keyboard-shortcuts-inhibit': ['v1'],
|
|
'linux-dmabuf': ['v1'],
|
|
'linux-explicit-synchronization': ['v1'],
|
|
'pointer-constraints': ['v1'],
|
|
'pointer-gestures': ['v1'],
|
|
'primary-selection': ['v1'],
|
|
'relative-pointer': ['v1'],
|
|
'tablet': ['v1', 'v2'],
|
|
'text-input': ['v1', 'v3'],
|
|
'xdg-decoration': ['v1'],
|
|
'xdg-foreign': ['v1', 'v2'],
|
|
'xdg-output': ['v1'],
|
|
'xdg-shell': ['v5', 'v6'],
|
|
'xwayland-keyboard-grab': ['v1'],
|
|
}
|
|
|
|
staging_protocols = {
|
|
'commit-timing': ['v1'],
|
|
'content-type': ['v1'],
|
|
'cursor-shape': ['v1'],
|
|
'drm-lease': ['v1'],
|
|
'ext-foreign-toplevel-list': ['v1'],
|
|
'ext-idle-notify': ['v1'],
|
|
'ext-image-capture-source': ['v1'],
|
|
'ext-image-copy-capture': ['v1'],
|
|
'ext-session-lock': ['v1'],
|
|
'ext-transient-seat': ['v1'],
|
|
'fifo': ['v1'],
|
|
'fractional-scale': ['v1'],
|
|
'linux-drm-syncobj': ['v1'],
|
|
'security-context': ['v1'],
|
|
'single-pixel-buffer': ['v1'],
|
|
'tearing-control': ['v1'],
|
|
'xdg-activation': ['v1'],
|
|
'xdg-dialog': ['v1'],
|
|
'xdg-system-bell': ['v1'],
|
|
'xdg-toplevel-drag': ['v1'],
|
|
'xdg-toplevel-icon': ['v1'],
|
|
'xwayland-shell': ['v1'],
|
|
'alpha-modifier': ['v1'],
|
|
}
|
|
|
|
protocol_files = []
|
|
|
|
foreach name, versions : stable_protocols
|
|
foreach version : versions
|
|
if version == ''
|
|
protocol_files += ['stable/@0@/@0@.xml'.format(name)]
|
|
else
|
|
protocol_files += ['stable/@0@/@0@-@1@.xml'.format(name, version)]
|
|
endif
|
|
endforeach
|
|
endforeach
|
|
|
|
foreach name, versions : staging_protocols
|
|
foreach version : versions
|
|
protocol_files += [
|
|
'staging/@0@/@0@-@1@.xml'.format(name, version)
|
|
]
|
|
endforeach
|
|
endforeach
|
|
|
|
foreach name, versions : unstable_protocols
|
|
foreach version : versions
|
|
protocol_files += [
|
|
'unstable/@0@/@0@-unstable-@1@.xml'.format(name, version)
|
|
]
|
|
endforeach
|
|
endforeach
|
|
|
|
# Check that each protocol has a README
|
|
foreach protocol_file : protocol_files
|
|
dir = fs.parent(protocol_file)
|
|
if not fs.is_file(dir + '/README')
|
|
error('Missing README in @0@'.format(protocol_file))
|
|
endif
|
|
endforeach
|
|
|
|
foreach protocol_file : protocol_files
|
|
protocol_install_dir = fs.parent(join_paths(
|
|
get_option('datadir'),
|
|
'wayland-protocols',
|
|
protocol_file,
|
|
))
|
|
install_data(
|
|
protocol_file,
|
|
install_dir: protocol_install_dir,
|
|
)
|
|
endforeach
|
|
|
|
include_dirs = []
|
|
if dep_scanner.version().version_compare('>=1.22.90')
|
|
subdir('include/wayland-protocols')
|
|
include_dirs = ['include']
|
|
endif
|
|
|
|
wayland_protocols_srcdir = meson.current_source_dir()
|
|
|
|
pkgconfig_configuration = configuration_data()
|
|
pkgconfig_configuration.set('prefix', get_option('prefix'))
|
|
pkgconfig_configuration.set('datarootdir', '${prefix}/@0@'.format(get_option('datadir')))
|
|
pkgconfig_configuration.set('abs_top_srcdir', wayland_protocols_srcdir)
|
|
pkgconfig_configuration.set('PACKAGE', 'wayland-protocols')
|
|
pkgconfig_configuration.set('WAYLAND_PROTOCOLS_VERSION', wayland_protocols_version)
|
|
|
|
pkg_install_dir = join_paths(get_option('datadir'), 'pkgconfig')
|
|
configure_file(
|
|
input: 'wayland-protocols.pc.in',
|
|
output: 'wayland-protocols.pc',
|
|
configuration: pkgconfig_configuration,
|
|
install_dir: pkg_install_dir,
|
|
)
|
|
|
|
configure_file(
|
|
input: 'wayland-protocols-uninstalled.pc.in',
|
|
output: 'wayland-protocols-uninstalled.pc',
|
|
configuration: pkgconfig_configuration,
|
|
)
|
|
|
|
wayland_protocols = declare_dependency(
|
|
include_directories: include_dirs,
|
|
variables: {
|
|
'pkgdatadir': wayland_protocols_srcdir,
|
|
},
|
|
)
|
|
|
|
meson.override_dependency('wayland-protocols', wayland_protocols)
|
|
|
|
if get_option('tests')
|
|
subdir('tests')
|
|
endif
|
|
|
|
summary({
|
|
'Headers': include_dirs.length() > 0,
|
|
}, bool_yn: true)
|