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.

534 lines
19KB

  1. #! /usr/bin/python3
  2. # encoding: utf-8
  3. #
  4. # Copyright (C) 2015-2018 Karl Linden <karl.j.linden@gmail.com>
  5. #
  6. # This program is free software; you can redistribute it and/or modify
  7. # it under the terms of the GNU General Public License as published by
  8. # the Free Software Foundation; either version 2 of the License.
  9. #
  10. # This program is distributed in the hope that it will be useful,
  11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. # GNU General Public License for more details.
  14. #
  15. # You should have received a copy of the GNU General Public License
  16. # along with this program; if not, write to the Free Software
  17. # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18. #
  19. import os
  20. def configure(conf):
  21. conf.env['BUILD_NETLIB'] = conf.env['SAMPLERATE']
  22. conf.env['BUILD_ADAPTER'] = conf.env['SAMPLERATE']
  23. if conf.env['IS_WINDOWS']:
  24. try:
  25. conf.check(header_name='regex.h', lib='regex', uselib_store='REGEX', define_name='HAVE_REGEX_H')
  26. except Exception:
  27. conf.check(header_name='tre/regex.h', lib='tre', uselib_store='REGEX', define_name='HAVE_TRE_REGEX_H')
  28. conf.check(header_name='winsock2.h', lib='ws2_32', uselib_store='WS2_32', define_name='HAVE_WINSOCK2_H')
  29. conf.check(
  30. header_name=['windows.h', 'mmsystem.h'], lib='winmm', uselib_store='WINMM', define_name='HAVE_MMSYSTEM_H'
  31. )
  32. conf.check(header_name=['windows.h', 'psapi.h'], lib='psapi', uselib_store='PSAPI', define_name='HAVE_PSAPI_H')
  33. def create_jack_process_obj(bld, target, sources, uselib=None, framework=None):
  34. process = bld(features=['cxx', 'cxxshlib'])
  35. if not bld.env['IS_WINDOWS']:
  36. process.env['cxxshlib_PATTERN'] = '%s.so'
  37. process.defines = ['HAVE_CONFIG_H', 'SERVER_SIDE']
  38. if bld.env['IS_MACOSX']:
  39. if framework:
  40. process.framework = framework
  41. env_includes = ['../macosx', '../posix', '../macosx/coreaudio']
  42. if bld.env['IS_LINUX']:
  43. env_includes = ['../linux', '../posix', '../linux/alsa']
  44. if bld.env['IS_FREEBSD']:
  45. env_includes = ['../freebsd', '../posix', '../solaris/oss']
  46. if bld.env['IS_SUN']:
  47. env_includes = ['../solaris', '../posix', '../solaris/oss']
  48. if bld.env['IS_WINDOWS']:
  49. env_includes = ['../windows', '../windows/portaudio']
  50. process.includes = ['.'] + env_includes + ['jack', '..']
  51. process.name = target
  52. process.target = target
  53. process.source = sources
  54. if bld.env['IS_LINUX'] or bld.env['IS_MACOSX'] or bld.env['IS_FREEBSD']:
  55. process.env.append_value('CPPFLAGS', '-fvisibility=hidden')
  56. process.install_path = '${ADDON_DIR}/'
  57. process.use = [uselib.name]
  58. return process
  59. def build(bld):
  60. common_libsources = [
  61. 'JackActivationCount.cpp',
  62. 'JackAPI.cpp',
  63. 'JackClient.cpp',
  64. 'JackConnectionManager.cpp',
  65. 'ringbuffer.c',
  66. 'JackError.cpp',
  67. 'JackException.cpp',
  68. 'JackFrameTimer.cpp',
  69. 'JackGraphManager.cpp',
  70. 'JackPort.cpp',
  71. 'JackPortType.cpp',
  72. 'JackAudioPort.cpp',
  73. 'JackMidiPort.cpp',
  74. 'JackMidiAPI.cpp',
  75. 'JackEngineControl.cpp',
  76. 'JackShmMem.cpp',
  77. 'JackGenericClientChannel.cpp',
  78. 'shm.c',
  79. 'JackGlobals.cpp',
  80. 'JackTransportEngine.cpp',
  81. 'JackTools.cpp',
  82. 'JackMessageBuffer.cpp',
  83. 'JackEngineProfiling.cpp',
  84. ]
  85. includes = ['.', './jack']
  86. if not bld.variant:
  87. includes.append('..')
  88. else:
  89. includes.append('../..')
  90. uselib = ['CELT', 'OPUS', 'DB', 'PTHREAD', 'SAMPLERATE']
  91. if bld.env['IS_LINUX']:
  92. common_libsources += [
  93. 'JackDebugClient.cpp',
  94. 'timestamps.c',
  95. 'promiscuous.c',
  96. '../posix/JackPosixThread.cpp',
  97. '../posix/JackPosixProcessSync.cpp',
  98. '../posix/JackPosixMutex.cpp',
  99. '../posix/JackSocket.cpp',
  100. '../linux/JackLinuxFutex.cpp',
  101. '../linux/JackLinuxTime.c',
  102. ]
  103. includes = ['../linux', '../posix'] + includes
  104. uselib.append('RT')
  105. uselib.append('DL')
  106. if bld.env['IS_FREEBSD']:
  107. common_libsources += [
  108. 'JackDebugClient.cpp',
  109. 'timestamps.c',
  110. 'promiscuous.c',
  111. '../posix/JackPosixThread.cpp',
  112. '../posix/JackPosixProcessSync.cpp',
  113. '../posix/JackPosixMutex.cpp',
  114. '../posix/JackPosixSemaphore.cpp',
  115. '../posix/JackSocket.cpp',
  116. '../posix/JackPosixTime.c',
  117. ]
  118. includes = ['../freebsd', '../posix'] + includes
  119. if bld.env['IS_SUN']:
  120. common_libsources += [
  121. 'JackDebugClient.cpp',
  122. 'timestamps.c',
  123. 'promiscuous.c',
  124. '../posix/JackPosixThread.cpp',
  125. '../posix/JackFifo.cpp',
  126. '../posix/JackPosixProcessSync.cpp',
  127. '../posix/JackPosixMutex.cpp',
  128. '../posix/JackSocket.cpp',
  129. '../solaris/JackSolarisTime.c',
  130. ]
  131. includes = ['../solaris', '../posix'] + includes
  132. uselib.append('RT')
  133. if bld.env['IS_MACOSX']:
  134. common_libsources += [
  135. 'JackDebugClient.cpp',
  136. 'timestamps.c',
  137. 'promiscuous.c',
  138. '../posix/JackPosixProcessSync.cpp',
  139. '../posix/JackPosixThread.cpp',
  140. '../posix/JackPosixMutex.cpp',
  141. '../macosx/JackMachThread.mm',
  142. '../macosx/JackMachSemaphore.mm',
  143. '../macosx/JackMachSemaphoreServer.mm',
  144. '../posix/JackSocket.cpp',
  145. '../macosx/JackMachTime.c',
  146. ]
  147. includes = ['../macosx', '../macosx/RPC', '../posix'] + includes
  148. if bld.env['IS_WINDOWS']:
  149. common_libsources += [
  150. '../windows/JackWinMutex.cpp',
  151. '../windows/JackWinProcessSync.cpp',
  152. '../windows/JackWinSemaphore.cpp',
  153. '../windows/JackWinThread.cpp',
  154. '../windows/JackWinTime.c',
  155. ]
  156. includes = ['../windows'] + includes
  157. libsuffix = "64" if (bld.env['DEST_CPU'] == "x86_64" and not bld.variant) else ""
  158. buildbindir = os.path.join('..', bld.path.get_bld().srcpath().rstrip(bld.path.srcpath()))
  159. staticbuild = bool('BUILD_STATIC' in bld.env and bld.env['BUILD_STATIC'])
  160. uselib.append('REGEX')
  161. uselib.append('WS2_32')
  162. uselib.append('PSAPI')
  163. uselib.append('WINMM')
  164. else:
  165. libsuffix = ""
  166. clientlib = bld(features=['c', 'cxx', 'cxxshlib', 'cshlib'])
  167. if bld.env['IS_MACOSX']:
  168. clientlib.framework = ['CoreAudio', 'Accelerate']
  169. clientlib.defines = 'HAVE_CONFIG_H'
  170. clientlib.includes = includes
  171. clientlib.name = 'clientlib'
  172. clientlib.target = 'jack'+libsuffix
  173. clientlib.install_path = '${LIBDIR}'
  174. clientlib.use = uselib
  175. if bld.env['IS_WINDOWS']:
  176. clientlib.env['cxxshlib_PATTERN'] = 'lib%s.dll'
  177. clientlib.env['cxxstlib_PATTERN'] = 'lib%s.a'
  178. clientlib.env['implib_PATTERN'] = 'lib%s.dll.a'
  179. if staticbuild:
  180. clientlib.env['SHLIB_MARKER'] = ''
  181. clientlib.env.append_value('LINKFLAGS', ['-static-libstdc++', '--disable-auto-import'])
  182. clientlib.env.append_value('LINKFLAGS', ['-Wl,--output-def,lib%s.def' % clientlib.target])
  183. bld.install_files(clientlib.install_path, [os.path.join(buildbindir, 'lib%s.def' % clientlib.target)])
  184. if bld.env['AUTOSTART_METHOD'] == 'dbus':
  185. clientlib.use.append('DBUS-1')
  186. clientlib.source = [] + common_libsources
  187. clientlib.source += [
  188. 'JackLibClient.cpp',
  189. 'JackLibAPI.cpp',
  190. 'JackMetadata.cpp',
  191. ]
  192. if bld.env['IS_LINUX']:
  193. clientlib.source += [
  194. '../posix/JackSocketClientChannel.cpp',
  195. '../posix/JackPosixServerLaunch.cpp',
  196. ]
  197. if bld.env['IS_FREEBSD']:
  198. clientlib.source += [
  199. '../posix/JackSocketClientChannel.cpp',
  200. '../posix/JackPosixServerLaunch.cpp',
  201. ]
  202. if bld.env['IS_SUN']:
  203. clientlib.source += [
  204. '../posix/JackSocketClientChannel.cpp',
  205. '../posix/JackPosixServerLaunch.cpp',
  206. ]
  207. if bld.env['IS_MACOSX']:
  208. clientlib.source += [
  209. '../posix/JackSocketClientChannel.cpp',
  210. '../posix/JackPosixServerLaunch.cpp',
  211. ]
  212. if bld.env['IS_WINDOWS']:
  213. clientlib.source += [
  214. '../windows/JackWinNamedPipe.cpp',
  215. '../windows/JackWinNamedPipeClientChannel.cpp',
  216. '../windows/JackWinServerLaunch.cpp',
  217. '../windows/JackMMCSS.cpp',
  218. ]
  219. if bld.env['IS_MACOSX']:
  220. clientlib.cnum = bld.env['JACK_API_VERSION']
  221. clientlib.vnum = bld.env['JACK_VERSION']
  222. elif not bld.env['IS_WINDOWS']:
  223. clientlib.vnum = bld.env['JACK_API_VERSION']
  224. if bld.env['IS_LINUX']:
  225. clientlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
  226. if bld.env['IS_FREEBSD']:
  227. clientlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
  228. if bld.env['IS_MACOSX']:
  229. clientlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
  230. clientlib.env.append_value('LINKFLAGS', '-single_module')
  231. if bld.env['IS_SUN']:
  232. clientlib.env.append_value('LINKFLAGS', '-lnsl -lsocket')
  233. if bld.variant:
  234. # if there is variant defined, we expect it to be the 32bit client lib one
  235. # we don't want to build other stuff in this variant
  236. return
  237. serverlib = bld(features=['c', 'cxx', 'cxxshlib', 'cshlib'])
  238. if bld.env['IS_MACOSX']:
  239. serverlib.framework = ['CoreAudio', 'CoreFoundation', 'Accelerate']
  240. serverlib.defines = ['HAVE_CONFIG_H', 'SERVER_SIDE']
  241. serverlib.includes = includes
  242. serverlib.name = 'serverlib'
  243. serverlib.target = 'jackserver'+libsuffix
  244. serverlib.install_path = '${LIBDIR}'
  245. serverlib.use = uselib
  246. if bld.env['IS_WINDOWS']:
  247. serverlib.env['cxxshlib_PATTERN'] = 'lib%s.dll'
  248. serverlib.env['cxxstlib_PATTERN'] = 'lib%s.a'
  249. serverlib.env['implib_PATTERN'] = 'lib%s.dll.a'
  250. if staticbuild:
  251. serverlib.env['SHLIB_MARKER'] = ''
  252. serverlib.env.append_value('LINKFLAGS', ['-static-libstdc++', '--disable-auto-import'])
  253. serverlib.env.append_value('LINKFLAGS', ['-Wl,--output-def,lib%s.def' % serverlib.target])
  254. bld.install_files(serverlib.install_path, [os.path.join(buildbindir, 'lib%s.def' % serverlib.target)])
  255. serverlib.source = [] + common_libsources
  256. serverlib.source += [
  257. 'JackAudioDriver.cpp',
  258. 'JackTimedDriver.cpp',
  259. 'JackMidiDriver.cpp',
  260. 'JackDriver.cpp',
  261. 'JackEngine.cpp',
  262. 'JackExternalClient.cpp',
  263. 'JackFreewheelDriver.cpp',
  264. 'JackInternalClient.cpp',
  265. 'JackInternalSessionLoader.cpp',
  266. 'JackServer.cpp',
  267. 'JackThreadedDriver.cpp',
  268. 'JackRestartThreadedDriver.cpp',
  269. 'JackWaitThreadedDriver.cpp',
  270. 'JackWaitCallbackDriver.cpp',
  271. 'JackServerAPI.cpp',
  272. 'JackDriverLoader.cpp',
  273. 'JackServerGlobals.cpp',
  274. 'JackControlAPI.cpp',
  275. 'JackNetTool.cpp',
  276. 'JackNetInterface.cpp',
  277. 'JackArgParser.cpp',
  278. 'JackRequestDecoder.cpp',
  279. 'JackMidiAsyncQueue.cpp',
  280. 'JackMidiAsyncWaitQueue.cpp',
  281. 'JackMidiBufferReadQueue.cpp',
  282. 'JackMidiBufferWriteQueue.cpp',
  283. 'JackMidiRawInputWriteQueue.cpp',
  284. 'JackMidiRawOutputWriteQueue.cpp',
  285. 'JackMidiReadQueue.cpp',
  286. 'JackMidiReceiveQueue.cpp',
  287. 'JackMidiSendQueue.cpp',
  288. 'JackMidiUtil.cpp',
  289. 'JackMidiWriteQueue.cpp',
  290. 'JackMetadata.cpp',
  291. ]
  292. if bld.env['IS_LINUX']:
  293. serverlib.source += [
  294. '../posix/JackSocketServerChannel.cpp',
  295. '../posix/JackSocketNotifyChannel.cpp',
  296. '../posix/JackSocketServerNotifyChannel.cpp',
  297. '../posix/JackNetUnixSocket.cpp',
  298. ]
  299. if bld.env['IS_FREEBSD']:
  300. serverlib.source += [
  301. '../posix/JackSocketServerChannel.cpp',
  302. '../posix/JackSocketNotifyChannel.cpp',
  303. '../posix/JackSocketServerNotifyChannel.cpp',
  304. '../posix/JackNetUnixSocket.cpp',
  305. ]
  306. if bld.env['IS_SUN']:
  307. serverlib.source += [
  308. '../posix/JackSocketServerChannel.cpp',
  309. '../posix/JackSocketNotifyChannel.cpp',
  310. '../posix/JackSocketServerNotifyChannel.cpp',
  311. '../posix/JackNetUnixSocket.cpp',
  312. ]
  313. if bld.env['IS_MACOSX']:
  314. serverlib.source += [
  315. '../posix/JackSocketServerChannel.cpp',
  316. '../posix/JackSocketNotifyChannel.cpp',
  317. '../posix/JackSocketServerNotifyChannel.cpp',
  318. '../posix/JackNetUnixSocket.cpp',
  319. ]
  320. if bld.env['IS_WINDOWS']:
  321. serverlib.source += [
  322. '../windows/JackMMCSS.cpp',
  323. '../windows/JackWinNamedPipe.cpp',
  324. '../windows/JackWinNamedPipeServerChannel.cpp',
  325. '../windows/JackWinNamedPipeServerNotifyChannel.cpp',
  326. '../windows/JackWinNamedPipeNotifyChannel.cpp',
  327. '../windows/JackNetWinSocket.cpp',
  328. ]
  329. if bld.env['IS_MACOSX']:
  330. serverlib.cnum = bld.env['JACK_API_VERSION']
  331. serverlib.vnum = bld.env['JACK_VERSION']
  332. elif not bld.env['IS_WINDOWS']:
  333. serverlib.vnum = bld.env['JACK_API_VERSION']
  334. if bld.env['IS_LINUX']:
  335. serverlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
  336. if bld.env['IS_MACOSX']:
  337. serverlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
  338. serverlib.env.append_value('LINKFLAGS', '-single_module')
  339. if bld.env['IS_SUN']:
  340. serverlib.env.append_value('LINKFLAGS', '-lnsl -lsocket')
  341. if bld.env['BUILD_NETLIB']:
  342. netlib = bld(features=['c', 'cxx', 'cxxshlib', 'cshlib'])
  343. if bld.env['IS_MACOSX']:
  344. netlib.framework = ['CoreAudio']
  345. netlib.defines = ['HAVE_CONFIG_H', 'SERVER_SIDE']
  346. netlib.includes = includes
  347. netlib.name = 'netlib'
  348. netlib.target = 'jacknet'+libsuffix
  349. netlib.install_path = '${LIBDIR}'
  350. netlib.use = ['SAMPLERATE', 'CELT', 'OPUS', 'PTHREAD']
  351. if bld.env['IS_WINDOWS']:
  352. netlib.use += ['WS2_32', 'WINMM']
  353. netlib.env['cxxshlib_PATTERN'] = 'lib%s.dll'
  354. netlib.env['cxxstlib_PATTERN'] = 'lib%s.a'
  355. netlib.env['implib_PATTERN'] = 'lib%s.dll.a'
  356. if staticbuild:
  357. netlib.env['SHLIB_MARKER'] = ''
  358. netlib.env.append_value('LINKFLAGS', ['-static-libstdc++', '--disable-auto-import'])
  359. netlib.env.append_value('LINKFLAGS', ['-Wl,--output-def,lib%s.def' % netlib.target])
  360. bld.install_files(netlib.install_path, [os.path.join(buildbindir, 'lib%s.def' % netlib.target)])
  361. elif not bld.env['IS_MACOSX']:
  362. netlib.use += ['RT']
  363. netlib.source = [
  364. 'JackNetAPI.cpp',
  365. 'JackNetInterface.cpp',
  366. 'JackNetTool.cpp',
  367. 'JackException.cpp',
  368. 'JackAudioAdapterInterface.cpp',
  369. 'JackLibSampleRateResampler.cpp',
  370. 'JackResampler.cpp',
  371. 'JackGlobals.cpp',
  372. 'ringbuffer.c']
  373. if bld.env['IS_LINUX']:
  374. netlib.source += [
  375. '../posix/JackNetUnixSocket.cpp',
  376. '../posix/JackPosixThread.cpp',
  377. '../posix/JackPosixMutex.cpp',
  378. '../linux/JackLinuxTime.c',
  379. ]
  380. netlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
  381. if bld.env['IS_FREEBSD']:
  382. netlib.source += [
  383. '../posix/JackNetUnixSocket.cpp',
  384. '../posix/JackPosixThread.cpp',
  385. '../posix/JackPosixMutex.cpp',
  386. '../linux/JackLinuxTime.c',
  387. ]
  388. netlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
  389. if bld.env['IS_SUN']:
  390. netlib.source += [
  391. '../posix/JackNetUnixSocket.cpp',
  392. '../posix/JackPosixThread.cpp',
  393. '../posix/JackPosixMutex.cpp',
  394. '../solaris/JackSolarisTime.c',
  395. ]
  396. netlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
  397. if bld.env['IS_MACOSX']:
  398. netlib.source += [
  399. '../posix/JackNetUnixSocket.cpp',
  400. '../posix/JackPosixThread.cpp',
  401. '../posix/JackPosixMutex.cpp',
  402. '../macosx/JackMachThread.mm',
  403. '../macosx/JackMachTime.c',
  404. ]
  405. netlib.env.append_value('LINKFLAGS', '-single_module')
  406. if bld.env['IS_WINDOWS']:
  407. netlib.source += [
  408. '../windows/JackNetWinSocket.cpp',
  409. '../windows/JackWinThread.cpp',
  410. '../windows/JackMMCSS.cpp',
  411. '../windows/JackWinTime.c',
  412. ]
  413. if bld.env['IS_MACOSX']:
  414. netlib.cnum = bld.env['JACK_API_VERSION']
  415. netlib.vnum = bld.env['JACK_VERSION']
  416. elif not bld.env['IS_WINDOWS']:
  417. netlib.vnum = bld.env['JACK_API_VERSION']
  418. create_jack_process_obj(bld, 'netmanager', 'JackNetManager.cpp', serverlib)
  419. create_jack_process_obj(bld, 'profiler', 'JackProfiler.cpp', serverlib)
  420. net_adapter_sources = [
  421. 'JackResampler.cpp',
  422. 'JackLibSampleRateResampler.cpp',
  423. 'JackAudioAdapter.cpp',
  424. 'JackAudioAdapterInterface.cpp',
  425. 'JackNetAdapter.cpp',
  426. ]
  427. if bld.env['BUILD_ADAPTER']:
  428. process = create_jack_process_obj(bld, 'netadapter', net_adapter_sources, serverlib)
  429. process.use += ['SAMPLERATE']
  430. audio_adapter_sources = [
  431. 'JackResampler.cpp',
  432. 'JackLibSampleRateResampler.cpp',
  433. 'JackAudioAdapter.cpp',
  434. 'JackAudioAdapterInterface.cpp',
  435. 'JackAudioAdapterFactory.cpp',
  436. ]
  437. if bld.env['BUILD_ADAPTER'] and bld.env['IS_MACOSX']:
  438. audio_adapter_sources += ['../macosx/coreaudio/JackCoreAudioAdapter.mm']
  439. process = create_jack_process_obj(
  440. bld,
  441. 'audioadapter',
  442. audio_adapter_sources,
  443. serverlib,
  444. framework=[
  445. 'CoreAudio',
  446. 'AudioUnit',
  447. 'AudioToolbox',
  448. 'CoreServices',
  449. ]
  450. )
  451. process.use += ['SAMPLERATE']
  452. if bld.env['BUILD_ADAPTER'] and bld.env['IS_LINUX'] and bld.env['BUILD_DRIVER_ALSA']:
  453. audio_adapter_sources += ['../linux/alsa/JackAlsaAdapter.cpp']
  454. process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
  455. process.use += ['ALSA', 'SAMPLERATE']
  456. if bld.env['BUILD_ADAPTER'] and (bld.env['IS_SUN'] or bld.env['IS_FREEBSD']):
  457. audio_adapter_sources += ['../solaris/oss/JackOSSAdapter.cpp', 'memops.c']
  458. process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
  459. process.use += 'SAMPLERATE'
  460. if bld.env['BUILD_ADAPTER'] and bld.env['IS_WINDOWS']:
  461. audio_adapter_sources += [
  462. '../windows/portaudio/JackPortAudioAdapter.cpp',
  463. '../windows/portaudio/JackPortAudioDevices.cpp',
  464. ]
  465. process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
  466. process.use += ['SAMPLERATE', 'PORTAUDIO']
  467. bld.install_files('${PREFIX}/include/jack', bld.path.ant_glob('jack/*.h'))
  468. # process jack.pc.in -> jack.pc
  469. bld(
  470. features='subst_pc',
  471. source='../jack.pc.in',
  472. target='jack.pc',
  473. install_path='${PKGCONFDIR}',
  474. INCLUDEDIR=os.path.normpath(bld.env['PREFIX'] + '/include'),
  475. CLIENTLIB=clientlib.target,
  476. SERVERLIB=serverlib.target,
  477. )