add a real check for functioning JACK metadata API; remove configure time option...
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 23 Apr 2015 13:29:35 +0000 (09:29 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 23 Apr 2015 13:29:45 +0000 (09:29 -0400)
libs/backends/jack/jack_portengine.cc
libs/backends/jack/weak_libjack.h
libs/backends/jack/wscript
wscript

index caa962600b764f9686dcfcdc304bcc86d83bab98..1f0515b0e8c2b19eb084ffe8f1e02dc19efd05a0 100644 (file)
@@ -118,7 +118,7 @@ JACKAudioBackend::get_port_name (PortHandle port) const
 int
 JACKAudioBackend::get_port_property (PortHandle port, const std::string& key, std::string& value, std::string& type) const
 {
-#ifndef NO_JACK_METADATA // really everyone ought to have this by now.
+#ifdef HAVE_JACK_METADATA // really everyone ought to have this by now.
        int rv = -1;
        char *cvalue = NULL;
        char *ctype = NULL;
index e18687b6c7793f45fd7b651a546128c929944ae6..abfe3af8a832cd77ab83ea4c9348445a50065abf 100644 (file)
@@ -155,7 +155,7 @@ int have_libjack(void);
 
 #define jack_client_open                    WJACK_client_client_openXXX
 
-#ifndef NO_JACK_METADATA
+#ifdef HAVE_JACK_METADATA
 /* <jack/metadata.h> */
 #define jack_get_uuid_for_client_name       WJACK_get_uuid_for_client_name
 #define jack_get_client_name_by_uuid        WJACK_get_client_name_by_uuid
@@ -181,7 +181,7 @@ int have_libjack(void);
 #include <jack/session.h>
 #include <jack/thread.h>
 
-#ifndef NO_JACK_METADATA
+#ifdef HAVE_JACK_METADATA
 #include <jack/metadata.h>
 #endif
 
index 752682f8cc215518914c1fca5d4651d78e1099ca..2f3b349afe6238d82895dbb88cb0ca8aa633bcd6 100644 (file)
@@ -37,10 +37,15 @@ def configure(conf):
     else:
         conf.env['libjack_link'] = "link"
 
-    if not Options.options.libjack_meta:
-        conf.define ('NO_JACK_METADATA', 1)
-
-
+    # Check that metadata API is available and working
+    conf.check_cxx(fragment = "#include <jack/jack.h>\n#include <jack/metadata.h>\nint main(void) { jack_port_uuid(NULL); return 0; }\n",
+                   mandatory = False,
+                   msg = 'Checking for JACK metadata API',
+                   okmsg = 'ok',
+                   errmsg = 'not found (or broken). JACK metadata API will not be used',
+                   define_name = 'HAVE_JACK_METADATA',
+                   linkflags=['-ljack'])
+    
 def build(bld):
     obj = bld(features = 'c cxx cxxshlib')
     obj.source = [ 
@@ -64,6 +69,10 @@ def build(bld):
         obj.cxxflags = [ '-fPIC' ]
         obj.cflags   = [ '-fPIC' ]
 
+    if bld.is_defined ('HAVE_JACK_METADATA'):
+       obj.cxxflags += [ '-DHAVE_JACK_METADATA' ]
+       obj.cflags += [ '-DHAVE_JACK_METADATA' ]
+
     if (bld.env['build_target'] == 'mingw'):
         obj.uselib   = [ 'PORTAUDIO' ]
     else:
diff --git a/wscript b/wscript
index f9716d99984fd67854b526807929758302e528bb..6005f88d36cc28e335736259dc7736caa6d72620 100644 (file)
--- a/wscript
+++ b/wscript
@@ -615,8 +615,6 @@ def options(opt):
                     help='Compile for use with gprofile')
     opt.add_option('--libjack', type='string', default="auto", dest='libjack_link',
                     help='libjack link mode  [auto|link|weak]')
-    opt.add_option('--no-jack-metadata', action='store_false', default=True, dest='libjack_meta',
-                    help='disable support for jack metadata')
     opt.add_option('--internal-shared-libs', action='store_true', default=True, dest='internal_shared_libs',
                    help='Build internal libs as shared libraries')
     opt.add_option('--internal-static-libs', action='store_false', dest='internal_shared_libs',
@@ -1059,7 +1057,7 @@ const char* const ardour_config_info = "\\n\\
     write_config_text('Freedesktop files',     opts.freedesktop)
     write_config_text('JACK Backend',          conf.env['BUILD_JACKBACKEND'])
     write_config_text('Libjack linking',       conf.env['libjack_link'])
-    write_config_text('Libjack metadata',      not conf.is_defined('NO_JACK_METADATA'))
+    write_config_text('Libjack metadata',      conf.is_defined ('HAVE_JACK_METADATA'))
     write_config_text('LV2 UI embedding',      conf.is_defined('HAVE_SUIL'))
     write_config_text('LV2 support',           conf.is_defined('LV2_SUPPORT'))
     write_config_text('LXVST support',         conf.is_defined('LXVST_SUPPORT'))