summaryrefslogtreecommitdiff
path: root/libs/surfaces/control_protocol
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-12-27 14:29:06 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2013-12-27 14:29:06 -0500
commitb0e4f81eb3a38b7236ec39f11d5211840a064d15 (patch)
tree91a917a2010fbaae80ff7fec6ab343b75bb978c2 /libs/surfaces/control_protocol
parent28759617c4eb0cbadbd41e6d7ea97d5de182966c (diff)
parentc16551c80820e9f71341b2f940143c8b3f44f5ce (diff)
merge exportvis branch into cairocanvas, to reduce the number of "floating" branches.
Still need to add API export/visibility macros for the canvas library.
Diffstat (limited to 'libs/surfaces/control_protocol')
-rw-r--r--libs/surfaces/control_protocol/control_protocol/basic_ui.h4
-rw-r--r--libs/surfaces/control_protocol/control_protocol/control_protocol.h3
-rw-r--r--libs/surfaces/control_protocol/control_protocol/visibility.h45
-rw-r--r--libs/surfaces/control_protocol/wscript25
4 files changed, 68 insertions, 9 deletions
diff --git a/libs/surfaces/control_protocol/control_protocol/basic_ui.h b/libs/surfaces/control_protocol/control_protocol/basic_ui.h
index 96a1227463..180688e616 100644
--- a/libs/surfaces/control_protocol/control_protocol/basic_ui.h
+++ b/libs/surfaces/control_protocol/control_protocol/basic_ui.h
@@ -32,12 +32,14 @@
#include "timecode/time.h"
+#include "control_protocol/visibility.h"
+
namespace ARDOUR {
class Session;
class SessionEvent;
}
-class BasicUI {
+class LIBCONTROLCP_API BasicUI {
public:
BasicUI (ARDOUR::Session&);
virtual ~BasicUI ();
diff --git a/libs/surfaces/control_protocol/control_protocol/control_protocol.h b/libs/surfaces/control_protocol/control_protocol/control_protocol.h
index 8dddfdcdb3..72726600c9 100644
--- a/libs/surfaces/control_protocol/control_protocol/control_protocol.h
+++ b/libs/surfaces/control_protocol/control_protocol/control_protocol.h
@@ -30,6 +30,7 @@
#include "pbd/stateful.h"
#include "pbd/signals.h"
+#include "control_protocol/visibility.h"
#include "control_protocol/basic_ui.h"
#include "control_protocol/types.h"
@@ -39,7 +40,7 @@ class Route;
class Session;
class Bundle;
-class ControlProtocol : public PBD::Stateful, public PBD::ScopedConnectionList, public BasicUI
+class LIBCONTROLCP_API ControlProtocol : public PBD::Stateful, public PBD::ScopedConnectionList, public BasicUI
{
public:
ControlProtocol (Session&, std::string name);
diff --git a/libs/surfaces/control_protocol/control_protocol/visibility.h b/libs/surfaces/control_protocol/control_protocol/visibility.h
new file mode 100644
index 0000000000..88dcff0940
--- /dev/null
+++ b/libs/surfaces/control_protocol/control_protocol/visibility.h
@@ -0,0 +1,45 @@
+/*
+ Copyright (C) 2013 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 __libcontrolcp_visibility_h__
+#define __libcontrolcp_visibility_h__
+
+#if defined(COMPILER_MSVC)
+ #define LIBCONTROLCP_DLL_IMPORT __declspec(dllimport)
+ #define LIBCONTROLCP_DLL_EXPORT __declspec(dllexport)
+ #define LIBCONTROLCP_DLL_LOCAL
+#else
+ #define LIBCONTROLCP_DLL_IMPORT __attribute__ ((visibility ("default")))
+ #define LIBCONTROLCP_DLL_EXPORT __attribute__ ((visibility ("default")))
+ #define LIBCONTROLCP_DLL_LOCAL __attribute__ ((visibility ("hidden")))
+#endif
+
+#ifdef LIBCONTROLCP_STATIC // libcontrolcp is not a DLL
+ #define LIBCONTROLCP_API
+ #define LIBCONTROLCP_LOCAL
+#else
+ #ifdef LIBCONTROLCP_DLL_EXPORTS // defined if we are building the libcontrolcp DLL (instead of using it)
+ #define LIBCONTROLCP_API LIBCONTROLCP_DLL_EXPORT
+ #else
+ #define LIBCONTROLCP_API LIBCONTROLCP_DLL_IMPORT
+ #endif
+ #define LIBCONTROLCP_LOCAL LIBCONTROLCP_DLL_LOCAL
+#endif
+
+#endif /* __libcontrolcp_visibility_h__ */
diff --git a/libs/surfaces/control_protocol/wscript b/libs/surfaces/control_protocol/wscript
index e3092b5606..235c6c06cb 100644
--- a/libs/surfaces/control_protocol/wscript
+++ b/libs/surfaces/control_protocol/wscript
@@ -13,6 +13,11 @@ LIBARDOUR_CP_LIB_VERSION = '4.1.0'
top = '.'
out = 'build'
+controlcp_sources = [
+ 'basic_ui.cc',
+ 'control_protocol.cc',
+ ]
+
def options(opt):
autowaf.set_options(opt)
@@ -20,17 +25,23 @@ 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_EXPORTS=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.name = 'libardour_cp'
obj.target = 'ardourcp'
- obj.use = 'libardour libtimecode'
+ obj.use = 'libardour'
obj.vnum = LIBARDOUR_CP_LIB_VERSION
obj.install_path = os.path.join(bld.env['LIBDIR'], 'ardour3')