|
- #! /usr/bin/env python
- # encoding: utf-8
-
- import Params
- import os.path
- import re # subst_func
-
- def set_options(opt):
- 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')
-
- def configure(conf):
- conf.check_pkg('dbus-1', pkgvars=['session_bus_services_dir'])
-
- if Params.g_options.enable_pkg_config_dbus_service_dir:
- conf.env['DBUS_SERVICES_DIR'] = conf.env['DBUS-1_SESSION_BUS_SERVICES_DIR'][0]
- else:
- conf.env['DBUS_SERVICES_DIR'] = os.path.normpath(conf.env['PREFIX'] + '/share/dbus-1/services')
-
- conf.check_tool('misc')
-
- e = conf.create_header_configurator()
- e.name = 'expat.h'
- e.define = 'HAVE_EXPAT'
- e.run()
-
- if conf.is_defined('HAVE_EXPAT'):
- conf.env['LIB_EXPAT'] = ['expat']
-
- conf.env['BUILD_JACKDBUS'] = conf.is_defined('HAVE_EXPAT') and conf.is_defined('HAVE_DBUS_1')
-
- # by default waf subst tool uses @VAR@ while scons legacy is ${VAR}
- # so we use same template as scons for now
- def subst_func(tsk):
- "Substitutes variables in a .in file"
-
- m4_re = re.compile('\$\{(\w+)\}', re.M)
-
- env = tsk.env()
- infile = tsk.m_inputs[0].abspath(env)
- outfile = tsk.m_outputs[0].abspath(env)
-
- file = open(infile, 'r')
- code = file.read()
- file.close()
-
- s = m4_re.sub(r'%(\1)s', code)
-
- dict = tsk.dict
- if not dict:
- names = m4_re.findall(code)
- for i in names:
- if env[i] and type(env[i]) is types.ListType :
- dict[i] = " ".join(env[i])
- else: dict[i] = env[i]
-
- file = open(outfile, 'w')
- file.write(s % dict)
- file.close()
-
- return 0
-
- def build(bld):
- if bld.env()["BUILD_JACKDBUS"] != True:
- return
-
- obj = bld.create_obj('cc', 'program')
- if bld.env()['IS_LINUX']:
- sysdeps_dbus_include = ['../linux', '../posix']
- if bld.env()['IS_MACOSX']:
- sysdeps_dbus_include = ['../macosx', '../posix']
-
- obj.includes = sysdeps_dbus_include + ['.', '../', '../common', '../common/jack']
- obj.source = [
- 'jackdbus.c',
- 'controller.c',
- 'controller_iface_configure.c',
- 'controller_iface_control.c',
- 'controller_iface_introspectable.c',
- 'controller_iface_patchbay.c',
- 'controller_iface_transport.c',
- 'xml.c',
- 'xml_expat.c',
- #'xml_libxml.c',
- #'xml_nop.c',
- 'xml_write_raw.c',
- 'sigsegv.c',
- ]
- if bld.env()['IS_LINUX']:
- obj.uselib = 'PTHREAD DL RT DBUS-1 EXPAT'
- if bld.env()['IS_MACOSX']:
- obj.uselib = 'PTHREAD DL DBUS-1 EXPAT'
- obj.uselib_local = 'serverlib'
- obj.target = 'jackdbus'
-
- # process org.jackaudio.service.in -> org.jackaudio.service
- obj = bld.create_obj('subst')
- obj.source = 'org.jackaudio.service.in'
- obj.target = 'org.jackaudio.service'
- obj.dict = {'BINDIR': bld.env()['PREFIX'] + '/bin'}
- obj.inst_var = bld.env()['DBUS_SERVICES_DIR']
- obj.inst_dir = '/'
- obj.fun = subst_func # @VAR@ -> ${VAR}
|