[Spice-devel] [spice-common 3/7] build: By default, error out if Opus is missing

Christophe Fergeau cfergeau at redhat.com
Mon Jun 4 17:13:45 UTC 2018


Following the commit disabling celt by default, it's quite easy to have
a build without both celt and opus. After this commit, Opus will have to
be installed for a successful build unless one passes --disable-opus.
---
 m4/spice-deps.m4  | 13 ++++++++++++-
 meson.build       | 11 ++++++-----
 meson_options.txt |  5 +++++
 3 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/m4/spice-deps.m4 b/m4/spice-deps.m4
index 5606230..36b559c 100644
--- a/m4/spice-deps.m4
+++ b/m4/spice-deps.m4
@@ -150,7 +150,18 @@ AC_DEFUN([SPICE_CHECK_CELT051], [
 # HAVE_OPUS preprocessor symbol as well as a HAVE_OPUS Makefile conditional.
 # ----------------
 AC_DEFUN([SPICE_CHECK_OPUS], [
-    PKG_CHECK_MODULES([OPUS], [opus >= 0.9.14], [have_opus=yes], [have_opus=no])
+    AC_ARG_ENABLE([opus],
+        [  --disable-opus       Disable Opus audio codec (enabled by default)],,
+        [enable_opus="auto"])
+    if test "x$enable_opus" != "xno"; then
+        PKG_CHECK_MODULES([OPUS], [opus >= 0.9.14], [have_opus=yes], [have_opus=no])
+        if test "x$enable_opus" == "xauto" && test "x$have_opus" == "xno"; then
+            AC_MSG_ERROR(["Opus could not be detected, explicitly use --disable-opus if that's intentional"])
+        fi
+        if test "x$enable_opus" == "xyes" && test "x$have_opus" != "xyes"; then
+            AC_MSG_ERROR(["--enable-opus has been specified, but Opus .5.1 is missing"])
+        fi
+    fi
 
     AM_CONDITIONAL([HAVE_OPUS], [test "x$have_opus" = "xyes"])
     if test "x$have_opus" = "xyes" ; then
diff --git a/meson.build b/meson.build
index 4dd4610..2cf2c3c 100644
--- a/meson.build
+++ b/meson.build
@@ -118,12 +118,13 @@ endforeach
 #
 # Non-mandatory/optional dependencies
 #
-deps = [['opus', '>= 0.9.14', 'HAVE_OPUS'],]
-
 # Check deps which are optional but enabled by default. This foreach block only
 # checks the option, and adds the package to the deps list, while the real check
 # for the dependency is done in the foeach block below.
-optional_deps = [['celt051', '>= 0.5.1.1', 'HAVE_CELT051'],]
+optional_deps = [
+                    ['celt051', '>= 0.5.1.1', false, 'HAVE_CELT051'],
+                    ['opus', '>= 0.9.14', true, 'HAVE_OPUS'],
+                ]
 foreach dep : optional_deps
   if get_option(dep[0])
     deps += [dep]
@@ -131,10 +132,10 @@ foreach dep : optional_deps
 endforeach
 
 foreach dep : deps
-  d = dependency(dep[0], required : false, version : dep[1])
+  d = dependency(dep[0], required : dep[2], version : dep[1])
   if d.found()
     spice_common_deps += d
-    spice_common_config_data.set(dep[2], '1')
+    spice_common_config_data.set(dep[3], '1')
   endif
 endforeach
 
diff --git a/meson_options.txt b/meson_options.txt
index 9f07bcc..9796833 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -15,6 +15,11 @@ option('celt051',
     value : false,
     description: 'Enable celt051 audio codec (default=false)')
 
+option('opus',
+    type : 'boolean',
+    value : true,
+    description: 'Enable Opus audio codec (default=true)')
+
 option('python-checks',
     type : 'boolean',
     value : true,
-- 
2.17.1



More information about the Spice-devel mailing list