root/jack2/trunk/jackmp/linux/dbus/wscript

Revision 2537, 2.8 kB (checked in by sletz, 2 years ago)

DBUS working on OSX

Line 
1 #! /usr/bin/env python
2 # encoding: utf-8
3
4 import Params
5 import os.path
6 import re # subst_func
7
8 def set_options(opt):
9     opt.add_option('--enable-pkg-config-dbus-service-dir', action='store_true', default=False, help='force D-Bus service install dir to be one returned by pkg-config')
10
11 def configure(conf):
12     conf.check_pkg('dbus-1', pkgvars=['session_bus_services_dir'])
13
14     if Params.g_options.enable_pkg_config_dbus_service_dir:
15         conf.env['DBUS_SERVICES_DIR'] = conf.env['DBUS-1_SESSION_BUS_SERVICES_DIR'][0]
16     else:
17         conf.env['DBUS_SERVICES_DIR'] = os.path.normpath(conf.env['PREFIX'] + '/share/dbus-1/services')
18
19     conf.check_tool('misc')
20
21     e = conf.create_header_configurator()
22     e.name = 'expat.h'
23     e.define = 'HAVE_EXPAT'
24     e.run()
25
26     if conf.is_defined('HAVE_EXPAT'):
27         conf.env['LIB_EXPAT'] = ['expat']
28
29     conf.env['BUILD_JACKDBUS'] = conf.is_defined('HAVE_EXPAT') and conf.is_defined('HAVE_DBUS_1')
30
31 # by default waf subst tool uses @VAR@ while scons legacy is ${VAR}
32 # so we use same template as scons for now
33 def subst_func(tsk):
34     "Substitutes variables in a .in file"
35
36     m4_re = re.compile('\$\{(\w+)\}', re.M)
37
38     env = tsk.env()
39     infile = tsk.m_inputs[0].abspath(env)
40     outfile = tsk.m_outputs[0].abspath(env)
41
42     file = open(infile, 'r')
43     code = file.read()
44     file.close()
45
46     s = m4_re.sub(r'%(\1)s', code)
47
48     dict = tsk.dict
49     if not dict:
50         names = m4_re.findall(code)
51         for i in names:
52             if env[i] and type(env[i]) is types.ListType :
53                 dict[i] = " ".join(env[i])
54             else: dict[i] = env[i]
55
56     file = open(outfile, 'w')
57     file.write(s % dict)
58     file.close()
59
60     return 0
61
62 def build(bld):
63     if bld.env()["BUILD_JACKDBUS"] != True:
64         return
65
66     obj = bld.create_obj('cc', 'program')
67     obj.includes = ['.', '../../common', '../../common/jack']
68     obj.source = [
69         'jackdbus.c',
70         'controller.c',
71         'controller_iface_configure.c',
72         'controller_iface_control.c',
73         'controller_iface_introspectable.c',
74         'controller_iface_patchbay.c',
75         'controller_iface_transport.c',
76         'xml.c',
77         'xml_expat.c',
78         #'xml_libxml.c',
79         #'xml_nop.c',
80         'xml_write_raw.c',
81         'sigsegv.c',
82         ]
83     if bld.env()['IS_LINUX']:
84         obj.uselib = 'PTHREAD DL RT DBUS-1 EXPAT'
85     if bld.env()['IS_MACOSX']:
86         obj.uselib = 'PTHREAD DL DBUS-1 EXPAT'
87     obj.uselib_local = 'serverlib'
88     obj.target       = 'jackdbus'
89
90     # process org.jackaudio.service.in -> org.jackaudio.service
91     obj = bld.create_obj('subst')
92     obj.source = 'org.jackaudio.service.in'
93     obj.target = 'org.jackaudio.service'
94     obj.dict = {'BINDIR': bld.env()['PREFIX'] + '/bin'}
95     obj.inst_var = bld.env()['DBUS_SERVICES_DIR']
96     obj.inst_dir = '/'
97     obj.fun = subst_func # @VAR@ -> ${VAR}
Note: See TracBrowser for help on using the browser.