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.

314 lines
12KB

  1. #
  2. # Copyright (C) 2007 Arnold Krille
  3. # Copyright (C) 2007 Pieter Palmers
  4. #
  5. # This file originally was part of FFADO
  6. #
  7. # This program is free software: you can redistribute it and/or modify
  8. # it under the terms of the GNU General Public License as published by
  9. # the Free Software Foundation, either version 3 of the License, or
  10. # (at your option) any later version.
  11. #
  12. # This program is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. # GNU General Public License for more details.
  16. #
  17. # You should have received a copy of the GNU General Public License
  18. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  19. #
  20. import os
  21. import glob
  22. from string import Template
  23. Import( 'env' )
  24. # paths where include files can be found
  25. env.AppendUnique( CPPPATH=["#/", "#/common", "#/common/jack"] )
  26. #
  27. # Define the source files
  28. #
  29. srcfiles_common_serverlib = env.Split( '\
  30. JackActivationCount.cpp JackAPI.cpp JackAudioDriver.cpp JackClient.cpp JackConnectionManager.cpp \
  31. JackDriver.cpp JackEngine.cpp JackEngineControl.cpp JackError.c JackExternalClient.cpp JackFrameTimer.cpp \
  32. JackFreewheelDriver.cpp JackGlobalsServer.cpp JackGraphManager.cpp JackInternalClient.cpp JackPort.cpp JackPosixSemaphore.cpp \
  33. JackPosixThread.cpp JackFifo.cpp JackLoopbackDriver.cpp JackPortType.cpp JackAudioPort.cpp JackMidiPort.cpp \
  34. JackServer.cpp JackShmMem.cpp JackThreadedDriver.cpp shm.c JackSocket.cpp JackSocketServerChannel.cpp JackSocketNotifyChannel.cpp \
  35. JackSocketServerNotifyChannel.cpp JackTime.c JackServerAPI.cpp JackGlobals.cpp JackDriverLoader.cpp JackDebugClient.cpp \
  36. JackTransportEngine.cpp JackServerGlobals.cpp JackServerLaunch.cpp timestamps.c JackTools.cpp \
  37. ')
  38. # FIXME: this is not pretty
  39. srcfiles_common_serverlib.append('#/example-clients/internal_metro.cpp')
  40. srcfiles_common_clientlib = env.Split( '\
  41. JackActivationCount.cpp JackAPI.cpp JackClient.cpp JackConnectionManager.cpp ringbuffer.c JackServerLaunch.cpp\
  42. JackError.c JackFrameTimer.cpp JackGlobalsClient.cpp JackGraphManager.cpp JackLibClient.cpp JackLibAPI.cpp JackPort.cpp JackPosixSemaphore.cpp \
  43. JackFifo.cpp JackPortType.cpp JackAudioPort.cpp JackMidiPort.cpp JackMidiAPI.cpp JackEngineControl.cpp JackPosixThread.cpp JackShmMem.cpp \
  44. shm.c JackSocket.cpp JackSocketClientChannel.cpp JackTime.c JackGlobals.cpp JackDebugClient.cpp JackTransportEngine.cpp timestamps.c JackTools.cpp \
  45. ')
  46. srcfiles_common_wrapperlib = ['JackAPIWrapper.cpp', 'ringbuffer.c']
  47. jack_headers = env.Split( 'intclient.h jack.h midiport.h ringbuffer.h \
  48. statistics.h thread.h transport.h types.h')
  49. #
  50. # Start building
  51. #
  52. #pkgconfig = env.ScanReplace( "libjackmp.pc.in" )
  53. #env.Install( env['libdir'] + '/pkgconfig', pkgconfig )
  54. env.AppendUnique( LIBS=["rt", "pthread"] )
  55. # build the common stuff
  56. clientlib = env.SharedLibrary( "jackmp", srcfiles_common_clientlib )
  57. env.Install( "$libdir", clientlib )
  58. serverlib = env.SharedLibrary( "jackdmp", srcfiles_common_serverlib )
  59. env.Install( "$libdir", serverlib )
  60. wrapperlib = env.SharedLibrary( "jackwrapper", srcfiles_common_wrapperlib )
  61. env.Install( "$libdir", wrapperlib )
  62. # install the headers
  63. #if env['JACK_FLAGS']:
  64. #jack_include_dir = env['JACK_INCLUDEDIR']
  65. #if 'install' in COMMAND_LINE_TARGETS and os.path.isdir( jack_include_dir ):
  66. #if env.GetOption('clean'):
  67. #pass
  68. #else:
  69. #jack_old_includes_dir = env['includedir'] + '/jack_up'
  70. #print "moving old jack includes to %s..." % jack_old_includes_dir
  71. #env.Command(jack_old_includes_dir, jack_include_dir, Move("$TARGET", "$SOURCE"))
  72. for header in jack_headers:
  73. env.Alias("install", env.Install( env['includedir'] + '/jack', 'jack/' + header ))
  74. # install the libs
  75. env.Alias("install", env.Install(env['libdir'], serverlib))
  76. env.Alias("install", env.Install(env['libdir'], clientlib))
  77. env.Alias("install", env.Install(env['libdir'], wrapperlib))
  78. #jack_libdir = env['JACK_LIBDIR']
  79. #libjackdmp_location = env['libdir'] + '/libjackmp.so'
  80. #if 'install' in COMMAND_LINE_TARGETS and os.path.isdir( jack_libdir ):
  81. #if env.GetOption('clean'):
  82. ##note: is this executed before the actual uninstall?
  83. #lib_files = glob.glob(jack_libdir + '/libjack.so.*.up')
  84. #for old_name in lib_files:
  85. #new_name = old_name[:-3]
  86. #print "restoring old jack lib %s to %s..." % (old_name, new_name)
  87. #env.Command(Delete(new_name))
  88. #env.Command(new_name, old_name, Move("$TARGET", "$SOURCE"))
  89. #else:
  90. #lib_files = glob.glob(jack_libdir + '/libjack.so.*')
  91. #env.Alias("install", env.Install(env['libdir'], serverlib))
  92. #env.Alias("install", env.Install(env['libdir'], clientlib))
  93. #for old_name in lib_files:
  94. #new_name = old_name + '.up'
  95. #print "moving old jack lib %s to %s..." % (old_name, new_name)
  96. #env.Command(new_name, old_name, Move("$TARGET", "$SOURCE"))
  97. #print " linking to %s..." % (libjackdmp_location)
  98. #env.Command(old_name, libjackdmp_location, "ln -s $TARGET $SOURCE")
  99. #
  100. # Copyright (C) 2007 Arnold Krille
  101. # Copyright (C) 2007 Pieter Palmers
  102. #
  103. # This file originally was part of FFADO
  104. #
  105. # This program is free software: you can redistribute it and/or modify
  106. # it under the terms of the GNU General Public License as published by
  107. # the Free Software Foundation, either version 3 of the License, or
  108. # (at your option) any later version.
  109. #
  110. # This program is distributed in the hope that it will be useful,
  111. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  112. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  113. # GNU General Public License for more details.
  114. #
  115. # You should have received a copy of the GNU General Public License
  116. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  117. #
  118. import os
  119. import glob
  120. from string import Template
  121. Import( 'env' )
  122. # paths where include files can be found
  123. env.AppendUnique( CPPPATH=["#/", "#/common", "#/common/jack"] )
  124. #
  125. # Define the source files
  126. #
  127. srcfiles_common_serverlib = env.Split( '\
  128. JackActivationCount.cpp JackAPI.cpp JackAudioDriver.cpp JackClient.cpp JackConnectionManager.cpp \
  129. JackDriver.cpp JackEngine.cpp JackEngineControl.cpp JackError.c JackExternalClient.cpp JackFrameTimer.cpp \
  130. JackFreewheelDriver.cpp JackGlobalsServer.cpp JackGraphManager.cpp JackInternalClient.cpp JackPort.cpp JackPosixSemaphore.cpp \
  131. JackPosixThread.cpp JackFifo.cpp JackLoopbackDriver.cpp JackPortType.cpp JackAudioPort.cpp JackMidiPort.cpp \
  132. JackServer.cpp JackShmMem.cpp JackThreadedDriver.cpp shm.c JackSocket.cpp JackSocketServerChannel.cpp JackSocketNotifyChannel.cpp \
  133. JackSocketServerNotifyChannel.cpp JackTime.c JackServerAPI.cpp JackGlobals.cpp JackDriverLoader.cpp JackDebugClient.cpp \
  134. JackTransportEngine.cpp JackServerGlobals.cpp JackServerLaunch.cpp timestamps.c JackTools.cpp \
  135. ')
  136. # FIXME: this is not pretty
  137. srcfiles_common_serverlib.append('#/example-clients/internal_metro.cpp')
  138. srcfiles_common_clientlib = env.Split( '\
  139. JackActivationCount.cpp JackAPI.cpp JackClient.cpp JackConnectionManager.cpp ringbuffer.c JackServerLaunch.cpp\
  140. JackError.c JackFrameTimer.cpp JackGlobalsClient.cpp JackGraphManager.cpp JackLibClient.cpp JackLibAPI.cpp JackPort.cpp JackPosixSemaphore.cpp \
  141. JackFifo.cpp JackPortType.cpp JackAudioPort.cpp JackMidiPort.cpp JackMidiAPI.cpp JackEngineControl.cpp JackPosixThread.cpp JackShmMem.cpp \
  142. shm.c JackSocket.cpp JackSocketClientChannel.cpp JackTime.c JackGlobals.cpp JackDebugClient.cpp JackTransportEngine.cpp timestamps.c JackTools.cpp \
  143. ')
  144. srcfiles_common_wrapperlib = ['JackAPIWrapper.cpp', 'ringbuffer.c']
  145. jack_headers = env.Split( 'intclient.h jack.h midiport.h ringbuffer.h \
  146. statistics.h thread.h transport.h types.h')
  147. #
  148. # Start building
  149. #
  150. #pkgconfig = env.ScanReplace( "libjackmp.pc.in" )
  151. #env.Install( env['libdir'] + '/pkgconfig', pkgconfig )
  152. env.AppendUnique( LIBS=["rt", "pthread"] )
  153. # build the common stuff
  154. clientlib = env.SharedLibrary( "jackmp", srcfiles_common_clientlib )
  155. env.Install( "$libdir", clientlib )
  156. serverlib = env.SharedLibrary( "jackdmp", srcfiles_common_serverlib )
  157. env.Install( "$libdir", serverlib )
  158. wrapperlib = env.SharedLibrary( "jackwrapper", srcfiles_common_wrapperlib )
  159. env.Install( "$libdir", wrapperlib )
  160. # install the headers
  161. #if env['JACK_FLAGS']:
  162. #jack_include_dir = env['JACK_INCLUDEDIR']
  163. #if 'install' in COMMAND_LINE_TARGETS and os.path.isdir( jack_include_dir ):
  164. #if env.GetOption('clean'):
  165. #pass
  166. #else:
  167. #jack_old_includes_dir = env['includedir'] + '/jack_up'
  168. #print "moving old jack includes to %s..." % jack_old_includes_dir
  169. #env.Command(jack_old_includes_dir, jack_include_dir, Move("$TARGET", "$SOURCE"))
  170. for header in jack_headers:
  171. env.Alias("install", env.Install( env['includedir'] + '/jack', 'jack/' + header ))
  172. # install the libs
  173. env.Alias("install", env.Install(env['libdir'], serverlib))
  174. env.Alias("install", env.Install(env['libdir'], clientlib))
  175. env.Alias("install", env.Install(env['libdir'], wrapperlib))
  176. #jack_libdir = env['JACK_LIBDIR']
  177. #libjackdmp_location = env['libdir'] + '/libjackmp.so'
  178. #if 'install' in COMMAND_LINE_TARGETS and os.path.isdir( jack_libdir ):
  179. #if env.GetOption('clean'):
  180. ##note: is this executed before the actual uninstall?
  181. #lib_files = glob.glob(jack_libdir + '/libjack.so.*.up')
  182. #for old_name in lib_files:
  183. #new_name = old_name[:-3]
  184. #print "restoring old jack lib %s to %s..." % (old_name, new_name)
  185. #env.Command(Delete(new_name))
  186. #env.Command(new_name, old_name, Move("$TARGET", "$SOURCE"))
  187. #else:
  188. #lib_files = glob.glob(jack_libdir + '/libjack.so.*')
  189. #env.Alias("install", env.Install(env['libdir'], serverlib))
  190. #env.Alias("install", env.Install(env['libdir'], clientlib))
  191. #for old_name in lib_files:
  192. #new_name = old_name + '.up'
  193. #print "moving old jack lib %s to %s..." % (old_name, new_name)
  194. #env.Command(new_name, old_name, Move("$TARGET", "$SOURCE"))
  195. #print " linking to %s..." % (libjackdmp_location)
  196. #env.Command(old_name, libjackdmp_location, "ln -s $TARGET $SOURCE")
  197. # -*- python -*-
  198. import os
  199. import os.path
  200. import glob
  201. #Import('env')
  202. #CPPPATH = ['macosx', 'common']
  203. objects_common_server_lib=Split("""
  204. JackActivationCount.cpp
  205. JackAPI.cpp
  206. JackAudioDriver.cpp
  207. JackClient.cpp
  208. JackConnectionManager.cpp
  209. JackDriver.cpp
  210. JackEngine.cpp
  211. JackEngineTiming.cpp
  212. JackError.cpp
  213. JackExternalClient.cpp
  214. JackFrameTimer.cpp
  215. JackFreewheelDriver.o
  216. JackGlobalsServer.cpp
  217. JackGraphManager.cpp
  218. JackInternalClient.cpp
  219. JackPort.cpp
  220. JackPosixSemaphore.cpp
  221. JackPosixThread.cpp
  222. JackFifo.cpp
  223. JackLoopbackDriver.cpp
  224. JackServer.cpp
  225. JackShmMem.cpp
  226. JackThreadedDriver.cpp
  227. shm.c
  228. JackSocket.cpp
  229. JackSocketServerChannel.cpp
  230. JackSocketNotifyChannel.cpp
  231. JackSocketServerNotifyChannel.cpp
  232. JackTime.cpp
  233. JackServerAPI.cpp
  234. JackGlobals.cpp
  235. JackDriverLoader.cpp
  236. internal_metro.cpp
  237. JackDebugClient.cpp
  238. JackTransportEngine.cpp
  239. JackServerGlobals.o
  240. """)
  241. objects_common_client_lib =Split("""
  242. JackActivationCount.cpp
  243. JackAPI.cpp
  244. JackClient.cpp
  245. JackConnectionManager.cpp
  246. ringbuffer.cpp
  247. JackError.cpp
  248. JackFrameTimer.cpp
  249. JackGlobalsClient.cpp
  250. JackGraphManager.cpp
  251. JackLibClient.cpp
  252. JackLibAPI.cpp
  253. JackPort.cpp
  254. JackPosixSemaphore.cpp
  255. JackFifo.cpp
  256. JackPosixThread.cpp
  257. JackShmMem.cpp
  258. shm.c
  259. JackSocket.cpp
  260. JackSocketClientChannel.cpp
  261. JackTime.cpp
  262. JackGlobals.cpp
  263. JackDebugClient.cpp
  264. JackTransportEngine.cpp
  265. """)
  266. SharedLibrary('libjackdmp', objects_common_server_lib, CPPPATH = ['.','../macosx','jack'], CXXFLAGS=["-O3"])
  267. SharedLibrary('libjackmp', objects_common_client_lib, CPPPATH = ['.','../macosx','jack'], CXXFLAGS=["-O3"])