wscript 12 KB
Newer Older
1
2
3
#! /usr/bin/env python
# encoding: utf-8

4
import Build
nedko's avatar
nedko committed
5
6
7
import re
import os

8
def configure(conf):
9
    conf.check_cc(header_name='samplerate.h', define_name="HAVE_SAMPLERATE")
10
11
12
13
14
15
   
    if conf.is_defined('HAVE_SAMPLERATE'):
        conf.env['LIB_SAMPLERATE'] = ['samplerate']

    conf.env['BUILD_ADAPTER'] = conf.is_defined('HAVE_SAMPLERATE')

sletz's avatar
sletz committed
16
def create_jack_process_obj(bld, target, sources, uselib = None):
17
    process = bld.new_task_gen('cxx', 'shlib')
sletz's avatar
sletz committed
18
    process.env['shlib_PATTERN'] = '%s.so'
19
    process.defines  = ['HAVE_CONFIG_H','SERVER_SIDE']
20
    if bld.env['IS_MACOSX']:
21
        env_includes = ['../macosx', '../posix', '../macosx/coreaudio']
22
    if bld.env['IS_LINUX']:
23
	env_includes = ['../linux', '../posix', '../linux/alsa']
sletz's avatar
sletz committed
24
25
    if bld.env['IS_SUN']:
        env_includes = ['../solaris', '../posix', '../solaris/oss']
26
    process.includes = ['.'] + env_includes + ['jack', '..']
sletz's avatar
sletz committed
27
28
29
    process.name     = target
    process.target   = target
    process.source   = sources
sletz's avatar
sletz committed
30
31
    if bld.env['IS_LINUX']:
        process.env.append_value("CPPFLAGS", "-fvisibility=hidden")
32
    if bld.env['IS_MACOSX']:
sletz's avatar
sletz committed
33
34
        process.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc")
        #process.env.append_value("LINKFLAGS", "-arch i386 -arch ppc")
sletz's avatar
sletz committed
35
        process.env.append_value("CPPFLAGS", "-fvisibility=hidden")
36
    process.install_path = '${ADDON_DIR}/'
sletz's avatar
sletz committed
37
    process.uselib_local = uselib.name
sletz's avatar
sletz committed
38
39
    return process

40
def build(bld):
nedko's avatar
nedko committed
41
    common_libsources = [
42
43
44
45
        'JackActivationCount.cpp',
        'JackAPI.cpp',
        'JackClient.cpp',
        'JackConnectionManager.cpp',
nedko's avatar
nedko committed
46
        'ringbuffer.c',
47
48
49
50
51
52
53
54
        'JackError.cpp',
        'JackFrameTimer.cpp',
        'JackGraphManager.cpp',
        'JackPort.cpp',
        'JackPortType.cpp',
        'JackAudioPort.cpp',
        'JackMidiPort.cpp',
        'JackMidiAPI.cpp',
nedko's avatar
nedko committed
55
        'JackEngineControl.cpp',
56
57
58
59
60
61
62
63
        'JackShmMem.cpp',
        'shm.c',
        'JackGlobals.cpp',
        'JackDebugClient.cpp',
        'JackTransportEngine.cpp',
        'timestamps.c',
        'JackTools.cpp',
        'JackMessageBuffer.cpp',
sletz's avatar
sletz committed
64
        'JackEngineProfiling.cpp',
65
        ]
66
67

    includes = ['.', './jack', '..']
sletz's avatar
sletz committed
68
    uselib = ["PTHREAD", "CELT"]
69

70
    if bld.env['IS_LINUX']:
71
        common_libsources += [
72
73
74
75
76
            '../posix/JackPosixThread.cpp',
            '../posix/JackPosixSemaphore.cpp',
            '../posix/JackFifo.cpp',
            '../posix/JackProcessSync.cpp',
            '../posix/JackSocket.cpp',
sletz's avatar
sletz committed
77
            '../linux/JackLinuxTime.c',
78
            ]
79
        includes = ['../linux', '../posix'] + includes
80
        uselib.append('RT')
81
        uselib.append('DL')
82

sletz's avatar
sletz committed
83
84
85
86
87
88
89
90
91
92
93
    if bld.env['IS_SUN']:
        common_libsources += [
           '../posix/JackPosixThread.cpp',
           '../posix/JackFifo.cpp',
           '../posix/JackProcessSync.cpp',
           '../posix/JackSocket.cpp',
           '../solaris/JackSolarisTime.c',
           ]
        includes = ['../solaris', '../posix'] + includes
        uselib.append('RT')

