[Spice-devel] [PATCH spice-common] Meson: make use of features in 0.47

Eduardo Lima (Etrunko) etrunko at redhat.com
Wed Jul 25 13:05:00 UTC 2018


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 at redhat.com>
---
 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
 
 #
 # 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_ at 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_ at 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')
 
-- 
2.14.4



More information about the Spice-devel mailing list