root/branches/2.4.x/libffado/src/SConscript

Revision 2771, 11.0 kB (checked in by jwoithe, 6 years ago)

Merge r2722 through r2770 from trunk into 2.4.x branch.

This will form the basis of FFADO 2.4.1.

Line 
1 #
2 # Copyright (C) 2007-2008 Arnold Krille
3 # Copyright (C) 2007-2008 Pieter Palmers
4 #
5 # This file is part of FFADO
6 # FFADO = Free Firewire (pro-)audio drivers for linux
7 #
8 # FFADO is based upon FreeBoB.
9 #
10 # This program is free software: you can redistribute it and/or modify
11 # it under the terms of the GNU General Public License as published by
12 # the Free Software Foundation, either version 2 of the License, or
13 # (at your option) version 3 of the License.
14 #
15 # This program is distributed in the hope that it will be useful,
16 # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 # GNU General Public License for more details.
19 #
20 # You should have received a copy of the GNU General Public License
21 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
22 #
23
24 import os
25
26 Import( 'env' )
27
28 libenv = env.Clone()
29
30 libenv.MergeFlags( "-I#/ -I#/src" )
31
32 ffado_source = env.Split( '\
33     devicemanager.cpp \
34     ffado.cpp \
35     ffadodevice.cpp \
36     debugmodule/debugmodule.cpp \
37     DeviceStringParser.cpp \
38     libieee1394/ARMHandler.cpp \
39     libieee1394/configrom.cpp \
40     libieee1394/csr1212.c \
41     libieee1394/CycleTimerHelper.cpp \
42     libieee1394/ieee1394service.cpp \
43     libieee1394/IEC61883.cpp \
44     libieee1394/IsoHandlerManager.cpp \
45     libstreaming/StreamProcessorManager.cpp \
46     libstreaming/util/cip.c \
47     libstreaming/generic/StreamProcessor.cpp \
48     libstreaming/generic/Port.cpp \
49     libstreaming/generic/PortManager.cpp \
50     libutil/cmd_serialize.cpp \
51     libutil/DelayLockedLoop.cpp \
52     libutil/IpcRingBuffer.cpp \
53     libutil/PacketBuffer.cpp \
54     libutil/Configuration.cpp \
55     libutil/OptionContainer.cpp \
56     libutil/PosixMessageQueue.cpp \
57     libutil/PosixSharedMemory.cpp \
58     libutil/PosixMutex.cpp \
59     libutil/PosixThread.cpp \
60     libutil/ringbuffer.c \
61     libutil/StreamStatistics.cpp \
62     libutil/SystemTimeSource.cpp \
63     libutil/TimestampedBuffer.cpp \
64     libutil/Watchdog.cpp \
65     libcontrol/Element.cpp \
66     libcontrol/BasicElements.cpp \
67     libcontrol/MatrixMixer.cpp \
68     libcontrol/CrossbarRouter.cpp \
69     libcontrol/ClockSelect.cpp \
70     libcontrol/Nickname.cpp \
71 ')
72
73 if env['SERIALIZE_USE_EXPAT']:
74     ffado_source.append('libutil/serialize_expat.cpp')
75     ffado_source.append('libutil/serialize_expat_xml.cpp')
76 else:
77     ffado_source.append('libutil/serialize_libxml.cpp')
78
79 bebob_source = env.Split( '\
80     bebob/bebob_avdevice.cpp \
81     bebob/bebob_avdevice_subunit.cpp \
82     bebob/bebob_avplug.cpp \
83     bebob/bebob_dl_bcd.cpp \
84     bebob/bebob_dl_codes.cpp \
85     bebob/bebob_dl_mgr.cpp \
86     bebob/bebob_functionblock.cpp \
87     bebob/bebob_mixer.cpp \
88     bebob/focusrite/focusrite_generic.cpp \
89     bebob/focusrite/focusrite_saffire.cpp \
90     bebob/focusrite/focusrite_saffirepro.cpp \
91     bebob/focusrite/focusrite_cmd.cpp \
92     bebob/terratec/terratec_device.cpp \
93     bebob/terratec/terratec_cmd.cpp \
94     bebob/edirol/edirol_fa101.cpp \
95     bebob/edirol/edirol_fa66.cpp \
96     bebob/esi/quatafire610.cpp \
97     bebob/mackie/onyxmixer.cpp \
98     bebob/yamaha/yamaha_cmd.cpp \
99     bebob/yamaha/yamaha_avdevice.cpp \
100     bebob/maudio/normal_avdevice.cpp \
101     bebob/maudio/special_avdevice.cpp \
102     bebob/maudio/special_mixer.cpp \
103     bebob/presonus/firebox_avdevice.cpp \
104     bebob/presonus/inspire1394_avdevice.cpp \
105 ' )
106
107 bebob_pkgdata = env.Split( '\
108     bebob/maudio/refdesign.xml \
109     bebob/maudio/fw410.xml \
110     bebob/maudio/fwap.xml \
111 ' )
112
113 genericavc_source =  env.Split( '\
114     genericavc/avc_avdevice.cpp \
115     genericavc/stanton/scs.cpp \
116 ' )
117
118 genericavc_pkgdata = env.Split( '\
119 ' )
120
121 fireworks_source =  env.Split( '\
122     fireworks/fireworks_device.cpp \
123     fireworks/fireworks_control.cpp \
124     fireworks/fireworks_firmware.cpp \
125     fireworks/efc/efc_avc_cmd.cpp \
126     fireworks/efc/efc_cmd.cpp \
127     fireworks/efc/efc_cmds_hardware.cpp \
128     fireworks/efc/efc_cmds_hardware_ctrl.cpp \
129     fireworks/efc/efc_cmds_flash.cpp \
130     fireworks/efc/efc_cmds_mixer.cpp \
131     fireworks/efc/efc_cmds_monitor.cpp \
132     fireworks/efc/efc_cmds_ioconfig.cpp \
133     fireworks/fireworks_session_block.cpp \
134     fireworks/audiofire/audiofire_device.cpp \
135 ' )
136
137 fireworks_pkgdata =  env.Split( '\
138 ' )
139
140 oxford_source =  env.Split( '\
141     oxford/oxford_device.cpp \
142     libstreaming/amdtp-oxford/AmdtpOxfordReceiveStreamProcessor.cpp \
143 ' )
144
145 oxford_pkgdata = env.Split( '\
146 ' )
147
148 motu_source = env.Split( '\
149     motu/motu_avdevice.cpp \
150     motu/motu_controls.cpp \
151     motu/motu_mark3_controls.cpp \
152     motu/motu_mixerdefs.cpp \
153     motu/motu_mark3_mixerdefs.cpp \
154     motu/motu_mixer.cpp \
155     libstreaming/motu/MotuPort.cpp \
156     libstreaming/motu/MotuPortInfo.cpp \
157     libstreaming/motu/MotuReceiveStreamProcessor.cpp \
158     libstreaming/motu/MotuTransmitStreamProcessor.cpp \
159 ' )
160
161 dice_source = env.Split( '\
162     dice/dice_avdevice.cpp \
163     dice/dice_firmware_loader.cpp \
164     dice/dice_eap.cpp \
165     dice/focusrite/focusrite_eap.cpp \
166     dice/focusrite/saffire_pro40.cpp \
167     dice/focusrite/saffire_pro26.cpp \
168     dice/focusrite/saffire_pro24.cpp \
169     dice/focusrite/saffire_pro14.cpp \
170     dice/focusrite/saffire_56.cpp \
171     dice/maudio/profire_2626.cpp \
172     dice/presonus/firestudio_tube.cpp \
173     dice/presonus/firestudio_project.cpp \
174     dice/presonus/firestudio_mobile.cpp \
175 ' )
176
177 bounce_source = env.Split( '\
178     bounce/bounce_avdevice.cpp \
179     bounce/bounce_slave_avdevice.cpp \
180 ' )
181
182 metric_halo_source = env.Split( '\
183     metrichalo/mh_avdevice.cpp \
184 ' )
185
186 rme_source = env.Split( '\
187     rme/rme_shm.cpp \
188     rme/rme_avdevice.cpp \
189     rme/rme_avdevice_settings.cpp \
190     rme/fireface_flash.cpp \
191     rme/fireface_hw.cpp \
192     rme/fireface_settings_ctrls.cpp \
193     libstreaming/rme/RmePort.cpp \
194     libstreaming/rme/RmePortInfo.cpp \
195     libstreaming/rme/RmeReceiveStreamProcessor.cpp \
196     libstreaming/rme/RmeTransmitStreamProcessor.cpp \
197 ' )
198
199 digidesign_source = env.Split( '\
200     digidesign/digidesign_avdevice.cpp \
201     libstreaming/digidesign/DigidesignPort.cpp \
202     libstreaming/digidesign/DigidesignPortInfo.cpp \
203     libstreaming/digidesign/DigidesignReceiveStreamProcessor.cpp \
204     libstreaming/digidesign/DigidesignTransmitStreamProcessor.cpp \
205 ' )
206
207 amdtp_source = env.Split( '\
208     libstreaming/amdtp/AmdtpPort.cpp \
209     libstreaming/amdtp/AmdtpPortInfo.cpp \
210     libstreaming/amdtp/AmdtpReceiveStreamProcessor.cpp \
211     libstreaming/amdtp/AmdtpTransmitStreamProcessor.cpp \
212 ' )
213
214 libavc_source = env.Split( '\
215     libavc/streamformat/avc_extended_stream_format.cpp \
216     libavc/musicsubunit/avc_descriptor_music.cpp \
217     libavc/musicsubunit/avc_musicsubunit.cpp \
218     libavc/audiosubunit/avc_audiosubunit.cpp \
219     libavc/audiosubunit/avc_descriptor_audio.cpp \
220     libavc/audiosubunit/avc_function_block.cpp \
221     libavc/descriptors/avc_descriptor_cmd.cpp \
222     libavc/descriptors/avc_descriptor.cpp \
223     libavc/general/avc_extended_subunit_info.cpp \
224     libavc/general/avc_unit_info.cpp \
225     libavc/general/avc_generic.cpp \
226     libavc/general/avc_subunit_info.cpp \
227     libavc/general/avc_connect.cpp \
228     libavc/general/avc_signal_format.cpp \
229     libavc/general/avc_extended_cmd_generic.cpp \
230     libavc/general/avc_extended_plug_info.cpp \
231     libavc/general/avc_plug_info.cpp \
232     libavc/general/avc_unit.cpp \
233     libavc/general/avc_subunit.cpp \
234     libavc/general/avc_plug.cpp \
235     libavc/general/avc_vendor_dependent_cmd.cpp \
236     libavc/avc_definitions.cpp \
237     libavc/ccm/avc_signal_source.cpp \
238 ' )
239
240 source = ffado_source
241 pkgdata = []
242 if env['ENABLE_BEBOB']:
243     env['ENABLE_GENERICAVC'] = True
244     libenv.MergeFlags( "-DENABLE_BEBOB" )
245     source += bebob_source
246     pkgdata += bebob_pkgdata
247 if env['ENABLE_FIREWORKS']:
248     env['ENABLE_GENERICAVC'] = True
249     libenv.MergeFlags( "-DENABLE_FIREWORKS" )
250     source += fireworks_source
251     pkgdata += fireworks_pkgdata
252 if env['ENABLE_OXFORD']:
253     env['ENABLE_GENERICAVC'] = True
254     libenv.MergeFlags( "-DENABLE_OXFORD" )
255     source += oxford_source
256     pkgdata += oxford_pkgdata
257 if env['ENABLE_MOTU']:
258     libenv.MergeFlags( "-DENABLE_MOTU" )
259     source += motu_source
260 if env['ENABLE_DICE']:
261     env['ENABLE_GENERICAVC'] = True
262     libenv.MergeFlags( "-DENABLE_DICE" )
263     source += dice_source
264 if env['ENABLE_METRIC_HALO']:
265     libenv.MergeFlags( "-DENABLE_METRIC_HALO" )
266     source += metric_halo_source
267 if env['ENABLE_RME']:
268     libenv.MergeFlags( "-DENABLE_RME" )
269     source += rme_source
270 if env['ENABLE_DIGIDESIGN']:
271     libenv.MergeFlags( "-DENABLE_DIGIDESIGN" )
272     source += digidesign_source
273 if env['ENABLE_BOUNCE']:
274     env['ENABLE_GENERICAVC'] = True
275     libenv.MergeFlags( "-DENABLE_BOUNCE" )
276     source += bounce_source
277
278 if env['ENABLE_GENERICAVC']:
279     libenv.MergeFlags( "-DENABLE_GENERICAVC" )
280     source += libavc_source
281     source += amdtp_source
282     source += genericavc_source
283     pkgdata += genericavc_pkgdata
284
285 if not env.GetOption( "clean" ):
286     libenv.MergeFlags( "-lrt -lpthread" )
287     libenv.MergeFlags( env['LIBRAW1394_FLAGS'].decode() )
288     libenv.MergeFlags( env['LIBIEC61883_FLAGS'].decode() )
289     libenv.MergeFlags( env['LIBCONFIG_FLAGS'].decode() )
290     if not env['SERIALIZE_USE_EXPAT']:
291         if 'LIBXML30_FLAGS' in env :
292             libenv.MergeFlags( env['LIBXML30_FLAGS'].decode() )
293         if not('LIBXML30_FLAGS' in env) :
294             libenv.MergeFlags( env['LIBXML26_FLAGS'].decode() )
295     else:
296         libenv.PrependUnique( LIBS=["expat"] )
297         libenv.MergeFlags( "-DSERIALIZE_USE_EXPAT" )
298     if env['REQUIRE_LIBAVC']:
299         libenv.MergeFlags( env['LIBAVC1394_FLAGS'].decode() )
300
301 libname_versioned = "libffado.so.%s" % libenv['VERSION']
302 libname_versioned_short = "libffado.so.%s" % libenv['VERSION'].split('.')[0]
303
304 libenv.MergeFlags( "-Wl,-soname=%s" % libname_versioned_short )
305 ffadolib = libenv.SharedLibrary( "ffado", source )
306
307 #libenv.Install( "$libdir", ffadolib )
308 installer = libenv.InstallAs ( "$libdir/%s" % libname_versioned , ffadolib )
309
310 # if stripping would be something for us
311 #libenv.AddPostAction(installer, [['strip', env['STRIPFLAGS'], t[0].path]])
312
313 # make the required links
314 libenv.NoCache( '$libdir/%s' % libname_versioned )
315 libenv.AddPostAction(installer, [['rm', '-f', '$libdir/libffado.so', '$libdir/%s' % libname_versioned_short],
316                                  ['cd', '$libdir',
317                                  '&&','ln', '-s', libname_versioned_short, 'libffado.so',
318                                  '&&','ln', '-s', installer[0].name, libname_versioned_short,
319                                  ]
320                                 ])
321
322 if libenv['BUILD_STATIC_LIB']:
323     ffadolib_static = libenv.StaticLibrary( "ffado", source )
324
325 #
326 # Install the pkgdata to $sharedir
327 #
328 for data in pkgdata:
329     libenv.Install( "$sharedir", data )
330
331 #
332 # For the debugging apps
333 #
334 env2 = libenv.Clone()
335 env2.PrependUnique( LIBPATH=env['build_base']+"src" )
336 env2.PrependUnique( LIBS="ffado" )
337
338 apps = { \
339     "test-debugmodule" : "debugmodule/test_debugmodule.cpp", \
340     "test-dll" : "libutil/test-dll.cpp", \
341     "test-unittests-util" : "libutil/unittests.cpp", \
342     "test-cyclecalc" : "libieee1394/test-cyclecalc.cpp", \
343 }
344
345 installapps = []
346
347 for app in apps.keys():
348     env2.Program( target=app, source = env.Split( apps[app] ) )
349     if app.find( "test" ) == -1:
350         env2.Install( "$bindir", app )
Note: See TracBrowser for help on using the browser.