94
    if bld.env['IS_MACOSX']:
95
        common_libsources += [
96
97
            '../posix/JackProcessSync.cpp',
            '../posix/JackPosixThread.cpp',
98
            '../macosx/JackMachThread.cpp',
99
            '../macosx/JackMachSemaphore.cpp',
sletz's avatar
sletz committed
100
            '../posix/JackSocket.cpp',
sletz's avatar
sletz committed
101
            '../macosx/JackMachTime.c',
102
            ]
103
        includes = ['../macosx', '../macosx/RPC', '../posix'] + includes
104

105
    serverlib = bld.new_task_gen('cxx', 'shlib')
nedko's avatar
nedko committed
106
    serverlib.features.append('cc')
107
    serverlib.defines = ['HAVE_CONFIG_H','SERVER_SIDE']
108
    serverlib.includes = includes
nedko's avatar
nedko committed
109
110
    serverlib.name         = 'serverlib'
    serverlib.target       = 'jackserver'
111
    serverlib.uselib = uselib
112
    serverlib.install_path = '${LIBDIR}'
nedko's avatar
nedko committed
113
114
115
    serverlib.source = [] + common_libsources
    serverlib.source += [
        'JackAudioDriver.cpp',
sletz's avatar
sletz committed
116
        'JackMidiDriver.cpp',
nedko's avatar
nedko committed
117
118
119
120
121
122
123
        'JackDriver.cpp',
        'JackEngine.cpp',
        'JackExternalClient.cpp',
        'JackFreewheelDriver.cpp',
        'JackInternalClient.cpp',
        'JackServer.cpp',
        'JackThreadedDriver.cpp',
124
125
        'JackRestartThreadedDriver.cpp',
        'JackWaitThreadedDriver.cpp',
nedko's avatar
nedko committed
126
127
128
        'JackServerAPI.cpp',
        'JackDriverLoader.cpp',
        'JackServerGlobals.cpp',
sletz's avatar
sletz committed
129
        'JackControlAPI.cpp',
130
        'JackNetTool.cpp',
moret's avatar
moret committed
131
        'JackNetInterface.cpp',
132
        'JackArgParser.cpp',
sletz's avatar
sletz committed
133
134
135
136
137
138
139
140
141
142
143
        'JackMidiAsyncQueue.cpp',
        'JackMidiAsyncWaitQueue.cpp',
        'JackMidiBufferReadQueue.cpp',
        'JackMidiBufferWriteQueue.cpp',
        'JackMidiRawInputWriteQueue.cpp',
        'JackMidiRawOutputWriteQueue.cpp',
        'JackMidiReadQueue.cpp',
        'JackMidiReceiveQueue.cpp',
        'JackMidiSendQueue.cpp',
        'JackMidiUtil.cpp',
        'JackMidiWriteQueue.cpp'
nedko's avatar
nedko committed
144
        ]
145

146
    if bld.env['IS_LINUX']:
147
        serverlib.source += [
148
149
150
151
            '../posix/JackSocketServerChannel.cpp',
            '../posix/JackSocketNotifyChannel.cpp',
            '../posix/JackSocketServerNotifyChannel.cpp',
            '../posix/JackNetUnixSocket.cpp',
152
153
            ]

sletz's avatar
sletz committed
154
155
156
157
158
159
160
161
    if bld.env['IS_SUN']:
        serverlib.source += [
            '../posix/JackSocketServerChannel.cpp',
            '../posix/JackSocketNotifyChannel.cpp',
            '../posix/JackSocketServerNotifyChannel.cpp',
            '../posix/JackNetUnixSocket.cpp',
            ]

162
    if bld.env['IS_MACOSX']:
163
        serverlib.source += [
sletz's avatar
sletz committed
164
165
166
            '../posix/JackSocketServerChannel.cpp',
            '../posix/JackSocketNotifyChannel.cpp',
            '../posix/JackSocketServerNotifyChannel.cpp',
167
            '../posix/JackNetUnixSocket.cpp',
168
169
            ]

170
    serverlib.vnum = bld.env['JACK_API_VERSION']
sletz's avatar
sletz committed
171
172
173
174

    if bld.env['IS_LINUX']:
        serverlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")

