root/jack2/trunk/jackmp/common/wscript

Revision 3587, 10.5 kB (checked in by sletz, 1 year ago)

Use attribute((packed)) again, more fixes for 64/32 mixed mode. Torben Hohn changes for 64/32 mixed mode in wscripts.

Line 
1 #! /usr/bin/env python
2 # encoding: utf-8
3
4 import Build
5 import re
6 import os
7
8 def configure(conf):
9     conf.check_cc(header_name='samplerate.h', define_name="HAVE_SAMPLERATE")
10    
11     if conf.is_defined('HAVE_SAMPLERATE'):
12         conf.env['LIB_SAMPLERATE'] = ['samplerate']
13
14     conf.env['BUILD_ADAPTER'] = conf.is_defined('HAVE_SAMPLERATE')
15
16 def create_jack_process_obj(bld, target, sources, uselib = None):
17     process = bld.new_task_gen('cxx', 'shlib')
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']
24     if bld.env['IS_SUN']:
25         env_includes = ['../solaris', '../posix', '../solaris/oss']
26     process.includes = ['.'] + env_includes + ['jack', '..']
27     process.name     = target
28     process.target   = target
29     process.source   = sources
30     if bld.env['IS_LINUX']:
31         process.env.append_value("CPPFLAGS", "-fvisibility=hidden")
32     if bld.env['IS_MACOSX']:
33         process.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc")
34         #process.env.append_value("LINKFLAGS", "-arch i386 -arch ppc")
35         process.env.append_value("CPPFLAGS", "-fvisibility=hidden")
36     process.install_path = '${ADDON_DIR}/'
37     process.uselib_local = uselib.name
38     return process
39
40 def build(bld):
41     common_libsources = [
42         'JackActivationCount.cpp',
43         'JackAPI.cpp',
44         'JackClient.cpp',
45         'JackConnectionManager.cpp',
46         'ringbuffer.c',
47         'JackError.cpp',
48         'JackFrameTimer.cpp',
49         'JackGraphManager.cpp',
50         'JackPort.cpp',
51         'JackPortType.cpp',
52         'JackAudioPort.cpp',
53         'JackMidiPort.cpp',
54         'JackMidiAPI.cpp',
55         'JackEngineControl.cpp',
56         'JackShmMem.cpp',
57         'shm.c',
58         'JackGlobals.cpp',
59         'JackDebugClient.cpp',
60         'JackTransportEngine.cpp',
61         'timestamps.c',
62         'JackTools.cpp',
63         'JackMessageBuffer.cpp',
64         'JackEngineProfiling.cpp',
65         ]
66
67     includes = ['.', './jack', '..']
68     uselib = ["PTHREAD"]
69
70     if bld.env['IS_LINUX']:
71         common_libsources += [
72             '../posix/JackPosixThread.cpp',
73             '../posix/JackPosixSemaphore.cpp',
74             '../posix/JackFifo.cpp',
75             '../posix/JackProcessSync.cpp',
76             '../posix/JackSocket.cpp',
77             '../linux/JackLinuxTime.c',
78             ]
79         includes = ['../linux', '../posix'] + includes
80         uselib.append('RT')
81         uselib.append('DL')
82
83     if bld.env['IS_SUN']:
84         common_libsources += [
85            '../posix/JackPosixThread.cpp',
86            '../posix/JackFifo.cpp',
87            '../posix/JackProcessSync.cpp',
88            '../posix/JackSocket.cpp',
89            '../solaris/JackSolarisTime.c',
90            ]
91         includes = ['../solaris', '../posix'] + includes
92         uselib.append('RT')
93
94     if bld.env['IS_MACOSX']:
95         common_libsources += [
96             '../posix/JackProcessSync.cpp',
97             '../posix/JackPosixThread.cpp',
98             '../macosx/JackMachThread.cpp',
99             '../macosx/JackMachSemaphore.cpp',
100             '../macosx/JackMachPort.cpp',
101             '../macosx/JackMachTime.c',
102             ]
103         includes = ['../macosx', '../macosx/RPC', '../posix'] + includes
104
105     serverlib = bld.new_task_gen('cxx', 'shlib')
106     serverlib.features.append('cc')
107     serverlib.defines = ['HAVE_CONFIG_H','SERVER_SIDE']
108     serverlib.includes = includes
109     serverlib.name         = 'serverlib'
110     serverlib.target       = 'jackserver'
111     serverlib.uselib = uselib
112     serverlib.install_path = '${LIBDIR}'
113     serverlib.source = [] + common_libsources
114     serverlib.source += [
115         'JackAudioDriver.cpp',
116         'JackMidiDriver.cpp',
117         'JackDriver.cpp',
118         'JackEngine.cpp',
119         'JackExternalClient.cpp',
120         'JackFreewheelDriver.cpp',
121         'JackInternalClient.cpp',
122         'JackLoopbackDriver.cpp',
123         'JackServer.cpp',
124         'JackThreadedDriver.cpp',
125         'JackRestartThreadedDriver.cpp',
126         'JackWaitThreadedDriver.cpp',
127         'JackServerAPI.cpp',
128         'JackDriverLoader.cpp',
129         'JackServerGlobals.cpp',
130         'JackControlAPI.cpp',
131         'JackNetTool.cpp',
132         'JackNetInterface.cpp',
133         'JackArgParser.cpp',
134         'JackDummyDriver.cpp',
135         ]
136
137     if bld.env['IS_LINUX']:
138         serverlib.source += [
139             '../posix/JackSocketServerChannel.cpp',
140             '../posix/JackSocketNotifyChannel.cpp',
141             '../posix/JackSocketServerNotifyChannel.cpp',
142             '../posix/JackNetUnixSocket.cpp',
143             ]
144
145     if bld.env['IS_SUN']:
146         serverlib.source += [
147             '../posix/JackSocketServerChannel.cpp',
148             '../posix/JackSocketNotifyChannel.cpp',
149             '../posix/JackSocketServerNotifyChannel.cpp',
150             '../posix/JackNetUnixSocket.cpp',
151             ]
152
153     if bld.env['IS_MACOSX']:
154         serverlib.source += [
155             '../macosx/JackMachServerChannel.cpp',
156             '../macosx/JackMachNotifyChannel.cpp',
157             '../macosx/JackMachServerNotifyChannel.cpp',
158             '../macosx/JackMacEngineRPC.cpp',
159             '../macosx/RPC/JackRPCClientUser.c',
160             '../posix/JackNetUnixSocket.cpp',
161             ]
162
163     serverlib.vnum = bld.env['JACK_API_VERSION']
164
165     if bld.env['IS_LINUX']:
166         serverlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
167
168     if bld.env['IS_MACOSX']:
169         serverlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
170         serverlib.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc")
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")
173         serverlib.env.append_value("LINKFLAGS", "-compatibility_version 1 -current_version 1")
174
175     if bld.env['IS_SUN']:
176         serverlib.env.append_value("LINKFLAGS", "-lnsl -lsocket")
177
178     clientlib = bld.new_task_gen('cxx', 'shlib')
179     clientlib.features.append('cc')
180     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:
184         clientlib.uselib.append('DBUS-1')
185     clientlib.includes = includes
186     clientlib.name         = 'clientlib'
187     clientlib.target       = 'jack'
188     clientlib.source = [] + common_libsources
189     clientlib.source += [
190         'JackLibClient.cpp',
191         'JackLibAPI.cpp',
192         ]
193
194     if bld.env['IS_LINUX']:
195         clientlib.source += [
196             '../posix/JackSocketClientChannel.cpp',
197             '../posix/JackPosixServerLaunch.cpp',
198             ]
199
200     if bld.env['IS_SUN']:
201         clientlib.source += [
202             '../posix/JackSocketClientChannel.cpp',
203             '../posix/JackPosixServerLaunch.cpp',
204             ]
205
206     if bld.env['IS_MACOSX']:
207         clientlib.source += [
208             '../macosx/JackMachClientChannel.cpp',
209             '../macosx/RPC/JackRPCEngineUser.c',
210             '../macosx/JackMacLibClientRPC.cpp',
211             '../posix/JackPosixServerLaunch.cpp',
212             ]
213
214     clientlib.vnum = bld.env['JACK_API_VERSION']
215
216     if bld.env['IS_LINUX']:
217         clientlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
218    
219     if bld.env['IS_MACOSX']:
220         clientlib.env.append_value("CPPFLAGS", "-fvisibility=hidden")
221         clientlib.env.append_value("CPPFLAGS", "-mmacosx-version-min=10.4 -arch i386 -arch ppc")
222         #clientlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework vecLib -single_module -arch i386 -arch ppc"
223         clientlib.env.append_value("LINKFLAGS", "-framework CoreAudio -framework vecLib -single_module")
224         clientlib.env.append_value("LINKFLAGS", "-compatibility_version 1 -current_version 1")
225
226     if bld.env['IS_SUN']:
227         clientlib.env.append_value("LINKFLAGS", "-lnsl -lsocket")
228
229     if bld.env['BUILD_WITH_32_64']:
230         print "create 32bit lib..."
231         clientlib32bit = clientlib.clone('lib32')
232
233     create_jack_process_obj(bld, 'netmanager', 'JackNetManager.cpp', serverlib)
234
235     create_jack_process_obj(bld, 'profiler', 'JackProfiler.cpp', serverlib)
236
237     net_adapter_sources = [
238         'JackResampler.cpp',
239         'JackLibSampleRateResampler.cpp',
240         'JackAudioAdapter.cpp',
241         'JackAudioAdapterInterface.cpp',
242         'JackNetAdapter.cpp',
243         ]
244
245     if bld.env['BUILD_ADAPTER'] == True:
246         process = create_jack_process_obj(bld, 'netadapter', net_adapter_sources, serverlib)
247         process.uselib = 'SAMPLERATE'
248
249     audio_adapter_sources = [
250         'JackResampler.cpp',
251         'JackLibSampleRateResampler.cpp',
252         'JackAudioAdapter.cpp',
253         'JackAudioAdapterInterface.cpp',
254         'JackAudioAdapterFactory.cpp',
255          ]
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          process.env.append_value("LINKFLAGS", "-framework CoreAudio -framework AudioUnit -framework AudioToolbox -framework CoreServices")
261          process.uselib = 'SAMPLERATE'
262
263     if bld.env['BUILD_ADAPTER'] and bld.env['IS_LINUX'] and bld.env['BUILD_DRIVER_ALSA']:
264          audio_adapter_sources += ['../linux/alsa/JackAlsaAdapter.cpp']
265          process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
266          process.uselib = ['ALSA', 'SAMPLERATE']
267
268     if bld.env['BUILD_ADAPTER'] and bld.env['IS_SUN']:
269          audio_adapter_sources += ['../solaris/oss/JackOSSAdapter.cpp', 'memops.c']
270          process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
271          process.uselib = 'SAMPLERATE'
272
273     #audio_adapter_sources += ['../windows/JackPortAudioAdapter.cpp']
274     #process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
275
276     bld.install_files('${PREFIX}/include/jack', 'jack/*.h')
277
278     # process jack.pc.in -> jack.pc
279     import misc
280     obj = bld.new_task_gen('subst')
281     obj.source = '../jack.pc.in'
282     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'),
286                 'SERVERLIB': serverlib.target,
287                 'JACK_VERSION': bld.env['JACK_VERSION'],
288                 }
289     obj.install_path = '${LIBDIR}/pkgconfig/'
290     obj.fun = misc.subst_func
Note: See TracBrowser for help on using the browser.