Files
ardour/libs/ardour/wscript
David Robillard c9023ae73d Fix mute of MIDI tracks with channel forcing.
This moves MIDI channel filtering into a reusable class and moves filtering to
the source, rather than modifying the buffer afterwards.  This is necessary so
that the playlist trackers reflect the emitted notes (and thus are able to stop
them in situations like mute).

As a perk, this is also faster because events are just dropped on read, rather
than pushed into a buffer then later removed (which is very slow).

Really hammering on mute or solo still seems to produce stuck notes
occasionally (perhaps related to multiple-on warnings).  I am not yet sure why,
but occasional beats always.
2015-03-29 00:51:56 -04:00

602 lines
24 KiB
Python

#!/usr/bin/env python
from waflib.extras import autowaf as autowaf
from waflib import Options
import os
import sys
import re
import subprocess
import sys
# default state file version for this build
CURRENT_SESSION_FILE_VERSION = 3001
I18N_PACKAGE = 'ardour'
# Mandatory variables
top = '.'
out = 'build'
path_prefix = 'libs/ardour/'
libardour_sources = [
'amp.cc',
'analyser.cc',
'async_midi_port.cc',
'audio_buffer.cc',
'audio_diskstream.cc',
'audio_library.cc',
'audio_playlist.cc',
'audio_playlist_importer.cc',
'audio_playlist_source.cc',
'audio_port.cc',
'audio_region_importer.cc',
'audio_track.cc',
'audio_track_importer.cc',
'audioanalyser.cc',
'audioengine.cc',
'audiofile_tagger.cc',
'audiofilesource.cc',
'audioregion.cc',
'audiosource.cc',
'auditioner.cc',
'automatable.cc',
'automation.cc',
'automation_control.cc',
'automation_list.cc',
'automation_watch.cc',
'beats_frames_converter.cc',
'broadcast_info.cc',
'buffer.cc',
'buffer_manager.cc',
'buffer_set.cc',
'bundle.cc',
'butler.cc',
'capturing_processor.cc',
'chan_count.cc',
'chan_mapping.cc',
'config_text.cc',
'control_protocol_manager.cc',
'cycle_timer.cc',
'data_type.cc',
'default_click.cc',
'debug.cc',
'delayline.cc',
'delivery.cc',
'directory_names.cc',
'diskstream.cc',
'element_import_handler.cc',
'element_importer.cc',
'engine_slave.cc',
'enums.cc',
'event_type_map.cc',
'export_channel.cc',
'export_channel_configuration.cc',
'export_failed.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_profile_manager.cc',
'export_status.cc',
'export_timespan.cc',
'file_source.cc',
'filename_extensions.cc',
'filesystem_paths.cc',
'filter.cc',
'find_session.cc',
'globals.cc',
'graph.cc',
'graphnode.cc',
'iec1ppmdsp.cc',
'iec2ppmdsp.cc',
'import.cc',
'instrument_info.cc',
'internal_return.cc',
'internal_send.cc',
'interpolation.cc',
'io.cc',
'io_processor.cc',
'kmeterdsp.cc',
'ladspa_plugin.cc',
'legatize.cc',
'location.cc',
'location_importer.cc',
'ltc_slave.cc',
'meter.cc',
'midi_automation_list_binder.cc',
'midi_buffer.cc',
'midi_channel_filter.cc',
'midi_clock_slave.cc',
'midi_diskstream.cc',
'midi_model.cc',
'midi_patch_manager.cc',
'midi_playlist.cc',
'midi_playlist_source.cc',
'midi_port.cc',
'midi_region.cc',
'midi_ring_buffer.cc',
'midi_scene_change.cc',
'midi_scene_changer.cc',
'midi_source.cc',
'midi_state_tracker.cc',
'midi_stretch.cc',
'midi_track.cc',
'midi_ui.cc',
'midiport_manager.cc',
'mix.cc',
'monitor_processor.cc',
'mtc_slave.cc',
'mididm.cc',
'mtdm.cc',
'mute_master.cc',
'note_fixer.cc',
'onset_detector.cc',
'operations.cc',
'pan_controllable.cc',
'pannable.cc',
'panner.cc',
'panner_manager.cc',
'panner_shell.cc',
'parameter_descriptor.cc',
'pcm_utils.cc',
'playlist.cc',
'playlist_factory.cc',
'playlist_source.cc',
'plugin.cc',
'plugin_insert.cc',
'plugin_manager.cc',
'port.cc',
'port_insert.cc',
'port_manager.cc',
'port_set.cc',
'process_thread.cc',
'processor.cc',
'progress.cc',
'quantize.cc',
'rc_configuration.cc',
'recent_sessions.cc',
'region_factory.cc',
'resampled_source.cc',
'region.cc',
'return.cc',
'reverse.cc',
'route.cc',
'route_graph.cc',
'route_group.cc',
'route_group_member.cc',
'rb_effect.cc',
'scene_change.cc',
'search_paths.cc',
'send.cc',
'session.cc',
'session_butler.cc',
'session_click.cc',
'session_command.cc',
'session_configuration.cc',
'session_directory.cc',
'session_events.cc',
'session_export.cc',
'session_handle.cc',
'session_ltc.cc',
'session_metadata.cc',
'session_midi.cc',
'session_object.cc',
'session_playlists.cc',
'session_process.cc',
'session_rtevents.cc',
'session_state.cc',
'session_state_utils.cc',
'session_time.cc',
'session_transport.cc',
'slave.cc',
'smf_source.cc',
'sndfile_helpers.cc',
'sndfileimportable.cc',
'sndfilesource.cc',
'soundcloud_upload.cc',
'source.cc',
'source_factory.cc',
'speakers.cc',
'srcfilesource.cc',
'strip_silence.cc',
'system_exec.cc',
'revision.cc',
'tape_file_matcher.cc',
'template_utils.cc',
'tempo.cc',
'tempo_map_importer.cc',
'thread_buffers.cc',
'ticker.cc',
'track.cc',
'transient_detector.cc',
'transform.cc',
'unknown_processor.cc',
'user_bundle.cc',
'utils.cc',
'vumeterdsp.cc',
'worker.cc'
]
def flac_supported():
cmd = subprocess.Popen ("sndfile-info testfile.flac",
stdout = subprocess.PIPE,
stderr = subprocess.STDOUT, shell = True)
out = cmd.communicate()[0].decode('utf-8');
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].decode('utf-8');
return re.search ('unknown format', out) == None
def options(opt):
autowaf.set_options(opt)
def configure(conf):
conf.load('compiler_cxx')
conf.load('gas')
# we don't use hard-coded micro versions with ardour, so hard code it to zero
autowaf.configure(conf)
autowaf.check_pkg(conf, 'aubio', uselib_store='AUBIO',
atleast_version='0.3.2')
autowaf.check_pkg(conf, 'aubio', uselib_store='AUBIO4',
atleast_version='0.4.0', mandatory=False)
autowaf.check_pkg(conf, 'libxml-2.0', uselib_store='XML')
if Options.options.dist_target != 'mingw':
if not Options.options.no_lrdf:
autowaf.check_pkg(conf, 'lrdf', uselib_store='LRDF',
atleast_version='0.4.0')
autowaf.check_pkg(conf, 'aubio', uselib_store='AUBIO',
atleast_version='0.3.2')
autowaf.check_pkg(conf, 'samplerate', uselib_store='SAMPLERATE',
atleast_version='0.1.0')
autowaf.check_pkg(conf, 'sigc++-2.0', uselib_store='SIGCPP',
atleast_version='2.0')
if Options.options.lv2:
autowaf.check_pkg(conf, 'lv2', uselib_store='LV2',
atleast_version='1.0.0', mandatory=True)
autowaf.check_pkg(conf, 'lv2', uselib_store='LV2_1_2_0',
atleast_version='1.2.0', mandatory=False)
autowaf.check_pkg(conf, 'lv2', uselib_store='LV2_1_10_0',
atleast_version='1.10.0', mandatory=False)
autowaf.check_pkg(conf, 'serd-0', uselib_store='SERD',
atleast_version='0.14.0', mandatory=True)
autowaf.check_pkg(conf, 'sord-0', uselib_store='SORD',
atleast_version='0.8.0', mandatory=True)
autowaf.check_pkg(conf, 'sratom-0', uselib_store='SRATOM',
atleast_version='0.2.0', mandatory=True)
autowaf.check_pkg(conf, 'lilv-0', uselib_store='LILV',
atleast_version='0.14.0', mandatory=True)
autowaf.check_pkg(conf, 'lilv-0', uselib_store='LILV_0_16_0',
atleast_version='0.16.0', mandatory=False)
autowaf.check_pkg(conf, 'lilv-0', uselib_store='LILV_0_19_2',
atleast_version='0.19.2', mandatory=False)
autowaf.check_pkg(conf, 'lilv-0', uselib_store='LILV_0_21_3',
atleast_version='0.21.3', mandatory=False)
autowaf.check_pkg(conf, 'suil-0', uselib_store='SUIL',
atleast_version='0.6.0', mandatory=False)
conf.define ('LV2_SUPPORT', 1)
# autowaf.check_pkg(conf, 'soundtouch-1.0', uselib_store='SOUNDTOUCH',
# mandatory=False)
autowaf.check_pkg(conf, 'cppunit', uselib_store='CPPUNIT',
atleast_version='1.12.0', mandatory=False)
autowaf.check_pkg(conf, 'ogg', uselib_store='OGG', atleast_version='1.1.2')
autowaf.check_pkg(conf, 'flac', uselib_store='FLAC',
atleast_version='1.2.1')
autowaf.check_pkg(conf, 'libcurl', uselib_store='CURL',
atleast_version='7.0.0')
# controls whether we actually use it in preference to soundtouch
# Note: as of 2104, soundtouch (WSOLA) has been out-of-use for years.
conf.define('USE_RUBBERBAND', 1)
conf.define('CURRENT_SESSION_FILE_VERSION', CURRENT_SESSION_FILE_VERSION)
conf.check(header_name='sys/vfs.h', define_name='HAVE_SYS_VFS_H',mandatory=False)
conf.check(header_name='sys/statvfs.h', define_name='HAVE_SYS_STATVFS_H',mandatory=False)
conf.check(header_name='unistd.h', define_name='HAVE_UNISTD',mandatory=False)
if flac_supported():
conf.define ('HAVE_FLAC', 1)
if ogg_supported():
conf.define ('HAVE_OGG', 1)
conf.write_config_header('libardour-config.h', remove=False)
# Boost headers
autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp')
autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp')
autowaf.check_header(conf, 'cxx', 'boost/scoped_ptr.hpp')
autowaf.check_header(conf, 'cxx', 'boost/ptr_container/ptr_list.hpp')
if conf.env['WINDOWS_VST_SUPPORT'] == True and Options.options.dist_target == 'mingw':
conf.check(compiler='cxx',
lib='gdi32',
mandatory=True,
uselib_store='GDI32')
def build(bld):
# Library version (UNIX style major, minor, micro)
# major increment <=> incompatible changes
# minor increment <=> compatible changes (additions)
# micro increment <=> no interface changes
LIBARDOUR_LIB_VERSION = "3.0.0"
# Library
if bld.is_defined ('INTERNAL_SHARED_LIBS'):
obj = bld.shlib(features = 'c cxx cshlib cxxshlib', source=libardour_sources)
# macros for this shared library
obj.defines = [ 'LIBARDOUR_DLL_EXPORTS=1' ]
else:
obj = bld.stlib(features = 'c cxx cstlib cxxstlib', source=libardour_sources)
obj.cxxflags = [ '-fPIC' ]
obj.cflags = [ '-fPIC' ]
obj.defines = []
obj.export_includes = ['.']
obj.includes = ['.', '../surfaces/control_protocol', '..']
obj.name = 'libardour'
obj.target = 'ardour'
obj.uselib = ['GLIBMM','GTHREAD','AUBIO','SIGCPP','XML','UUID',
'SNDFILE','SAMPLERATE','LRDF','AUDIOUNITS',
'OSX','BOOST','CURL','TAGLIB','VAMPSDK','VAMPHOSTSDK','RUBBERBAND']
obj.use = ['libpbd','libmidipp','libevoral',
'libaudiographer',
'libtimecode',
]
if bld.env['build_target'] != 'mingw':
obj.uselib += ['DL']
if bld.is_defined('USE_EXTERNAL_LIBS'):
obj.uselib.extend(['VAMPSDK', 'LIBLTC'])
else:
obj.use.extend(['librubberband', 'libltc_includes', 'libltc'])
obj.vnum = LIBARDOUR_LIB_VERSION
obj.install_path = bld.env['LIBDIR']
obj.defines += [
'PACKAGE="' + I18N_PACKAGE + str(bld.env['MAJOR']) + '"',
'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
'LOCALEDIR="' + os.path.normpath(bld.env['LOCALEDIR']) + '"',
'LIBARDOUR="' + bld.env['lwrcase_dirname'] + '"',
'EVORAL_MIDI_XML=1',
]
#obj.source += ' st_stretch.cc st_pitch.cc '
#obj.uselib += ' SOUNDTOUCH '
#obj.add_objects = 'default/libs/surfaces/control_protocol/smpte_1.o'
if bld.is_defined('HAVE_LILV') :
obj.source += ['lv2_plugin.cc', 'lv2_evbuf.c', 'uri_map.cc']
obj.uselib += ['LILV']
if bld.is_defined('HAVE_SUIL'):
obj.uselib += ['SUIL']
if bld.is_defined('WINDOWS_VST_SUPPORT'):
obj.source += [ 'windows_vst_plugin.cc']
obj.includes += [ '../fst' ]
obj.defines += [ 'WINDOWS_VST_SUPPORT' ]
if bld.env['build_target'] == 'mingw':
obj.use += [ 'vstwin' ]
obj.uselib += ['GDI32']
if bld.is_defined('LXVST_SUPPORT'):
obj.source += [ 'lxvst_plugin.cc', 'linux_vst_support.cc' ]
obj.defines += [ 'LXVST_SUPPORT' ]
if bld.is_defined('WINDOWS_VST_SUPPORT') or bld.is_defined('LXVST_SUPPORT'):
obj.source += [ 'session_vst.cc', 'vst_plugin.cc', 'vst_info_file.cc' ]
if bld.is_defined('HAVE_COREAUDIO'):
obj.source += [ 'coreaudiosource.cc', 'caimportable.cc' ]
obj.use += ['libappleutility']
if bld.is_defined('AUDIOUNIT_SUPPORT'):
obj.source += [ 'audio_unit.cc' ]
if Options.options.fpu_optimization:
if (bld.env['build_target'] == 'i386' or bld.env['build_target'] == 'i686'):
obj.source += [ 'sse_functions_xmm.cc', 'sse_functions.s' ]
elif bld.env['build_target'] == 'x86_64':
obj.source += [ 'sse_functions_xmm.cc', 'sse_functions_64bit.s' ]
# i18n
if bld.is_defined('ENABLE_NLS'):
mo_files = bld.path.ant_glob('po/*.mo')
for mo in mo_files:
lang = os.path.basename(mo.srcpath()).replace('.mo', '')
bld.install_as(os.path.join(bld.env['LOCALEDIR'], lang, 'LC_MESSAGES', I18N_PACKAGE + str(bld.env['MAJOR']) + '.mo'),
mo)
if bld.env['BUILD_TESTS'] and bld.is_defined('HAVE_CPPUNIT'):
# Unit tests
# only build these common sources once
testcommon = bld(features = 'cxx')
testcommon.includes = obj.includes + ['test', '../pbd', '..']
testcommon.source = ['test/testrunner.cc', 'test/test_needing_session.cc',
'test/dummy_lxvst.cc', 'test/audio_region_test.cc', 'test/test_util.cc', 'test/test_ui.cc']
testcommon.uselib = ['CPPUNIT','SIGCPP','GLIBMM','GTHREAD',
'SAMPLERATE','XML','LRDF','COREAUDIO','TAGLIB','VAMPSDK','VAMPHOSTSDK','RUBBERBAND']
testcommon.use = ['libpbd','libmidipp','libevoral',
'libaudiographer','libardour']
if bld.is_defined('USE_EXTERNAL_LIBS'):
testcommon.uselib.extend(['LIBLTC',])
else:
testcommon.use.extend(['libltc', 'librubberband'])
testcommon.defines = [
'PACKAGE="libardour' + str(bld.env['MAJOR']) + 'test"',
'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
'LOCALEDIR="' + os.path.normpath(bld.env['LOCALEDIR']) + '"',
]
testcommon.name = 'testcommon'
if bld.env['FPU_OPTIMIZATION']:
testcommon.source += [ 'sse_functions_xmm.cc' ]
if (bld.env['build_target'] == 'i386'
or bld.env['build_target'] == 'i686'):
testcommon.source += [ 'sse_functions.s' ]
elif bld.env['build_target'] == 'x86_64':
testcommon.source += [ 'sse_functions_64bit.s' ]
if bld.env['SINGLE_TESTS']:
create_ardour_test_program(bld, obj.includes, 'audio_engine_test', 'test_audio_engine', ['test/audio_engine_test.cc'])
create_ardour_test_program(bld, obj.includes, 'automation_list_property_test', 'test_automation_list_property', ['test/automation_list_property_test.cc'])
create_ardour_test_program(bld, obj.includes, 'bbt', 'test_bbt', ['test/bbt_test.cc'])
create_ardour_test_program(bld, obj.includes, 'tempo', 'test_tempo', ['test/tempo_test.cc'])
create_ardour_test_program(bld, obj.includes, 'interpolation', 'test_interpolation', ['test/interpolation_test.cc'])
create_ardour_test_program(bld, obj.includes, 'midi_clock_slave', 'test_midi_clock_slave', ['test/midi_clock_slave_test.cc'])
create_ardour_test_program(bld, obj.includes, 'resampled_source', 'test_resampled_source', ['test/resampled_source_test.cc'])
create_ardour_test_program(bld, obj.includes, 'framewalk_to_beats', 'test_framewalk_to_beats', ['test/framewalk_to_beats_test.cc'])
create_ardour_test_program(bld, obj.includes, 'framepos_plus_beats', 'test_framepos_plus_beats', ['test/framepos_plus_beats_test.cc'])
create_ardour_test_program(bld, obj.includes, 'framepos_minus_beats', 'test_framepos_minus_beats', ['test/framepos_minus_beats_test.cc'])
create_ardour_test_program(bld, obj.includes, 'playlist_equivalent_regions', 'test_playlist_equivalent_regions', ['test/playlist_equivalent_regions_test.cc'])
create_ardour_test_program(bld, obj.includes, 'playlist_layering', 'test_playlist_layering', ['test/playlist_layering_test.cc'])
create_ardour_test_program(bld, obj.includes, 'plugins_test', 'test_plugins', ['test/plugins_test.cc'])
create_ardour_test_program(bld, obj.includes, 'region_naming', 'test_region_naming', ['test/region_naming_test.cc'])
create_ardour_test_program(bld, obj.includes, 'control_surface', 'test_control_surfaces', ['test/control_surfaces_test.cc'])
create_ardour_test_program(bld, obj.includes, 'mtdm_test', 'test_mtdm', ['test/mtdm_test.cc'])
create_ardour_test_program(bld, obj.includes, 'session_test', 'test_session', ['test/session_test.cc'])
test_sources = '''
test/audio_engine_test.cc
test/automation_list_property_test.cc
test/bbt_test.cc
test/tempo_test.cc
test/interpolation_test.cc
test/midi_clock_slave_test.cc
test/resampled_source_test.cc
test/framewalk_to_beats_test.cc
test/framepos_plus_beats_test.cc
test/framepos_minus_beats_test.cc
test/playlist_equivalent_regions_test.cc
test/playlist_layering_test.cc
test/plugins_test.cc
test/region_naming_test.cc
test/control_surfaces_test.cc
test/mtdm_test.cc
test/session_test.cc
'''.split()
# Tests that don't work
# test/playlist_read_test.cc
# test/audio_region_read_test.cc
# test/combine_regions_test.cc
# test/mantis_3356_test.cc
create_ardour_test_program(bld, obj.includes, 'libardour-tests', 'run-tests', test_sources)
# Tester to just load a session
session_load_tester = bld(features = 'cxx cxxprogram')
session_load_tester.source = '''
test/test_util.cc
test/load_session.cc
test/dummy_lxvst.cc
'''.split()
session_load_tester.includes = obj.includes
session_load_tester.includes.append ('test')
session_load_tester.uselib = ['CPPUNIT','SIGCPP','GLIBMM','GTHREAD',
'SAMPLERATE','XML','LRDF','COREAUDIO']
session_load_tester.use = ['libpbd','libmidipp','libardour']
session_load_tester.name = 'libardour-session-load-tester'
session_load_tester.target = 'load-session'
session_load_tester.install_path = ''
session_load_tester.defines = [
'PACKAGE="libardour' + str(bld.env['MAJOR']) + 'profile"',
'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
'LOCALEDIR="' + os.path.normpath(bld.env['LOCALEDIR']) + '"',
]
if bld.env['FPU_OPTIMIZATION']:
session_load_tester.source += [ 'sse_functions_xmm.cc' ]
if (bld.env['build_target'] == 'i386'
or bld.env['build_target'] == 'i686'):
session_load_tester.source += [ 'sse_functions.s' ]
elif bld.env['build_target'] == 'x86_64':
session_load_tester.source += [ 'sse_functions_64bit.s' ]
# Profiling
for p in ['runpc', 'lots_of_regions', 'load_session']:
profilingobj = bld(features = 'cxx cxxprogram')
profilingobj.source = '''
test/dummy_lxvst.cc
test/test_util.cc
'''.split()
profilingobj.source.append('test/profiling/%s.cc' % p)
profilingobj.includes = obj.includes
profilingobj.includes.append ('test')
profilingobj.uselib = ['CPPUNIT','SIGCPP','GLIBMM','GTHREAD',
'SAMPLERATE','XML','LRDF','COREAUDIO']
profilingobj.use = ['libpbd','libmidipp','libardour']
profilingobj.name = 'libardour-profiling'
profilingobj.target = p
profilingobj.install_path = ''
profilingobj.defines = [
'PACKAGE="libardour' + str(bld.env['MAJOR']) + 'profile"',
'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
'LOCALEDIR="' + os.path.normpath(bld.env['LOCALEDIR']) + '"',
]
if bld.env['FPU_OPTIMIZATION']:
profilingobj.source += [ 'sse_functions_xmm.cc' ]
if (bld.env['build_target'] == 'i386'
or bld.env['build_target'] == 'i686'):
profilingobj.source += [ 'sse_functions.s' ]
elif bld.env['build_target'] == 'x86_64':
profilingobj.source += [ 'sse_functions_64bit.s' ]
def create_ardour_test_program(bld, includes, name, target, sources):
testobj = bld(features = 'cxx cxxprogram')
testobj.includes = includes + ['test', '../pbd', '..']
testobj.source = sources
testobj.uselib = ['CPPUNIT','SIGCPP','GLIBMM','GTHREAD',
'SAMPLERATE','XML','LRDF','COREAUDIO','TAGLIB','VAMPSDK','VAMPHOSTSDK','RUBBERBAND']
testobj.use = ['libpbd','libmidipp','libevoral',
'libaudiographer','libardour','testcommon']
if bld.is_defined('USE_EXTERNAL_LIBS'):
testobj.uselib.extend(['LIBLTC'])
else:
testobj.use.extend(['libltc'])
testobj.name = name
testobj.target = target
# not sure about install path
testobj.install_path = bld.env['LIBDIR']
testobj.defines = [
'PACKAGE="libardour' + str(bld.env['MAJOR']) + 'test"',
'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
'CONFIG_DIR="' + os.path.normpath(bld.env['SYSCONFDIR']) + '"',
'LOCALEDIR="' + os.path.normpath(bld.env['LOCALEDIR']) + '"',
]
def shutdown():
autowaf.shutdown()
def i18n(bld):
autowaf.build_i18n(bld, top, 'libs/ardour', I18N_PACKAGE + str(bld.env['MAJOR']), libardour_sources,
'Paul Davis')
def i18n_pot(bld):
autowaf.build_i18n(bld, top, 'libs/ardour', I18N_PACKAGE + str(bld.env['MAJOR']), libardour_sources,
'Paul Davis')
def i18n_po(bld):
autowaf.build_i18n_po(bld, top, 'libs/ardour', I18N_PACKAGE + str(bld.env['MAJOR']), libardour_sources,
'Paul Davis')
def i18n_mo(bld):
autowaf.build_i18n_mo(bld, top, 'libs/ardour', I18N_PACKAGE + str(bld.env['MAJOR']), libardour_sources,
'Paul Davis')