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',
'midi_track.cc',
'mix.cc',
'mtc_slave.cc',
+ 'mtdm.cc',
'mute_master.cc',
'named_selection.cc',
'onset_detector.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 AUBIO SIGCPP XML UUID JACK SNDFILE SAMPLERATE LRDF OSX'
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' ]