add a real check for functioning JACK metadata API; remove configure time option...
[ardour.git] / libs / backends / jack / wscript
1 #!/usr/bin/env python
2 from waflib.extras import autowaf as autowaf
3 from waflib import Options
4 import os
5 import sys
6 import re
7
8 I18N_PACKAGE = 'jack-backend'
9
10 # Mandatory variables
11 top = '.'
12 out = 'build'
13
14 def options(opt):
15     autowaf.set_options(opt)
16
17 def configure(conf):
18     autowaf.check_pkg(conf, 'jack', uselib_store='JACK', atleast_version='0.121.0')
19
20     #
21     # PortAudio is currently used to get a list of audio device names.
22     # We should find a better way to do this that doesn't involve this
23     # kind of dependency.
24     #
25     if Options.options.dist_target == 'mingw':
26         autowaf.check_pkg(conf, 'portaudio-2.0', uselib_store='PORTAUDIO',
27                           atleast_version='19')
28     autowaf.configure(conf)
29
30     if Options.options.libjack_link == 'auto':
31         if Options.options.dist_target == 'mingw' or sys.platform == 'darwin':
32             conf.env['libjack_link'] = "weak"
33         else:
34             conf.env['libjack_link'] = "link"
35     elif Options.options.libjack_link == 'weak':
36         conf.env['libjack_link'] = "weak"
37     else:
38         conf.env['libjack_link'] = "link"
39
40     # Check that metadata API is available and working
41     conf.check_cxx(fragment = "#include <jack/jack.h>\n#include <jack/metadata.h>\nint main(void) { jack_port_uuid(NULL); return 0; }\n",
42                    mandatory = False,
43                    msg = 'Checking for JACK metadata API',
44                    okmsg = 'ok',
45                    errmsg = 'not found (or broken). JACK metadata API will not be used',
46                    define_name = 'HAVE_JACK_METADATA',
47                    linkflags=['-ljack'])
48     
49 def build(bld):
50     obj = bld(features = 'c cxx cxxshlib')
51     obj.source = [ 
52             'jack_api.cc',
53             'jack_connection.cc',
54             'jack_audiobackend.cc',
55             'jack_portengine.cc',
56             'jack_utils.cc',
57             'jack_session.cc',
58             'weak_libjack.c',
59             ]
60     obj.includes = ['.']
61     obj.name     = 'jack_audiobackend'
62     obj.target   = 'jack_audiobackend'
63     obj.defines = ['PACKAGE="' + I18N_PACKAGE + '"', 
64                    'ARDOURBACKEND_DLL_EXPORTS'
65                    ]
66     obj.use      = 'libardour libpbd ardouralsautil'
67     obj.install_path  = os.path.join(bld.env['LIBDIR'], 'backends')
68     if bld.env['build_target'] != 'mingw':
69         obj.cxxflags = [ '-fPIC' ]
70         obj.cflags   = [ '-fPIC' ]
71
72     if bld.is_defined ('HAVE_JACK_METADATA'):
73         obj.cxxflags += [ '-DHAVE_JACK_METADATA' ]
74         obj.cflags += [ '-DHAVE_JACK_METADATA' ]
75
76     if (bld.env['build_target'] == 'mingw'):
77         obj.uselib   = [ 'PORTAUDIO' ]
78     else:
79         obj.uselib   = [ ]
80
81     if bld.env['libjack_link'] == 'link':
82         obj.uselib   += [ 'JACK' ]
83     else:
84         obj.defines += [ 'USE_WEAK_JACK' ]
85         obj.deps = [ 'weak_libjack.def' ]
86
87     #
88     # device discovery code in the jack backend needs ALSA
89     # on Linux.
90     # 
91
92     if re.search ("linux", sys.platform) != None:
93        obj.uselib += [ 'ALSA' ]
94