Merge remote-tracking branch 'remotes/origin/exportvis' into windows+cc
authorJohn Emmas <johne53@tiscali.co.uk>
Fri, 18 Oct 2013 09:03:22 +0000 (10:03 +0100)
committerJohn Emmas <johne53@tiscali.co.uk>
Fri, 18 Oct 2013 09:03:22 +0000 (10:03 +0100)
Conflicts (hopefully resolved):
gtk2_ardour/wscript
libs/ardour/ardour/audioregion.h
libs/ardour/ardour/debug.h
libs/ardour/ardour/directory_names.h
libs/ardour/ardour/filesystem_paths.h
libs/ardour/ardour/session_event.h
libs/gtkmm2ext/gtkmm2ext/utils.h
libs/panners/1in2out/wscript
libs/panners/2in2out/wscript
libs/panners/vbap/wscript
libs/pbd/pbd/debug.h
libs/pbd/pbd/file_utils.h
libs/pbd/pbd/pathexpand.h
libs/pbd/pbd/ringbuffer.h
libs/pbd/pbd/ringbufferNPT.h
libs/pbd/pbd/search_path.h
libs/pbd/pbd/stacktrace.h
libs/pbd/pbd/uuid.h
libs/pbd/pbd/uuid_boost.h
libs/surfaces/control_protocol/control_protocol/basic_ui.h
libs/surfaces/control_protocol/control_protocol/control_protocol.h

70 files changed:
1  2 
gtk2_ardour/wscript
libs/ardour/ardour/async_midi_port.h
libs/ardour/ardour/audiofile_tagger.h
libs/ardour/ardour/audiofilesource.h
libs/ardour/ardour/audioplaylist.h
libs/ardour/ardour/audioregion.h
libs/ardour/ardour/butler.h
libs/ardour/ardour/chan_count.h
libs/ardour/ardour/coreaudiosource.h
libs/ardour/ardour/export_profile_manager.h
libs/ardour/ardour/file_source.h
libs/ardour/ardour/interthread_info.h
libs/ardour/ardour/ladspa_plugin.h
libs/ardour/ardour/lv2_plugin.h
libs/ardour/ardour/midi_playlist.h
libs/ardour/ardour/midi_track.h
libs/ardour/ardour/panner.h
libs/ardour/ardour/panner_manager.h
libs/ardour/ardour/playlist.h
libs/ardour/ardour/plugin_manager.h
libs/ardour/ardour/region.h
libs/ardour/ardour/session.h
libs/ardour/ardour/silentfilesource.h
libs/ardour/ardour/sndfilesource.h
libs/ardour/find_session.cc
libs/ardour/wscript
libs/audiographer/audiographer/broadcast_info.h
libs/audiographer/audiographer/debug_utils.h
libs/backends/jack/wscript
libs/evoral/evoral/Sequence.hpp
libs/evoral/evoral/midi_util.h
libs/gtkmm2ext/gtk_ui.cc
libs/gtkmm2ext/gtkmm2ext/auto_spin.h
libs/gtkmm2ext/gtkmm2ext/click_box.h
libs/gtkmm2ext/gtkmm2ext/doi.h
libs/gtkmm2ext/gtkmm2ext/gtk_ui.h
libs/gtkmm2ext/gtkmm2ext/popup.h
libs/gtkmm2ext/gtkmm2ext/selector.h
libs/gtkmm2ext/gtkmm2ext/slider_controller.h
libs/gtkmm2ext/gtkmm2ext/utils.h
libs/midi++2/midi++/ipmidi_port.h
libs/midi++2/midi++/port.h
libs/panners/1in2out/wscript
libs/panners/2in2out/wscript
libs/panners/vbap/wscript
libs/pbd/pbd/abstract_ui.h
libs/pbd/pbd/base_ui.h
libs/pbd/pbd/debug.h
libs/pbd/pbd/file_utils.h
libs/pbd/pbd/floating.h
libs/pbd/pbd/pathscanner.h
libs/pbd/pbd/pthread_utils.h
libs/pbd/pbd/ringbuffer.h
libs/pbd/pbd/ringbufferNPT.h
libs/pbd/pbd/search_path.h
libs/pbd/pbd/semaphore.h
libs/pbd/pbd/semutils.h
libs/pbd/pbd/sequence_property.h
libs/pbd/pbd/signals.h
libs/pbd/pbd/stacktrace.h
libs/pbd/pbd/undo.h
libs/pbd/pbd/uuid.h
libs/pbd/wscript
libs/surfaces/control_protocol/control_protocol/control_protocol.h
libs/surfaces/control_protocol/wscript
libs/surfaces/generic_midi/wscript
libs/surfaces/mackie/wscript
libs/surfaces/osc/wscript
libs/surfaces/tranzport/wscript
libs/surfaces/wiimote/wscript

