wscript: Fix naming of in-server components
[jack2.git] / common / wscript
blob807e5e25d5dd984d6beea5e8bd728eb8af7a2ae9
1 #! /usr/bin/env python
2 # encoding: utf-8
4 import Build
5 import re
6 import os
8 def configure(conf):
9 conf.check_cc(header_name='samplerate.h', define_name="HAVE_SAMPLERATE")
11 if conf.is_defined('HAVE_SAMPLERATE'):
12 conf.env['LIB_SAMPLERATE'] = ['samplerate']
14 conf.env['BUILD_NETLIB'] = conf.is_defined('HAVE_SAMPLERATE')
15 conf.env['BUILD_ADAPTER'] = conf.is_defined('HAVE_SAMPLERATE')
17 def create_jack_process_obj(bld, target, sources, uselib = None):
18 process = bld(features = ['cxx', 'cxxshlib'])
19 process.env['cxxshlib_PATTERN'] = '%s.so'
20 process.defines = ['HAVE_CONFIG_H','SERVER_SIDE']
21 if bld.env['IS_MACOSX']:
22 env_includes = ['../macosx', '../posix', '../macosx/coreaudio']
23 if bld.env['IS_LINUX']:
24 env_includes = ['../linux', '../posix', '../linux/alsa']
25 if bld.env['IS_SUN']:
26 env_includes = ['../solaris', '../posix', '../solaris/oss']
27 process.includes = ['.'] + env_includes + ['jack', '..']
28 process.name = target
29 process.target = target
30 process.source = sources
31 if bld.env['IS_LINUX']:
32 process.env.append_value("CPPFLAGS", "-fvisibility=hidden")
33 if bld.env['IS_MACOSX']:
34 process.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc -arch x86_64")
35 #process.env.append_value("LINKFLAGS", "-arch i386 -arch ppc -arch x86_64")
36 process.env.append_value("CPPFLAGS", "-fvisibility=hidden")
37 process.install_path = '${ADDON_DIR}/'
38 process.use = [uselib.name]
39 return process
41 def build(bld):
42 common_libsources = [
43 'JackActivationCount.cpp',
44 'JackAPI.cpp',
45 'JackClient.cpp',
46 'JackConnectionManager.cpp',
47 'ringbuffer.c',
48 'JackError.cpp',
49 'JackException.cpp',
50 'JackFrameTimer.cpp',
51 'JackGraphManager.cpp',
52 'JackPort.cpp',
53 'JackPortType.cpp',
54 'JackAudioPort.cpp',
55 'JackMidiPort.cpp',
56 'JackMidiAPI.cpp',
57 'JackEngineControl.cpp',
58 'JackShmMem.cpp',
59 'JackGenericClientChannel.cpp',
60 'shm.c',
61 'JackGlobals.cpp',
62 'JackDebugClient.cpp',
63 'JackTransportEngine.cpp',
64 'timestamps.c',
65 'JackTools.cpp',
66 'JackMessageBuffer.cpp',
67 'JackEngineProfiling.cpp',
70 includes = ['.', './jack', '..']
71 uselib = ["PTHREAD", "CELT"]
73 if bld.env['IS_LINUX']:
74 common_libsources += [
75 '../posix/JackPosixThread.cpp',
76 '../posix/JackPosixSemaphore.cpp',
77 '../posix/JackPosixProcessSync.cpp',
78 '../posix/JackPosixMutex.cpp',
79 '../posix/JackSocket.cpp',
80 '../linux/JackLinuxTime.c',
82 includes = ['../linux', '../posix'] + includes
83 uselib.append('RT')
84 uselib.append('DL')
86 if bld.env['IS_SUN']:
87 common_libsources += [
88 '../posix/JackPosixThread.cpp',
89 '../posix/JackFifo.cpp',
90 '../posix/JackPosixProcessSync.cpp',
91 '../posix/JackPosixMutex.cpp',
92 '../posix/JackSocket.cpp',
93 '../solaris/JackSolarisTime.c',
95 includes = ['../solaris', '../posix'] + includes
96 uselib.append('RT')
98 if bld.env['IS_MACOSX']:
99 common_libsources += [
100 '../posix/JackPosixProcessSync.cpp',
101 '../posix/JackPosixThread.cpp',
102 '../macosx/JackMachThread.cpp',
103 '../macosx/JackMachSemaphore.cpp',
104 '../posix/JackSocket.cpp',
105 '../macosx/JackMachTime.c',
107 includes = ['../macosx', '../macosx/RPC', '../posix'] + includes
109 serverlib = bld(features = ['c', 'cxx', 'cxxshlib', 'cshlib'])
110 serverlib.defines = ['HAVE_CONFIG_H','SERVER_SIDE']
111 serverlib.includes = includes
112 serverlib.name = 'serverlib'
113 serverlib.target = 'jackserver'
114 serverlib.use = uselib
115 serverlib.install_path = '${LIBDIR}'
116 serverlib.source = [] + common_libsources
117 serverlib.source += [
118 'JackAudioDriver.cpp',
119 'JackTimedDriver.cpp',
120 'JackMidiDriver.cpp',
121 'JackDriver.cpp',
122 'JackEngine.cpp',
123 'JackExternalClient.cpp',
124 'JackFreewheelDriver.cpp',
125 'JackInternalClient.cpp',
126 'JackServer.cpp',
127 'JackThreadedDriver.cpp',
128 'JackRestartThreadedDriver.cpp',
129 'JackWaitThreadedDriver.cpp',
130 'JackServerAPI.cpp',
131 'JackDriverLoader.cpp',
132 'JackServerGlobals.cpp',
133 'JackControlAPI.cpp',
134 'JackNetTool.cpp',
135 'JackNetInterface.cpp',
136 'JackArgParser.cpp',
137 'JackRequestDecoder.cpp',
138 'JackMidiAsyncQueue.cpp',
139 'JackMidiAsyncWaitQueue.cpp',
140 'JackMidiBufferReadQueue.cpp',
141 'JackMidiBufferWriteQueue.cpp',
142 'JackMidiRawInputWriteQueue.cpp',
143 'JackMidiRawOutputWriteQueue.cpp',
144 'JackMidiReadQueue.cpp',
145 'JackMidiReceiveQueue.cpp',
146 'JackMidiSendQueue.cpp',
147 'JackMidiUtil.cpp',
148 'JackMidiWriteQueue.cpp'
151 if bld.env['IS_LINUX']:
152 serverlib.source += [
153 '../posix/JackSocketServerChannel.cpp',
154 '../posix/JackSocketNotifyChannel.cpp',
155 '../posix/JackSocketServerNotifyChannel.cpp',
156 '../posix/JackNetUnixSocket.cpp',
159 if bld.env['IS_SUN']:
160 serverlib.source += [
161 '../posix/JackSocketServerChannel.cpp',
162 '../posix/JackSocketNotifyChannel.cpp',
163 '../posix/JackSocketServerNotifyChannel.cpp',
164 '../posix/JackNetUnixSocket.cpp',
167 if bld.env['IS_MACOSX']:
168 serverlib.source += [
169 '../posix/JackSocketServerChannel.cpp',
170 '../posix/JackSocketNotifyChannel.cpp',
171 '../posix/JackSocketServerNotifyChannel.cpp',
172 '../posix/JackNetUnixSocket.cpp',
175 serverlib.vnum = bld.env['JACK_API_VERSION']
177 if bld.env['IS_LINUX']:
178 serverlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
180 if bld.env['IS_MACOSX']:
181 serverlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
182 serverlib.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc -arch x86_64")
183 #serverlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework vecLib -single_module -arch i386 -arch ppc -arch x86_64")
184 serverlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework CoreFoundation -framework vecLib -single_module")
185 serverlib.env.append_value("LINKFLAGS", "-compatibility_version 1 -current_version 1")
187 if bld.env['IS_SUN']:
188 serverlib.env.append_value("LINKFLAGS", "-lnsl -lsocket")
190 if bld.env['BUILD_NETLIB'] == True:
191 netlib = bld(features = ['c', 'cxx', 'cxxshlib', 'cshlib'])
192 netlib.defines = ['HAVE_CONFIG_H','SERVER_SIDE']
193 netlib.includes = includes
194 netlib.name = 'netlib'
195 netlib.target = 'jacknet'
196 netlib.use = ['SAMPLERATE', 'CELT', 'PTHREAD' , 'RT']
197 netlib.install_path = '${LIBDIR}'
198 netlib.source = [
199 'JackNetAPI.cpp',
200 'JackNetInterface.cpp',
201 'JackNetTool.cpp',
202 'JackException.cpp',
203 'JackAudioAdapterInterface.cpp',
204 'JackLibSampleRateResampler.cpp',
205 'JackResampler.cpp',
206 'JackGlobals.cpp',
207 '../posix/JackPosixMutex.cpp',
208 'ringbuffer.c']
210 if bld.env['IS_LINUX']:
211 netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../linux/JackLinuxTime.c']
212 netlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
214 if bld.env['IS_SUN']:
215 netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../solaris/JackSolarisTime.c']
216 netlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
219 if bld.env['IS_MACOSX']:
220 netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../macosx/JackMachThread.cpp', '../macosx/JackMachTime.c']
221 netlib.env.append_value("LINKFLAGS", "-framework CoreAudio -single_module")
223 netlib.vnum = bld.env['JACK_API_VERSION']
225 clientlib = bld(features = ['c', 'cxx', 'cxxshlib', 'cshlib'])
226 clientlib.defines = 'HAVE_CONFIG_H'
227 clientlib.use = uselib
228 clientlib.install_path = '${LIBDIR}'
229 if bld.env['BUILD_JACKDBUS'] == True and bld.env['BUILD_JACKD'] == False:
230 clientlib.use.append('DBUS-1')
231 clientlib.includes = includes
232 clientlib.name = 'clientlib'
233 clientlib.target = 'jack'
234 clientlib.source = [] + common_libsources
235 clientlib.source += [
236 'JackLibClient.cpp',
237 'JackLibAPI.cpp',
240 if bld.env['IS_LINUX']:
241 clientlib.source += [
242 '../posix/JackSocketClientChannel.cpp',
243 '../posix/JackPosixServerLaunch.cpp',
246 if bld.env['IS_SUN']:
247 clientlib.source += [
248 '../posix/JackSocketClientChannel.cpp',
249 '../posix/JackPosixServerLaunch.cpp',
252 if bld.env['IS_MACOSX']:
253 clientlib.source += [
254 '../posix/JackSocketClientChannel.cpp',
255 '../posix/JackPosixServerLaunch.cpp',
258 clientlib.vnum = bld.env['JACK_API_VERSION']
260 if bld.env['IS_LINUX']:
261 clientlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
263 if bld.env['IS_MACOSX']:
264 clientlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
265 clientlib.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc -arch x86_64")
266 #clientlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework vecLib -single_module -arch i386 -arch ppc -arch x86_64"
267 clientlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework vecLib -single_module")
268 clientlib.env.append_value("LINKFLAGS", "-compatibility_version 1 -current_version 1")
270 if bld.env['IS_SUN']:
271 clientlib.env.append_value("LINKFLAGS", "-lnsl -lsocket")
273 if bld.env['BUILD_WITH_32_64']:
274 print("create 32bit lib...")
275 clientlib32bit = clientlib.clone('lib32')
277 create_jack_process_obj(bld, 'netmanager', 'JackNetManager.cpp', serverlib)
279 create_jack_process_obj(bld, 'profiler', 'JackProfiler.cpp', serverlib)
281 net_adapter_sources = [
282 'JackResampler.cpp',
283 'JackLibSampleRateResampler.cpp',
284 'JackAudioAdapter.cpp',
285 'JackAudioAdapterInterface.cpp',
286 'JackNetAdapter.cpp',
289 if bld.env['BUILD_ADAPTER'] == True:
290 process = create_jack_process_obj(bld, 'netadapter', net_adapter_sources, serverlib)
291 process.use = 'SAMPLERATE'
293 audio_adapter_sources = [
294 'JackResampler.cpp',
295 'JackLibSampleRateResampler.cpp',
296 'JackAudioAdapter.cpp',
297 'JackAudioAdapterInterface.cpp',
298 'JackAudioAdapterFactory.cpp',
301 if bld.env['BUILD_ADAPTER'] and bld.env['IS_MACOSX']:
302 audio_adapter_sources += ['../macosx/coreaudio/JackCoreAudioAdapter.cpp']
303 process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
304 process.env.append_value("LINKFLAGS", "-framework CoreAudio -framework AudioUnit -framework AudioToolbox -framework CoreServices")
305 process.use = 'SAMPLERATE'
307 if bld.env['BUILD_ADAPTER'] and bld.env['IS_LINUX'] and bld.env['BUILD_DRIVER_ALSA']:
308 audio_adapter_sources += ['../linux/alsa/JackAlsaAdapter.cpp']
309 process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
310 process.use = ['ALSA', 'SAMPLERATE']
312 if bld.env['BUILD_ADAPTER'] and bld.env['IS_SUN']:
313 audio_adapter_sources += ['../solaris/oss/JackOSSAdapter.cpp', 'memops.c']
314 process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
315 process.use = 'SAMPLERATE'
317 #audio_adapter_sources += ['../windows/JackPortAudioAdapter.cpp']
318 #process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
320 bld.install_files('${PREFIX}/include/jack', bld.path.ant_glob('jack/*.h'))
322 # process jack.pc.in -> jack.pc
323 obj = bld(
324 features = 'subst_pc',
325 source = '../jack.pc.in',
326 target = 'jack.pc',
327 install_path = '${LIBDIR}/pkgconfig/',
328 INCLUDEDIR = os.path.normpath(bld.env['PREFIX'] + '/include'),
329 SERVERLIB = serverlib.target,