make i18n build work ; add mackie dir back to build ; token work on amp for MIDI; don't try to subgroup route groups with MIDI (for now)

git-svn-id: svn://localhost/ardour2/branches/3.0@5412 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2009-07-22 13:51:16 +00:00
parent 272c1a40db
commit 3b7230552d
14 changed files with 488 additions and 354 deletions

View file

@ -2,6 +2,7 @@
import autowaf
import os
import glob
from w18n import build_i18n
# Version of this package (even if built as a child)
MAJOR = '1'
@ -19,8 +20,181 @@ blddir = 'build'
path_prefix = 'gtk2_ardour/'
gtk2_ardour_sources = [
'about.cc',
'actions.cc',
'add_midi_cc_track_dialog.cc',
'add_route_dialog.cc',
'analysis_window.cc',
'ardour_dialog.cc',
'ardour_ui.cc',
'ardour_ui2.cc',
'ardour_ui_dependents.cc',
'ardour_ui_dialogs.cc',
'ardour_ui_ed.cc',
'ardour_ui_mixer.cc',
'ardour_ui_options.cc',
'audio_clock.cc',
'audio_region_editor.cc',
'audio_region_view.cc',
'audio_streamview.cc',
'audio_time_axis.cc',
'automation_controller.cc',
'automation_line.cc',
'automation_region_view.cc',
'automation_streamview.cc',
'automation_time_axis.cc',
'axis_view.cc',
'bundle_manager.cc',
'cairo_widget.cc',
'canvas-flag.cc',
'canvas-note-event.cc',
'canvas-note.cc',
'canvas-program-change.cc',
'canvas-simpleline.c',
'canvas-simplerect.c',
'canvas-sysex.cc',
'canvas-waveview.c',
'control_point.cc',
'control_point_dialog.cc',
'crossfade_edit.cc',
'crossfade_view.cc',
'curvetest.cc',
'diamond.cc',
'editing.cc',
'editor.cc',
'editor_actions.cc',
'editor_audio_import.cc',
'editor_audiotrack.cc',
'editor_canvas.cc',
'editor_canvas_events.cc',
'editor_component.cc',
'editor_cursors.cc',
'editor_drag.cc',
'editor_route_groups.cc',
'editor_export_audio.cc',
'editor_group_tabs.cc',
'editor_hscroller.cc',
'editor_keyboard.cc',
'editor_keys.cc',
'editor_markers.cc',
'editor_mixer.cc',
'editor_mouse.cc',
'editor_nudge.cc',
'editor_ops.cc',
'editor_regions.cc',
'editor_routes.cc',
'editor_rulers.cc',
'editor_scrub.cc',
'editor_selection.cc',
'editor_selection_list.cc',
'editor_snapshots.cc',
'editor_summary.cc',
'editor_tempodisplay.cc',
'editor_timefx.cc',
'engine_dialog.cc',
'enums.cc',
'export_channel_selector.cc',
'export_dialog.cc',
'export_file_notebook.cc',
'export_filename_selector.cc',
'export_format_dialog.cc',
'export_format_selector.cc',
'export_preset_selector.cc',
'export_timespan_selector.cc',
'fft.cc',
'fft_graph.cc',
'fft_result.cc',
'gain_meter.cc',
'generic_pluginui.cc',
'ghostregion.cc',
'global_port_matrix.cc',
'group_tabs.cc',
'gtk-custom-hruler.c',
'gtk-custom-ruler.c',
'io_selector.cc',
'keyboard.cc',
'keyeditor.cc',
'latency_gui.cc',
'level_meter.cc',
'lineset.cc',
'location_ui.cc',
'main.cc',
'marker.cc',
'midi_channel_selector.cc',
'midi_port_dialog.cc',
'midi_region_view.cc',
'midi_scroomer.cc',
'midi_streamview.cc',
'midi_time_axis.cc',
'mixer_group_tabs.cc',
'mixer_strip.cc',
'mixer_ui.cc',
'nag.cc',
'option_editor.cc',
'opts.cc',
'panner.cc',
'panner2d.cc',
'panner_ui.cc',
'piano_roll_header.cc',
'playlist_selector.cc',
'plugin_eq_gui.cc',
'plugin_selector.cc',
'plugin_ui.cc',
'port_group.cc',
'port_matrix.cc',
'port_matrix_body.cc',
'port_matrix_column_labels.cc',
'port_matrix_component.cc',
'port_matrix_grid.cc',
'port_matrix_labels.cc',
'port_matrix_row_labels.cc',
'processor_box.cc',
'prompter.cc',
'public_editor.cc',
'rc_option_editor.cc',
'region_gain_line.cc',
'region_selection.cc',
'region_view.cc',
'return_ui.cc',
'rhythm_ferret.cc',
'route_group_dialog.cc',
'route_group_menu.cc',
'route_params_ui.cc',
'route_processor_selection.cc',
'route_time_axis.cc',
'route_ui.cc',
'selection.cc',
'send_ui.cc',
'session_import_dialog.cc',
'session_metadata_dialog.cc',
'session_option_editor.cc',
'sfdb_ui.cc',
'simpleline.cc',
'simplerect.cc',
'splash.cc',
'startup.cc',
'streamview.cc',
'strip_silence_dialog.cc',
'tape_region_view.cc',
'tempo_dialog.cc',
'tempo_lines.cc',
'theme_manager.cc',
'time_axis_view.cc',
'time_axis_view_item.cc',
'time_fx_dialog.cc',
'time_selection.cc',
'track_selection.cc',
'ui_config.cc',
'utils.cc',
'version.cc',
'waveview.cc',
]
def set_options(opt):
autowaf.set_options(opt)
opt.add_option('--potupdate', action='store_true', dest='potupdate',
help='Rebuild pot file for translators')
def configure(conf):
autowaf.build_version_files(path_prefix+'version.h', path_prefix+'version.cc',
@ -51,177 +225,8 @@ def configure(conf):
def build(bld):
# Program
obj = bld.new_task_gen(features = 'cxx cc cprogram')
obj.source = '''
about.cc
actions.cc
add_midi_cc_track_dialog.cc
add_route_dialog.cc
analysis_window.cc
ardour_dialog.cc
ardour_ui.cc
ardour_ui2.cc
ardour_ui_dependents.cc
ardour_ui_dialogs.cc
ardour_ui_ed.cc
ardour_ui_mixer.cc
ardour_ui_options.cc
audio_clock.cc
audio_region_editor.cc
audio_region_view.cc
audio_streamview.cc
audio_time_axis.cc
automation_controller.cc
automation_line.cc
automation_region_view.cc
automation_streamview.cc
automation_time_axis.cc
axis_view.cc
bundle_manager.cc
cairo_widget.cc
canvas-flag.cc
canvas-note-event.cc
canvas-note.cc
canvas-program-change.cc
canvas-simpleline.c
canvas-simplerect.c
canvas-sysex.cc
canvas-waveview.c
control_point.cc
control_point_dialog.cc
crossfade_edit.cc
crossfade_view.cc
curvetest.cc
diamond.cc
editing.cc
editor.cc
editor_actions.cc
editor_audio_import.cc
editor_audiotrack.cc
editor_canvas.cc
editor_canvas_events.cc
editor_component.cc
editor_cursors.cc
editor_drag.cc
editor_route_groups.cc
editor_export_audio.cc
editor_group_tabs.cc
editor_hscroller.cc
editor_keyboard.cc
editor_keys.cc
editor_markers.cc
editor_mixer.cc
editor_mouse.cc
editor_nudge.cc
editor_ops.cc
editor_regions.cc
editor_routes.cc
editor_rulers.cc
editor_scrub.cc
editor_selection.cc
editor_selection_list.cc
editor_snapshots.cc
editor_summary.cc
editor_tempodisplay.cc
editor_timefx.cc
engine_dialog.cc
enums.cc
export_channel_selector.cc
export_dialog.cc
export_file_notebook.cc
export_filename_selector.cc
export_format_dialog.cc
export_format_selector.cc
export_preset_selector.cc
export_timespan_selector.cc
fft.cc
fft_graph.cc
fft_result.cc
gain_meter.cc
generic_pluginui.cc
ghostregion.cc
global_port_matrix.cc
group_tabs.cc
gtk-custom-hruler.c
gtk-custom-ruler.c
io_selector.cc
keyboard.cc
keyeditor.cc
latency_gui.cc
level_meter.cc
lineset.cc
location_ui.cc
main.cc
marker.cc
midi_channel_selector.cc
midi_port_dialog.cc
midi_region_view.cc
midi_scroomer.cc
midi_streamview.cc
midi_time_axis.cc
mixer_group_tabs.cc
mixer_strip.cc
mixer_ui.cc
nag.cc
option_editor.cc
opts.cc
panner.cc
panner2d.cc
panner_ui.cc
piano_roll_header.cc
playlist_selector.cc
plugin_eq_gui.cc
plugin_selector.cc
plugin_ui.cc
port_group.cc
port_matrix.cc
port_matrix_body.cc
port_matrix_column_labels.cc
port_matrix_component.cc
port_matrix_grid.cc
port_matrix_labels.cc
port_matrix_row_labels.cc
processor_box.cc
prompter.cc
public_editor.cc
rc_option_editor.cc
region_gain_line.cc
region_selection.cc
region_view.cc
return_ui.cc
rhythm_ferret.cc
route_group_dialog.cc
route_group_menu.cc
route_params_ui.cc
route_processor_selection.cc
route_time_axis.cc
route_ui.cc
selection.cc
send_ui.cc
session_import_dialog.cc
session_metadata_dialog.cc
session_option_editor.cc
sfdb_ui.cc
simpleline.cc
simplerect.cc
splash.cc
startup.cc
streamview.cc
strip_silence_dialog.cc
tape_region_view.cc
tempo_dialog.cc
tempo_lines.cc
theme_manager.cc
time_axis_view.cc
time_axis_view_item.cc
time_fx_dialog.cc
time_selection.cc
track_selection.cc
ui_config.cc
utils.cc
version.cc
waveview.cc
'''
obj.includes = ['.']
obj.source = gtk2_ardour_sources
obj.name = 'gtk2_ardour'
obj.target = 'ardour-3.0'
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
@ -238,29 +243,29 @@ def build(bld):
obj.cxxflags += ['-DLOCALEDIR="' + os.path.join(
os.path.normpath(bld.env['DATADIRNAME']), 'locale') + '"']
if bld.env['HAVE_SLV2']:
obj.source += ' lv2_plugin_ui.cc '
obj.source += [ 'lv2_plugin_ui.cc' ]
obj.uselib += ' SLV2 '
if bld.env['FREESOUND']:
obj.source += 'sfdb_freesound_mootcher.cc '
obj.source += [ 'sfdb_freesound_mootcher.cc' ]
if bld.env['VST']:
obj.source += ' vst_pluginui.cc '
obj.source += [ 'vst_pluginui.cc' ]
obj.cxxflags += [ '-DVST_SUPPORT' ]
if bld.env['GTKOSX']:
obj.features += ' objc '
obj.source += ' cocoacarbon.mm '
obj.source += [ 'cocoacarbon.mm' ]
obj.cxxflags += [ '-DTOP_MENUBAR', '-DGTKOSX' ]
obj.linkflags += [ '-framework', 'AppKit', '-framework', 'CoreAudioKit' ]
if bld.env['AUDIOUNITS']:
obj.source += ' au_pluginui.mm '
obj.source += [ 'au_pluginui.mm' ]
obj.cxxflags += [ '-DHAVE_AUDIOUNITS' ]
obj.uselib_local += ' libappleutility '
else:
obj.source += ' x11.cc '
obj.source += [ 'x11.cc' ]
# Wrappers
@ -401,6 +406,12 @@ def build(bld):
bld.install_files('${DATADIR}/ardour3/pixmaps', 'pixmaps/*.xpm')
bld.install_files('${DATADIR}/ardour3', 'splash.png')
def shutdown():
autowaf.shutdown()
# i18n
if bld.env['ENABLE_NLS']:
mo_files = glob.glob (os.path.join (bld.get_curdir(), 'po/*.mo'))
for mo in mo_files:
lang = os.path.basename (mo).replace ('.mo', '')
bld.install_as (os.path.join (bld.env['PREFIX'], 'share', 'locale', lang, 'LC_MESSAGES', APPNAME + '.mo'), mo)
def i18n(bld):
build_i18n (bld, 'gtk2_ardour', APPNAME, gtk2_ardour_sources)

View file

@ -28,6 +28,7 @@
#include "ardour/buffer_set.h"
#include "ardour/configuration.h"
#include "ardour/io.h"
#include "ardour/midi_buffer.h"
#include "ardour/mute_master.h"
#include "ardour/session.h"
@ -193,9 +194,26 @@ Amp::apply_gain (BufferSet& bufs, nframes_t nframes, gain_t initial, gain_t targ
delta = target - initial;
}
/* MIDI Gain */
for (BufferSet::midi_iterator i = bufs.midi_begin(); i != bufs.midi_end(); ++i) {
#if 0
MidiBuffer& mb (*i);
for (MidiBuffer::iterator m = mb.begin(); m != mb.end(); ++m) {
Evoral::MIDIEvent<MidiBuffer::TimeType> ev (*m);
if (ev.buffer()[0] == MIDI_CMD_NOTE_ON) {
ev.buffer()[2] = (uint8_t) rint (ev.buffer()[2] * 1.0);
}
}
#endif
}
/* Audio Gain */
for (BufferSet::audio_iterator i = bufs.audio_begin(); i != bufs.audio_end(); ++i) {
Sample* const buffer = i->data();
fractional_pos = 1.0;
for (nframes_t nx = 0; nx < declick; ++nx) {

View file

@ -126,6 +126,25 @@ public:
audio_iterator audio_begin() { return audio_iterator(*this, 0); }
audio_iterator audio_end() { return audio_iterator(*this, _count.n_audio()); }
class midi_iterator {
public:
MidiBuffer& operator*() { return _set.get_midi(_index); }
MidiBuffer* operator->() { return &_set.get_midi(_index); }
midi_iterator& operator++() { ++_index; return *this; } // yes, prefix only
bool operator==(const midi_iterator& other) { return (_index == other._index); }
bool operator!=(const midi_iterator& other) { return (_index != other._index); }
private:
friend class BufferSet;
midi_iterator(BufferSet& list, size_t index) : _set(list), _index(index) {}
BufferSet& _set;
size_t _index;
};
midi_iterator midi_begin() { return midi_iterator(*this, 0); }
midi_iterator midi_end() { return midi_iterator(*this, _count.n_midi()); }
class iterator {
public:

View file

@ -64,6 +64,15 @@ public:
*((TimeType*)(buffer._data + offset)),
event_size, ev_start);
}
inline EventType operator*() {
uint8_t* ev_start = buffer._data + offset + sizeof(TimeType);
int event_size = Evoral::midi_event_size(ev_start);
assert(event_size >= 0);
return EventType(EventTypeMap::instance().midi_event_type(*ev_start),
*((TimeType*)(buffer._data + offset)),
event_size, ev_start);
}
inline iterator_base<BufferType, EventType>& operator++() {
uint8_t* ev_start = buffer._data + offset + sizeof(TimeType);
int event_size = Evoral::midi_event_size(ev_start);

View file

@ -328,8 +328,6 @@ Delivery::run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame, nfra
Amp::apply_simple_gain (bufs, nframes, tgain);
}
// Attach output buffers to port buffers
if (_panner && _panner->npanners() && !_panner->bypassed()) {
// Use the panner to distribute audio to output port buffers

View file

@ -117,6 +117,8 @@ InternalSend::run (BufferSet& bufs, sframes_t start_frame, sframes_t end_frame,
_amp->run (sendbufs, start_frame, end_frame, nframes);
/* XXX NEED TO PAN */
/* consider metering */
if (_metering) {

View file

@ -760,10 +760,6 @@ Route::add_processor_from_xml (const XMLNode& node, ProcessorList::iterator iter
return true;
}
} else if (prop->value() == "listen" || prop->value() == "deliver") {
/* XXX need to generalize */
} else if (prop->value() == "intsend") {
processor.reset (new InternalSend (_session, _mute_master, node));
@ -795,6 +791,7 @@ Route::add_processor_from_xml (const XMLNode& node, ProcessorList::iterator iter
} else {
error << string_compose(_("unknown Processor type \"%1\"; ignored"), prop->value()) << endmsg;
return false;
}
if (iter == _processors.end() && processor->visible() && !_processors.empty()) {
@ -2649,6 +2646,8 @@ Route::meter ()
{
Glib::RWLock::ReaderLock rm (_processor_lock, Glib::TRY_LOCK);
assert (_meter);
_meter->meter ();
for (ProcessorList::iterator i = _processors.begin(); i != _processors.end(); ++i) {

View file

@ -34,6 +34,8 @@
#include "ardour/configuration.h"
#include "ardour/session.h"
#include "i18n.h"
using namespace ARDOUR;
using namespace sigc;
using namespace std;
@ -224,6 +226,15 @@ RouteGroup::make_subgroup ()
RouteList rl;
uint32_t nin = 0;
/* since we don't do MIDI Busses yet, check quickly ... */
for (list<Route*>::iterator i = routes.begin(); i != routes.end(); ++i) {
if ((*i)->output()->n_ports().n_midi() != 0) {
PBD::info << _("You cannot subgroup MIDI tracks at this time") << endmsg;
return;
}
}
for (list<Route*>::iterator i = routes.begin(); i != routes.end(); ++i) {
nin = max (nin, (*i)->output()->n_ports().n_audio());
}

View file

@ -190,7 +190,13 @@ Send::configure_io (ChanCount in, ChanCount out)
return false;
}
return Processor::configure_io (in, out);
if (!Processor::configure_io (in, out)) {
return false;
}
reset_panner ();
return true;
}
/** Set up the XML description of a send so that its name is unique.

View file

@ -3,6 +3,7 @@ import autowaf
import os
import glob
import Options
from w18n import build_i18n
# Version of this package (even if built as a child)
MAJOR = '3'
@ -26,6 +27,160 @@ blddir = 'build'
path_prefix = 'libs/ardour/'
libardour_sources = [
'amp.cc',
'analyser.cc',
'audio_buffer.cc',
'audio_diskstream.cc',
'audio_library.cc',
'audio_playlist.cc',
'audio_playlist_importer.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',
'beats_frames_converter.cc',
'broadcast_info.cc',
'buffer.cc',
'buffer_set.cc',
'bundle.cc',
'chan_count.cc',
'chan_mapping.cc',
'configuration.cc',
'control_protocol_manager.cc',
'control_protocol_search_path.cc',
'crossfade.cc',
'cycle_timer.cc',
'default_click.cc',
'delivery.cc',
'directory_names.cc',
'diskstream.cc',
'element_import_handler.cc',
'element_importer.cc',
'enums.cc',
'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_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',
'internal_send.cc',
'interpolation.cc',
'io.cc',
'io_processor.cc',
'jack_slave.cc',
'ladspa_plugin.cc',
'location.cc',
'location_importer.cc',
'meter.cc',
'midi_buffer.cc',
'midi_clock_slave.cc',
'midi_diskstream.cc',
'midi_model.cc',
'midi_patch_manager.cc',
'midi_playlist.cc',
'midi_port.cc',
'midi_region.cc',
'midi_ring_buffer.cc',
'midi_source.cc',
'midi_state_tracker.cc',
'midi_stretch.cc',
'midi_track.cc',
'mix.cc',
'mtc_slave.cc',
'mute_master.cc',
'named_selection.cc',
'onset_detector.cc',
'panner.cc',
'pcm_utils.cc',
'playlist.cc',
'playlist_factory.cc',
'plugin.cc',
'plugin_insert.cc',
'plugin_manager.cc',
'port.cc',
'port_insert.cc',
'port_set.cc',
'processor.cc',
'quantize.cc',
'rc_configuration.cc',
'recent_sessions.cc',
'region.cc',
'region_factory.cc',
'resampled_source.cc',
'return.cc',
'reverse.cc',
'route.cc',
'route_group.cc',
'rb_effect.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_metadata.cc',
'session_midi.cc',
'session_process.cc',
'session_state.cc',
'session_state_utils.cc',
'session_time.cc',
'session_transport.cc',
'session_utils.cc',
'smf_source.cc',
'sndfile_helpers.cc',
'sndfileimportable.cc',
'sndfilesource.cc',
'source.cc',
'source_factory.cc',
'strip_silence.cc',
'svn_revision.cc',
'tape_file_matcher.cc',
'template_utils.cc',
'tempo.cc',
'tempo_map_importer.cc',
'ticker.cc',
'track.cc',
'transient_detector.cc',
'user_bundle.cc',
'utils.cc',
'version.cc'
]
def set_options(opt):
autowaf.set_options(opt)
@ -76,160 +231,8 @@ def configure(conf):
def build(bld):
# Library
obj = bld.new_task_gen('cxx', 'shlib')
obj.source = '''
amp.cc
analyser.cc
audio_buffer.cc
audio_diskstream.cc
audio_library.cc
audio_playlist.cc
audio_playlist_importer.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
beats_frames_converter.cc
broadcast_info.cc
buffer.cc
buffer_set.cc
bundle.cc
chan_count.cc
chan_mapping.cc
configuration.cc
control_protocol_manager.cc
control_protocol_search_path.cc
crossfade.cc
cycle_timer.cc
default_click.cc
delivery.cc
directory_names.cc
diskstream.cc
element_import_handler.cc
element_importer.cc
enums.cc
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_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
internal_send.cc
interpolation.cc
io.cc
io_processor.cc
jack_slave.cc
ladspa_plugin.cc
location.cc
location_importer.cc
meter.cc
midi_buffer.cc
midi_clock_slave.cc
midi_diskstream.cc
midi_model.cc
midi_patch_manager.cc
midi_playlist.cc
midi_port.cc
midi_region.cc
midi_ring_buffer.cc
midi_source.cc
midi_state_tracker.cc
midi_stretch.cc
midi_track.cc
mix.cc
mtc_slave.cc
mute_master.cc
named_selection.cc
onset_detector.cc
panner.cc
pcm_utils.cc
playlist.cc
playlist_factory.cc
plugin.cc
plugin_insert.cc
plugin_manager.cc
port.cc
port_insert.cc
port_set.cc
processor.cc
quantize.cc
rc_configuration.cc
recent_sessions.cc
region.cc
region_factory.cc
resampled_source.cc
return.cc
reverse.cc
route.cc
route_group.cc
rb_effect.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_metadata.cc
session_midi.cc
session_process.cc
session_state.cc
session_state_utils.cc
session_time.cc
session_transport.cc
session_utils.cc
smf_source.cc
sndfile_helpers.cc
sndfileimportable.cc
sndfilesource.cc
source.cc
source_factory.cc
strip_silence.cc
svn_revision.cc
tape_file_matcher.cc
template_utils.cc
tempo.cc
tempo_map_importer.cc
ticker.cc
track.cc
transient_detector.cc
user_bundle.cc
utils.cc
version.cc
'''
obj = bld.new_task_gen('cxx', 'shlib')
obj.source = libardour_sources
obj.export_incdirs = ['.']
obj.includes = ['.', '../surfaces/control_protocol']
obj.name = 'libardour'
@ -249,28 +252,35 @@ def build(bld):
#obj.source += ' st_stretch.cc st_pitch.cc '
#obj.uselib += ' SOUNDTOUCH '
if bld.env['HAVE_SLV2']:
obj.source += ' lv2_plugin.cc lv2_event_buffer.cc uri_map.cc '
obj.source += [ 'lv2_plugin.cc', 'lv2_event_buffer.cc', 'uri_map.cc' ]
obj.uselib += ' SLV2 '
if bld.env['VST']:
obj.source += ' vst_plugin.cc session_vst.cc '
obj.source += [ 'vst_plugin.cc', 'session_vst.cc' ]
if bld.env['HAVE_COREAUDIO'] and bld.env['COREAUDIO']:
obj.sources += ' coreaudio.cc caimportable.cc '
obj.sources += [ 'coreaudio.cc', 'caimportable.cc' ]
if bld.env['HAVE_AUDIOUNITS'] and bld.env['AUDIOUNITS']:
obj.sources += ' audio_unit.cc '
obj.sources += [ 'audio_unit.cc' ]
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['FPU_OPTIMIZATION']:
obj.source += ' sse_functions_xmm.cc'
obj.source += [ 'sse_functions_xmm.cc' ]
if bld.env['build_target'] == 'i386' or bld.env['build_target'] == 'i686':
obj.source += ' sse_functions.s'
obj.source += [ 'sse_functions.s' ]
elif bld.env['build_target'] == 'x86_64':
obj.source += ' sse_functions_64bit.s'
obj.source += [ 'sse_functions_64bit.s' ]
# i18n
if bld.env['ENABLE_NLS']:
mo_files = glob.glob (os.path.join (bld.get_curdir(), 'po/*.mo'))
for mo in mo_files:
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']:
# Unit tests
@ -289,3 +299,5 @@ def build(bld):
def shutdown():
autowaf.shutdown()
def i18n(bld):
build_i18n (bld, 'libs/ardour', APPNAME, libardour_sources)

View file

@ -6,7 +6,7 @@ import os
# major increment <=> incompatible changes
# minor increment <=> compatible changes (additions)
# micro increment <=> no interface changes
LIBSURFACES_LIB_VERSION = '4.1.0'
LIBARDOUR_MCP_LIB_VERSION = '4.1.0'
# Mandatory variables
srcdir = '.'
@ -43,10 +43,10 @@ def build(bld):
obj.export_incdirs = ['./mackie']
obj.cxxflags = '-DPACKAGE="ardour_mackie"'
obj.includes = ['.', './mackie']
obj.name = 'libmackie'
obj.target = 'mackie'
obj.uselib_local = 'libardour libsurfaces'
obj.vnum = LIBSURFACES_LIB_VERSION
obj.name = 'libardour_mcp'
obj.target = 'ardour_mcp'
obj.uselib_local = 'libardour libardour_cp'
obj.vnum = LIBARDOUR_MCP_LIB_VERSION
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
def shutdown():

View file

@ -43,6 +43,7 @@ def configure(conf):
def build(bld):
bld.add_subdirs('control_protocol')
bld.add_subdirs('generic_midi')
bld.add_subdirs('mackie')
if bld.env['BUILD_OSC']:
bld.add_subdirs('osc')
if bld.env['BUILD_POWERMATE']:

41
w18n.py Normal file
View file

@ -0,0 +1,41 @@
#!/usr/bin/env python
import autowaf
import os
import glob
def build_i18n(bld,dir,name,sources):
pwd = bld.get_curdir()
os.chdir(pwd)
pot_file = '%s.pot' % name
args = [ 'xgettext',
'--keyword=_',
'--keyword=N_',
'--from-code=UTF-8',
'-o', pot_file,
'--copyright-holder="Paul Davis"' ]
args += sources
print 'Updating ', pot_file
os.spawnvp (os.P_WAIT, 'xgettext', args)
po_files = glob.glob ('po/*.po')
for po_file in po_files:
args = [ 'msgmerge',
'--update',
po_file,
pot_file ]
print 'Updating ', po_file
os.spawnvp (os.P_WAIT, 'msgmerge', args)
for po_file in po_files:
mo_file = po_file.replace ('.po', '.mo')
args = [ 'msgfmt',
'-c',
'-o',
mo_file,
po_file ]
print 'Generating ', po_file
os.spawnvp (os.P_WAIT, 'msgfmt', args)

11
wscript
View file

@ -29,6 +29,11 @@ children = [
]
i18n_children = [
'gtk2_ardour',
'libs/ardour'
]
# Version stuff
def fetch_svn_revision (path):
@ -386,6 +391,8 @@ def configure(conf):
autowaf.display_msg(conf, 'Samplerate', bool(conf.env['HAVE_SAMPLERATE']))
autowaf.display_msg(conf, 'Soundtouch', bool(conf.env['HAVE_SOUNDTOUCH']))
autowaf.display_msg(conf, 'Translation', opts.nls)
if opts.nls:
conf.define ('ENABLE_NLS', 1)
autowaf.display_msg(conf, 'System Libraries', opts.syslibs)
autowaf.display_msg(conf, 'Tranzport', opts.tranzport)
if opts.tranzport:
@ -411,6 +418,6 @@ def build(bld):
for i in children:
bld.add_subdirs(i)
def shutdown():
autowaf.shutdown()
def i18n(bld):
bld.recurse (i18n_children)