wscript 11.6 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
68
69

    includes = ['.', './jack', '..']
    uselib = ["PTHREAD"]

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
        'JackPhysicalMidiInput.cpp',
        'JackPhysicalMidiOutput.cpp',
nedko's avatar
nedko committed
135
        ]
136

137
    if bld.env['IS_LINUX']:
138
        serverlib.source += [
139
140
141
142
            '../posix/JackSocketServerChannel.cpp',
            '../posix/JackSocketNotifyChannel.cpp',
            '../posix/JackSocketServerNotifyChannel.cpp',
            '../posix/JackNetUnixSocket.cpp',
143
144
            ]

sletz's avatar
sletz committed
145
146
147
148
149
150
151
152
    if bld.env['IS_SUN']:
        serverlib.source += [
            '../posix/JackSocketServerChannel.cpp',
            '../posix/JackSocketNotifyChannel.cpp',
            '../posix/JackSocketServerNotifyChannel.cpp',
            '../posix/JackNetUnixSocket.cpp',
            ]

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

161
    serverlib.vnum = bld.env['JACK_API_VERSION']
sletz's avatar
sletz committed
162
163
164
165

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

166
    if bld.env['IS_MACOSX']:
sletz's avatar
sletz committed
167
        serverlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
sletz's avatar
sletz committed
168
        serverlib.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc")
sletz's avatar
sletz committed
169
        #serverlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework vecLib -single_module -arch i386 -arch ppc")
sletz's avatar
sletz committed
170
        serverlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework CoreFoundation -framework vecLib -single_module")
sletz's avatar
sletz committed
171
172
173
174
        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
175

176
177
178
179
180
181
    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
182
    netlib.uselib = 'SAMPLERATE'
183
    netlib.install_path = '${LIBDIR}'
sletz's avatar
sletz committed
184
185
186
187
188
189
    netlib.source = ['JackNetAPI.cpp', 
		'JackNetInterface.cpp', 
		'JackNetTool.cpp', 
		'JackAudioAdapterInterface.cpp', 
		'JackLibSampleRateResampler.cpp',
		'JackResampler.cpp', 
sletz's avatar
sletz committed
190
                'JackGlobals.cpp',
sletz's avatar
sletz committed
191
		'ringbuffer.c']
192
193

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

    if bld.env['IS_SUN']:
sletz's avatar
sletz committed
198
        netlib.source += ['../posix/JackNetUnixSocket.cpp','../posix/JackPosixThread.cpp', '../solaris/JackSolarisTime.c']
199
200
201
202
203
204
205
206
207
        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']

208
    clientlib = bld.new_task_gen('cxx', 'shlib')
nedko's avatar
nedko committed
209
210
    clientlib.features.append('cc')
    clientlib.defines = 'HAVE_CONFIG_H'
211
    clientlib.uselib = uselib
212
    clientlib.install_path = '${LIBDIR}'
sletz's avatar
sletz committed
213
    if bld.env['BUILD_JACKDBUS'] == True and bld.env['BUILD_JACKD'] == False:
nedko's avatar
nedko committed
214
        clientlib.uselib.append('DBUS-1')
215
    clientlib.includes = includes
nedko's avatar
nedko committed
216
217
218
219
220
221
222
    clientlib.name         = 'clientlib'
    clientlib.target       = 'jack'
    clientlib.source = [] + common_libsources
    clientlib.source += [
        'JackLibClient.cpp',
        'JackLibAPI.cpp',
        ]
223

224
    if bld.env['IS_LINUX']:
225
        clientlib.source += [
226
            '../posix/JackSocketClientChannel.cpp',
sletz's avatar
sletz committed
227
            '../posix/JackPosixServerLaunch.cpp',
228
229
            ]

sletz's avatar
sletz committed
230
231
232
233
234
235
    if bld.env['IS_SUN']:
        clientlib.source += [
            '../posix/JackSocketClientChannel.cpp',
            '../posix/JackPosixServerLaunch.cpp',
            ]

236
    if bld.env['IS_MACOSX']:
237
        clientlib.source += [
sletz's avatar
sletz committed
238
            '../posix/JackSocketClientChannel.cpp',
sletz's avatar
sletz committed
239
            '../posix/JackPosixServerLaunch.cpp',
240
241
            ]

