summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTaybin Rutkin <taybin@taybin.com>2006-04-25 20:23:50 +0000
committerTaybin Rutkin <taybin@taybin.com>2006-04-25 20:23:50 +0000
commit49ab3aa0b3e78b635c22512b30f44b951c1401f7 (patch)
treea1380f163eb95d1e62698a919a451cc0892c1a80
parentbc46c6e5d44de56a8ef290484766a0f3bcfbed65 (diff)
All included libraries now link dynamically instead of statically.
Moved items from gtk2_ardour/utils to pbd3/convert. Various cleanups. git-svn-id: svn://localhost/trunk/ardour2@475 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--.cvsignore1
-rw-r--r--SConstruct8
-rw-r--r--gtk2_ardour/add_route_dialog.cc13
-rwxr-xr-xgtk2_ardour/ardev_common.sh5
-rw-r--r--gtk2_ardour/ardour_ui_options.cc6
-rw-r--r--gtk2_ardour/audio_clock.cc5
-rw-r--r--gtk2_ardour/editor.cc3
-rw-r--r--gtk2_ardour/export_dialog.cc8
-rw-r--r--gtk2_ardour/i18n.h2
-rw-r--r--gtk2_ardour/mixer_strip.cc5
-rw-r--r--gtk2_ardour/mixer_ui.cc4
-rw-r--r--gtk2_ardour/plugin_selector.cc1
-rw-r--r--gtk2_ardour/redirect_box.cc7
-rw-r--r--gtk2_ardour/sfdb_ui.cc7
-rw-r--r--gtk2_ardour/utils.cc179
-rw-r--r--gtk2_ardour/utils.h5
-rw-r--r--libs/ardour/.cvsignore1
-rw-r--r--libs/ardour/SConscript28
-rw-r--r--libs/ardour/ardour/plugin.h1
-rw-r--r--libs/ardour/control_protocol_manager.cc24
-rw-r--r--libs/ardour/i18n.h2
-rw-r--r--libs/ardour/plugin_manager.cc4
-rw-r--r--libs/ardour/sndfile_helpers.cc4
-rw-r--r--libs/cassowary/SConscript2
-rw-r--r--libs/flowcanvas/SConscript2
-rw-r--r--libs/glibmm2/.cvsignore2
-rw-r--r--libs/glibmm2/SConscript4
-rw-r--r--libs/glibmm2/glibmm/.cvsignore1
-rw-r--r--libs/gtkmm2/atk/.cvsignore1
-rw-r--r--libs/gtkmm2/atk/SConscript4
-rw-r--r--libs/gtkmm2/atk/atkmm/.cvsignore1
-rw-r--r--libs/gtkmm2/gdk/.cvsignore1
-rw-r--r--libs/gtkmm2/gdk/SConscript7
-rw-r--r--libs/gtkmm2/gdk/gdkmm/.cvsignore1
-rw-r--r--libs/gtkmm2/gtk/.cvsignore1
-rw-r--r--libs/gtkmm2/gtk/SConscript4
-rw-r--r--libs/gtkmm2/gtk/gtkmm/.cvsignore1
-rw-r--r--libs/gtkmm2/pango/.cvsignore1
-rw-r--r--libs/gtkmm2/pango/SConscript4
-rw-r--r--libs/gtkmm2/pango/pangomm/.cvsignore1
-rw-r--r--libs/gtkmm2ext/.cvsignore2
-rw-r--r--libs/gtkmm2ext/SConscript5
-rw-r--r--libs/libglademm/SConscript2
-rw-r--r--libs/libgnomecanvasmm/.cvsignore1
-rw-r--r--libs/libgnomecanvasmm/SConscript4
-rw-r--r--libs/libgnomecanvasmm/libgnomecanvasmm/.cvsignore1
-rw-r--r--libs/midi++2/.cvsignore2
-rw-r--r--libs/midi++2/SConscript7
-rw-r--r--libs/pbd3/.cvsignore2
-rw-r--r--libs/pbd3/SConscript7
-rw-r--r--libs/pbd3/convert.cc211
-rw-r--r--libs/pbd3/pbd/convert.h40
-rw-r--r--libs/sigc++2/.cvsignore1
-rw-r--r--libs/sigc++2/SConscript2
-rw-r--r--libs/sigc++2/sigc++/.cvsignore1
-rw-r--r--libs/sigc++2/sigc++/adaptors/.cvsignore1
-rw-r--r--libs/sigc++2/sigc++/functors/.cvsignore1
-rw-r--r--libs/soundtouch/.cvsignore2
-rw-r--r--libs/soundtouch/SConscript5
-rw-r--r--libs/surfaces/generic_midi/SConscript9
-rw-r--r--libs/surfaces/tranzport/.cvsignore1
61 files changed, 387 insertions, 281 deletions
diff --git a/.cvsignore b/.cvsignore
index d567f2f297..140c335ccc 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -4,3 +4,4 @@ ardour.rc
config.log
scache.conf
.gdb_history
+docs/
diff --git a/SConstruct b/SConstruct
index 2c9749ea3c..3930c1198b 100644
--- a/SConstruct
+++ b/SConstruct
@@ -28,7 +28,6 @@ opts.AddOptions(
BoolOption('SYSLIBS', 'USE AT YOUR OWN RISK: CANCELS ALL SUPPORT FROM ARDOUR AUTHORS: Use existing system versions of various libraries instead of internal ones', 0),
BoolOption('DEBUG', 'Set to build with debugging information and no optimizations', 0),
PathOption('DESTDIR', 'Set the intermediate install "prefix"', '/'),
- BoolOption('DEVBUILD', 'Use shared libardour (developers only)', 0),
BoolOption('NLS', 'Set to turn on i18n support', 1),
PathOption('PREFIX', 'Set the install "prefix"', '/usr/local'),
BoolOption('VST', 'Compile with support for VST', 0),
@@ -409,9 +408,9 @@ libraries['usb'] = LibraryInfo ()
conf = Configure (libraries['usb'])
if conf.CheckLib ('usb', 'usb_interrupt_write'):
- have_libusb = 1
+ have_libusb = True
else:
- have_libusb = 0
+ have_libusb = False
libraries['usb'] = conf.Finish ()
@@ -512,7 +511,7 @@ else:
]
subdirs = [
-# 'libs/cassowary',
+# 'libs/cassowary',
'libs/sigc++2',
'libs/pbd3',
'libs/midi++2',
@@ -539,7 +538,6 @@ if env['SURFACES']:
if have_libusb:
surface_subdirs += [ 'libs/surfaces/tranzport' ]
-
opts.Save('scache.conf', env)
Help(opts.GenerateHelpText(env))
diff --git a/gtk2_ardour/add_route_dialog.cc b/gtk2_ardour/add_route_dialog.cc
index f04ec7b707..ef8e601344 100644
--- a/gtk2_ardour/add_route_dialog.cc
+++ b/gtk2_ardour/add_route_dialog.cc
@@ -24,6 +24,7 @@
#include <sigc++/bind.h>
#include <gtkmm/stock.h>
#include <pbd/error.h>
+#include <pbd/convert.h>
#include <gtkmm2ext/utils.h>
#include "utils.h"
@@ -64,11 +65,11 @@ AddRouteDialog::AddRouteDialog ()
routes_spinner (routes_adjustment)
{
if (channel_combo_strings.empty()) {
- channel_combo_strings = internationalize (channel_setup_names);
+ channel_combo_strings = PBD::internationalize (channel_setup_names);
}
if (track_mode_strings.empty()) {
- track_mode_strings = internationalize (track_mode_names);
+ track_mode_strings = PBD::internationalize (track_mode_names);
}
set_name ("AddRouteDialog");
@@ -195,10 +196,10 @@ AddRouteDialog::channels ()
return 1;
} else if (str == _("Stereo")) {
return 2;
- } else if ((chns = atoi (str)) != 0) {
+ } else if ((chns = PBD::atoi (str)) != 0) {
return chns;
- } else {
- return 0;
- }
+ }
+
+ return 0;
}
diff --git a/gtk2_ardour/ardev_common.sh b/gtk2_ardour/ardev_common.sh
index 9f932e9bbf..7e1da03ba0 100755
--- a/gtk2_ardour/ardev_common.sh
+++ b/gtk2_ardour/ardev_common.sh
@@ -2,4 +2,7 @@
export ARDOUR_PATH=./glade:./pixmaps:.:..
-export LD_LIBRARY_PATH=../libs/ardour:../libs/midi++2:../libs/pbd3:../libs/soundtouch:../libs/gtkmm2ext:$LD_LIBRARY_PATH
+export LD_LIBRARY_PATH=../libs/ardour:../libs/midi++2:../libs/pbd3:../libs/soundtouch:../libs/gtkmm2ext:../libs/sigc++2:../libs/glibmm2:../libs/gtkmm2/atk:../libs/gtkmm2/pango:../libs/gtkmm2/gdk:../libs/gtkmm2/gtk:../libs/libgnomecanvasmm:../libs/libglademm:$LD_LIBRARY_PATH
+
+# DYLD_LIBRARY_PATH is for darwin.
+export DYLD_LIBRARY_PATH=$LD_LIBRARY_PATH
diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc
index b959cc7300..826823885c 100644
--- a/gtk2_ardour/ardour_ui_options.cc
+++ b/gtk2_ardour/ardour_ui_options.cc
@@ -18,6 +18,8 @@
$Id$
*/
+#include <pbd/convert.h>
+
#include <gtkmm2ext/utils.h>
#include <ardour/configuration.h>
@@ -380,7 +382,7 @@ ARDOUR_UI::mtc_port_changed ()
0
};
- positional_sync_strings = internationalize (psync_strings);
+ positional_sync_strings = PBD::internationalize (psync_strings);
} else {
const gchar *psync_strings[] = {
@@ -388,7 +390,7 @@ ARDOUR_UI::mtc_port_changed ()
N_("JACK"),
0
};
- positional_sync_strings = internationalize (psync_strings);
+ positional_sync_strings = PBD::internationalize (psync_strings);
}
set_popdown_strings (sync_option_combo, positional_sync_strings);
diff --git a/gtk2_ardour/audio_clock.cc b/gtk2_ardour/audio_clock.cc
index fc9b510753..d7eb1e5936 100644
--- a/gtk2_ardour/audio_clock.cc
+++ b/gtk2_ardour/audio_clock.cc
@@ -20,6 +20,9 @@
#include <cstdio> // for sprintf
#include <cmath>
+
+#include <pbd/convert.h>
+
#include <gtkmm2ext/utils.h>
#include <ardour/ardour.h>
@@ -37,6 +40,8 @@ using namespace ARDOUR;
using namespace sigc;
using namespace Gtk;
+using PBD::atoi;
+
const uint32_t AudioClock::field_length[(int) AudioClock::AudioFrames+1] = {
2, /* SMPTE_Hours */
2, /* SMPTE_Minutes */
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 1a44041f73..a3a73bc936 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -26,6 +26,7 @@
#include <sigc++/bind.h>
+#include <pbd/convert.h>
#include <pbd/error.h>
#include <gtkmm/image.h>
@@ -87,6 +88,8 @@ using namespace Glib;
using namespace Gtkmm2ext;
using namespace Editing;
+using PBD::internationalize;
+
const double Editor::timebar_height = 15.0;
#include "editor_xpms"
diff --git a/gtk2_ardour/export_dialog.cc b/gtk2_ardour/export_dialog.cc
index 248eca3f29..1293fca34b 100644
--- a/gtk2_ardour/export_dialog.cc
+++ b/gtk2_ardour/export_dialog.cc
@@ -22,12 +22,13 @@
#include <unistd.h>
#include <utility>
#include <sys/stat.h>
-
#include <fstream>
#include <samplerate.h>
-#include <pbd/xml++.h>
+
+#include <pbd/convert.h>
#include <pbd/dirname.h>
+#include <pbd/xml++.h>
#include <gtkmm2ext/utils.h>
#include <ardour/export.h>
@@ -48,11 +49,12 @@
#define FRAME_NAME "BaseFrame"
using namespace std;
-
using namespace ARDOUR;
using namespace sigc;
using namespace Gtk;
+using PBD::internationalize;
+
static const gchar *sample_rates[] = {
N_("22.05kHz"),
N_("44.1kHz"),
diff --git a/gtk2_ardour/i18n.h b/gtk2_ardour/i18n.h
index 3ace250419..71a3dccab8 100644
--- a/gtk2_ardour/i18n.h
+++ b/gtk2_ardour/i18n.h
@@ -7,8 +7,6 @@
#include <vector>
#include <string>
-std::vector<std::string> internationalize (const char **);
-
#define _(Text) dgettext (PACKAGE,Text)
#define N_(Text) gettext_noop (Text)
#define X_(Text) Text
diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc
index ef04579c2d..37b8af29f9 100644
--- a/gtk2_ardour/mixer_strip.cc
+++ b/gtk2_ardour/mixer_strip.cc
@@ -19,10 +19,11 @@
*/
#include <cmath>
-#include <glib.h>
#include <sigc++/bind.h>
+#include <pbd/convert.h>
+
#include <gtkmm2ext/gtk_ui.h>
#include <gtkmm2ext/utils.h>
#include <gtkmm2ext/choice.h>
@@ -1318,7 +1319,7 @@ MixerStrip::name_changed (void *src)
RouteUI::name_changed (src);
break;
case Narrow:
- name_label.set_text (short_version (_route.name(), 5));
+ name_label.set_text (PBD::short_version (_route.name(), 5));
break;
}
}
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc
index 195da09332..dd0eb6e693 100644
--- a/gtk2_ardour/mixer_ui.cc
+++ b/gtk2_ardour/mixer_ui.cc
@@ -23,7 +23,9 @@
#include <gtkmm/accelmap.h>
+#include <pbd/convert.h>
#include <pbd/lockmonitor.h>
+
#include <gtkmm2ext/gtk_ui.h>
#include <gtkmm2ext/utils.h>
#include <gtkmm2ext/stop_signal.h>
@@ -53,6 +55,8 @@ using namespace Gtkmm2ext;
using namespace sigc;
using namespace std;
+using PBD::atoi;
+
Mixer_UI::Mixer_UI (AudioEngine& eng)
: Window (Gtk::WINDOW_TOPLEVEL),
engine (eng)
diff --git a/gtk2_ardour/plugin_selector.cc b/gtk2_ardour/plugin_selector.cc
index 1f28d6a9f4..9171815bcd 100644
--- a/gtk2_ardour/plugin_selector.cc
+++ b/gtk2_ardour/plugin_selector.cc
@@ -168,7 +168,6 @@ PluginSelector::set_session (Session* s)
void
PluginSelector::_input_refiller (void *arg)
{
-
((PluginSelector *) arg)->input_refiller ();
}
diff --git a/gtk2_ardour/redirect_box.cc b/gtk2_ardour/redirect_box.cc
index 87b31d8c03..1b08b46ccd 100644
--- a/gtk2_ardour/redirect_box.cc
+++ b/gtk2_ardour/redirect_box.cc
@@ -19,10 +19,11 @@
*/
#include <cmath>
-#include <glib.h>
#include <sigc++/bind.h>
+#include <pbd/convert.h>
+
#include <gtkmm/messagedialog.h>
#include <gtkmm2ext/gtk_ui.h>
@@ -539,7 +540,7 @@ RedirectBox::redirect_name (Redirect& redirect)
name_display += send->name().substr (lbracket+1, lbracket-rbracket-1);
break;
case Narrow:
- name_display += short_version (send->name().substr (lbracket+1, lbracket-rbracket-1), 4);
+ name_display += PBD::short_version (send->name().substr (lbracket+1, lbracket-rbracket-1), 4);
break;
}
@@ -550,7 +551,7 @@ RedirectBox::redirect_name (Redirect& redirect)
name_display += redirect.name();
break;
case Narrow:
- name_display += short_version (redirect.name(), 5);
+ name_display += PBD::short_version (redirect.name(), 5);
break;
}
diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc
index 149b7f66ca..839f78598f 100644
--- a/gtk2_ardour/sfdb_ui.cc
+++ b/gtk2_ardour/sfdb_ui.cc
@@ -26,6 +26,7 @@
#include <gtkmm/stock.h>
#include <pbd/basename.h>
+#include <pbd/convert.h>
#include <gtkmm2ext/utils.h>
@@ -44,8 +45,6 @@
using namespace ARDOUR;
using namespace std;
-string length2string (const int32_t frames, const float sample_rate);
-
SoundFileBox::SoundFileBox ()
:
_session(0),
@@ -129,7 +128,7 @@ SoundFileBox::setup_labels (string filename)
}
length.set_alignment (0.0f, 0.0f);
- length.set_text (string_compose("Length: %1", length2string(sf_info.length, sf_info.samplerate)));
+ length.set_text (string_compose("Length: %1", PBD::length2string(sf_info.length, sf_info.samplerate)));
format.set_alignment (0.0f, 0.0f);
format.set_text (sf_info.format_name);
@@ -334,7 +333,7 @@ SoundFileOmega::SoundFileOmega (string title)
split_check (_("Split Channels"))
{
if (mode_strings.empty()) {
- mode_strings = internationalize (import_mode_strings);
+ mode_strings = PBD::internationalize (import_mode_strings);
}
ARDOUR_UI::instance()->tooltips().set_tip(split_check,
diff --git a/gtk2_ardour/utils.cc b/gtk2_ardour/utils.cc
index c3afcb7919..fde9d545bb 100644
--- a/gtk2_ardour/utils.cc
+++ b/gtk2_ardour/utils.cc
@@ -44,70 +44,6 @@ using namespace Gtk;
using namespace sigc;
using namespace Glib;
-string
-short_version (string orig, string::size_type target_length)
-{
- /* this tries to create a recognizable abbreviation
- of "orig" by removing characters until we meet
- a certain target length.
-
- note that we deliberately leave digits in the result
- without modification.
- */
-
-
- string::size_type pos;
-
- /* remove white-space and punctuation, starting at end */
-
- while (orig.length() > target_length) {
- if ((pos = orig.find_last_of (_("\"\n\t ,<.>/?:;'[{}]~`!@#$%^&*()_-+="))) == string::npos) {
- break;
- }
- orig.replace (pos, 1, "");
- }
-
- /* remove lower-case vowels, starting at end */
-
- while (orig.length() > target_length) {
- if ((pos = orig.find_last_of (_("aeiou"))) == string::npos) {
- break;
- }
- orig.replace (pos, 1, "");
- }
-
- /* remove upper-case vowels, starting at end */
-
- while (orig.length() > target_length) {
- if ((pos = orig.find_last_of (_("AEIOU"))) == string::npos) {
- break;
- }
- orig.replace (pos, 1, "");
- }
-
- /* remove lower-case consonants, starting at end */
-
- while (orig.length() > target_length) {
- if ((pos = orig.find_last_of (_("bcdfghjklmnpqrtvwxyz"))) == string::npos) {
- break;
- }
- orig.replace (pos, 1, "");
- }
-
- /* remove upper-case consonants, starting at end */
-
- while (orig.length() > target_length) {
- if ((pos = orig.find_last_of (_("BCDFGHJKLMNPQRTVWXYZ"))) == string::npos) {
- break;
- }
- orig.replace (pos, 1, "");
- }
-
- /* whatever the length is now, use it */
-
- return orig;
-}
-
ustring
fit_to_pixels (const ustring& str, int pixel_width, Pango::FontDescription& font, int& actual_width)
{
@@ -141,30 +77,6 @@ fit_to_pixels (const ustring& str, int pixel_width, Pango::FontDescription& font
return ustr;
}
-int
-atoi (const string& s)
-{
- return atoi (s.c_str());
-}
-
-double
-atof (const string& s)
-{
- return atof (s.c_str());
-}
-
-vector<string>
-internationalize (const char **array)
-{
- vector<string> v;
-
- for (uint32_t i = 0; array[i]; ++i) {
- v.push_back (_(array[i]));
- }
-
- return v;
-}
-
gint
just_hide_it (GdkEventAny *ev, Gtk::Window *win)
{
@@ -297,79 +209,6 @@ get_canvas_points (string who, uint32_t npoints)
return new ArdourCanvas::Points (npoints);
}
-static int32_t
-int_from_hex (char hic, char loc)
-{
- int hi; /* hi byte */
- int lo; /* low byte */
-
- hi = (int) hic;
-
- if( ('0'<=hi) && (hi<='9') ) {
- hi -= '0';
- } else if( ('a'<= hi) && (hi<= 'f') ) {
- hi -= ('a'-10);
- } else if( ('A'<=hi) && (hi<='F') ) {
- hi -= ('A'-10);
- }
-
- lo = (int) loc;
-
- if( ('0'<=lo) && (lo<='9') ) {
- lo -= '0';
- } else if( ('a'<=lo) && (lo<='f') ) {
- lo -= ('a'-10);
- } else if( ('A'<=lo) && (lo<='F') ) {
- lo -= ('A'-10);
- }
-
- return lo + (16 * hi);
-}
-
-void
-url_decode (string& url)
-{
- string::iterator last;
- string::iterator next;
-
- for (string::iterator i = url.begin(); i != url.end(); ++i) {
- if ((*i) == '+') {
- *i = ' ';
- }
- }
-
- if (url.length() <= 3) {
- return;
- }
-
- last = url.end();
-
- --last; /* points at last char */
- --last; /* points at last char - 1 */
-
- for (string::iterator i = url.begin(); i != last; ) {
-
- if (*i == '%') {
-
- next = i;
-
- url.erase (i);
-
- i = next;
- ++next;
-
- if (isxdigit (*i) && isxdigit (*next)) {
- /* replace first digit with char */
- *i = int_from_hex (*i,*next);
- ++i; /* points at 2nd of 2 digits */
- url.erase (i);
- }
- } else {
- ++i;
- }
- }
-}
-
Pango::FontDescription
get_font_for_style (string widgetname)
{
@@ -595,21 +434,3 @@ get_xpm (std::string name)
return (xpm_map[name]);
}
-string
-length2string (const int32_t frames, const float sample_rate)
-{
- int secs = (int) (frames / sample_rate);
- int hrs = secs / 3600;
- secs -= (hrs * 3600);
- int mins = secs / 60;
- secs -= (mins * 60);
-
- int total_secs = (hrs * 3600) + (mins * 60) + secs;
- int frames_remaining = (int) floor (frames - (total_secs * sample_rate));
- float fractional_secs = (float) frames_remaining / sample_rate;
-
- char duration_str[32];
- sprintf (duration_str, "%02d:%02d:%05.2f", hrs, mins, (float) secs + fractional_secs);
-
- return duration_str;
-}
diff --git a/gtk2_ardour/utils.h b/gtk2_ardour/utils.h
index 1f1d702261..c0b7aac524 100644
--- a/gtk2_ardour/utils.h
+++ b/gtk2_ardour/utils.h
@@ -52,12 +52,8 @@ slider_position_to_gain (double pos)
return pow (2.0,(sqrt(sqrt(sqrt(pos)))*198.0-192.0)/6.0);
}
-std::string short_version (std::string, std::string::size_type target_length);
Glib::ustring fit_to_pixels (const Glib::ustring&, int pixel_width, Pango::FontDescription& font, int& actual_width);
-int atoi (const std::string&);
-double atof (const std::string&);
-void url_decode (std::string&);
gint just_hide_it (GdkEventAny*, Gtk::Window*);
void allow_keyboard_focus (bool);
@@ -82,6 +78,5 @@ bool key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev);
Glib::RefPtr<Gdk::Pixbuf> get_xpm(std::string);
static std::map<std::string, Glib::RefPtr<Gdk::Pixbuf> > xpm_map;
const char* const *get_xpm_data (std::string path);
-std::string length2string (const int32_t frames, const float sample_rate);
#endif /* __ardour_gtk_utils_h__ */
diff --git a/libs/ardour/.cvsignore b/libs/ardour/.cvsignore
index 74244ff78c..15d7926473 100644
--- a/libs/ardour/.cvsignore
+++ b/libs/ardour/.cvsignore
@@ -5,3 +5,4 @@ version.cc
*.os
*.mo
*.pot
+*.dylib
diff --git a/libs/ardour/SConscript b/libs/ardour/SConscript
index 3d83b3e276..d5cb439202 100644
--- a/libs/ardour/SConscript
+++ b/libs/ardour/SConscript
@@ -168,6 +168,7 @@ if conf.CheckCHeader('/System/Library/Frameworks/CoreMIDI.framework/Headers/Core
if conf.CheckCHeader('/System/Library/Frameworks/AudioToolbox.framework/Headers/ExtendedAudioFile.h'):
ardour.Append(CXXFLAGS="-DHAVE_COREAUDIO")
+ ardour.Append(LINKFLAGS="-framework AudioToolbox")
extra_sources += coreaudio_files
ardour = conf.Finish ()
@@ -199,26 +200,15 @@ env['BUILDERS']['SharedAsmObject'] = Builder (action = '$CXX -c -fPIC $SOURCE -o
src_suffix = '.s',
single_source = 1)
-if env['DEVBUILD'] == 1:
- if env['FPU_OPTIMIZATION']:
- if env['DIST_TARGET'] == "i386":
- arch_specific_objects = env.SharedAsmObject('sse_functions.os', 'sse_functions.s')
- if env['DIST_TARGET'] == "i686":
- arch_specific_objects = env.SharedAsmObject('sse_functions.os', 'sse_functions.s')
- if env['DIST_TARGET'] == "x86_64":
- arch_specific_objects = env.SharedAsmObject('sse_functions_64bit.os', 'sse_functions_64bit.s')
+if env['FPU_OPTIMIZATION']:
+ if env['DIST_TARGET'] == "i386":
+ arch_specific_objects = env.SharedAsmObject('sse_functions.os', 'sse_functions.s')
+ if env['DIST_TARGET'] == "i686":
+ arch_specific_objects = env.SharedAsmObject('sse_functions.os', 'sse_functions.s')
+ if env['DIST_TARGET'] == "x86_64":
+ arch_specific_objects = env.SharedAsmObject('sse_functions_64bit.os', 'sse_functions_64bit.s')
- libardour = ardour.SharedLibrary('ardour', ardour_files + extra_sources + arch_specific_objects)
-else:
- if env['FPU_OPTIMIZATION']:
- if env['DIST_TARGET'] == "i386":
- arch_specific_objects = env.StaticObject(target='sse_functions',source='sse_functions.s')
- if env['DIST_TARGET'] == "i686":
- arch_specific_objects = env.StaticObject(target='sse_functions',source='sse_functions.s')
- if env['DIST_TARGET'] == "x86_64":
- arch_specific_objects = env.StaticObject(target='sse_functions_64bit',source='sse_functions_64bit.s')
-
- libardour = ardour.StaticLibrary('ardour', ardour_files + extra_sources + arch_specific_objects)
+libardour = ardour.SharedLibrary('ardour', ardour_files + extra_sources + arch_specific_objects)
Default(libardour)
diff --git a/libs/ardour/ardour/plugin.h b/libs/ardour/ardour/plugin.h
index 272506f11e..211b00d0bb 100644
--- a/libs/ardour/ardour/plugin.h
+++ b/libs/ardour/ardour/plugin.h
@@ -47,6 +47,7 @@ class Session;
class PluginInfo {
public:
enum Type {
+ AudioUnit,
LADSPA,
VST
};
diff --git a/libs/ardour/control_protocol_manager.cc b/libs/ardour/control_protocol_manager.cc
index ed33d0b6ee..6f3cb4e457 100644
--- a/libs/ardour/control_protocol_manager.cc
+++ b/libs/ardour/control_protocol_manager.cc
@@ -231,22 +231,22 @@ ControlProtocolManager::set_state (const XMLNode& node)
for (citer = clist.begin(); citer != clist.end(); ++citer) {
if ((*citer)->name() == X_("Protocol")) {
- if ((prop = (*citer)->property (X_("active"))) != 0) {
- if (prop->value() == X_("yes")) {
- if ((prop = (*citer)->property (X_("name"))) != 0) {
- ControlProtocolInfo* cpi = cpi_by_name (prop->value());
- if (cpi) {
- if (_session) {
- instantiate (*cpi);
- } else {
- cpi->requested = true;
- }
+ prop = (*citer)->property (X_("active"));
+ if (prop && prop->value() == X_("yes")) {
+ if ((prop = (*citer)->property (X_("name"))) != 0) {
+ ControlProtocolInfo* cpi = cpi_by_name (prop->value());
+ if (cpi) {
+ if (_session) {
+ instantiate (*cpi);
+ } else {
+ cpi->requested = true;
}
}
}
- }
- }
+ }
+ }
}
+ return 0;
}
XMLNode&
diff --git a/libs/ardour/i18n.h b/libs/ardour/i18n.h
index 3ace250419..71a3dccab8 100644
--- a/libs/ardour/i18n.h
+++ b/libs/ardour/i18n.h
@@ -7,8 +7,6 @@
#include <vector>
#include <string>
-std::vector<std::string> internationalize (const char **);
-
#define _(Text) dgettext (PACKAGE,Text)
#define N_(Text) gettext_noop (Text)
#define X_(Text) Text
diff --git a/libs/ardour/plugin_manager.cc b/libs/ardour/plugin_manager.cc
index 36cc80a660..e1f34199d6 100644
--- a/libs/ardour/plugin_manager.cc
+++ b/libs/ardour/plugin_manager.cc
@@ -198,7 +198,6 @@ PluginManager::add_presets(string domain)
vector_delete (presets);
}
-
void
PluginManager::add_lrdf_data (const string &path)
{
@@ -341,6 +340,9 @@ ARDOUR::find_plugin(Session& session, string name, long unique_id, PluginInfo::T
plugs = &mgr->vst_plugin_info();
unique_id = 0; // VST plugins don't have a unique id.
break;
+ case PluginInfo::AudioUnit:
+ default:
+ return 0;
}
for (i = plugs->begin(); i != plugs->end(); ++i) {
diff --git a/libs/ardour/sndfile_helpers.cc b/libs/ardour/sndfile_helpers.cc
index 7566107167..b308a74c36 100644
--- a/libs/ardour/sndfile_helpers.cc
+++ b/libs/ardour/sndfile_helpers.cc
@@ -1,6 +1,8 @@
#include <map>
#include <vector>
+#include <pbd/convert.h>
+
#include <sndfile.h>
#include <ardour/sndfile_helpers.h>
@@ -108,7 +110,7 @@ sndfile_file_ending_from_string (string str)
static vector<string> file_endings;
if (file_endings.empty()) {
- file_endings = internationalize((const char **) sndfile_file_endings_strings);
+ file_endings = PBD::internationalize((const char **) sndfile_file_endings_strings);
}
for (int n = 0; sndfile_header_formats_strings[n]; ++n) {
diff --git a/libs/cassowary/SConscript b/libs/cassowary/SConscript
index 97dbf575e6..86222085f5 100644
--- a/libs/cassowary/SConscript
+++ b/libs/cassowary/SConscript
@@ -28,5 +28,5 @@ cassowary.Append(CCFLAGS="-D_REENTRANT")
cassowary.CXXFile(target = ['ClReader.cc', 'ClReader.cc.h'], source = 'ClReader.yy')
cassowary.CXXFile(target = 'ClReader-lex.cc', source = 'ClReader.ll')
-libcassowary = cassowary.StaticLibrary('cassowary', cassowary_files)
+libcassowary = cassowary.SharedLibrary('cassowary', cassowary_files)
Default(libcassowary)
diff --git a/libs/flowcanvas/SConscript b/libs/flowcanvas/SConscript
index 59d97798d0..2df070dc0b 100644
--- a/libs/flowcanvas/SConscript
+++ b/libs/flowcanvas/SConscript
@@ -35,7 +35,7 @@ src/Module.cpp
src/Port.cpp
""")
-libflowcanvas = flowcanvas.StaticLibrary('flowcanvas', flowcanvas_files)
+libflowcanvas = flowcanvas.SharedLibrary('flowcanvas', flowcanvas_files)
Default(libflowcanvas)
diff --git a/libs/glibmm2/.cvsignore b/libs/glibmm2/.cvsignore
index 865cec5b6c..a96ad626ea 100644
--- a/libs/glibmm2/.cvsignore
+++ b/libs/glibmm2/.cvsignore
@@ -9,3 +9,5 @@ glibmm-2.4.pc
glibmmconfig.h
libtool
stamp-h1
+*.os
+*.dylib
diff --git a/libs/glibmm2/SConscript b/libs/glibmm2/SConscript
index 248a8f2a4a..7b2ce6fb8f 100644
--- a/libs/glibmm2/SConscript
+++ b/libs/glibmm2/SConscript
@@ -1,3 +1,5 @@
+# -*- python -*-
+
import glob
import os
@@ -12,7 +14,7 @@ glibmm2.Append(CXXFLAGS='-DHAVE_CONFIG_H')
#glibmm2.Append(CXXFLAGS='-DG_DISABLE_DEPRECATED')
glibmm2.Append(CXXFLAGS='-DG_LOG_DOMAIN=\\\"glibmm\\\"')
-libglibmm2 = glibmm2.StaticLibrary('glibmm2', glibmm2_files)
+libglibmm2 = glibmm2.SharedLibrary('glibmm2', glibmm2_files)
if os.path.exists ('CVS'):
glibmm2_configure_script = glibmm2.Command ('configure', 'configure.ac', 'cd libs/glibmm2; ./autogen.sh; cd -', ENV=os.environ)
diff --git a/libs/glibmm2/glibmm/.cvsignore b/libs/glibmm2/glibmm/.cvsignore
index 282522db03..b18226c279 100644
--- a/libs/glibmm2/glibmm/.cvsignore
+++ b/libs/glibmm2/glibmm/.cvsignore
@@ -1,2 +1,3 @@
Makefile
Makefile.in
+*.os
diff --git a/libs/gtkmm2/atk/.cvsignore b/libs/gtkmm2/atk/.cvsignore
new file mode 100644
index 0000000000..e5d046710f
--- /dev/null
+++ b/libs/gtkmm2/atk/.cvsignore
@@ -0,0 +1 @@
+*.dylib
diff --git a/libs/gtkmm2/atk/SConscript b/libs/gtkmm2/atk/SConscript
index 63db8c8ab2..25a49c0da6 100644
--- a/libs/gtkmm2/atk/SConscript
+++ b/libs/gtkmm2/atk/SConscript
@@ -1,3 +1,5 @@
+# -*- python -*-
+
import glob
atkmm_files = glob.glob('atkmm/*.cc')
@@ -6,7 +8,7 @@ Import('env libraries')
atkmm = env.Copy()
atkmm.Merge([libraries['glibmm2'], libraries['gtk2'], libraries['sigc2'] ])
-libatkmm = atkmm.StaticLibrary('atkmm', atkmm_files)
+libatkmm = atkmm.SharedLibrary('atkmm', atkmm_files)
Default(libatkmm)
env.Alias('tarball', env.Distribute (env['DISTTREE'],
diff --git a/libs/gtkmm2/atk/atkmm/.cvsignore b/libs/gtkmm2/atk/atkmm/.cvsignore
new file mode 100644
index 0000000000..1edeb79fd1
--- /dev/null
+++ b/libs/gtkmm2/atk/atkmm/.cvsignore
@@ -0,0 +1 @@
+*.os
diff --git a/libs/gtkmm2/gdk/.cvsignore b/libs/gtkmm2/gdk/.cvsignore
new file mode 100644
index 0000000000..e5d046710f
--- /dev/null
+++ b/libs/gtkmm2/gdk/.cvsignore
@@ -0,0 +1 @@
+*.dylib
diff --git a/libs/gtkmm2/gdk/SConscript b/libs/gtkmm2/gdk/SConscript
index 5f76e0c809..7b10b8d9d8 100644
--- a/libs/gtkmm2/gdk/SConscript
+++ b/libs/gtkmm2/gdk/SConscript
@@ -1,12 +1,15 @@
+# -*- python -*-
+
import glob
gdkmm2_files = glob.glob('gdkmm/*.cc')
Import('env libraries')
gdkmm2 = env.Copy()
-gdkmm2.Merge([libraries['glibmm2'], libraries['gtk2'], libraries['sigc2'], libraries['pangomm'], libraries['gtkmm2']])
+gdkmm2.Merge([libraries['glibmm2'], libraries['gtk2'], libraries['sigc2'], libraries['pangomm']])
+gdkmm2.Append(CXXFLAGS="-Ilibs/gtkmm2/gtk")
-libgdkmm2 = gdkmm2.StaticLibrary('gdkmm2', gdkmm2_files)
+libgdkmm2 = gdkmm2.SharedLibrary('gdkmm2', gdkmm2_files)
Default(libgdkmm2)
env.Alias('tarball', env.Distribute (env['DISTTREE'],
diff --git a/libs/gtkmm2/gdk/gdkmm/.cvsignore b/libs/gtkmm2/gdk/gdkmm/.cvsignore
new file mode 100644
index 0000000000..1edeb79fd1
--- /dev/null
+++ b/libs/gtkmm2/gdk/gdkmm/.cvsignore
@@ -0,0 +1 @@
+*.os
diff --git a/libs/gtkmm2/gtk/.cvsignore b/libs/gtkmm2/gtk/.cvsignore
new file mode 100644
index 0000000000..e5d046710f
--- /dev/null
+++ b/libs/gtkmm2/gtk/.cvsignore
@@ -0,0 +1 @@
+*.dylib
diff --git a/libs/gtkmm2/gtk/SConscript b/libs/gtkmm2/gtk/SConscript
index f293f96016..fcba8eb3fe 100644
--- a/libs/gtkmm2/gtk/SConscript
+++ b/libs/gtkmm2/gtk/SConscript
@@ -1,3 +1,5 @@
+# -*- python -*-
+
import glob
gtkmm2_files = glob.glob('gtkmm/*.cc')
@@ -6,7 +8,7 @@ Import('env libraries')
gtkmm2 = env.Copy()
gtkmm2.Merge([libraries['glibmm2'], libraries['gtk2'], libraries['sigc2'], libraries['pangomm'], libraries['atkmm'], libraries['gdkmm2'] ])
-libgtkmm2 = gtkmm2.StaticLibrary('gtkmm2', gtkmm2_files)
+libgtkmm2 = gtkmm2.SharedLibrary('gtkmm2', gtkmm2_files)
Default(libgtkmm2)
env.Alias('tarball', env.Distribute (env['DISTTREE'],
diff --git a/libs/gtkmm2/gtk/gtkmm/.cvsignore b/libs/gtkmm2/gtk/gtkmm/.cvsignore
new file mode 100644
index 0000000000..1edeb79fd1
--- /dev/null
+++ b/libs/gtkmm2/gtk/gtkmm/.cvsignore
@@ -0,0 +1 @@
+*.os
diff --git a/libs/gtkmm2/pango/.cvsignore b/libs/gtkmm2/pango/.cvsignore
new file mode 100644
index 0000000000..e5d046710f
--- /dev/null
+++ b/libs/gtkmm2/pango/.cvsignore
@@ -0,0 +1 @@
+*.dylib
diff --git a/libs/gtkmm2/pango/SConscript b/libs/gtkmm2/pango/SConscript
index dc7f67cb14..971c5acd16 100644
--- a/libs/gtkmm2/pango/SConscript
+++ b/libs/gtkmm2/pango/SConscript
@@ -1,3 +1,5 @@
+# -*- python -*-
+
import glob
import os
@@ -7,7 +9,7 @@ Import('env libraries')
pangomm = env.Copy()
pangomm.Merge([libraries['glibmm2'], libraries['pango'], libraries['sigc2']])
-libpangomm = pangomm.StaticLibrary('pangomm', pangomm_files)
+libpangomm = pangomm.SharedLibrary('pangomm', pangomm_files)
Default(libpangomm)
env.Alias('tarball', env.Distribute (env['DISTTREE'],
diff --git a/libs/gtkmm2/pango/pangomm/.cvsignore b/libs/gtkmm2/pango/pangomm/.cvsignore
new file mode 100644
index 0000000000..1edeb79fd1
--- /dev/null
+++ b/libs/gtkmm2/pango/pangomm/.cvsignore
@@ -0,0 +1 @@
+*.os
diff --git a/libs/gtkmm2ext/.cvsignore b/libs/gtkmm2ext/.cvsignore
index c3ceb3bfd5..d7120405dc 100644
--- a/libs/gtkmm2ext/.cvsignore
+++ b/libs/gtkmm2ext/.cvsignore
@@ -3,3 +3,5 @@ libgtkmmext.spec
version.cc
*.mo
*.pot
+*.os
+*.dylib
diff --git a/libs/gtkmm2ext/SConscript b/libs/gtkmm2ext/SConscript
index eda0cfe557..6f98e4ee80 100644
--- a/libs/gtkmm2ext/SConscript
+++ b/libs/gtkmm2ext/SConscript
@@ -60,10 +60,7 @@ gtkmm2ext.VersionBuild(['version.cc','gtkmm2ext/version.h'], 'SConscript')
gtkmm2ext.Append(CCFLAGS="-D_REENTRANT")
gtkmm2ext.Append(CCFLAGS="-DLOCALEDIR=\\\""+final_prefix+"/share/locale\\\"")
-if env['DEVBUILD']:
- libgtkmm2ext = gtkmm2ext.SharedLibrary('gtkmm2ext', gtkmm2ext_files)
-else:
- libgtkmm2ext = gtkmm2ext.StaticLibrary('gtkmm2ext', gtkmm2ext_files)
+libgtkmm2ext = gtkmm2ext.SharedLibrary('gtkmm2ext', gtkmm2ext_files)
Default(libgtkmm2ext)
diff --git a/libs/libglademm/SConscript b/libs/libglademm/SConscript
index b71141ccee..cadc193255 100644
--- a/libs/libglademm/SConscript
+++ b/libs/libglademm/SConscript
@@ -9,7 +9,7 @@ libglademm_files = glob.glob('libglademm/*.cc')
libglademm = env.Copy()
libglademm.Merge([libraries['gtk2'], libraries['glade2'], libraries['sigc2'], libraries['glibmm2'], libraries['pangomm'], libraries['atkmm'], libraries['gdkmm2'], libraries['gtkmm2']])
-libglade = libglademm.StaticLibrary('libglademm', libglademm_files)
+libglade = libglademm.SharedLibrary('libglademm', libglademm_files)
Default(libglade)
diff --git a/libs/libgnomecanvasmm/.cvsignore b/libs/libgnomecanvasmm/.cvsignore
new file mode 100644
index 0000000000..e5d046710f
--- /dev/null
+++ b/libs/libgnomecanvasmm/.cvsignore
@@ -0,0 +1 @@
+*.dylib
diff --git a/libs/libgnomecanvasmm/SConscript b/libs/libgnomecanvasmm/SConscript
index e49c1d8ef6..cfba36731d 100644
--- a/libs/libgnomecanvasmm/SConscript
+++ b/libs/libgnomecanvasmm/SConscript
@@ -1,3 +1,5 @@
+# -*- python -*-
+
import glob
gnomecanvasmm_files = glob.glob('libgnomecanvasmm/*.cc')
@@ -6,7 +8,7 @@ Import('env libraries')
gnomecanvasmm = env.Copy()
gnomecanvasmm.Merge([libraries['glibmm2'], libraries['gtk2'], libraries['sigc2'], libraries['pangomm'], libraries['atkmm'], libraries['gdkmm2'], libraries['gtkmm2'], libraries['libgnomecanvas2'] ])
-libgnomecanvasmm = gnomecanvasmm.StaticLibrary('libgnomecanvasmm', gnomecanvasmm_files)
+libgnomecanvasmm = gnomecanvasmm.SharedLibrary('libgnomecanvasmm', gnomecanvasmm_files)
Default(libgnomecanvasmm)
env.Alias('tarball', env.Distribute (env['DISTTREE'],
diff --git a/libs/libgnomecanvasmm/libgnomecanvasmm/.cvsignore b/libs/libgnomecanvasmm/libgnomecanvasmm/.cvsignore
new file mode 100644
index 0000000000..1edeb79fd1
--- /dev/null
+++ b/libs/libgnomecanvasmm/libgnomecanvasmm/.cvsignore
@@ -0,0 +1 @@
+*.os
diff --git a/libs/midi++2/.cvsignore b/libs/midi++2/.cvsignore
index b1322ae10d..6f9bdf9452 100644
--- a/libs/midi++2/.cvsignore
+++ b/libs/midi++2/.cvsignore
@@ -1,3 +1,5 @@
libmidi++.pc
libmidi++.spec
version.cc
+*.os
+*.dylib
diff --git a/libs/midi++2/SConscript b/libs/midi++2/SConscript
index fe02a8d059..d7fd531306 100644
--- a/libs/midi++2/SConscript
+++ b/libs/midi++2/SConscript
@@ -35,6 +35,8 @@ coremidi_midiport.cc
if env['SYSMIDI'] == 'CoreMIDI':
sysdep_src = [ 'coremidi_midiport.cc' ]
midi2.Append (CCFLAGS="-DWITH_COREMIDI")
+ midi2.Append (LINKFLAGS="-framework CoreMIDI")
+ midi2.Append (LINKFLAGS="-framework CoreFoundation")
else:
sysdep_src = [ 'alsa_sequencer_midiport.cc' ]
midi2.Append (CCFLAGS="-DWITH_ALSA")
@@ -44,10 +46,7 @@ midi2.Append(CCFLAGS="-DLIBSIGC_DISABLE_DEPRECATED")
midi2.VersionBuild(['version.cc','midi++/version.h'], 'SConscript')
-if env['DEVBUILD']:
- libmidi2 = midi2.SharedLibrary('midi++', [ sources, sysdep_src ])
-else:
- libmidi2 = midi2.StaticLibrary('midi++', [ sources, sysdep_src ])
+libmidi2 = midi2.SharedLibrary('midi++', [ sources, sysdep_src ])
Default(libmidi2)
diff --git a/libs/pbd3/.cvsignore b/libs/pbd3/.cvsignore
index 232255cb47..e9a15e81e9 100644
--- a/libs/pbd3/.cvsignore
+++ b/libs/pbd3/.cvsignore
@@ -1,3 +1,5 @@
libpbd.pc
libpbd.spec
version.cc
+*.os
+*.dylib
diff --git a/libs/pbd3/SConscript b/libs/pbd3/SConscript
index eae438336d..db9b7e65ca 100644
--- a/libs/pbd3/SConscript
+++ b/libs/pbd3/SConscript
@@ -18,6 +18,7 @@ pbd3.Append(POTFILE=domain + '.pot')
pbd3_files = Split("""
basename.cc
base_ui.cc
+convert.cc
dirname.cc
dmalloc.cc
mountpoint.cc
@@ -45,13 +46,9 @@ pbd3 = conf.Finish()
pbd3.Merge ([ libraries['sigc2'], libraries['xml'] ])
-
pbd3.VersionBuild(['version.cc','pbd/version.h'], 'SConscript')
-if env['DEVBUILD']:
- libpbd3 = pbd3.SharedLibrary('pbd', pbd3_files)
-else:
- libpbd3 = pbd3.StaticLibrary('pbd', pbd3_files)
+libpbd3 = pbd3.SharedLibrary('pbd', pbd3_files)
Default(libpbd3)
diff --git a/libs/pbd3/convert.cc b/libs/pbd3/convert.cc
new file mode 100644
index 0000000000..6b24f69c40
--- /dev/null
+++ b/libs/pbd3/convert.cc
@@ -0,0 +1,211 @@
+/*
+ Copyright (C) 2006 Paul Davis
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#include <cmath>
+
+#include "pbd/convert.h"
+
+#include "i18n.h"
+
+using std::string;
+using std::vector;
+
+namespace PBD {
+
+string
+short_version (string orig, string::size_type target_length)
+{
+ /* this tries to create a recognizable abbreviation
+ of "orig" by removing characters until we meet
+ a certain target length.
+
+ note that we deliberately leave digits in the result
+ without modification.
+ */
+
+
+ string::size_type pos;
+
+ /* remove white-space and punctuation, starting at end */
+
+ while (orig.length() > target_length) {
+ if ((pos = orig.find_last_of (_("\"\n\t ,<.>/?:;'[{}]~`!@#$%^&*()_-+="))) == string::npos) {
+ break;
+ }
+ orig.replace (pos, 1, "");
+ }
+
+ /* remove lower-case vowels, starting at end */
+
+ while (orig.length() > target_length) {
+ if ((pos = orig.find_last_of (_("aeiou"))) == string::npos) {
+ break;
+ }
+ orig.replace (pos, 1, "");
+ }
+
+ /* remove upper-case vowels, starting at end */
+
+ while (orig.length() > target_length) {
+ if ((pos = orig.find_last_of (_("AEIOU"))) == string::npos) {
+ break;
+ }
+ orig.replace (pos, 1, "");
+ }
+
+ /* remove lower-case consonants, starting at end */
+
+ while (orig.length() > target_length) {
+ if ((pos = orig.find_last_of (_("bcdfghjklmnpqrtvwxyz"))) == string::npos) {
+ break;
+ }
+ orig.replace (pos, 1, "");
+ }
+
+ /* remove upper-case consonants, starting at end */
+
+ while (orig.length() > target_length) {
+ if ((pos = orig.find_last_of (_("BCDFGHJKLMNPQRTVWXYZ"))) == string::npos) {
+ break;
+ }
+ orig.replace (pos, 1, "");
+ }
+
+ /* whatever the length is now, use it */
+
+ return orig;
+}
+
+int
+atoi (const string& s)
+{
+ return atoi (s.c_str());
+}
+
+double
+atof (const string& s)
+{
+ return atof (s.c_str());
+}
+
+vector<string>
+internationalize (const char **array)
+{
+ vector<string> v;
+
+ for (uint32_t i = 0; array[i]; ++i) {
+ v.push_back (_(array[i]));
+ }
+
+ return v;
+}
+
+static int32_t
+int_from_hex (char hic, char loc)
+{
+ int hi; /* hi byte */
+ int lo; /* low byte */
+
+ hi = (int) hic;
+
+ if( ('0'<=hi) && (hi<='9') ) {
+ hi -= '0';
+ } else if( ('a'<= hi) && (hi<= 'f') ) {
+ hi -= ('a'-10);
+ } else if( ('A'<=hi) && (hi<='F') ) {
+ hi -= ('A'-10);
+ }
+
+ lo = (int) loc;
+
+ if( ('0'<=lo) && (lo<='9') ) {
+ lo -= '0';
+ } else if( ('a'<=lo) && (lo<='f') ) {
+ lo -= ('a'-10);
+ } else if( ('A'<=lo) && (lo<='F') ) {
+ lo -= ('A'-10);
+ }
+
+ return lo + (16 * hi);
+}
+
+void
+url_decode (string& url)
+{
+ string::iterator last;
+ string::iterator next;
+
+ for (string::iterator i = url.begin(); i != url.end(); ++i) {
+ if ((*i) == '+') {
+ *i = ' ';
+ }
+ }
+
+ if (url.length() <= 3) {
+ return;
+ }
+
+ last = url.end();
+
+ --last; /* points at last char */
+ --last; /* points at last char - 1 */
+
+ for (string::iterator i = url.begin(); i != last; ) {
+
+ if (*i == '%') {
+
+ next = i;
+
+ url.erase (i);
+
+ i = next;
+ ++next;
+
+ if (isxdigit (*i) && isxdigit (*next)) {
+ /* replace first digit with char */
+ *i = int_from_hex (*i,*next);
+ ++i; /* points at 2nd of 2 digits */
+ url.erase (i);
+ }
+ } else {
+ ++i;
+ }
+ }
+}
+
+string
+length2string (const int32_t frames, const float sample_rate)
+{
+ int secs = (int) (frames / sample_rate);
+ int hrs = secs / 3600;
+ secs -= (hrs * 3600);
+ int mins = secs / 60;
+ secs -= (mins * 60);
+
+ int total_secs = (hrs * 3600) + (mins * 60) + secs;
+ int frames_remaining = (int) floor (frames - (total_secs * sample_rate));
+ float fractional_secs = (float) frames_remaining / sample_rate;
+
+ char duration_str[32];
+ sprintf (duration_str, "%02d:%02d:%05.2f", hrs, mins, (float) secs + fractional_secs);
+
+ return duration_str;
+}
+
+} // namespace PBD
diff --git a/libs/pbd3/pbd/convert.h b/libs/pbd3/pbd/convert.h
new file mode 100644
index 0000000000..12e63ba6fc
--- /dev/null
+++ b/libs/pbd3/pbd/convert.h
@@ -0,0 +1,40 @@
+/*
+ Copyright (C) 2002 Paul Davis
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
+#ifndef __pbd_convert_h__
+#define __pbd_convert_h__
+
+#include <string>
+#include <vector>
+
+namespace PBD {
+
+std::string short_version (std::string, std::string::size_type target_length);
+
+int atoi (const std::string&);
+double atof (const std::string&);
+void url_decode (std::string&);
+
+std::string length2string (const int32_t frames, const float sample_rate);
+
+std::vector<std::string> internationalize (const char **);
+
+} //namespace PBD
+
+#endif /* __pbd_convert_h__ */
diff --git a/libs/sigc++2/.cvsignore b/libs/sigc++2/.cvsignore
index d505773e75..4852d85cc7 100644
--- a/libs/sigc++2/.cvsignore
+++ b/libs/sigc++2/.cvsignore
@@ -16,3 +16,4 @@ sigc++-2.0.pc
stamp-h1
configure
sigc++config.h
+*.dylib
diff --git a/libs/sigc++2/SConscript b/libs/sigc++2/SConscript
index d476f1ca77..7386d4e5b3 100644
--- a/libs/sigc++2/SConscript
+++ b/libs/sigc++2/SConscript
@@ -8,7 +8,7 @@ sigc2_files = glob.glob('sigc++/*.cc') + glob.glob('sigc++/functors/*.cc') + glo
Import('env')
sigc2 = env.Copy()
-libsigc2 = sigc2.StaticLibrary('sigc++2', sigc2_files)
+libsigc2 = sigc2.SharedLibrary('sigc++2', sigc2_files)
if os.path.exists ('CVS'):
sigc2_configure_script = sigc2.Command ('configure', 'configure.ac', 'cd libs/sigc++2; ./autogen.sh; cd -', ENV=os.environ)
diff --git a/libs/sigc++2/sigc++/.cvsignore b/libs/sigc++2/sigc++/.cvsignore
index 051d1bd50b..6f2fbbd6d8 100644
--- a/libs/sigc++2/sigc++/.cvsignore
+++ b/libs/sigc++2/sigc++/.cvsignore
@@ -1,3 +1,4 @@
Makefile
Makefile.in
.deps
+*.os
diff --git a/libs/sigc++2/sigc++/adaptors/.cvsignore b/libs/sigc++2/sigc++/adaptors/.cvsignore
new file mode 100644
index 0000000000..1edeb79fd1
--- /dev/null
+++ b/libs/sigc++2/sigc++/adaptors/.cvsignore
@@ -0,0 +1 @@
+*.os
diff --git a/libs/sigc++2/sigc++/functors/.cvsignore b/libs/sigc++2/sigc++/functors/.cvsignore
new file mode 100644
index 0000000000..1edeb79fd1
--- /dev/null
+++ b/libs/sigc++2/sigc++/functors/.cvsignore
@@ -0,0 +1 @@
+*.os
diff --git a/libs/soundtouch/.cvsignore b/libs/soundtouch/.cvsignore
new file mode 100644
index 0000000000..50700f873e
--- /dev/null
+++ b/libs/soundtouch/.cvsignore
@@ -0,0 +1,2 @@
+*.os
+*.dylib
diff --git a/libs/soundtouch/SConscript b/libs/soundtouch/SConscript
index 0d8d9043b7..40ee2fe6ce 100644
--- a/libs/soundtouch/SConscript
+++ b/libs/soundtouch/SConscript
@@ -17,10 +17,7 @@ Import('env')
st = env.Copy()
st.Append(CCFLAGS="-DHAVE_CONFIG_H -D_REENTRANT -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE")
-if env['DEVBUILD']:
- libst = st.SharedLibrary('soundtouch', soundtouch_files)
-else:
- libst = st.StaticLibrary('soundtouch', soundtouch_files)
+libst = st.SharedLibrary('soundtouch', soundtouch_files)
Default(libst)
diff --git a/libs/surfaces/generic_midi/SConscript b/libs/surfaces/generic_midi/SConscript
index 7e6ef1cf85..29607ec261 100644
--- a/libs/surfaces/generic_midi/SConscript
+++ b/libs/surfaces/generic_midi/SConscript
@@ -29,12 +29,11 @@ genericmidi.Append(CXXFLAGS="-DDATA_DIR=\\\""+final_prefix+"/share\\\"")
genericmidi.Append(CXXFLAGS="-DCONFIG_DIR=\\\""+final_config_prefix+"\\\"")
genericmidi.Append(CXXFLAGS="-DLOCALEDIR=\\\""+final_prefix+"/share/locale\\\"")
-genericmidi.Append(CPPPATH=libraries['ardour'].get ('CPPPATH', []))
-genericmidi.Append(CPPPATH=libraries['sigc2'].get ('CPPPATH', []))
-genericmidi.Append(CPPPATH=libraries['pbd3'].get ('CPPPATH', []))
-genericmidi.Append(CPPPATH=libraries['midi++2'].get ('CPPPATH', []))
-
genericmidi.Merge ([
+ libraries['ardour'],
+ libraries['midi++2'],
+ libraries['pbd3'],
+ libraries['sigc2'],
libraries['usb'],
libraries['xml']
])
diff --git a/libs/surfaces/tranzport/.cvsignore b/libs/surfaces/tranzport/.cvsignore
new file mode 100644
index 0000000000..1edeb79fd1
--- /dev/null
+++ b/libs/surfaces/tranzport/.cvsignore
@@ -0,0 +1 @@
+*.os