175
    if bld.env['IS_MACOSX']:
sletz's avatar
sletz committed
176
        serverlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
sletz's avatar
sletz committed
177
        serverlib.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc")
sletz's avatar
sletz committed
178
        #serverlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework vecLib -single_module -arch i386 -arch ppc")
sletz's avatar
sletz committed
179
        serverlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework CoreFoundation -framework vecLib -single_module")
sletz's avatar
sletz committed
180
181
182
183
        serverlib.env.append_value("LINKFLAGS", "-compatibility_version 1 -current_version 1")

    if bld.env['IS_SUN']:
        serverlib.env.append_value("LINKFLAGS", "-lnsl -lsocket")
nedko's avatar
nedko committed
184

185
186
187
188
189
190
    netlib = bld.new_task_gen('cxx', 'shlib')
    netlib.features.append('cc')
    netlib.defines = ['HAVE_CONFIG_H','SERVER_SIDE']
    netlib.includes = includes
    netlib.name         = 'netlib'
    netlib.target       = 'jacknet'
sletz's avatar
sletz committed
191
    netlib.uselib = ['SAMPLERATE', 'CELT']
192
    netlib.install_path = '${LIBDIR}'
sletz's avatar
sletz committed
193
194
195
196
197
198
    netlib.source = ['JackNetAPI.cpp', 
		'JackNetInterface.cpp', 
		'JackNetTool.cpp', 
		'JackAudioAdapterInterface.cpp', 
		'JackLibSampleRateResampler.cpp',
		'JackResampler.cpp', 
sletz's avatar
sletz committed
199
                'JackGlobals.cpp',
sletz's avatar
sletz committed
200
		'ringbuffer.c']
201
202

    if bld.env['IS_LINUX']:
sletz's avatar
sletz committed
203
        netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../linux/JackLinuxTime.c']
204
205
206
        netlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")

    if bld.env['IS_SUN']:
sletz's avatar
sletz committed
207
        netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../solaris/JackSolarisTime.c']
208
209
210
211
212
213
214
215
216
        netlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
       

    if bld.env['IS_MACOSX']:
        netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../macosx/JackMachThread.cpp', '../macosx/JackMachTime.c']
	netlib.env.append_value("LINKFLAGS", "-framework CoreAudio -single_module")

    netlib.vnum = bld.env['JACK_API_VERSION']

217
    clientlib = bld.new_task_gen('cxx', 'shlib')
nedko's avatar
nedko committed
218
219
    clientlib.features.append('cc')
    clientlib.defines = 'HAVE_CONFIG_H'
220
    clientlib.uselib = uselib
221
    clientlib.install_path = '${LIBDIR}'
sletz's avatar
sletz committed
222
    if bld.env['BUILD_JACKDBUS'] == True and bld.env['BUILD_JACKD'] == False:
nedko's avatar
nedko committed
223
        clientlib.uselib.append('DBUS-1')
224
    clientlib.includes = includes
nedko's avatar
nedko committed
225
226
227
228
229
230
231
    clientlib.name         = 'clientlib'
    clientlib.target       = 'jack'
    clientlib.source = [] + common_libsources
    clientlib.source += [
        'JackLibClient.cpp',
        'JackLibAPI.cpp',
        ]
232

233
    if bld.env['IS_LINUX']:
234
        clientlib.source += [
235
            '../posix/JackSocketClientChannel.cpp',
sletz's avatar
sletz committed
236
            '../posix/JackPosixServerLaunch.cpp',
237
238
            ]

sletz's avatar
sletz committed
239
240
241
242
243
244
    if bld.env['IS_SUN']:
        clientlib.source += [
            '../posix/JackSocketClientChannel.cpp',
            '../posix/JackPosixServerLaunch.cpp',
            ]

245
    if bld.env['IS_MACOSX']:
246
        clientlib.source += [
sletz's avatar
sletz committed
247
            '../posix/JackSocketClientChannel.cpp',
sletz's avatar
sletz committed
248
            '../posix/JackPosixServerLaunch.cpp',
249
250
            ]

251
    clientlib.vnum = bld.env['JACK_API_VERSION']
sletz's avatar
sletz committed
252
253
254
255

    if bld.env['IS_LINUX']:
        clientlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
    
256
    if bld.env['IS_MACOSX']:
