> > Spice-server and spice-gtk already require 0.47, and with this release, > there were some interesting additions we can make use: > > - Options with 'feature' type: > > This built-in type is used instead of the tri-state string combo > (auto/true/false), simplifying the dependency checks. > > http://mesonbuild.com/Build-options.html#features > > - Dictionary: > > Easier to iterate and improves readability of the code by replacing > the use of nested lists. > > http://mesonbuild.com/Reference-manual.html#dictionary-object > > Signed-off-by: Eduardo Lima (Etrunko) <etrunko@xxxxxxxxxx> > --- > meson.build | 37 ++++++++++++++++--------------------- > meson_options.txt | 7 ++----- > 2 files changed, 18 insertions(+), 26 deletions(-) > > diff --git a/meson.build b/meson.build > index 226d9f4..6fa67dc 100644 > --- a/meson.build > +++ b/meson.build > @@ -2,7 +2,7 @@ > # project definition > # > project('spice-common', 'c', > - meson_version : '>= 0.45.0', > + meson_version : '>= 0.47.0', > license : 'LGPLv2.1') > > if not meson.is_subproject() > @@ -98,32 +98,27 @@ endif > glib_version = '2.38' > glib_version_info = '>= @0@'.format(glib_version) > > -deps = [['spice-protocol', '>= 0.12.12'], > - ['glib-2.0', glib_version_info], > - ['gio-2.0', glib_version_info], > - ['gthread-2.0', glib_version_info], > - ['pixman-1', '>= 0.17.7'], > - ['openssl', '>= 1.0.0']] > +deps = {'spice-protocol' : '>= 0.12.12', > + 'glib-2.0' : glib_version_info, > + 'gio-2.0' : glib_version_info, > + 'gthread-2.0' : glib_version_info, > + 'pixman-1' : '>= 0.17.7', > + 'openssl' : '>= 1.0.0'} > > -foreach dep : deps > - spice_common_deps += dependency(dep[0], version : dep[1]) > +foreach dep, version : deps > + spice_common_deps += dependency(dep, version : version) > endforeach > surely more readable, note that dictionary does not keep the order of the items while arrays does, but is not a problem with current code. > # > # Non-mandatory/optional dependencies > # > -optional_deps = [ > - ['celt051', '>= 0.5.1.1'], > - ['opus', '>= 0.9.14'], > - ] > -foreach dep : optional_deps > - option_value = get_option(dep[0]) > - if option_value != 'false' > - d = dependency(dep[0], required: (option_value == 'true'), version : > dep[1]) > - if d.found() > - spice_common_deps += d > - > spice_common_config_data.set('HAVE_@0@'.format(dep[0].underscorify().to_upper()), > '1') > - endif > +optional_deps = {'celt051' : '>= 0.5.1.1', > + 'opus' : '>= 0.9.14'} > +foreach dep, version : optional_deps > + d = dependency(dep, required : get_option(dep), version : version) > + if d.found() > + spice_common_deps += d > + > spice_common_config_data.set('HAVE_@0@'.format(dep.underscorify().to_upper()), > '1') > endif > endforeach > > diff --git a/meson_options.txt b/meson_options.txt > index b88f209..1b80257 100644 > --- a/meson_options.txt > +++ b/meson_options.txt > @@ -11,15 +11,12 @@ option('extra-checks', > description : 'Enable extra checks on code') > > option('celt051', > - type : 'combo', > - choices : ['true', 'false', 'auto'], > - value : 'auto', > + type : 'feature', > yield : true, > description: 'Enable celt051 audio codec') > > option('opus', > - type : 'combo', > - choices : ['true', 'false', 'auto'], > + type : 'feature', > yield : true, > description: 'Enable Opus audio codec') > I would say yes. What worry me is that this Meson looks like a moving target. The fact that they don't want to add function requires them to to write new and new modules/functions and have new releases. The main concern for us is that is hard to predict when we could remove autoconf stuff having to continue to maintain 2 build systems. Will be hard to have Meson 0.47 in next RHEL7 which will mean we need at least to wait other 6 months/1 year. Maybe for older distros we could package Meson in a tarball and use it inside higher packager (like spec file) to use a newer meson without the needs to have it installed (I looked and there are mainly python files so seems doable, just requires a recent python3 installed in the system). Frediano _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel