summaryrefslogtreecommitdiffhomepage
path: root/opentrack
diff options
context:
space:
mode:
Diffstat (limited to 'opentrack')
-rw-r--r--opentrack/CMakeLists.txt2
-rw-r--r--opentrack/main-settings.hpp2
-rw-r--r--opentrack/mappings.hpp2
-rw-r--r--opentrack/plugin-api.hpp40
-rw-r--r--opentrack/plugin-support.hpp2
-rw-r--r--opentrack/selected-libraries.hpp9
-rw-r--r--opentrack/shortcuts.h14
-rw-r--r--opentrack/state.hpp2
-rw-r--r--opentrack/tracker.h10
-rw-r--r--opentrack/win32-shortcuts.h8
10 files changed, 69 insertions, 22 deletions
diff --git a/opentrack/CMakeLists.txt b/opentrack/CMakeLists.txt
index c3676979..de5975e2 100644
--- a/opentrack/CMakeLists.txt
+++ b/opentrack/CMakeLists.txt
@@ -1,4 +1,4 @@
-opentrack_boilerplate(opentrack-api NO-LINKER-SCRIPT NO-COMPAT)
+opentrack_boilerplate(opentrack-api NO-LINKER-SCRIPT NO-COMPAT LINKAGE)
if(NOT WIN32)
target_link_libraries(opentrack-api opentrack-qxt-mini opentrack-compat dl)
else()
diff --git a/opentrack/main-settings.hpp b/opentrack/main-settings.hpp
index 613223ce..b7b086ad 100644
--- a/opentrack/main-settings.hpp
+++ b/opentrack/main-settings.hpp
@@ -9,7 +9,7 @@
#pragma once
#include <QString>
-#include "opentrack/options.hpp"
+#include "opentrack-compat/options.hpp"
#include "opentrack/plugin-api.hpp"
using namespace options;
diff --git a/opentrack/mappings.hpp b/opentrack/mappings.hpp
index bb38a3ca..087ea7f3 100644
--- a/opentrack/mappings.hpp
+++ b/opentrack/mappings.hpp
@@ -8,7 +8,7 @@
#pragma once
#include <QSettings>
-#include "options.hpp"
+#include "opentrack-compat/options.hpp"
using namespace options;
#include "spline-widget/functionconfig.h"
#include "main-settings.hpp"
diff --git a/opentrack/plugin-api.hpp b/opentrack/plugin-api.hpp
index a57077ab..5fdc3bcb 100644
--- a/opentrack/plugin-api.hpp
+++ b/opentrack/plugin-api.hpp
@@ -8,17 +8,38 @@
#pragma once
-#include "../opentrack-compat/export.hpp"
#include <QString>
#include <QWidget>
#include <QFrame>
#include <QIcon>
+#ifdef BUILD_api
+# include "opentrack-compat/export.hpp"
+#else
+# include "opentrack-compat/import.hpp"
+#endif
+
+#ifndef OPENTRACK_PLUGIN_EXPORT
+# ifdef _WIN32
+# define OPENTRACK_PLUGIN_LINKAGE __declspec(dllexport)
+# else
+# define OPENTRACK_PLUGIN_LINKAGE
+# endif
+# ifndef _MSC_VER
+# define OPENTRACK_PLUGIN_EXPORT __attribute__ ((visibility ("default"))) OPENTRACK_PLUGIN_LINKAGE
+# else
+# define OPENTRACK_PLUGIN_EXPORT OPENTRACK_PLUGIN_LINKAGE
+# endif
+#endif
+
enum Axis {
TX = 0, TY, TZ, Yaw, Pitch, Roll
};
-class BaseDialog : public QWidget
+namespace plugin_api {
+namespace detail {
+
+class OPENTRACK_EXPORT BaseDialog : public QWidget
{
Q_OBJECT
public:
@@ -27,16 +48,19 @@ signals:
void closing();
};
+} // ns
+} // ns
+
#define OPENTRACK_DECLARE_PLUGIN_INTERNAL(ctor_class, ctor_ret_class, metadata_class, dialog_class, dialog_ret_class) \
- extern "C" OPENTRACK_EXPORT ctor_ret_class* GetConstructor() \
+ extern "C" OPENTRACK_PLUGIN_EXPORT ctor_ret_class* GetConstructor() \
{ \
return new ctor_class; \
} \
- extern "C" OPENTRACK_EXPORT Metadata* GetMetadata() \
+ extern "C" OPENTRACK_PLUGIN_EXPORT Metadata* GetMetadata() \
{ \
return new metadata_class; \
} \
- extern "C" OPENTRACK_EXPORT dialog_ret_class* GetDialog() \
+ extern "C" OPENTRACK_PLUGIN_EXPORT dialog_ret_class* GetDialog() \
{ \
return new dialog_class; \
}
@@ -65,7 +89,7 @@ struct IFilter
virtual void center() {}
};
-struct IFilterDialog : public BaseDialog
+struct IFilterDialog : public plugin_api::detail::BaseDialog
{
// optional destructor
virtual ~IFilterDialog() {}
@@ -93,7 +117,7 @@ struct IProtocol
virtual QString game_name() = 0;
};
-struct IProtocolDialog : public BaseDialog
+struct IProtocolDialog : public plugin_api::detail::BaseDialog
{
// optional destructor
virtual ~IProtocolDialog() {}
@@ -118,7 +142,7 @@ struct ITracker
virtual void data(double *data) = 0;
};
-struct ITrackerDialog : public BaseDialog
+struct ITrackerDialog : public plugin_api::detail::BaseDialog
{
// optional destructor
virtual ~ITrackerDialog() {}
diff --git a/opentrack/plugin-support.hpp b/opentrack/plugin-support.hpp
index 102d11c4..650eec10 100644
--- a/opentrack/plugin-support.hpp
+++ b/opentrack/plugin-support.hpp
@@ -8,7 +8,7 @@
#pragma once
#include "plugin-api.hpp"
-#include "options.hpp"
+#include "opentrack-compat/options.hpp"
#include <QWidget>
#include <QDebug>
diff --git a/opentrack/selected-libraries.hpp b/opentrack/selected-libraries.hpp
index 3719b109..b396b5ec 100644
--- a/opentrack/selected-libraries.hpp
+++ b/opentrack/selected-libraries.hpp
@@ -11,7 +11,14 @@
#include "opentrack/plugin-support.hpp"
#include <QFrame>
-struct SelectedLibraries {
+
+#ifdef BUILD_api
+# include "opentrack-compat/export.hpp"
+#else
+# include "opentrack-compat/import.hpp"
+#endif
+
+struct OPENTRACK_EXPORT SelectedLibraries {
using dylibptr = mem<dylib>;
mem<ITracker> pTracker;
mem<IFilter> pFilter;
diff --git a/opentrack/shortcuts.h b/opentrack/shortcuts.h
index 63d91829..03adc1ab 100644
--- a/opentrack/shortcuts.h
+++ b/opentrack/shortcuts.h
@@ -17,9 +17,15 @@
#include <QSettings>
#include <QMutex>
+#ifdef BUILD_api
+# include "opentrack-compat/export.hpp"
+#else
+# include "opentrack-compat/import.hpp"
+#endif
+
#include "qxt-mini/QxtGlobalShortcut"
#include "opentrack/plugin-support.hpp"
-#include "opentrack/options.hpp"
+#include "opentrack-compat/options.hpp"
#include "opentrack/main-settings.hpp"
using namespace options;
@@ -66,9 +72,7 @@ typedef unsigned char BYTE;
struct Key { int foo; };
#endif
-struct Shortcuts;
-
-struct KeybindingWorker : public QThread {
+struct OPENTRACK_EXPORT KeybindingWorker : public QThread {
#ifdef _WIN32
private:
LPDIRECTINPUT8 din;
@@ -87,7 +91,7 @@ public:
#endif
};
-struct Shortcuts : public QObject {
+struct OPENTRACK_EXPORT Shortcuts : public QObject {
Q_OBJECT
public:
diff --git a/opentrack/state.hpp b/opentrack/state.hpp
index e4cb0f04..dcb18293 100644
--- a/opentrack/state.hpp
+++ b/opentrack/state.hpp
@@ -9,7 +9,7 @@
#pragma once
#include <vector>
-#include "opentrack/options.hpp"
+#include "opentrack-compat/options.hpp"
using namespace options;
#include "opentrack/plugin-support.hpp"
#include "opentrack/main-settings.hpp"
diff --git a/opentrack/tracker.h b/opentrack/tracker.h
index 890660e1..e26c3f7a 100644
--- a/opentrack/tracker.h
+++ b/opentrack/tracker.h
@@ -18,7 +18,7 @@
#include "spline-widget/functionconfig.h"
#include "main-settings.hpp"
-#include "options.hpp"
+#include "opentrack-compat/options.hpp"
#include <QMutex>
#include <QThread>
@@ -40,7 +40,13 @@ public:
inline double operator()(int i) const { return axes[i]; }
};
-class Tracker : private QThread {
+#ifdef BUILD_api
+# include "opentrack-compat/export.hpp"
+#else
+# include "opentrack-compat/import.hpp"
+#endif
+
+class OPENTRACK_EXPORT Tracker : private QThread {
Q_OBJECT
private:
QMutex mtx;
diff --git a/opentrack/win32-shortcuts.h b/opentrack/win32-shortcuts.h
index fe92ae53..9b2c6121 100644
--- a/opentrack/win32-shortcuts.h
+++ b/opentrack/win32-shortcuts.h
@@ -10,7 +10,13 @@ struct win_key;
extern QList<win_key> windows_key_mods;
extern QList<win_key> windows_key_sequences;
-struct win_key
+#ifdef BUILD_api
+# include "opentrack-compat/export.hpp"
+#else
+# include "opentrack-compat/import.hpp"
+#endif
+
+struct OPENTRACK_EXPORT win_key
{
win_key(int win, Qt::Key qt) : win(win), qt(qt) {}
int win;