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.

112 lines
3.6KB

  1. #! /usr/bin/python3
  2. # encoding: utf-8
  3. import os.path
  4. from waflib import Logs, Options
  5. def options(opt):
  6. opt.add_option(
  7. '--enable-pkg-config-dbus-service-dir',
  8. action='store_true',
  9. default=False,
  10. help='force D-Bus service install dir to be one returned by pkg-config',
  11. )
  12. def configure(conf):
  13. conf.env['BUILD_JACKDBUS'] = False
  14. conf.define('JACK_VERSION', conf.env['JACK_VERSION'])
  15. if not conf.check_cfg(package='dbus-1 >= 1.0.0', args='--cflags --libs', mandatory=False):
  16. print(
  17. Logs.colors.RED + 'ERROR !! jackdbus will not be built because libdbus-dev is missing' + Logs.colors.NORMAL
  18. )
  19. return
  20. dbus_dir = conf.check_cfg(package='dbus-1', args='--variable=session_bus_services_dir')
  21. if not dbus_dir:
  22. print(
  23. Logs.colors.RED + 'ERROR !! jackdbus will not be built because service dir is unknown' + Logs.colors.NORMAL
  24. )
  25. return
  26. dbus_dir = dbus_dir.strip()
  27. conf.env['DBUS_SERVICES_DIR_REAL'] = dbus_dir
  28. if Options.options.enable_pkg_config_dbus_service_dir:
  29. conf.env['DBUS_SERVICES_DIR'] = dbus_dir
  30. else:
  31. conf.env['DBUS_SERVICES_DIR'] = os.path.normpath(conf.env['PREFIX'] + '/share/dbus-1/services')
  32. if not conf.check_cfg(package='expat', args='--cflags --libs', mandatory=False):
  33. print(Logs.colors.RED + 'ERROR !! jackdbus will not be built because of expat is missing' + Logs.colors.NORMAL)
  34. return
  35. conf.env['BUILD_JACKDBUS'] = True
  36. def build(bld):
  37. obj = bld(features=['c', 'cprogram'], idx=17)
  38. if bld.env['IS_LINUX']:
  39. sysdeps_dbus_include = ['../linux', '../posix']
  40. if bld.env['IS_FREEBSD']:
  41. sysdeps_dbus_include = ['../freebsd', '../posix']
  42. if bld.env['IS_HURD']:
  43. sysdeps_dbus_include = ['../gnu', '../posix']
  44. if bld.env['IS_MACOSX']:
  45. sysdeps_dbus_include = ['../macosx', '../posix']
  46. obj.includes = sysdeps_dbus_include + ['.', '../', '../common', '../common/jack']
  47. obj.defines = ['HAVE_CONFIG_H', 'SERVER_SIDE']
  48. obj.source = [
  49. 'jackdbus.c',
  50. 'controller.c',
  51. 'params.c',
  52. 'controller_iface_configure.c',
  53. 'controller_iface_control.c',
  54. 'controller_iface_introspectable.c',
  55. 'controller_iface_patchbay.c',
  56. 'controller_iface_session_manager.c',
  57. 'controller_iface_transport.c',
  58. 'xml.c',
  59. 'xml_expat.c',
  60. 'xml_write_raw.c',
  61. 'sigsegv.c',
  62. 'reserve.c',
  63. ]
  64. obj.use = ['serverlib']
  65. if bld.env['IS_LINUX']:
  66. obj.source += [
  67. '../linux/uptime.c',
  68. ]
  69. obj.use += ['PTHREAD', 'DL', 'RT', 'DBUS-1', 'EXPAT', 'STDC++']
  70. if bld.env['IS_FREEBSD']:
  71. obj.source += [
  72. '../linux/uptime.c',
  73. ]
  74. obj.use += ['PTHREAD', 'EXECINFO', 'LIBSYSINFO', 'DBUS-1', 'EXPAT']
  75. if bld.env['IS_HURD']:
  76. obj.source += [
  77. '../linux/uptime.c',
  78. ]
  79. obj.use += ['PTHREAD', 'DL', 'RT', 'DBUS-1', 'EXPAT', 'STDC++']
  80. if bld.env['IS_MACOSX']:
  81. obj.source += [
  82. '../macosx/uptime.c',
  83. ]
  84. obj.use += ['PTHREAD', 'DL', 'DBUS-1', 'EXPAT']
  85. obj.target = 'jackdbus'
  86. # process org.jackaudio.service.in -> org.jackaudio.service
  87. obj = bld(
  88. features='subst',
  89. source='org.jackaudio.service.in',
  90. target='org.jackaudio.service',
  91. install_path='${DBUS_SERVICES_DIR}/',
  92. BINDIR=bld.env['PREFIX'] + '/bin')
  93. if not bld.env['IS_WINDOWS']:
  94. bld.install_files('${PREFIX}/bin', 'jack_control', chmod=0o755)