#! /usr/bin/env python import os Import( 'env' ) env.AppendUnique( CPPPATH=["#/", "#/src"] ) libenv = env.Copy() ffado_source = env.Split( '\ devicemanager.cpp \ ffado.cpp \ ffado_streaming.cpp \ ffadodevice.cpp \ debugmodule/debugmodule.cpp \ libavc/streamformat/avc_extended_stream_format.cpp \ libavc/util/avc_serialize.cpp \ libavc/musicsubunit/avc_descriptor_music.cpp \ libavc/musicsubunit/avc_musicsubunit.cpp \ libavc/audiosubunit/avc_audiosubunit.cpp \ libavc/audiosubunit/avc_function_block.cpp \ libavc/descriptors/avc_descriptor_cmd.cpp \ libavc/descriptors/avc_descriptor.cpp \ libavc/general/avc_extended_subunit_info.cpp \ libavc/general/avc_unit_info.cpp \ libavc/general/avc_generic.cpp \ libavc/general/avc_subunit_info.cpp \ libavc/general/avc_connect.cpp \ libavc/general/avc_signal_format.cpp \ libavc/general/avc_extended_cmd_generic.cpp \ libavc/general/avc_extended_plug_info.cpp \ libavc/general/avc_plug_info.cpp \ libavc/general/avc_unit.cpp \ libavc/general/avc_subunit.cpp \ libavc/general/avc_plug.cpp \ libavc/general/avc_vendor_dependent_cmd.cpp \ libavc/avc_definitions.cpp \ libavc/ccm/avc_signal_source.cpp \ libieee1394/ARMHandler.cpp \ libieee1394/configrom.cpp \ libieee1394/csr1212.c \ libieee1394/ieee1394service.cpp \ libieee1394/IEC61883.cpp \ libosc/OscArgument.cpp \ libosc/OscClient.cpp \ libosc/OscMessage.cpp \ libosc/OscNode.cpp \ libosc/OscResponse.cpp \ libosc/OscServer.cpp \ libstreaming/cip.c \ libstreaming/IsoHandler.cpp \ libstreaming/IsoHandlerManager.cpp \ libstreaming/IsoStream.cpp \ libstreaming/Port.cpp \ libstreaming/PortManager.cpp \ libstreaming/StreamProcessor.cpp \ libstreaming/StreamProcessorManager.cpp \ libutil/DelayLockedLoop.cpp \ libutil/PacketBuffer.cpp \ libutil/OptionContainer.cpp \ libutil/PosixThread.cpp \ libutil/ringbuffer.c \ libutil/serialize.cpp \ libutil/StreamStatistics.cpp \ libutil/SystemTimeSource.cpp \ libutil/Time.c \ libutil/TimeSource.cpp \ libutil/TimestampedBuffer.cpp \ libcontrol/Element.cpp \ libcontrol/BasicElements.cpp \ ' ) bebob_source = env.Split( '\ bebob/bebob_avdevice.cpp \ bebob/bebob_avdevice_subunit.cpp \ bebob/bebob_avplug.cpp \ bebob/bebob_dl_bcd.cpp \ bebob/bebob_dl_codes.cpp \ bebob/bebob_dl_mgr.cpp \ bebob/bebob_functionblock.cpp \ bebob/bebob_mixer.cpp \ bebob/focusrite/focusrite_device.cpp \ bebob/focusrite/focusrite_cmd.cpp \ bebob/terratec/terratec_device.cpp \ bebob/terratec/terratec_cmd.cpp \ maudio/maudio_avdevice.cpp \ ' ) bebob_pkgdata = env.Split( '\ maudio/refdesign.xml \ maudio/fw410.xml \ maudio/fwap.xml \ ' ) genericavc_source = env.Split( '\ genericavc/avc_avdevice.cpp \ genericavc/avc_vendormodel.cpp \ ' ) fireworks_source = env.Split( '\ fireworks/fireworks_device.cpp \ fireworks/audiofire/audiofire_device.cpp \ ' ) motu_source = env.Split( '\ motu/motu_avdevice.cpp \ libstreaming/MotuPort.cpp \ libstreaming/MotuPortInfo.cpp \ libstreaming/MotuStreamProcessor.cpp \ ' ) dice_source = env.Split( '\ dice/dice_avdevice.cpp \ ' ) bounce_source = env.Split( '\ bounce/bounce_avdevice.cpp \ bounce/bounce_slave_avdevice.cpp \ libstreaming/AmdtpSlaveStreamProcessor.cpp \ ' ) metric_halo_source = env.Split( '\ metrichalo/mh_avdevice.cpp \ ' ) rme_source = env.Split( '\ rme/rme_avdevice.cpp \ ' ) amdtp_source = env.Split( '\ libstreaming/AmdtpPort.cpp \ libstreaming/AmdtpPortInfo.cpp \ libstreaming/AmdtpStreamProcessor.cpp \ ' ) source = ffado_source if env['ENABLE_BEBOB']: libenv.AppendUnique( CCFLAGS=["-DENABLE_BEBOB"] ) source += bebob_source if env['ENABLE_FIREWORKS']: libenv.AppendUnique( CCFLAGS=["-DENABLE_FIREWORKS"] ) source += fireworks_source if env['ENABLE_MOTU']: libenv.AppendUnique( CCFLAGS=["-DENABLE_MOTU"] ) source += motu_source if env['ENABLE_DICE']: libenv.AppendUnique( CCFLAGS=["-DENABLE_DICE"] ) source += dice_source if env['ENABLE_METRIC_HALO']: libenv.AppendUnique( CCFLAGS=["-DENABLE_METRIC_HALO"] ) source += metric_halo_source if env['ENABLE_RME']: libenv.AppendUnique( CCFLAGS=["-DENABLE_RME"] ) source += rme_source if env['ENABLE_BOUNCE']: libenv.AppendUnique( CCFLAGS=["-DENABLE_BOUNCE"] ) source += bounce_source # The list of devices needing GENERICAVC is controlled in ../SConstruct if env['ENABLE_GENERICAVC']: libenv.AppendUnique( CCFLAGS=["-DENABLE_GENERICAVC"] ) source += amdtp_source source += genericavc_source libenv.MergeFlags( "-lrt" ) libenv.MergeFlags( env['LIBRAW1394_FLAGS'] ) libenv.MergeFlags( env['LIBAVC1394_FLAGS'] ) libenv.MergeFlags( env['LIBIEC61883_FLAGS'] ) libenv.MergeFlags( env['ALSA_FLAGS'] ) libenv.MergeFlags( env['LIBXML26_FLAGS'] ) libenv.MergeFlags( env['LIBLO_FLAGS'] ) #env1.AppendUnique( LINKFLAGS = env.Split("-Wl,-rpath $libdir -Wl,-soname -Wl,libffado.so.1 --version-info=1:0:0") ) ffadolib = libenv.SharedLibrary( "ffado", source ) # # All the following tries to emulate the versioning of installed libs as seen from libtool... # if False: print "Trying to emulate libtools versioned install" libenv.Alias( "install", libenv.InstallAs( os.path.join('$libdir','libffado.so.$LIBVERSION'), ffadolib ) ) libenv.Ignore( ffadolib, os.path.join('$libdir','libffado.so') ) #env.Ignore( os.path.join('$libdir','libffado.so'), ffadolib ) #env.Ignore( os.path.join('$libdir','libffado.so.0'), "install" ) libenv.Alias( "install", libenv.Command( target="$libdir/libffado.so", source=libenv['libdir']+"/libffado.so.$LIBVERSION", action="ln -s $SOURCE $TARGET" ) ) libenv.Alias( "install", libenv.Command( target="$libdir/libffado.so.%s" % str(libenv['LIBVERSION']).rsplit('.',1)[0], source=libenv['libdir']+"/libffado.so.$LIBVERSION", action="ln -s $SOURCE $TARGET" ) ) libenv.Alias( "install", libenv.Command( target="$libdir/libffado.so.%s" % str(libenv['LIBVERSION']).rsplit('.',2)[0], source=libenv['libdir']+"/libffado.so.$LIBVERSION", action="ln -s $SOURCE $TARGET" ) ) else: print "Doing simple install" libenv.Alias( "install", libenv.Install( "$libdir", ffadolib ) ) # # Install the *_pkgdata to $sharedir # for data in bebob_pkgdata: libenv.Alias( "install", libenv.Install( "$sharedir", data ) ) # # For the debugging apps # env2 = libenv.Copy() env2.PrependUnique( LIBPATH=env['build_base']+"src" ) env2.PrependUnique( LIBS="ffado" ) apps = { \ "bridgeco-downloader": "bridgeco-downloader.cpp", \ "bebob-sync" : "bebob-sync.cpp", \ "test-debugmodule" : "debugmodule/test_debugmodule.cpp", \ "test-dll" : "libutil/test-dll.cpp", \ "test-unittests-util" : "libutil/unittests.cpp", \ "test-unittests-osc" : "libosc/unittests.cpp" \ } for app in apps.keys(): env2.Program( target=app, source = env.Split( apps[app] ) ) env2.Alias( "install", env2.Install( "$bindir", "bebob-sync" ) ) env2.Alias( "install", env2.Install( "$bindir", "bridgeco-downloader" ) )