Add meson build system support

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
This commit is contained in:
Jonas Ådahl 2017-10-11 16:15:57 +08:00
parent f899eff0a7
commit 79b9a42514
4 changed files with 119 additions and 2 deletions

99
meson.build Normal file
View file

@ -0,0 +1,99 @@
project('wayland-protocols',
version: '1.20',
meson_version: '>= 0.53.0',
license: 'MIT/Expat',
)
wayland_protocols_version = meson.project_version()
fs = import('fs')
dep_scanner = dependency('wayland-scanner', native: true)
stable_protocols = [
'presentation-time',
'viewporter',
'xdg-shell',
]
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'],
}
protocol_files = []
foreach name : stable_protocols
protocol_files += ['stable/@0@/@0@.xml'.format(name)]
endforeach
foreach name : unstable_protocols.keys()
foreach version : unstable_protocols.get(name)
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
wayland_protocols_srcdir = meson.current_source_dir()
pkgconfig_configuration = configuration_data()
pkgconfig_configuration.set('prefix', get_option('prefix'))
pkgconfig_configuration.set('datadir', 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,
)
if get_option('tests')
subdir('tests')
endif

4
meson_options.txt Normal file
View file

@ -0,0 +1,4 @@
option('tests',
type: 'boolean',
value: true,
description: 'Build the tests')

14
tests/meson.build Normal file
View file

@ -0,0 +1,14 @@
prog_scan_sh = find_program('scan.sh')
prog_scanner = find_program(dep_scanner.get_pkgconfig_variable('wayland_scanner'))
# Check that each protocol passes through the scanner
foreach protocol_file : protocol_files
protocol_path = join_paths(wayland_protocols_srcdir, protocol_file)
test_name = 'scan-@0@'.format(protocol_file.underscorify())
test(test_name, prog_scan_sh,
args: protocol_path,
env: [
'SCANNER=@0@'.format(prog_scanner.path()),
]
)
endforeach

View file

@ -1,6 +1,6 @@
prefix=@prefix@ prefix=@prefix@
datarootdir=@datarootdir@ datarootdir=${prefix}/@datadir@
pkgdatadir=${pc_sysrootdir}@datadir@/@PACKAGE@ pkgdatadir=${pc_sysrootdir}${datarootdir}/@PACKAGE@
Name: Wayland Protocols Name: Wayland Protocols
Description: Wayland protocol files Description: Wayland protocol files