sletz's avatar
sletz committed
257
        clientlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
sletz's avatar
sletz committed
258
        clientlib.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc")
sletz's avatar
sletz committed
259
260
        #clientlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework vecLib -single_module -arch i386 -arch ppc"
        clientlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework vecLib -single_module")
sletz's avatar
sletz committed
261
        clientlib.env.append_value("LINKFLAGS", "-compatibility_version 1 -current_version 1")
262

sletz's avatar
sletz committed
263
264
265
    if bld.env['IS_SUN']:
        clientlib.env.append_value("LINKFLAGS", "-lnsl -lsocket")

sletz's avatar
sletz committed
266
267
268
269
    if bld.env['BUILD_WITH_32_64']:
        print "create 32bit lib..."
        clientlib32bit = clientlib.clone('lib32')
  
sletz's avatar
sletz committed
270
271
    create_jack_process_obj(bld, 'netmanager', 'JackNetManager.cpp', serverlib)

sletz's avatar
sletz committed
272
273
    create_jack_process_obj(bld, 'profiler', 'JackProfiler.cpp', serverlib)

274
    net_adapter_sources = [
sletz's avatar
sletz committed
275
276
        'JackResampler.cpp',
        'JackLibSampleRateResampler.cpp',
277
        'JackAudioAdapter.cpp',
278
279
280
281
        'JackAudioAdapterInterface.cpp',
        'JackNetAdapter.cpp',
        ]

282
    if bld.env['BUILD_ADAPTER'] == True:
283
284
        process = create_jack_process_obj(bld, 'netadapter', net_adapter_sources, serverlib)
        process.uselib = 'SAMPLERATE'
285
286
287
288

    audio_adapter_sources = [
        'JackResampler.cpp',
        'JackLibSampleRateResampler.cpp',
289
        'JackAudioAdapter.cpp',
sletz's avatar
sletz committed
290
        'JackAudioAdapterInterface.cpp',
291
        'JackAudioAdapterFactory.cpp',
sletz's avatar
sletz committed
292
         ]
sletz's avatar
sletz committed
293

294
    if bld.env['BUILD_ADAPTER'] and bld.env['IS_MACOSX']:
295
         audio_adapter_sources += ['../macosx/coreaudio/JackCoreAudioAdapter.cpp']
296
         process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
297
298
         process.env.append_value("LINKFLAGS", "-framework CoreAudio -framework AudioUnit -framework AudioToolbox -framework CoreServices")
         process.uselib = 'SAMPLERATE'
moret's avatar
moret committed
299

sletz's avatar
sletz committed
300
    if bld.env['BUILD_ADAPTER'] and bld.env['IS_LINUX'] and bld.env['BUILD_DRIVER_ALSA']:
301
302
         audio_adapter_sources += ['../linux/alsa/JackAlsaAdapter.cpp']
         process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
303
         process.uselib = ['ALSA', 'SAMPLERATE']
moret's avatar
moret committed
304

sletz's avatar
sletz committed
305
306
307
308
309
    if bld.env['BUILD_ADAPTER'] and bld.env['IS_SUN']:
         audio_adapter_sources += ['../solaris/oss/JackOSSAdapter.cpp', 'memops.c']
         process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
         process.uselib = 'SAMPLERATE'

310
311
    #audio_adapter_sources += ['../windows/JackPortAudioAdapter.cpp']
    #process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
moret's avatar
moret committed
312

313
    bld.install_files('${PREFIX}/include/jack', 'jack/*.h')
nedko's avatar
nedko committed
314
315

    # process jack.pc.in -> jack.pc
316
317
    import misc
    obj = bld.new_task_gen('subst')
nedko's avatar
nedko committed
318
319
    obj.source = '../jack.pc.in'
    obj.target = 'jack.pc'
320
    obj.dict = {'PREFIX': bld.env['PREFIX'],
321
                'LIBDIR': bld.env['LIBDIR'],
322
                'INCLUDEDIR': os.path.normpath(bld.env['PREFIX'] + '/include'),
nedko's avatar
nedko committed
323
                'SERVERLIB': serverlib.target,
324
                'JACK_VERSION': bld.env['JACK_VERSION'],
nedko's avatar
nedko committed
325
                }
326
    obj.install_path = '${LIBDIR}/pkgconfig/'
327
    obj.fun = misc.subst_func