merge fix
[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                    execute = False,
45                    features = ['cxx'],
46                    okmsg = 'ok',
47                    errmsg = 'not found (or broken). JACK metadata API will not be used',
48                    define_name = 'HAVE_JACK_METADATA',
49                    uselib = 'JACK')
50
51     # Check to see if jack_port_rename() is available and working
52     conf.check_cxx(fragment = "#include <jack/jack.h>\nint main(void) { jack_client_t* c; jack_port_t* p; jack_port_rename (c, p, \"foo\"); return 0; }\n",
53                    mandatory = False,
54                    execute = False,
55                    features = ['cxx'],
56                    msg = 'Checking for jack_port_rename()',
57                    okmsg = 'ok',
58                    errmsg = 'not found (or broken). jack_port_rename() will not be used, and jack_port_set_name() will be used instead',
59                    define_name = 'HAVE_JACK_PORT_RENAME',
60                    uselib = 'JACK')
61
62 def build(bld):
63     obj = bld(features = 'c cxx cxxshlib')
64     obj.source = [ 
65             'jack_api.cc',
66             'jack_connection.cc',
67             'jack_audiobackend.cc',
68             'jack_portengine.cc',
69             'jack_utils.cc',
70             'jack_session.cc',
71             'weak_libjack.c',
72             ]
73     obj.includes = ['.']
74     obj.name     = 'jack_audiobackend'
75     obj.target   = 'jack_audiobackend'
76     obj.defines = ['PACKAGE="' + I18N_PACKAGE + '"', 
77                    'ARDOURBACKEND_DLL_EXPORTS'
78                    ]
79     obj.use      = 'libardour libpbd ardouralsautil'
80     obj.install_path  = os.path.join(bld.env['LIBDIR'], 'backends')
81     if bld.env['build_target'] != 'mingw':
82         obj.cxxflags = [ '-fPIC' ]
83         obj.cflags   = [ '-fPIC' ]
84     else:
85         obj.cxxflags = [ ]
86         obj.cflags   = [ ]
87
88     if bld.is_defined ('HAVE_JACK_METADATA'):
89         obj.cxxflags += [ '-DHAVE_JACK_METADATA' ]
90         obj.cflags += [ '-DHAVE_JACK_METADATA' ]
91
92     if bld.is_defined ('HAVE_JACK_PORT_RENAME'):
93         obj.cxxflags += [ '-DHAVE_JACK_PORT_RENAME' ]
94         obj.cflags += [ '-DHAVE_JACK_PORT_RENAME' ]
95
96     if (bld.env['build_target'] == 'mingw'):
97         obj.uselib   = [ 'PORTAUDIO' ]
98     else:
99         obj.uselib   = [ ]
100
101     if bld.env['libjack_link'] == 'link':
102         obj.uselib   += [ 'JACK' ]
103     else:
104         obj.defines += [ 'USE_WEAK_JACK' ]
105         obj.deps = [ 'weak_libjack.def' ]
106
107     #
108     # device discovery code in the jack backend needs ALSA
109     # on Linux.
110     # 
111
112     if re.search ("linux", sys.platform) != None:
113        obj.uselib += [ 'ALSA' ]
114