diff --git a/libs/ardour/ardour/msvc_libardour.h b/libs/ardour/ardour/msvc_libardour.h index 75c932905e..52aa65d95c 100644 --- a/libs/ardour/ardour/msvc_libardour.h +++ b/libs/ardour/ardour/msvc_libardour.h @@ -19,37 +19,9 @@ #ifndef __msvc_libardour_h__ #define __msvc_libardour_h__ +#include "ardour/visibility.h" #include -#ifdef LIBARDOUR_IS_IN_WIN_STATIC_LIB // #define if your project uses libardour (under Windows) as a static library -#define LIBARDOUR_IS_IN_WINDLL 0 -#endif - -#if !defined(LIBARDOUR_IS_IN_WINDLL) - #if defined(COMPILER_MSVC) || defined(COMPILER_MINGW) - // If you need '__declspec' compatibility, add extra compilers to the above as necessary - #define LIBARDOUR_IS_IN_WINDLL 1 - #else - #define LIBARDOUR_IS_IN_WINDLL 0 - #endif -#endif - -#if LIBARDOUR_IS_IN_WINDLL && !defined(LIBARDOUR_API) - #if defined(BUILDING_LIBARDOUR) - #define LIBARDOUR_API __declspec(dllexport) - #define LIBARDOUR_APICALLTYPE __stdcall - #elif defined(COMPILER_MSVC) || defined(COMPILER_MINGW) // Probably needs Cygwin too, at some point - #define LIBARDOUR_API __declspec(dllimport) - #define LIBARDOUR_APICALLTYPE __stdcall - #else - #error "Attempting to define __declspec with an incompatible compiler !" - #endif -#elif !defined(LIBARDOUR_API) - // Other compilers / platforms could be accommodated here - #define LIBARDOUR_API - #define LIBARDOUR_APICALLTYPE -#endif - #ifndef _MAX_PATH #define _MAX_PATH 260 #endif diff --git a/libs/ardour/ardour/session_event.h b/libs/ardour/ardour/session_event.h index ccec43d909..e90ab71e26 100644 --- a/libs/ardour/ardour/session_event.h +++ b/libs/ardour/ardour/session_event.h @@ -28,6 +28,7 @@ #include "pbd/ringbuffer.h" #include "pbd/event_loop.h" +#include "ardour/visibility.h" #include "ardour/types.h" namespace ARDOUR { @@ -35,7 +36,7 @@ namespace ARDOUR { class Slave; class Region; -class SessionEvent { +class LIBARDOUR_API SessionEvent { public: enum Type { SetTransportSpeed, @@ -150,7 +151,7 @@ private: friend class Butler; }; -class SessionEventManager { +class LIBARDOUR_API SessionEventManager { public: SessionEventManager () : pending_events (2048), auto_loop_event(0), punch_out_event(0), punch_in_event(0) {} diff --git a/libs/ardour/ardour/visibility.h b/libs/ardour/ardour/visibility.h index 09287b877d..b702e94edb 100644 --- a/libs/ardour/ardour/visibility.h +++ b/libs/ardour/ardour/visibility.h @@ -20,6 +20,36 @@ #ifndef __libardour_visibility_h__ #define __libardour_visibility_h__ +#ifdef LIBARDOUR_IS_IN_WIN_STATIC_LIB // #define if your project uses libardour (under Windows) as a static library +#define LIBARDOUR_IS_IN_WINDLL 0 +#endif + +#if !defined(LIBARDOUR_IS_IN_WINDLL) + #if defined(COMPILER_MSVC) || defined(COMPILER_MINGW) + // If you need '__declspec' compatibility, add extra compilers to the above as necessary + #define LIBARDOUR_IS_IN_WINDLL 1 + #else + #define LIBARDOUR_IS_IN_WINDLL 0 + #endif +#endif + +#if LIBARDOUR_IS_IN_WINDLL && !defined(LIBARDOUR_API) + #if defined(BUILDING_LIBARDOUR) + #define LIBARDOUR_API __declspec(dllexport) + #define LIBARDOUR_APICALLTYPE __cdecl + #elif defined(COMPILER_MSVC) || defined(COMPILER_MINGW) // Probably needs Cygwin too, at some point + #define LIBARDOUR_API __declspec(dllimport) + #define LIBARDOUR_APICALLTYPE __cdecl + #else + #error "Attempting to define __declspec with an incompatible compiler !" + #endif +#elif !defined(LIBARDOUR_API) + // Other compilers / platforms could be accommodated here (as an example, see LIBARDOUR_HELPER_DLL, below) + #define LIBARDOUR_API + #define LIBARDOUR_APICALLTYPE +#endif + + /* _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.