From dce6b71e825397ff086562b6177453369e48cec9 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 13 Sep 2013 12:32:50 -0400 Subject: use visibility control on JACK audio backend, so that we can import this change into windows branch --- libs/ardour/ardour/audio_backend.h | 8 +++++++ libs/ardour/ardour/visibility.h | 44 ++++++++++++++++++++++++++++++++++++++ libs/ardour/audioengine.cc | 10 +++++---- 3 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 libs/ardour/ardour/visibility.h (limited to 'libs/ardour') diff --git a/libs/ardour/ardour/audio_backend.h b/libs/ardour/ardour/audio_backend.h index d9561a62e5..4d57f0b43d 100644 --- a/libs/ardour/ardour/audio_backend.h +++ b/libs/ardour/ardour/audio_backend.h @@ -31,6 +31,14 @@ #include "ardour/types.h" #include "ardour/audioengine.h" #include "ardour/port_engine.h" +#include "ardour/visibility.h" + +#ifdef ARDOURBACKEND_DLL_EXPORTS // defined if we are building the ARDOUR Panners DLLs (instead of using them) + #define ARDOURBACKEND_API LIBARDOUR_HELPER_DLL_EXPORT +#else + #define ARDOURBACKEND_API LIBARDOUR_HELPER_DLL_IMPORT +#endif +#define ARDOURBACKEND_LOCAL LIBARDOUR_HELPER_DLL_LOCAL namespace ARDOUR { diff --git a/libs/ardour/ardour/visibility.h b/libs/ardour/ardour/visibility.h new file mode 100644 index 0000000000..09287b877d --- /dev/null +++ b/libs/ardour/ardour/visibility.h @@ -0,0 +1,44 @@ +/* + 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 __libardour_visibility_h__ +#define __libardour_visibility_h__ + +/* _WIN32 is defined by most compilers targetting Windows, but within the + * ardour source tree, we also define COMPILER_MSVC or COMPILER_MINGW depending + * on how a Windows build is built. + */ + +#if defined _WIN32 || defined __CYGWIN__ || defined(COMPILER_MSVC) || defined(COMPILER_MINGW) + #define LIBARDOUR_HELPER_DLL_IMPORT __declspec(dllimport) + #define LIBARDOUR_HELPER_DLL_EXPORT __declspec(dllexport) + #define LIBARDOUR_HELPER_DLL_LOCAL +#else + #if __GNUC__ >= 4 + #define LIBARDOUR_HELPER_DLL_IMPORT __attribute__ ((visibility ("default"))) + #define LIBARDOUR_HELPER_DLL_EXPORT __attribute__ ((visibility ("default"))) + #define LIBARDOUR_HELPER_DLL_LOCAL __attribute__ ((visibility ("hidden"))) + #else + #define LIBARDOUR_HELPER_DLL_IMPORT + #define LIBARDOUR_HELPER_DLL_EXPORT + #define LIBARDOUR_HELPER_DLL_LOCAL + #endif +#endif + +#endif /* __libardour_visibility_h__ */ diff --git a/libs/ardour/audioengine.cc b/libs/ardour/audioengine.cc index 73dee76a92..567f3c7671 100644 --- a/libs/ardour/audioengine.cc +++ b/libs/ardour/audioengine.cc @@ -505,7 +505,8 @@ AudioEngine::backend_discover (const string& path) { Glib::Module module (path); AudioBackendInfo* info; - void* sym = 0; + AudioBackendInfo* (*dfunc)(void); + void* func = 0; if (!module) { error << string_compose(_("AudioEngine: cannot load module \"%1\" (%2)"), path, @@ -513,15 +514,16 @@ AudioEngine::backend_discover (const string& path) return 0; } - if (!module.get_symbol ("descriptor", sym)) { - error << string_compose(_("AudioEngine: backend at \"%1\" has no descriptor."), path) << endmsg; + if (!module.get_symbol ("descriptor", func)) { + error << string_compose(_("AudioEngine: backend at \"%1\" has no descriptor function."), path) << endmsg; error << Glib::Module::get_last_error() << endmsg; return 0; } module.make_resident (); - info = (AudioBackendInfo*) sym; + dfunc = (AudioBackendInfo* (*)(void))func; + info = dfunc(); return info; } -- cgit v1.2.3