index 011126da64a30e345b6cc6dfd4cfac079182fe7a,ebc28ebf8f736bb806fd590d9827f9c7b4c05a55..07ff4f4be321fd6f98bb26b3b9b005df4d6d4cbd
@@@ -256,12 -265,12 +256,13 @@@ def configure(conf)
      autowaf.build_version_files(
          path_prefix + 'version.h',
          path_prefix + 'version.cc',
-         'gtk2_ardour', conf.env['MAJOR'], conf.env['MINOR'], 0)
+         'gtk2_ardour', conf.env['MAJOR'], conf.env['MINOR'], 0,
+         '', '')
      autowaf.configure(conf)
  
 -    if re.search ("linux", sys.platform) != None:
 -        autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA')
 +    if Options.options.dist_target == 'auto':
 +        if re.search ("linux", sys.platform) != None:
 +            autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA')
  
      # TODO: Insert a sanity check for on OS X to ensure CoreAudio is present
  
@@@ -404,19 -431,13 +419,19 @@@ def build(bld)
      obj.use          = [ 'libpbd',
                           'libmidipp',
                           'libtaglib',
 -                         'ardour',
 +                         'libardour',
                           'libardour_cp',
                           'libgtkmm2ext',
 -                         'libtaglib' ]
 +                         'libtaglib',
 +                         'libcanvas'
 +                         ]
 +    if bld.env['build_target'] == 'mingw':
 +      if bld.env['DEBUG'] == False:
 +            obj.linkflags = ['-mwindows']
      if sys.platform == 'darwin':
 -        obj.use += ' libappleutility'
 +        obj.uselib += ' AUDIOUNITS OSX GTKOSX'
 +        obj.use    += ' libappleutility'
