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)
# 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
'buffer.cc',
'buffer_set.cc',
'bundle.cc',
+ 'butler.cc',
'chan_count.cc',
'chan_mapping.cc',
'configuration.cc',
'crossfade.cc',
'cycle_timer.cc',
'default_click.cc',
+ 'debug.cc',
'delivery.cc',
'directory_names.cc',
'diskstream.cc',
'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',
'session_export.cc',
'session_metadata.cc',
'session_midi.cc',
+ 'session_playlists.cc',
'session_process.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',
'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)
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')
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 = 'GLIBMM GTHREAD AUBIO SIGCPP XML UUID JACK SNDFILE SAMPLERATE LRDF OSX COREAUDIO'
obj.uselib_local = 'libpbd libmidipp libevoral libvamphost libvampplugin libtaglib librubberband'
obj.vnum = LIBARDOUR_LIB_VERSION
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
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 '
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' ]
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()