jack2 codebase
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

103 lines
3.0KB

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