-     obj.defines     = [
+     obj.defines     += [
          'PACKAGE="' + I18N_PACKAGE + '"',
          'VERSIONSTRING="' + bld.env['VERSION'] + '"',
          'DATA_DIR="' + os.path.normpath(bld.env['DATADIR']) + '"',
Simple merge
index 9a46e235d8574944e64c1d2bb39cb44bb4a9f6ae,9b24ffade345bc44fe1e5510cfa5bb0306677faa..0c551ecbc963e802daf3d1fb741c12cfc5a3846b
  #include <string>
  
  #include "taglib/tag.h"
 -#include "taglib/taglib.h"
 -#include "taglib/xiphcomment.h"
 +#include "taglib/toolkit/taglib.h"
 +#include "taglib/ogg/xiphcomment.h"
  
+ #include "ardour/libardour_visibility.h"
  namespace ARDOUR
  {
  
Simple merge
index 3c987c0aa0d2efdb53bef32097e41321d4dc6cd0,c3d10b603073beb57a40ad8824ff523bb5882e6f..c4196dc3b616a2c77248d2517fbdc20d8df5e3d6
  namespace ARDOUR  {
  
  class Session;
 -class Region;
  class AudioRegion;
  class Source;
  class AudioPlaylist;
  
- class AudioPlaylist : public ARDOUR::Playlist
+ class LIBARDOUR_API AudioPlaylist : public ARDOUR::Playlist
  {
  public:
        AudioPlaylist (Session&, const XMLNode&, bool hidden = false);
Simple merge
index 226aacbbaddae54b9a24d34b186f751b3d8e1602,21af5fb69158a217354b9fd4307a8db93b277010..efdaad1621a12dc88e0b658519424303c08946eb
  #ifndef __ardour_butler_h__
  #define __ardour_butler_h__
  
 +#include <pthread.h>
 +
  #include <glibmm/threads.h>
  
 +#ifdef PLATFORM_WINDOWS
 +#include "pbd/glib_semaphore.h"
 +#endif
 +
  #include "pbd/ringbuffer.h"
  #include "pbd/pool.h"
+ #include "ardour/libardour_visibility.h"
  #include "ardour/types.h"
  #include "ardour/session_handle.h"
  
Simple merge
Simple merge
Simple merge
Simple merge
index 62cad017fc466a841360af3966f24099cb023be5,4444686dcb6b24dada4f40c92c46ede315804b4b..a3b99575fee99c16d6c5c49701f30784233e3f6b
@@@ -36,10 -36,10 +36,10 @@@ namespace ARDOUR 
  class AudioEngine;
  class Session;
  
- class LadspaPlugin : public ARDOUR::Plugin
+ class LIBARDOUR_API LadspaPlugin : public ARDOUR::Plugin
  {
    public:
 -      LadspaPlugin (void *module, ARDOUR::AudioEngine&, ARDOUR::Session&, uint32_t index, framecnt_t sample_rate);
 +      LadspaPlugin (std::string module_path, ARDOUR::AudioEngine&, ARDOUR::Session&, uint32_t index, framecnt_t sample_rate);
        LadspaPlugin (const LadspaPlugin &);
        ~LadspaPlugin ();
  
Simple merge
Simple merge
Simple merge
Simple merge
index c34d22285d2a5210d77f21459d855865b2da0cc3,e47ed36ec38225b80313e258ca84f5fd28e41d62..1db4a27e5211f55d8aa2cb563135a3f0fc5ef9f6
  
  namespace ARDOUR {
  
- struct PannerInfo {
+ struct LIBARDOUR_API PannerInfo {
        PanPluginDescriptor descriptor;
 -      void* module;
 +      Glib::Module* module;
  
 -      PannerInfo (PanPluginDescriptor& d, void* handle)
 +      PannerInfo (PanPluginDescriptor& d, Glib::Module* m)
        : descriptor (d)
 -      , module (handle)
 +      , module (m)
        {}
  
        ~PannerInfo () {
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 39584c6390e5f35d628df6d9116380f15ac5fc5b,6fec6ae9d0db53a3f708a71235516b36ececb819..e7345821970146b65160dfc05ce55030b132f78e
@@@ -243,17 -241,14 +243,18 @@@ def configure(conf)
      autowaf.build_version_files(
          path_prefix + 'ardour/version.h',
          path_prefix + 'version.cc',
-         'libardour3', conf.env['MAJOR'], conf.env['MINOR'], 0)
+         'libardour3', conf.env['MAJOR'], conf.env['MINOR'], 0,
+         'LIBARDOUR_API', 'ardour/libardour_visibility.h')
      autowaf.configure(conf)
 -    autowaf.check_pkg(conf, 'aubio', uselib_store='AUBIO',
 -                      atleast_version='0.3.2')
 +    if Options.options.dist_target == 'auto':
 +        if re.search ("linux", sys.platform) != None:
 +            autowaf.check_pkg(conf, 'alsa', uselib_store='ALSA')
      autowaf.check_pkg(conf, 'libxml-2.0', uselib_store='XML')
 -    autowaf.check_pkg(conf, 'lrdf', uselib_store='LRDF',
 -                      atleast_version='0.4.0')
 +    if Options.options.dist_target != 'mingw':
 +        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',
index 693c50064ce266fda3b3b8e3154dc90581de17f8,b11f065b425dceb79f426fb87f06dd08eba2573f..a8c63e85b622bbb898bc7b0595f7f9068bf6fe6e
@@@ -8,9 -8,10 +8,11 @@@
  
  #ifdef __GNUC__
  #include <cxxabi.h>
 +#include <cstdlib>
  #endif
  
+ #include "audiographer/visibility.h"
  namespace AudioGrapher
  {
  
Simple merge
Simple merge
Simple merge
Simple merge
index 4eab2dae98c7b39a0230ee1f529220f8661bc8f0,28fae316f69ea6e73e898f3dc78675cdb5ee9622..8a6c9ab3b0a42d449b1ebf97f0ab0b8e7781c8bb
  #ifndef __gtkmm2ext_auto_spin_h__
  #define __gtkmm2ext_auto_spin_h__
  
 +#ifdef interface
 +#undef interface
 +#endif
 +
  #include <gtkmm.h>
  
+ #include "gtkmm2ext/visibility.h"
  namespace Gtkmm2ext {
  
- class AutoSpin 
+ class LIBGTKMM2EXT_API AutoSpin 
  
  {
    public:
Simple merge
index f61127dd7458ea00475508257d8efec2cc6afc00,e24224701f7098c5593b50d9d5d7c5e1bcc3ca67..53c24847f3cc89ed7c09d9ccd1176284c48367b4
  #ifndef __ardour_gtk_doi_h__
  #define __ardour_gtk_doi_h__
  
 +#ifdef interface
 +#undef interface
 +#endif
 +
  #include <gtkmm.h>
  
+ #include "gtkmm2ext/visibility.h"
  /* XXX g++ 2.95 can't compile this as pair of member function templates */
  
- template<typename T> gint idle_delete (T *obj) { delete obj; return FALSE; }
- template<typename T> void delete_when_idle (T *obj) {
+ template<typename T> LIBGTKMM2EXT_API gint idle_delete (T *obj) { delete obj; return FALSE; }
+ template<typename T> LIBGTKMM2EXT_API void delete_when_idle (T *obj) {
        Glib::signal_idle().connect (sigc::bind (sigc::ptr_fun (idle_delete<T>), obj));
  }
- template<typename T> gint delete_on_unmap (GdkEventAny *ignored, T *obj) {
+ template<typename T> LIBGTKMM2EXT_API gint delete_on_unmap (GdkEventAny *ignored, T *obj) {
        Glib::signal_idle().connect (sigc::bind (sigc::ptr_fun (idle_delete<T>), obj));
        return FALSE;
  }
Simple merge
Simple merge
Simple merge
index e7c36d19e01f5f70f4df6f531dc1f21c754926a8,e0c4dcdb2d15995546a995adc7529dce3b40cb3d..7d161e2518189252486af4c3c100a5b463e0e300
  #include <gtkmm/treeview.h>
  #include <gdkmm/window.h> /* for WMDecoration */
  #include <gdkmm/pixbuf.h>
 -#include <pangomm/fontdescription.h>
  
+ #include "gtkmm2ext/visibility.h"
  namespace Cairo {
          class Context;
  }
@@@ -105,21 -107,19 +107,21 @@@ namespace Gtkmm2ext 
  
        /* C API for rounded rectangles */
  
-         void rounded_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
-         void rounded_top_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
-         void rounded_top_left_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
-         void rounded_top_right_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
-       void rounded_top_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
-       void rounded_bottom_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
-       void rounded_right_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
+         LIBGTKMM2EXT_API void rounded_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
+         LIBGTKMM2EXT_API void rounded_top_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
+         LIBGTKMM2EXT_API void rounded_top_left_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
+         LIBGTKMM2EXT_API void rounded_top_right_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
+       LIBGTKMM2EXT_API void rounded_top_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
+       LIBGTKMM2EXT_API void rounded_bottom_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
+       LIBGTKMM2EXT_API void rounded_right_half_rectangle (cairo_t*, double x, double y, double w, double h, double r=10);
  
-       Gtk::Label* left_aligned_label (std::string const &);
+       LIBGTKMM2EXT_API Gtk::Label* left_aligned_label (std::string const &);
  
-       void set_no_tooltip_whatsoever (Gtk::Widget &);
-       void enable_tooltips ();
-       void disable_tooltips ();
+       LIBGTKMM2EXT_API void set_no_tooltip_whatsoever (Gtk::Widget &);
+       LIBGTKMM2EXT_API void enable_tooltips ();
+       LIBGTKMM2EXT_API void disable_tooltips ();
 +
 +      void convert_bgra_to_rgba (guint8 const *, guint8 * dst, int, int);
  };
  
  #endif /*  __gtkmm2ext_utils_h__ */
Simple merge
Simple merge
index 31ff7e7fd15f0153672f2b5684c2777cadb4595d,ad9c5a6b4ce1684b5bffe27d25c1ec136e716592..86d1693d91e60e5a06f3c39433d9f059d55f7feb
@@@ -22,8 -22,9 +22,10 @@@ def build(bld)
      obj = bld(features = 'cxx cxxshlib')
      obj.source = [ 'panner_1in2out.cc' ]
      obj.export_includes = ['.']
-     obj.cxxflags     = '-DPACKAGE="libardour_pan1in2out"'
+     obj.defines     = [ 'PACKAGE="libardour_pan1in2out"' ]
+     if bld.is_defined ('INTERNAL_SHARED_LIBS'):
+         obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ]
 +    obj.defines      = [ 'ARDOURPANNER_DLL_EXPORTS' ]
      obj.includes     = ['.']
      obj.name         = 'libardour_pan1in2out'
      obj.target       = 'pan1in2out'
index 2aeca322d01d2b91e1b411632394311c0b391eb5,2d83205262ec5df5bf51f457051685213e3e7aef..bd955e79fb0df508049ce9bfabbf29a67ba780f3
@@@ -22,8 -22,9 +22,10 @@@ def build(bld)
      obj = bld(features = 'cxx cxxshlib')
      obj.source = [ 'panner_2in2out.cc' ]
      obj.export_includes = ['.']
-     obj.cxxflags     = '-DPACKAGE="libardour_pan2in2out"'
+     obj.defines     = [ 'PACKAGE="libardour_pan2in2out"' ]
+     if bld.is_defined ('INTERNAL_SHARED_LIBS'):
+         obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ]
 +    obj.defines      = [ 'ARDOURPANNER_DLL_EXPORTS' ]
      obj.includes     = ['.']
      obj.name         = 'libardour_pan2in2out'
      obj.target       = 'pan2in2out'
index 9258277810cc3641d90d3665012b36ae4b2fefa2,4113aba53c571d071a6689919b8f3acbb7e37751..1f8208317d9c996b6272a7c8ecd0fd36cd2d1079
@@@ -22,8 -22,9 +22,10 @@@ def build(bld)
      obj = bld(features = 'cxx cxxshlib')
      obj.source = [ 'vbap_speakers.cc', 'vbap.cc'  ]
      obj.export_includes = ['.']
-     obj.cxxflags     = '-DPACKAGE="libardour_panvbap"'
+     obj.defines     = [ 'PACKAGE="libardour_panvbap"' ]
+     if bld.is_defined ('INTERNAL_SHARED_LIBS'):
+         obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL_=1', 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ]
 +    obj.defines      = [ 'ARDOURPANNER_DLL_EXPORTS' ]
      obj.includes     = ['.']
      obj.name         = 'libardour_panvbap'
      obj.target       = 'panvbap'
Simple merge
Simple merge
index 704c9d0dadd2c680f26a30faa7f13110b0b5e0c9,dc7e1ce906e0e06f17da9472b5117b4bfc6174b0..54577f1a7ebba75ee33ef52f5965898a72e25b9f
@@@ -37,13 -39,12 +39,13 @@@ namespace PBD 
  
                /* this namespace is so that we can write DEBUG::bit_name */
                  
-                 extern uint64_t Stateful;
-                 extern uint64_t Properties;
-               extern uint64_t FileManager;
-               extern uint64_t Pool;
-               extern uint64_t EventLoop;
-               extern uint64_t AbstractUI;
+                 LIBPBD_API extern uint64_t Stateful;
+                 LIBPBD_API extern uint64_t Properties;
+               LIBPBD_API extern uint64_t FileManager;
+               LIBPBD_API extern uint64_t Pool;
+               LIBPBD_API extern uint64_t EventLoop;
+               LIBPBD_API extern uint64_t AbstractUI;
 +              extern uint64_t FileUtils;
        }
  }
  
index 4b4bdf073525e8e8dc02793093a1d1823fe8e122,6f8a98b697a42173645ba8c1dc81ffe4de7c739f..01ff8606a722b0eda0d041812f569ed5ad60afe9
@@@ -75,8 -76,8 +76,8 @@@ find_matching_files_in_directories (con
   * @param pattern A Glib::PatternSpec used to match the files
   * @param result A vector in which to place the resulting matches.
   */
- void
LIBPBD_API void
 -find_matching_files_in_search_path (const SearchPath& search_path,
 +find_matching_files_in_search_path (const Searchpath& search_path,
                                      const Glib::PatternSpec& pattern,
                                      std::vector<std::string>& result);
  
@@@ -86,8 -87,8 +87,8 @@@
   *
   * @return true If file is found within the search path.
   */
- bool
LIBPBD_API bool
 -find_file_in_search_path (const SearchPath& search_path,
 +find_file_in_search_path (const Searchpath& search_path,
                            const std::string& filename,
                            std::string& result);
  
index 6daef5d4aa7fc8494103c4c28654d0c92113272c,e5d582625a8b32e18ebdb8bdf71422af302bb3d5..fc5a8be4f1e435e278f940ee0339cf2295b7cda3
  #ifndef __libpbd__floating_h__
  #define __libpbd__floating_h__
  
 +#include <stdint.h>
 +
  #include <cmath>
  
+ #include "pbd/libpbd_visibility.h"
  namespace PBD {
  
- union Float_t
+ union LIBPBD_API Float_t
  {
      Float_t (float num = 0.0f) : f(num) {}
  
index 796648de0fe524826ea599bf9df2aa75fa0a12cb,ef6499c759e72b72f1408bf7f4dcddf115648147..d62203c008c2c13c67d214f2eb82540fffc0548d
  
  #include <vector>
  #include <string>
 +#ifdef COMPILER_MSVC
 +#include <ardourext/misc.h>
 +#else
  #include <regex.h>
 +#endif
  
- class PathScanner
+ #include "pbd/libpbd_visibility.h"
+ class LIBPBD_API PathScanner
  
  {
    public:
Simple merge
index bb5485a8f372dce62e6dc962c600026a72c22ea7,bb2b8244f9889f4f9200eaf320ccfd16028bd1a3..0e6772fee6893a522e8d54707828202696cdde8b
@@@ -197,8 -199,8 +199,8 @@@ RingBuffer<T>::write (T const *src, gui
          return to_write;
  }
  
- template<class T> void
+ template<class T> LIBPBD_API void
 -RingBuffer<T>::get_read_vector (RingBuffer<T>::rw_vector *vec)
 +RingBuffer<T>::get_read_vector (typename RingBuffer<T>::rw_vector *vec)
  
  {
        guint free_cnt;
        }
  }
  
- template<class T> void
+ template<class T> LIBPBD_API void
 -RingBuffer<T>::get_write_vector (RingBuffer<T>::rw_vector *vec)
 +RingBuffer<T>::get_write_vector (typename RingBuffer<T>::rw_vector *vec)
  
  {
        guint free_cnt;
index b3890ba81b6b7774cac17411dff811b8146cc6cc,65fe939597e942df4d41793a1552992e5d5e560e..bf5b2a10c8e4a22567f6377f70725b85446f0eb6
@@@ -196,8 -198,8 +198,8 @@@ RingBufferNPT<T>::write (const T *src, 
          return to_write;
  }
  
- template<class T> void
+ template<class T> LIBPBD_API void
 -RingBufferNPT<T>::get_read_vector (RingBufferNPT<T>::rw_vector *vec)
 +RingBufferNPT<T>::get_read_vector (typename RingBufferNPT<T>::rw_vector *vec)
  {
        size_t free_cnt;
        size_t cnt2;
        }
  }
  
- template<class T> void
+ template<class T> LIBPBD_API void
 -RingBufferNPT<T>::get_write_vector (RingBufferNPT<T>::rw_vector *vec)
 +RingBufferNPT<T>::get_write_vector (typename RingBufferNPT<T>::rw_vector *vec)
  {
        size_t free_cnt;
        size_t cnt2;
index 5e1bce9aa3545b5ee0fb6733ec7138687b4af7d3,ad0b6c75d55505c55290f2ff733a2c3ee20c5e4c..857c3a78b6832e42785b06734ce7f5021e3d6792
@@@ -33,10 -35,10 +35,10 @@@ namespace PBD 
   * "search path string" contains absolute directory paths 
   * separated by a colon(:) or a semi-colon(;) on windows.
   *
 - * The SearchPath class does not test whether the paths exist
 + * The Searchpath class does not test whether the paths exist
   * or are directories. It is basically just a container.
   */
- class Searchpath : public std::vector<std::string>
+ class LIBPBD_API SearchPath : public std::vector<std::string>
  {
  public:
        /**
Simple merge
index af5c201b8557a1617c2653ab23fe8edb554e74dd,719a3d0f46042d228be1958c2aeacf52b1a08947..5c0191e25bfea4cb291d838117200d43d98b4ab3
  #ifndef __pbd_semutils_h__
  #define __pbd_semutils_h__
  
 +#ifdef PLATFORM_WINDOWS
 +#include <windows.h>
 +#else
  #include <semaphore.h>
 +#endif
  
+ #include "pbd/libpbd_visibility.h"
  namespace PBD {
  
- class ProcessSemaphore {
+ class LIBPBD_API ProcessSemaphore {
    private:
 -#ifdef __APPLE__
 +#ifdef PLATFORM_WINDOWS
 +      HANDLE _sem;
 +
 +#elif __APPLE__
        sem_t* _sem;
        sem_t* ptr_to_sem() const { return _sem; }
  #else
Simple merge
Simple merge
index f3c7baf7d78fb6bb72dfec10d2b1ac2f5460244a,c4381bc0ed197aaf55e26de606fc241a326c5377..77f5d38fb898d8c32297857e82ed77b21b4b6481
  #include <cstdlib>
  #endif
  
+ #include "pbd/libpbd_visibility.h"
  namespace PBD {
-       void stacktrace (std::ostream& out, int levels = 0);
-       void trace_twb();
+       LIBPBD_API void stacktrace (std::ostream& out, int levels = 0);
+       LIBPBD_API void trace_twb();
 +      std::string demangle (const std::string&);
  
  template<typename T>
- class thing_with_backtrace 
+ class LIBPBD_API thing_with_backtrace 
  {
    public:
      thing_with_backtrace () {
index e9582a1b53dd40cdc9308bbf7097fa7c2e0f69da,753bc13b1576a89856c734039f89d8436666d86a..794e68ce97c7e5703500ff3a1767e68313659594
  #include <map>
  #include <sigc++/slot.h>
  #include <sigc++/bind.h>
 +#ifndef  COMPILER_MSVC
  #include <sys/time.h>
 +#else
 +#include <ardourext/misc.h>
 +#endif
  
+ #include "pbd/libpbd_visibility.h"
  #include "pbd/command.h"
  
  typedef sigc::slot<void> UndoAction;
index bf5abfc1acde5c9e3dea950deb8f8b2f0d267068,333a902b4d4a3afa80a009d13b29a699cb6e3635..7cef916c85919d08173fe9a34d9d8618a7407040
  #define __pbd_uuid_h__
  
  #include <string>
 -#include <uuid/uuid.h>
 +#include <boost/uuid/uuid.hpp>
 +#include <boost/uuid/uuid_generators.hpp>
  
+ #include "pbd/libpbd_visibility.h"
  namespace PBD {
  
- class UUID : public boost::uuids::uuid {
+ class LIBPBD_API UUID {
  
    public:
 -      UUID () { uuid_generate (id); }
 -      UUID (UUID const & other) { uuid_copy (id, other.id); }
 -      UUID (std::string const & str) { uuid_parse (str.c_str(), id); }
 -      
 -      UUID& operator= (std::string const & str);
 -      std::string to_s () const;
 -      
 -      bool operator== (UUID const & other) const { return !uuid_compare (id, other.id); }
 -      bool operator!= (UUID const & other) const { return uuid_compare (id, other.id); }
 -      bool operator< (UUID const & other) const { return uuid_compare (id, other.id) < 0; }
 -      
 -      operator bool() const { return !uuid_is_null (id); }
 -
 -  private:
 -      uuid_t id;
 +    UUID ()
 +            : boost::uuids::uuid (boost::uuids::random_generator()()) {}
 +    UUID (std::string const & str)
 +            : boost::uuids::uuid (boost::uuids::string_generator()(str)) {}
  
 +    explicit UUID (boost::uuids::uuid const& u)
 +            : boost::uuids::uuid(u)
 +    {}
 +
 +    operator boost::uuids::uuid() {
 +            return static_cast<boost::uuids::uuid&>(*this);
 +    }
 +
 +    operator boost::uuids::uuid() const {
 +            return static_cast<boost::uuids::uuid const&>(*this);
 +    }
 +
 +    UUID& operator= (std::string const & str);
 +    std::string to_s () const;
 +
 +    operator bool() const { return !is_nil(); }
  };
  
  } // namespace PBD
Simple merge
index a4331e7b7657f6a4555272df093090ebc923045d,e1e1af950caf4fb4578136864bdfbbc618771226..10ec7f6c95cefe737120ee61e348dde24ea68f20
@@@ -20,18 -25,25 +25,26 @@@ def configure(conf)
      autowaf.configure(conf)
  
  def build(bld):
-     obj = bld(features = 'cxx cxxshlib')
-     obj.source = '''
-             basic_ui.cc
-             control_protocol.cc
-     '''
+     if bld.is_defined ('INTERNAL_SHARED_LIBS'):
+         obj              = bld.shlib(features = 'c cxx cshlib cxxshlib', source=controlcp_sources)
+         # defines for this library
+         obj.defines      = [ 'LIBCONTROLCP_DLL=1', 'LIBCONTROLCP_DLL_EXPORTS=1' ]
+         # internal shared libs that we use
+         obj.defines     += [ 'LIBPBD_DLL=1', 'LIBARDOUR_DLL=1', 'LIBEVORAL_DLL=1' ]
+         obj.cxxflags     = [ '-fvisibility=hidden' ]
+         obj.cflags       = [ '-fvisibility=hidden' ]
+     else:
+         obj              = bld.stlib(features = 'c cxx cstlib cxxstlib', source=controlcp_sources)
+         obj.cxxflags     = [ '-fPIC' ]
+         obj.defines      = [ ]
      obj.export_includes = ['.', './control_protocol' ]
-     obj.cxxflags     = '-DPACKAGE="ardour_cp" -fPIC'
+     obj.defines    +=  [ 'PACKAGE="ardour_cp"' ]
      obj.includes     = ['.', './control_protocol']
 +    obj.defines      = [ 'ARDOURCP_DLL_EXPORTS' ]
      obj.name         = 'libardour_cp'
      obj.target       = 'ardourcp'
 -    obj.use          = 'ardour libtimecode'
 +    obj.use          = 'libardour libtimecode'
      obj.vnum         = LIBARDOUR_CP_LIB_VERSION
      obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')
  
Simple merge
Simple merge
index f3046658ec184e8861b1ecf57470fe7dfad9b827,88174c0fafb1bbe6a2430892aec6ffbb5c75ba12..102b7426bdcd8e36ec9e5623536f775d0469c6ec
@@@ -27,10 -27,11 +27,12 @@@ def build(bld)
              interface.cc
      '''
      obj.export_includes = ['.']
-     obj.cxxflags     = '-DPACKAGE="ardour_cp"'
+     obj.defines     = [ 'PACKAGE="ardour_osc"' ]
+     if bld.is_defined ('INTERNAL_SHARED_LIBS'):
+         obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL=1', 'LIBPBD_DLL=1', 'LIBEVORAL_DLL=1' ]
      obj.includes     = ['.', './osc']
      obj.name         = 'libardour_osc'
 +    obj.defines      = [ 'ARDOURSURFACE_DLL_EXPORTS' ]
      obj.target       = 'ardour_osc'
      obj.uselib       = ' LO '
      obj.use          = 'libardour libardour_cp libpbd'
index 3c479e72d868f99329fdbd52eb609cc5410f97df,7d80295fba46d8746a5544f475c74bd3eaf3955a..a73cec28322da3882d527cf3812401cb4412a8ab
@@@ -39,10 -39,11 +39,12 @@@ def build(bld)
              wheel_modes.cc
      '''
      obj.export_includes = ['./tranzport']
-     obj.cxxflags     = '-DPACKAGE="ardour_tranzport"'
+     obj.defines     = [ 'PACKAGE="ardour_tranzport"' ]
+     if bld.is_defined ('INTERNAL_SHARED_LIBS'):
+         obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL=1', 'LIBPBD_DLL=1', 'LIBGTKMM2EXT_DLL=1' ]
      obj.includes     = ['.', './tranzport']
      obj.name         = 'libardour_tranzport'
 +    obj.defines      = [ 'ARDOURSURFACE_DLL_EXPORTS' ]
      obj.target       = 'ardour_tranzport'
      obj.use          = 'libardour libardour_cp'
      obj.vnum         = LIBARDOUR_TRANZPORT_LIB_VERSION
index f565927360100221321d26839f97cfab4e6a1c4d,623aa960db8157ac760c0d97be7923fe4aba8982..4dca1fcdb03f6dc1e5932827afb8acfe14b4c5dc
@@@ -25,10 -25,11 +25,12 @@@ def build(bld)
              interface.cc
      '''
      obj.export_includes = ['./wiimote']
-     obj.cxxflags     = '-DPACKAGE="ardour_wiimote"'
+     obj.defines     = [ 'PACKAGE="ardour_wiimote"' ]
+     if bld.is_defined ('INTERNAL_SHARED_LIBS'):
+         obj.defines += [ 'LIBARDOUR_DLL=1', 'LIBCONTROLCP_DLL=1', 'LIBPBD_DLL=1', 'LIBGTKMM2EXT_DLL=1', 'LIBEVORAL_DLL=1' ]
      obj.includes     = ['.', '../libs']
      obj.name         = 'libardour_wiimote'
 +    obj.defines      = [ 'ARDOURSURFACE_DLL_EXPORTS' ]
      obj.target       = 'ardour_wiimote'
      obj.uselib       = 'GTKMM CWIID'
      obj.use          = 'libardour libardour_cp libgtkmm2ext'