Backport of latest Paul alsa_seqmidi changes.
[jack2.git] / dbus / wscript
blobdeec89e27c11034c17be983922e51488cd1ccd1f
1 #! /usr/bin/env python
2 # encoding: utf-8
4 import Params
5 import os.path
6 import re # subst_func
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')
11 def configure(conf):
12 conf.check_pkg('dbus-1', pkgvars=['session_bus_services_dir'])
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')
19 conf.check_tool('misc')
21 e = conf.create_header_configurator()
22 e.name = 'expat.h'
23 e.define = 'HAVE_EXPAT'
24 e.run()
26 if conf.is_defined('HAVE_EXPAT'):
27 conf.env['LIB_EXPAT'] = ['expat']
29 conf.env['BUILD_JACKDBUS'] = conf.is_defined('HAVE_EXPAT') and conf.is_defined('HAVE_DBUS_1')
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"
36 m4_re = re.compile('\$\{(\w+)\}', re.M)
38 env = tsk.env()
39 infile = tsk.m_inputs[0].abspath(env)
40 outfile = tsk.m_outputs[0].abspath(env)
42 file = open(infile, 'r')
43 code = file.read()
44 file.close()
46 s = m4_re.sub(r'%(\1)s', code)
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]
56 file = open(outfile, 'w')
57 file.write(s % dict)
58 file.close()
60 return 0
62 def build(bld):
63 if bld.env()["BUILD_JACKDBUS"] != True:
64 return
66 obj = bld.create_obj('cc', 'program')
67 if bld.env()['IS_LINUX']:
68 sysdeps_dbus_include = ['../linux', '../posix']
69 if bld.env()['IS_MACOSX']:
70 sysdeps_dbus_include = ['../macosx', '../posix']
72 obj.includes = sysdeps_dbus_include + ['.', '../', '../common', '../common/jack']
73 obj.source = [
74 'jackdbus.c',
75 'controller.c',
76 'controller_iface_configure.c',
77 'controller_iface_control.c',
78 'controller_iface_introspectable.c',
79 'controller_iface_patchbay.c',
80 'controller_iface_transport.c',
81 'xml.c',
82 'xml_expat.c',
83 #'xml_libxml.c',
84 #'xml_nop.c',
85 'xml_write_raw.c',
86 'sigsegv.c',
88 if bld.env()['IS_LINUX']:
89 obj.uselib = 'PTHREAD DL RT DBUS-1 EXPAT'
90 if bld.env()['IS_MACOSX']:
91 obj.uselib = 'PTHREAD DL DBUS-1 EXPAT'
92 obj.uselib_local = 'serverlib'
93 obj.target = 'jackdbus'
95 # process org.jackaudio.service.in -> org.jackaudio.service
96 obj = bld.create_obj('subst')
97 obj.source = 'org.jackaudio.service.in'
98 obj.target = 'org.jackaudio.service'
99 obj.dict = {'BINDIR': bld.env()['PREFIX'] + '/bin'}
100 obj.inst_var = bld.env()['DBUS_SERVICES_DIR']
101 obj.inst_dir = '/'
102 obj.fun = subst_func # @VAR@ -> ${VAR}