wscript 10.5 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',
100
            '../macosx/JackMachPort.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
124
        'JackDriver.cpp',
        'JackEngine.cpp',
        'JackExternalClient.cpp',
        'JackFreewheelDriver.cpp',
        'JackInternalClient.cpp',
        'JackLoopbackDriver.cpp',
        'JackServer.cpp',
        'JackThreadedDriver.cpp',
125
126
        'JackRestartThreadedDriver.cpp',
        'JackWaitThreadedDriver.cpp',
nedko's avatar
nedko committed
127
128
129
        'JackServerAPI.cpp',
        'JackDriverLoader.cpp',
        'JackServerGlobals.cpp',
sletz's avatar
sletz committed
130
        'JackControlAPI.cpp',
131
        'JackNetTool.cpp',
moret's avatar
moret committed
132
        'JackNetInterface.cpp',
133
        'JackArgParser.cpp',
134
        'JackDummyDriver.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
155
156
157
158
159
        serverlib.source += [
            '../macosx/JackMachServerChannel.cpp',
            '../macosx/JackMachNotifyChannel.cpp',
            '../macosx/JackMachServerNotifyChannel.cpp',
            '../macosx/JackMacEngineRPC.cpp',
            '../macosx/RPC/JackRPCClientUser.c',
160
            '../posix/JackNetUnixSocket.cpp',
161
162
            ]

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

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

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

178
    clientlib = bld.new_task_gen('cxx', 'shlib')
nedko's avatar
nedko committed
179
180
    clientlib.features.append('cc')
    clientlib.defines = 'HAVE_CONFIG_H'
181
    clientlib.uselib = uselib
182
    clientlib.install_path = '${LIBDIR}'
183
    if bld.env['BUILD_JACKDBUS'] == True and bld.env['BUILD_JACKD'] == False:
nedko's avatar
nedko committed
184
        clientlib.uselib.append('DBUS-1')
185
    clientlib.includes = includes
nedko's avatar
nedko committed
186
187
188
189
190
191
192
    clientlib.name         = 'clientlib'
    clientlib.target       = 'jack'
    clientlib.source = [] + common_libsources
    clientlib.source += [
        'JackLibClient.cpp',
        'JackLibAPI.cpp',
        ]
193

194
    if bld.env['IS_LINUX']:
195
        clientlib.source += [
196
            '../posix/JackSocketClientChannel.cpp',
sletz's avatar
sletz committed
197
            '../posix/JackPosixServerLaunch.cpp',
198
199
            ]

sletz's avatar
sletz committed
200
201
202
203
204
205
    if bld.env['IS_SUN']:
        clientlib.source += [
            '../posix/JackSocketClientChannel.cpp',
            '../posix/JackPosixServerLaunch.cpp',
            ]

206
    if bld.env['IS_MACOSX']:
207
208
209
210
        clientlib.source += [
            '../macosx/JackMachClientChannel.cpp',
            '../macosx/RPC/JackRPCEngineUser.c',
            '../macosx/JackMacLibClientRPC.cpp',
sletz's avatar
sletz committed
211
            '../posix/JackPosixServerLaunch.cpp',
212
213
            ]

214
    clientlib.vnum = bld.env['JACK_API_VERSION']
sletz's avatar
sletz committed
215
216
217
218

    if bld.env['IS_LINUX']:
        clientlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
    
219
    if bld.env['IS_MACOSX']:
sletz's avatar
sletz committed
220
        clientlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
sletz's avatar
sletz committed
221
        clientlib.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc")
sletz's avatar
sletz committed
222
223
        #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
224
        clientlib.env.append_value("LINKFLAGS", "-compatibility_version 1 -current_version 1")
225

sletz's avatar
sletz committed
226
227
228
    if bld.env['IS_SUN']:
        clientlib.env.append_value("LINKFLAGS", "-lnsl -lsocket")

229
230
231
232
    if bld.env['BUILD_WITH_32_64']:
        print "create 32bit lib..."
        clientlib32bit = clientlib.clone('lib32')

sletz's avatar
sletz committed
233
234
    create_jack_process_obj(bld, 'netmanager', 'JackNetManager.cpp', serverlib)

sletz's avatar
sletz committed
235
236
    create_jack_process_obj(bld, 'profiler', 'JackProfiler.cpp', serverlib)

237
    net_adapter_sources = [
sletz's avatar
sletz committed
238
239
        'JackResampler.cpp',
        'JackLibSampleRateResampler.cpp',
240
        'JackAudioAdapter.cpp',
241
242
243
244
        'JackAudioAdapterInterface.cpp',
        'JackNetAdapter.cpp',
        ]

245
    if bld.env['BUILD_ADAPTER'] == True:
246
247
        process = create_jack_process_obj(bld, 'netadapter', net_adapter_sources, serverlib)
        process.uselib = 'SAMPLERATE'
248
249
250
251

    audio_adapter_sources = [
        'JackResampler.cpp',
        'JackLibSampleRateResampler.cpp',
252
        'JackAudioAdapter.cpp',
sletz's avatar
sletz committed
253
        'JackAudioAdapterInterface.cpp',
254
        'JackAudioAdapterFactory.cpp',
sletz's avatar
sletz committed
255
         ]
sletz's avatar
sletz committed
256

257
    if bld.env['BUILD_ADAPTER'] and bld.env['IS_MACOSX']:
258
         audio_adapter_sources += ['../macosx/coreaudio/JackCoreAudioAdapter.cpp']
259
         process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
260
261
         process.env.append_value("LINKFLAGS", "-framework CoreAudio -framework AudioUnit -framework AudioToolbox -framework CoreServices")
         process.uselib = 'SAMPLERATE'
moret's avatar
moret committed
262

263
    if bld.env['BUILD_ADAPTER'] and bld.env['IS_LINUX'] and bld.env['BUILD_DRIVER_ALSA']:
264
265
         audio_adapter_sources += ['../linux/alsa/JackAlsaAdapter.cpp']
         process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
266
         process.uselib = ['ALSA', 'SAMPLERATE']
moret's avatar
moret committed
267

sletz's avatar
sletz committed
268
269
270
271
272
    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'

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

276
    bld.install_files('${PREFIX}/include/jack', 'jack/*.h')
nedko's avatar
nedko committed
277
278

    # process jack.pc.in -> jack.pc
279
280
    import misc
    obj = bld.new_task_gen('subst')
nedko's avatar
nedko committed
281
282
    obj.source = '../jack.pc.in'
    obj.target = 'jack.pc'
283
    obj.dict = {'PREFIX': bld.env['PREFIX'],
284
                'LIBDIR': bld.env['LIBDIR'],
285
                'INCLUDEDIR': os.path.normpath(bld.env['PREFIX'] + '/include'),
nedko's avatar
nedko committed
286
                'SERVERLIB': serverlib.target,
287
                'JACK_VERSION': bld.env['JACK_VERSION'],
nedko's avatar
nedko committed
288
                }
289
    obj.install_path = '${LIBDIR}/pkgconfig/'
290
    obj.fun = misc.subst_func