switch from bld.new_task_gen() to bld()
[jack2.git] / common / wscript
blobae1b835d02e7043194b201336d9054462a6b9042
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['shlib_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.uselib_local = 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 = ['cxx', 'cxxshlib'])
110 serverlib.defines = ['HAVE_CONFIG_H','SERVER_SIDE']
111 serverlib.includes = includes
112 serverlib.name = 'serverlib'
113 serverlib.target = 'jackserver'
114 serverlib.uselib = 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 = ['cxx', 'cxxshlib'])
192 netlib.defines = ['HAVE_CONFIG_H','SERVER_SIDE']
193 netlib.includes = includes
194 netlib.name = 'netlib'
195 netlib.target = 'jacknet'
196 netlib.uselib = ['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 'ringbuffer.c']
209 if bld.env['IS_LINUX']:
210 netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../linux/JackLinuxTime.c']
211 netlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
213 if bld.env['IS_SUN']:
214 netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../solaris/JackSolarisTime.c']
215 netlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
218 if bld.env['IS_MACOSX']:
219 netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../macosx/JackMachThread.cpp', '../macosx/JackMachTime.c']
220 netlib.env.append_value("LINKFLAGS", "-framework CoreAudio -single_module")
222 netlib.vnum = bld.env['JACK_API_VERSION']
224 clientlib = bld(features = ['cxx', 'cxxshlib'])
225 clientlib.defines = 'HAVE_CONFIG_H'
226 clientlib.uselib = uselib
227 clientlib.install_path = '${LIBDIR}'
228 if bld.env['BUILD_JACKDBUS'] == True and bld.env['BUILD_JACKD'] == False:
229 clientlib.uselib.append('DBUS-1')
230 clientlib.includes = includes
231 clientlib.name = 'clientlib'
232 clientlib.target = 'jack'
233 clientlib.source = [] + common_libsources
234 clientlib.source += [
235 'JackLibClient.cpp',
236 'JackLibAPI.cpp',
239 if bld.env['IS_LINUX']:
240 clientlib.source += [
241 '../posix/JackSocketClientChannel.cpp',
242 '../posix/JackPosixServerLaunch.cpp',
245 if bld.env['IS_SUN']:
246 clientlib.source += [
247 '../posix/JackSocketClientChannel.cpp',
248 '../posix/JackPosixServerLaunch.cpp',
251 if bld.env['IS_MACOSX']:
252 clientlib.source += [
253 '../posix/JackSocketClientChannel.cpp',
254 '../posix/JackPosixServerLaunch.cpp',
257 clientlib.vnum = bld.env['JACK_API_VERSION']
259 if bld.env['IS_LINUX']:
260 clientlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
262 if bld.env['IS_MACOSX']:
263 clientlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
264 clientlib.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc -arch x86_64")
265 #clientlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework vecLib -single_module -arch i386 -arch ppc -arch x86_64"
266 clientlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework vecLib -single_module")
267 clientlib.env.append_value("LINKFLAGS", "-compatibility_version 1 -current_version 1")
269 if bld.env['IS_SUN']:
270 clientlib.env.append_value("LINKFLAGS", "-lnsl -lsocket")
272 if bld.env['BUILD_WITH_32_64']:
273 print("create 32bit lib...")
274 clientlib32bit = clientlib.clone('lib32')
276 create_jack_process_obj(bld, 'netmanager', 'JackNetManager.cpp', serverlib)
278 create_jack_process_obj(bld, 'profiler', 'JackProfiler.cpp', serverlib)
280 net_adapter_sources = [
281 'JackResampler.cpp',
282 'JackLibSampleRateResampler.cpp',
283 'JackAudioAdapter.cpp',
284 'JackAudioAdapterInterface.cpp',
285 'JackNetAdapter.cpp',
288 if bld.env['BUILD_ADAPTER'] == True:
289 process = create_jack_process_obj(bld, 'netadapter', net_adapter_sources, serverlib)
290 process.uselib = 'SAMPLERATE'
292 audio_adapter_sources = [
293 'JackResampler.cpp',
294 'JackLibSampleRateResampler.cpp',
295 'JackAudioAdapter.cpp',
296 'JackAudioAdapterInterface.cpp',
297 'JackAudioAdapterFactory.cpp',
300 if bld.env['BUILD_ADAPTER'] and bld.env['IS_MACOSX']:
301 audio_adapter_sources += ['../macosx/coreaudio/JackCoreAudioAdapter.cpp']
302 process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
303 process.env.append_value("LINKFLAGS", "-framework CoreAudio -framework AudioUnit -framework AudioToolbox -framework CoreServices")
304 process.uselib = 'SAMPLERATE'
306 if bld.env['BUILD_ADAPTER'] and bld.env['IS_LINUX'] and bld.env['BUILD_DRIVER_ALSA']:
307 audio_adapter_sources += ['../linux/alsa/JackAlsaAdapter.cpp']
308 process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
309 process.uselib = ['ALSA', 'SAMPLERATE']
311 if bld.env['BUILD_ADAPTER'] and bld.env['IS_SUN']:
312 audio_adapter_sources += ['../solaris/oss/JackOSSAdapter.cpp', 'memops.c']
313 process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
314 process.uselib = 'SAMPLERATE'
316 #audio_adapter_sources += ['../windows/JackPortAudioAdapter.cpp']
317 #process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
319 bld.install_files('${PREFIX}/include/jack', bld.path.ant_glob('jack/*.h'))
321 # process jack.pc.in -> jack.pc
322 obj = bld.new_task_gen('subst_pc')
323 obj.source = '../jack.pc.in'
324 obj.target = 'jack.pc'
325 obj.dict = {'PREFIX': bld.env['PREFIX'],
326 'LIBDIR': bld.env['LIBDIR'],
327 'INCLUDEDIR': os.path.normpath(bld.env['PREFIX'] + '/include'),
328 'SERVERLIB': serverlib.target,
329 'JACK_VERSION': bld.env['JACK_VERSION'],
331 obj.install_path = '${LIBDIR}/pkgconfig/'