<div dir="ltr">Hi Jonas;<br><div><div><div class="gmail_extra"><br><div class="gmail_quote">On 11 April 2018 at 17:45, Jonas Ådahl <span dir="ltr"><<a href="mailto:jadahl@gmail.com" target="_blank">jadahl@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">FWIW, I did something similar, here:<br>
<a href="https://lists.freedesktop.org/archives/wayland-devel/2017-October/035399.html" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>archives/wayland-devel/2017-<wbr>October/035399.html</a><br>
because I wanted to add build tests. IIRC there is some bug that I only<br>
fixed locally.<br>
<br></blockquote><div><br></div><div>Yes, I was planning to reference the work you did in the cover letter for this patch, but git-send-email is terrible.<br></div><div> <br></div><div>I honestly didn't look at your patchset before doing this work — and, to be fair, I did this over my lunch break, so I didn't really get into doing anything more than a mechanical port.<br><br></div><div>I'd be happy to improve the build by merging my approach and yours. My patch is slightly more idiomatic with regards to recent Meson; it allows using wayland-protocols as a subproject, as it doesn't use `meson.source_root()` in paths; and it generates the pkg-config file directly instead of going through a template file.<br><br></div><div>I did leave the Autotools build in place because I don't know if people using wayland-protocols can also rely on having a recent version of Meson and Python 3.<br></div><div><br></div><div>Ciao,<br></div><div> Emmanuele.<br><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
On Wed, Apr 11, 2018 at 05:27:49PM +0100, Emmanuele Bassi wrote:<br>
> From: Emmanuele Bassi <<a href="mailto:ebassi@gnome.org">ebassi@gnome.org</a>><br>
><br>
> Meson is a next generation build system, and various projects in the<br>
> larger Linux ecosystem already moved to it — for instance:<br>
><br>
>   - the X11 server<br>
>   - the X11 protocols repository<br>
>   - Mesa<br>
>   - libdrm<br>
><br>
> The added benefit for adding Meson support is that projects using Meson<br>
> and depending on wayland-protocols can use the subproject functionality<br>
> to always pull the latest version of the protocols without necessarily<br>
> updating their build environment.<br>
> ---<br>
>  meson.build       | 89 ++++++++++++++++++++++++++++++<wbr>+++++++++++++++++<br>
>  meson_options.txt |  5 +++<br>
>  2 files changed, 94 insertions(+)<br>
>  create mode 100644 meson.build<br>
>  create mode 100644 meson_options.txt<br>
><br>
> diff --git a/meson.build b/meson.build<br>
> new file mode 100644<br>
> index 0000000..c078ff3<br>
> --- /dev/null<br>
> +++ b/meson.build<br>
> @@ -0,0 +1,89 @@<br>
> +project('wayland-protocols', 'c',<br>
> +  version: '1.13',<br>
> +  license: 'MIT',<br>
> +  meson_version: '>= 0.45.0',<br>
> +)<br>
> +<br>
> +wayland_scanner_dep = dependency('wayland-scanner', required: false)<br>
> +wayland_scanner_opt = get_option('wayland_scanner')<br>
> +wayland_scanner_bin = ['wayland-scanner']<br>
> +<br>
> +if wayland_scanner_opt != ''<br>
> +  wayland_scanner_bin += wayland_scanner_opt<br>
> +endif<br>
> +<br>
> +if wayland_scanner_dep.found()<br>
> +  wayland_scanner_bin += wayland_scanner_dep.get_<wbr>pkgconfig_variable('wayland_<wbr>scanner')<br>
> +endif<br>
> +<br>
> +wayland_scanner = find_program(wayland_scanner_<wbr>bin)<br>
> +<br>
> +pkgdatadir = join_paths(get_option('<wbr>datadir'), meson.project_name())<br>
> +<br>
> +protocol_files = []<br>
> +<br>
> +# name, [version, ...]<br>
> +unstable_protocols = [<br>
> +  [ 'pointer-gestures', ['v1',], ],<br>
> +  [ 'fullscreen-shell', ['v1',], ],<br>
> +  [ 'linux-dmabuf', ['v1',], ],<br>
> +  [ 'text-input', ['v1',], ],<br>
> +  [ 'input-method', ['v1',], ],<br>
> +  [ 'xdg-shell', ['v5', 'v6',], ],<br>
> +  [ 'relative-pointer', ['v1',], ],<br>
> +  [ 'pointer-constraints', ['v1',], ],<br>
> +  [ 'tablet', ['v1', 'v2',], ],<br>
> +  [ 'xdg-foreign', ['v1', 'v2',], ],<br>
> +  [ 'idle-inhibit', ['v1',], ],<br>
> +  [ 'xwayland-keyboard-grab', ['v1',], ],<br>
> +  [ 'keyboard-shortcuts-inhibit', ['v1',], ],<br>
> +  [ 'xdg-output', ['v1',], ],<br>
> +  [ 'input-timestamps', ['v1',], ],<br>
> +]<br>
> +<br>
> +foreach p: unstable_protocols<br>
> +  p_name = p[0]<br>
> +  p_versions = p[1]<br>
> +  foreach version: p_versions<br>
> +    xml_file = join_paths('unstable', p_name, '@0@-unstable-@1@.xml'.format(<wbr>p_name, version))<br>
> +    protocol_files += [[p_name, files(xml_file)]]<br>
> +    install_data(xml_file, install_dir: join_paths(pkgdatadir, 'unstable', p_name))<br>
> +  endforeach<br>
> +endforeach<br>
> +<br>
> +stable_protocols = [<br>
> +  'presentation-time',<br>
> +  'viewporter',<br>
> +  'xdg-shell',<br>
> +]<br>
> +<br>
> +foreach p_name: stable_protocols<br>
> +  xml_file = join_paths('stable', p_name, '@0@.xml'.format(p_name))<br>
> +  protocol_files += [[p_name, files(xml_file)]]<br>
> +  install_data(xml_file, install_dir: join_paths(pkgdatadir, 'stable', p_name))<br>
> +endforeach<br>
> +<br>
> +pkgconfig = import('pkgconfig')<br>
> +pkgconfig.generate(<br>
> +  name: meson.project_name(),<br>
> +  description: 'Wayland protocol files',<br>
> +  version: meson.project_version(),<br>
> +  variables: [<br>
> +    'datarootdir=${prefix}/@0@'.<wbr>format(get_option('datadir')),<br>
> +    'pkgdatadir=${pc_sysrootdir}${<wbr>datarootdir}/@0@'.format(<wbr>meson.project_name()),<br>
> +  ],<br>
> +  install_dir: join_paths(get_option('<wbr>datadir'), 'pkgconfig'),<br>
> +)<br>
> +<br>
> +scan_test = find_program('tests/scan.sh')<br>
> +foreach p: protocol_files<br>
> +  p_name = p[0]<br>
> +  p_file = p[1]<br>
> +  test('verify ' + p_name,<br>
> +    scan_test,<br>
> +    args: [ p_file, ],<br>
> +    env: [<br>
> +      'SCANNER=@0@'.format(wayland_<wbr>scanner.path()),<br>
> +    ],<br>
> +  )<br>
> +endforeach<br>
> diff --git a/meson_options.txt b/meson_options.txt<br>
> new file mode 100644<br>
> index 0000000..09a8618<br>
> --- /dev/null<br>
> +++ b/meson_options.txt<br>
> @@ -0,0 +1,5 @@<br>
> +option('wayland_scanner',<br>
> +  description: 'The wayland-scanner binary to use',<br>
> +  type: 'string',<br>
> +  value: ''<br>
> +)<br>
> --<br>
> 2.17.0<br>
><br>
</div></div>> ______________________________<wbr>_________________<br>
> wayland-devel mailing list<br>
> <a href="mailto:wayland-devel@lists.freedesktop.org">wayland-devel@lists.<wbr>freedesktop.org</a><br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/wayland-devel" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/wayland-devel</a><br>
</blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><a href="https://www.bassi.io" target="_blank">https://www.bassi.io</a><br>[@] ebassi [@<a href="http://gmail.com" target="_blank">gmail.com</a>]</div>
</div></div></div></div>