use visibility macros to control visibility in control surface DLL/DSO's
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 3 Sep 2013 12:33:51 +0000 (08:33 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 3 Sep 2013 12:33:51 +0000 (08:33 -0400)
12 files changed:
libs/surfaces/control_protocol/control_protocol/control_protocol.h
libs/surfaces/control_protocol/wscript
libs/surfaces/generic_midi/interface.cc
libs/surfaces/generic_midi/wscript
libs/surfaces/mackie/interface.cc
libs/surfaces/mackie/wscript
libs/surfaces/osc/interface.cc
libs/surfaces/osc/wscript
libs/surfaces/tranzport/interface.cc
libs/surfaces/tranzport/wscript
libs/surfaces/wiimote/interface.cc
libs/surfaces/wiimote/wscript

index 0c849064bb56d28d37cfbfcfb296848ef36e8823..b20771b7266659f4e821517e89059b6cb36017c8 100644 (file)
 #include "control_protocol/basic_ui.h"
 #include "control_protocol/types.h"
 
+#include "ardour/visibility.h"
+
+#ifdef ARDOURSURFACE_DLL_EXPORTS // defined if we are building the ARDOUR surface DLLs (instead of using them)
+    #define ARDOURSURFACE_API LIBARDOUR_HELPER_DLL_EXPORT
+#else
+    #define ARDOURSURFACE_API LIBARDOUR_HELPER_DLL_IMPORT
+#endif 
+#define ARDOURSURFACE_LOCAL LIBARDOUR_HELPER_DLL_LOCAL
+
 namespace ARDOUR {
 
 class Route;
 class Session;
 class Bundle;
 
-class ControlProtocol : public PBD::Stateful, public PBD::ScopedConnectionList, public BasicUI
+class ARDOURSURFACE_API ControlProtocol : public PBD::Stateful, public PBD::ScopedConnectionList, public BasicUI
 {
   public:
        ControlProtocol (Session&, std::string name);
@@ -142,7 +151,7 @@ class ControlProtocol : public PBD::Stateful, public PBD::ScopedConnectionList,
        void prev_track (uint32_t initial_id);
 
   private:
-       ControlProtocol (const ControlProtocol&); /* noncopyable */
+       ARDOURSURFACE_LOCAL ControlProtocol (const ControlProtocol&); /* noncopyable */
 };
 
 extern "C" {
index 2ba48d5138e008a340038844662dafdc78d85c12..eb0f2cdae901076700aaf4188e2559b57e9eb41e 100644 (file)
@@ -28,6 +28,7 @@ def build(bld):
     obj.export_includes = ['.', './control_protocol' ]
     obj.cxxflags     = '-DPACKAGE="ardour_cp" -fPIC'
     obj.includes     = ['.', './control_protocol']
+    obj.defines      = [ 'ARDOURSURFACE_DLL_EXPORTS' ]
     obj.name         = 'libardour_cp'
     obj.target       = 'ardourcp'
     obj.use          = 'ardour libtimecode'
index 94edb0ba8054af7e01e1a81e81cd90438fc35e45..f90c04b0ab09912b1ccf44cab38ab8028a9824e1 100644 (file)
@@ -24,7 +24,7 @@
 
 using namespace ARDOUR;
 
-ControlProtocol*
+ControlProtocol* ARDOURSURFACE_LOCAL
 new_generic_midi_protocol (ControlProtocolDescriptor* /*descriptor*/, Session* s)
 {
        GenericMidiControlProtocol* gmcp;
@@ -43,13 +43,13 @@ new_generic_midi_protocol (ControlProtocolDescriptor* /*descriptor*/, Session* s
        return gmcp;
 }
 
-void
+void ARDOURSURFACE_LOCAL
 delete_generic_midi_protocol (ControlProtocolDescriptor* /*descriptor*/, ControlProtocol* cp)
 {
        delete cp;
 }
 
-bool
+bool ARDOURSURFACE_LOCAL
 probe_generic_midi_protocol (ControlProtocolDescriptor* /*descriptor*/)
 {
        return GenericMidiControlProtocol::probe ();
@@ -67,11 +67,5 @@ static ControlProtocolDescriptor generic_midi_descriptor = {
        destroy : delete_generic_midi_protocol
 };
        
-
-extern "C" {
-ControlProtocolDescriptor* 
-protocol_descriptor () {
-       return &generic_midi_descriptor;
-}
-}
+extern "C" ARDOURSURFACE_API ControlProtocolDescriptor* protocol_descriptor () { return &generic_midi_descriptor; }
 
index 4cdf2602fd2d560221d1f30dea6bba929c7802e4..ffd4dd3698b765bc27525f68e2fa15e6ff210904 100644 (file)
@@ -34,6 +34,7 @@ def build(bld):
     obj.includes     = ['.', './generic_midi']
     obj.name         = 'libardour_generic_midi'
     obj.target       = 'ardour_generic_midi'
+    obj.defines      = [ 'ARDOURSURFACE_DLL_EXPORTS' ]
     obj.uselib       = 'GTKMM GTK GDK'
     obj.use          = 'libardour libardour_cp libgtkmm2ext libpbd'
     obj.vnum         = LIBARDOUR_GENERIC_MIDI_LIB_VERSION
index 294a222a6bee8ecff3836504f5f205358ee612c7..289f1a946dda71ffb354b5ff564bee7c1d96bd9f 100644 (file)
@@ -29,7 +29,7 @@ using namespace ARDOUR;
 using namespace PBD;
 using namespace std;
 
-ControlProtocol*
+static ControlProtocol*
 new_mackie_protocol (ControlProtocolDescriptor*, Session* s)
 {
        MackieControlProtocol* mcp = 0;
@@ -47,7 +47,7 @@ new_mackie_protocol (ControlProtocolDescriptor*, Session* s)
        return mcp;
 }
 
-void
+static void
 delete_mackie_protocol (ControlProtocolDescriptor*, ControlProtocol* cp)
 {
        try
@@ -66,7 +66,7 @@ delete_mackie_protocol (ControlProtocolDescriptor*, ControlProtocol* cp)
        So anything that can be changed in the UI should not be used here to
        prevent loading of the lib.
 */
-bool
+static bool
 probe_mackie_protocol (ControlProtocolDescriptor*)
 {
        return MackieControlProtocol::probe();
@@ -89,11 +89,4 @@ static ControlProtocolDescriptor mackie_descriptor = {
 };
        
 
-extern "C" {
-
-ControlProtocolDescriptor* 
-protocol_descriptor () {
-       return &mackie_descriptor;
-}
-
-}
+extern "C" ARDOURSURFACE_API ControlProtocolDescriptor* protocol_descriptor () { return &mackie_descriptor; }
index fe276c4e821b3a94ebb0b1ce8d6834e23f0769f6..e097772e7a46ec3536a781aedb112a14dce5a84a 100644 (file)
@@ -46,6 +46,7 @@ def build(bld):
     # need ../libs because some GTK2 header files require stuff there
     obj.includes     = ['.', '../libs']
     obj.name         = 'libardour_mcp'
+    obj.defines      = [ 'ARDOURSURFACE_DLL_EXPORTS' ]
     obj.target       = 'ardour_mcp'
     obj.uselib       = 'GTKMM'
     obj.use          = 'libardour libardour_cp libgtkmm2ext'
index a414d4eb82fb1fc03198d468f440322ccef455ac..f20d89841809017b742cea2d68c8621dd39fa031 100644 (file)
@@ -23,7 +23,7 @@
 
 using namespace ARDOUR;
 
-ControlProtocol*
+static ControlProtocol*
 new_osc_protocol (ControlProtocolDescriptor* /*descriptor*/, Session* s)
 {
        OSC* osc = new OSC (*s, Config->get_osc_port());
@@ -33,13 +33,13 @@ new_osc_protocol (ControlProtocolDescriptor* /*descriptor*/, Session* s)
        return osc;
 }
 
-void
+static void
 delete_osc_protocol (ControlProtocolDescriptor* /*descriptor*/, ControlProtocol* cp)
 {
        delete cp;
 }
 
-bool
+static bool
 probe_osc_protocol (ControlProtocolDescriptor* /*descriptor*/)
 {
        return true; // we can always do OSC
@@ -57,10 +57,5 @@ static ControlProtocolDescriptor osc_descriptor = {
        destroy : delete_osc_protocol
 };
 
-extern "C" {
-ControlProtocolDescriptor* 
-protocol_descriptor () {
-       return &osc_descriptor;
-}
-}
+extern "C" ARDOURSURFACE_API ControlProtocolDescriptor* protocol_descriptor () { return &osc_descriptor; }
 
index c2c12616c145fadab49112b5d1f31228192abba5..f3046658ec184e8861b1ecf57470fe7dfad9b827 100644 (file)
@@ -30,6 +30,7 @@ def build(bld):
     obj.cxxflags     = '-DPACKAGE="ardour_cp"'
     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 16ff22687a4b35682b6089fe211102f3efbc61ae..3cf709078358a9900c3599800e7071cbc207b708 100644 (file)
@@ -23,7 +23,7 @@
 
 using namespace ARDOUR;
 
-ControlProtocol*
+static ControlProtocol*
 new_tranzport_protocol (ControlProtocolDescriptor* descriptor, Session* s)
 {
        TranzportControlProtocol* tcp = new TranzportControlProtocol (*s);
@@ -37,13 +37,13 @@ new_tranzport_protocol (ControlProtocolDescriptor* descriptor, Session* s)
        
 }
 
-void
+static void
 delete_tranzport_protocol (ControlProtocolDescriptor* descriptor, ControlProtocol* cp)
 {
        delete cp;
 }
 
-bool
+static bool
 probe_tranzport_protocol (ControlProtocolDescriptor* descriptor)
 {
        return TranzportControlProtocol::probe();
@@ -62,10 +62,6 @@ static ControlProtocolDescriptor tranzport_descriptor = {
 };
        
 
-extern "C" {
-ControlProtocolDescriptor* 
-protocol_descriptor () {
-       return &tranzport_descriptor;
-}
-}
+extern "C" ARDOURSURFACE_API ControlProtocolDescriptor* protocol_descriptor () { return &tranzport_descriptor; }
+
 
index 311a9a204506a21ef8afb7b4fdcc003159a7c07d..3c479e72d868f99329fdbd52eb609cc5410f97df 100644 (file)
@@ -42,6 +42,7 @@ def build(bld):
     obj.cxxflags     = '-DPACKAGE="ardour_tranzport"'
     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 318bc40adf2b967d031d6c07954593e7444e1632..9a704e445e87f46773c59c88ba7e58a18eeb8ff3 100644 (file)
@@ -29,7 +29,7 @@
 using namespace ARDOUR;
 using namespace PBD;
 
-ControlProtocol*
+static ControlProtocol*
 new_wiimote_protocol (ControlProtocolDescriptor*, Session* s)
 {
        WiimoteControlProtocol* wmcp = new WiimoteControlProtocol (*s);
@@ -37,13 +37,13 @@ new_wiimote_protocol (ControlProtocolDescriptor*, Session* s)
        return wmcp;
 }
 
-void
+static void
 delete_wiimote_protocol (ControlProtocolDescriptor* /*descriptor*/, ControlProtocol* cp)
 {
        delete cp;
 }
 
-bool
+static bool
 probe_wiimote_protocol (ControlProtocolDescriptor*)
 {
        return WiimoteControlProtocol::probe ();
@@ -61,13 +61,5 @@ static ControlProtocolDescriptor wiimote_descriptor = {
        destroy : delete_wiimote_protocol
 };
 
-
-extern "C" {
-
-ControlProtocolDescriptor*
-protocol_descriptor () {
-       return &wiimote_descriptor;
-}
-
-}
+extern "C" ARDOURSURFACE_API ControlProtocolDescriptor* protocol_descriptor () { return &wiimote_descriptor; }
 
index 3a4bd109c27891ee8055eaa91e4af865d93039a3..f565927360100221321d26839f97cfab4e6a1c4d 100644 (file)
@@ -28,6 +28,7 @@ def build(bld):
     obj.cxxflags     = '-DPACKAGE="ardour_wiimote"'
     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'