X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fwscript;h=3e5f763461f243acbe783f965244151a1eb224b5;hb=c38e02285fda1fd7966c9e4ad85994445247e6a6;hp=58e22cca27f79c773f402a8c0cbe8e6c675f59dc;hpb=3b7230552d8aa6c36fd2fbc3ccc1cfb9109fc843;p=ardour.git diff --git a/libs/ardour/wscript b/libs/ardour/wscript index 58e22cca27..3e5f763461 100644 --- a/libs/ardour/wscript +++ b/libs/ardour/wscript @@ -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,6 +60,7 @@ libardour_sources = [ 'buffer.cc', 'buffer_set.cc', 'bundle.cc', + 'butler.cc', 'chan_count.cc', 'chan_mapping.cc', 'configuration.cc', @@ -63,6 +69,7 @@ libardour_sources = [ 'crossfade.cc', 'cycle_timer.cc', 'default_click.cc', + 'debug.cc', 'delivery.cc', 'directory_names.cc', 'diskstream.cc', @@ -117,13 +124,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', @@ -155,12 +165,14 @@ libardour_sources = [ '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', @@ -181,6 +193,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) @@ -188,7 +214,7 @@ def configure(conf): autowaf.build_version_files(path_prefix+'ardour/version.h', path_prefix+'version.cc', 'libardour3', MAJOR, MINOR, MICRO) autowaf.configure(conf) - autowaf.check_tool(conf, 'compiler_cxx gas') + conf.check_tool('compiler_cxx gas') autowaf.check_pkg(conf, 'aubio', uselib_store='AUBIO', atleast_version='0.3.2') autowaf.check_pkg(conf, 'jack', uselib_store='JACK', atleast_version='0.109.0') autowaf.check_pkg(conf, 'libxml-2.0', uselib_store='XML') @@ -207,21 +233,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,15 +255,16 @@ 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 = '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') @@ -251,6 +278,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 +294,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 +316,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()