242
    clientlib.vnum = bld.env['JACK_API_VERSION']
sletz's avatar
sletz committed
243
244
245
246

    if bld.env['IS_LINUX']:
        clientlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
    
247
    if bld.env['IS_MACOSX']:
sletz's avatar
sletz committed
248
        clientlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
sletz's avatar
sletz committed
249
        clientlib.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc")
sletz's avatar
sletz committed
250
251
        #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
252
        clientlib.env.append_value("LINKFLAGS", "-compatibility_version 1 -current_version 1")
253

sletz's avatar
sletz committed
254
255
256
    if bld.env['IS_SUN']:
        clientlib.env.append_value("LINKFLAGS", "-lnsl -lsocket")

sletz's avatar
sletz committed
257
258
259
260
    if bld.env['BUILD_WITH_32_64']:
        print "create 32bit lib..."
        clientlib32bit = clientlib.clone('lib32')
  
sletz's avatar
sletz committed
261
262
    create_jack_process_obj(bld, 'netmanager', 'JackNetManager.cpp', serverlib)

sletz's avatar
sletz committed
263
264
    create_jack_process_obj(bld, 'profiler', 'JackProfiler.cpp', serverlib)

265
    net_adapter_sources = [
sletz's avatar
sletz committed
266
267
        'JackResampler.cpp',
        'JackLibSampleRateResampler.cpp',
268
        'JackAudioAdapter.cpp',
269
270
271
272
        'JackAudioAdapterInterface.cpp',
        'JackNetAdapter.cpp',
        ]

273
    if bld.env['BUILD_ADAPTER'] == True:
274
275
        process = create_jack_process_obj(bld, 'netadapter', net_adapter_sources, serverlib)
        process.uselib = 'SAMPLERATE'
276
277
278
279

    audio_adapter_sources = [
        'JackResampler.cpp',
        'JackLibSampleRateResampler.cpp',
280
        'JackAudioAdapter.cpp',
sletz's avatar
sletz committed
281
        'JackAudioAdapterInterface.cpp',
282
        'JackAudioAdapterFactory.cpp',
sletz's avatar
sletz committed
283
         ]
sletz's avatar
sletz committed
284

285
    if bld.env['BUILD_ADAPTER'] and bld.env['IS_MACOSX']:
286
         audio_adapter_sources += ['../macosx/coreaudio/JackCoreAudioAdapter.cpp']
287
         process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
288
289
         process.env.append_value("LINKFLAGS", "-framework CoreAudio -framework AudioUnit -framework AudioToolbox -framework CoreServices")
         process.uselib = 'SAMPLERATE'
moret's avatar
moret committed
290

sletz's avatar
sletz committed
291
    if bld.env['BUILD_ADAPTER'] and bld.env['IS_LINUX'] and bld.env['BUILD_DRIVER_ALSA']:
292
293
         audio_adapter_sources += ['../linux/alsa/JackAlsaAdapter.cpp']
         process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
294
         process.uselib = ['ALSA', 'SAMPLERATE']
moret's avatar
moret committed
295

sletz's avatar
sletz committed
296
297
298
299
300
    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'

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

304
    bld.install_files('${PREFIX}/include/jack', 'jack/*.h')
nedko's avatar
nedko committed
305
306

    # process jack.pc.in -> jack.pc
307
308
    import misc
    obj = bld.new_task_gen('subst')
nedko's avatar
nedko committed
309
310
    obj.source = '../jack.pc.in'
    obj.target = 'jack.pc'
311
    obj.dict = {'PREFIX': bld.env['PREFIX'],
312
                'LIBDIR': bld.env['LIBDIR'],
313
                'INCLUDEDIR': os.path.normpath(bld.env['PREFIX'] + '/include'),
nedko's avatar
nedko committed
314
                'SERVERLIB': serverlib.target,
315
                'JACK_VERSION': bld.env['JACK_VERSION'],
nedko's avatar
nedko committed
316
                }
317
    obj.install_path = '${LIBDIR}/pkgconfig/'
318
    obj.fun = misc.subst_func