| 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} |
|---|