more MTC debugging
[ardour.git] / libs / ardour / wscript
index b9a90ea4861b8049ced21a0c0dc04559c760f2b0..dfa05ba752ad60f64f65f17cd8552341bbf52801 100644 (file)
@@ -3,6 +3,8 @@ import autowaf
 import os
 import glob
 import Options
+import re
+import subprocess
 from w18n import build_i18n
 
 # Version of this package (even if built as a child)
@@ -17,6 +19,9 @@ LIBARDOUR_VERSION = "%s.%s.%s" % (MAJOR, MINOR, MICRO)
 # micro increment <=> no interface changes
 LIBARDOUR_LIB_VERSION = '3.0.0'
 
+# default state file version for this build
+CURRENT_SESSION_FILE_VERSION = 3000
+
 # Variables for 'waf dist'
 APPNAME = 'libardour'
 VERSION = LIBARDOUR_VERSION
@@ -55,14 +60,17 @@ libardour_sources = [
        'buffer.cc',
        'buffer_set.cc',
        'bundle.cc',
+       'butler.cc',
        'chan_count.cc',
        'chan_mapping.cc',
        'configuration.cc',
+       'config_text.cc',
        'control_protocol_manager.cc',
        'control_protocol_search_path.cc',
        'crossfade.cc',
        'cycle_timer.cc',
        'default_click.cc',
+       'debug.cc',
        'delivery.cc',
        'directory_names.cc',
        'diskstream.cc',
@@ -72,26 +80,23 @@ libardour_sources = [
        'event_type_map.cc',
        'export_channel.cc',
        'export_channel_configuration.cc',
-       'export_file_io.cc',
        'export_filename.cc',
        'export_format_base.cc',
        'export_format_manager.cc',
        'export_format_specification.cc',
        'export_formats.cc',
+       'export_graph_builder.cc',
        'export_handler.cc',
        'export_preset.cc',
-       'export_processor.cc',
        'export_profile_manager.cc',
        'export_status.cc',
        'export_timespan.cc',
-       'export_utilities.cc',
        'file_source.cc',
        'filename_extensions.cc',
        'filesystem_paths.cc',
        'filter.cc',
        'find_session.cc',
        'gain.cc',
-       'gdither.cc',
        'globals.cc',
        'import.cc',
        'internal_return.cc',
@@ -117,13 +122,16 @@ libardour_sources = [
        'midi_state_tracker.cc',
        'midi_stretch.cc',
        'midi_track.cc',
+       'midi_ui.cc',
        'mix.cc',
        'mtc_slave.cc',
+       'mtdm.cc',
        'mute_master.cc',
        'named_selection.cc',
        'onset_detector.cc',
        'panner.cc',
        'pcm_utils.cc',
+       'pi_controller.cc',
        'playlist.cc',
        'playlist_factory.cc',
        'plugin.cc',
@@ -143,6 +151,7 @@ libardour_sources = [
        'reverse.cc',
        'route.cc',
        'route_group.cc',
+       'route_group_member.cc',
        'rb_effect.cc',
        'send.cc',
        'session.cc',
@@ -153,14 +162,18 @@ libardour_sources = [
        'session_directory.cc',
        'session_events.cc',
        'session_export.cc',
+       'session_handle.cc',
        'session_metadata.cc',
        'session_midi.cc',
+       'session_playlists.cc',
        'session_process.cc',
+       'session_rtevents.cc',
        'session_state.cc',
        'session_state_utils.cc',
        'session_time.cc',
        'session_transport.cc',
        'session_utils.cc',
+       'slave.cc',
        'smf_source.cc',
        'sndfile_helpers.cc',
        'sndfileimportable.cc',
@@ -181,6 +194,20 @@ libardour_sources = [
        'version.cc'
 ]
 
+def flac_supported():
+       cmd = subprocess.Popen ("sndfile-info testfile.flac", 
+                               stdout = subprocess.PIPE,
+                               stderr = subprocess.STDOUT, shell = True)
+       out = cmd.communicate()[0];
+       return re.search ('unknown format', out) == None
+
+def ogg_supported():
+       cmd = subprocess.Popen ("sndfile-info testfile.ogg", 
+                               stdout = subprocess.PIPE,
+                               stderr = subprocess.STDOUT, shell = True)
+       out = cmd.communicate()[0];
+       return re.search ('unknown format', out) == None
+
 def set_options(opt):
        autowaf.set_options(opt)
 
@@ -207,21 +234,21 @@ def configure(conf):
        conf.define('HAVE_RUBBERBAND', 1) # controls whether we think we have it
        conf.define('USE_RUBBERBAND', 1)  # controls whether we actually use it
 
+       conf.define('CURRENT_SESSION_FILE_VERSION', CURRENT_SESSION_FILE_VERSION)
+
        conf.check(header_name='sys/vfs.h', define_name='HAVE_SYS_VFS_H')
        conf.check(header_name='wordexp.h', define_name='HAVE_WORDEXP')
        
-       if conf.env['IS_OSX']:
-               conf.check_cc (header_name = '/System/Library/Frameworks/CoreMIDI.framework/Headers/CoreMIDI.h',
-                              linkflags = [ '-framework', 'CoreMIDI' ])
-               
-               conf.check_cc (header_name = '/System/Library/Frameworks/AudioToolbox.framework/Headers/ExtendedAudioFile.h',
-                              linkflags = [ '-framework', 'AudioToolbox' ])
-               
-               conf.check_cc (header_name = '/System/Library/Frameworks/CoreAudio.framework/Headers/CoreAudio.h',
-                             define_name = 'HAVE_COREAUDIO')
-               
-               conf.check_cc (header_name = '/System/Library/Frameworks/AudioUnit.framework/Headers/AudioUnit.h',
-                              define_name = 'HAVE_AUDIOUNITS', linkflags = [ '-framework', 'AudioUnit' ])
+       if flac_supported():
+               conf.define ('HAVE_FLAC', 1)
+               autowaf.display_msg(conf, 'Checking for FLAC support', True)
+       else:
+               autowaf.display_msg(conf, 'Checking for FLAC support', False)
+       if ogg_supported():
+               conf.define ('HAVE_OGG', 1)
+               autowaf.display_msg(conf, 'Checking for Ogg/Vorbis support', True)
+       else:
+               autowaf.display_msg(conf, 'Checking for Ogg/Vorbis Support', False)
 
        conf.write_config_header('libardour-config.h')
 
@@ -229,16 +256,17 @@ def configure(conf):
        autowaf.check_header(conf, 'boost/shared_ptr.hpp')
        autowaf.check_header(conf, 'boost/weak_ptr.hpp')
 
+
 def build(bld):
        # Library
        obj              = bld.new_task_gen('cxx', 'shlib')
        obj.source       = libardour_sources
        obj.export_incdirs = ['.']
-       obj.includes     = ['.', '../surfaces/control_protocol']
+       obj.includes     = ['.', '../surfaces/control_protocol', '..']
        obj.name         = 'libardour'
        obj.target       = 'ardour'
-       obj.uselib       = 'GLIBMM AUBIO SIGCPP XML UUID JACK SNDFILE SAMPLERATE LRDF'
-       obj.uselib_local = 'libpbd libmidipp libevoral libvamphost libvampplugin libtaglib librubberband'
+       obj.uselib       = 'GLIBMM GTHREAD AUBIO SIGCPP XML UUID JACK SNDFILE SAMPLERATE LRDF OSX COREAUDIO'
+       obj.uselib_local = 'libpbd libmidipp libevoral libvamphost libvampplugin libtaglib librubberband libaudiographer'
        obj.vnum         = LIBARDOUR_LIB_VERSION
        obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
        obj.cxxflags     = ['-DPACKAGE="libardour3"']
@@ -251,6 +279,14 @@ def build(bld):
                        os.path.normpath(bld.env['LIBDIR']), 'ardour3', 'vamp') + '"']
        #obj.source += ' st_stretch.cc st_pitch.cc '
        #obj.uselib += ' SOUNDTOUCH '
+       #obj.add_objects = 'default/libs/surfaces/control_protocol/smpte_1.o'
+       
+       obj.env.append_value('LINKFLAGS', 'default/libs/surfaces/control_protocol/smpte_1.o')
+       #
+       #       TODO: The above is an ugly hack that shouldn't be needed.  We really need
+       #       to refactor SMPTE out of libardour_cp to get rid of that circular dependency
+       #       alltogether.
+       #
        if bld.env['HAVE_SLV2']:
                obj.source += [ 'lv2_plugin.cc', 'lv2_event_buffer.cc', 'uri_map.cc' ]
                obj.uselib += ' SLV2 '
@@ -259,14 +295,13 @@ def build(bld):
                obj.source += [ 'vst_plugin.cc', 'session_vst.cc' ]
 
        if bld.env['HAVE_COREAUDIO'] and bld.env['COREAUDIO']:
-               obj.sources += [ 'coreaudio.cc', 'caimportable.cc' ]
+               obj.source += [ 'coreaudiosource.cc', 'caimportable.cc' ]
 
-       if bld.env['HAVE_AUDIOUNITS'] and bld.env['AUDIOUNITS']:
-               obj.sources += [ 'audio_unit.cc' ]
+       if bld.env['HAVE_AUDIOUNITS'] or bld.env['HAVE_COREAUDIO']:
+               obj.uselib_local += ' libappleutility'  
 
-       if bld.env['IS_OSX']:
-               # this avoids issues with circular dependencies between libardour and libardour_cp.
-               obj.linkflags += '-undefined suppress -flat_namespace'
+       if bld.env['HAVE_AUDIOUNITS'] and bld.env['AUDIOUNITS']:
+               obj.source += [ 'audio_unit.cc' ]
 
        if bld.env['FPU_OPTIMIZATION']:
                obj.source += [ 'sse_functions_xmm.cc' ]
@@ -282,19 +317,34 @@ def build(bld):
                        lang = os.path.basename (mo).replace ('.mo', '')
                        bld.install_as (os.path.join (bld.env['PREFIX'], 'share', 'locale', lang, 'LC_MESSAGES', APPNAME + '.mo'), mo)
 
-       if bld.env['HAVE_CPPUNIT']:
+       if bld.env['BUILD_TESTS'] and bld.env['HAVE_CPPUNIT']:
                # Unit tests
                testobj              = bld.new_task_gen('cxx', 'program')
                testobj.source       = '''
-                       interpolation.cc
-                       tests/interpolation-test.cc
-                       tests/testrunner.cpp
-               '''
+                       test/BBTTest.cpp
+                       test/InterpolationTest.cpp
+                       test/testrunner.cpp
+               '''.split()
                testobj.includes     = obj.includes + ['../pbd/']
-               testobj.uselib       = 'CPPUNIT SIGCPP JACK GLIBMM SAMPLERATE'
+               testobj.uselib       = 'CPPUNIT SIGCPP JACK GLIBMM GTHREAD SAMPLERATE XML LRDF COREAUDIO'
+               testobj.uselib_local = 'libpbd libmidipp libardour'
+               testobj.name         = 'libardour-tests'
                testobj.target       = 'run-tests'
                testobj.install_path = ''
-
+               testobj.cxxflags     = ['-DPACKAGE="libardour3test"']
+               testobj.cxxflags     += ['-DDATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"']
+               testobj.cxxflags     += ['-DCONFIG_DIR="' + os.path.normpath(bld.env['CONFIGDIR']) + '"']
+               testobj.cxxflags     += ['-DMODULE_DIR="' + os.path.normpath(bld.env['LIBDIR']) + '"']
+               testobj.cxxflags     += ['-DLOCALEDIR="' + os.path.join(
+                               os.path.normpath(bld.env['DATADIR']), 'locale') + '"']
+               testobj.cxxflags     += ['-DVAMP_DIR="' + os.path.join(
+                               os.path.normpath(bld.env['LIBDIR']), 'ardour3', 'vamp') + '"']
+               if bld.env['FPU_OPTIMIZATION']:
+                       testobj.source += [ 'sse_functions_xmm.cc' ]
+                       if bld.env['build_target'] == 'i386' or bld.env['build_target'] == 'i686':
+                               testobj.source += [ 'sse_functions.s' ]
+                       elif bld.env['build_target'] == 'x86_64':
+                               testobj.source += [ 'sse_functions_64bit.s' ]
 
 def shutdown():
        autowaf.shutdown()