aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/scanner
diff options
context:
space:
mode:
authorJake Petroules <jake.petroules@qt.io>2017-05-12 18:50:50 -0700
committerJake Petroules <jake.petroules@qt.io>2017-06-13 15:47:18 +0000
commit8b5e5af31e7c0860f8cf4f8fa50e7b322cadca62 (patch)
tree36a7e2fc38c7571cdf7e4c6b6449754e39cb993c /src/plugins/scanner
parentd5dc7a2571027168d1a74cbb2578848dc843e20e (diff)
Transform the scanner plugin manager into a true generic plugin manager
...and fit the generator plugins into this new plugin structure. Plugins are now handled entirely by the build system in a generic manner and no part of qbscore (code or build files) has a direct reference to any plugin regardless of whether qbs is being built as shared or static libraries. Change-Id: I4a20546ce275df71083ee22c2cb67f781c4de764 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/plugins/scanner')
-rw-r--r--src/plugins/scanner/cpp/cpp.qbs4
-rw-r--r--src/plugins/scanner/cpp/cpp_global.h2
-rw-r--r--src/plugins/scanner/cpp/cppscanner.cpp19
-rw-r--r--src/plugins/scanner/qt/qt.qbs4
-rw-r--r--src/plugins/scanner/qt/qtscanner.cpp20
-rw-r--r--src/plugins/scanner/scanner.h2
-rw-r--r--src/plugins/scanner/scannerplugin.qbs21
7 files changed, 29 insertions, 43 deletions
diff --git a/src/plugins/scanner/cpp/cpp.qbs b/src/plugins/scanner/cpp/cpp.qbs
index 33b576253..93a64e7cd 100644
--- a/src/plugins/scanner/cpp/cpp.qbs
+++ b/src/plugins/scanner/cpp/cpp.qbs
@@ -1,7 +1,7 @@
import qbs 1.0
-import "../scannerplugin.qbs" as ScannerPlugin
+import "../../qbsplugin.qbs" as QbsPlugin
-ScannerPlugin {
+QbsPlugin {
cpp.defines: base.concat(["CPLUSPLUS_NO_PARSER"])
name: "qbs_cpp_scanner"
files: [
diff --git a/src/plugins/scanner/cpp/cpp_global.h b/src/plugins/scanner/cpp/cpp_global.h
index 7ffa6e46d..80b101457 100644
--- a/src/plugins/scanner/cpp/cpp_global.h
+++ b/src/plugins/scanner/cpp/cpp_global.h
@@ -43,7 +43,7 @@
#if defined(WIN32) || defined(_WIN32)
#define CPPSCANNER_EXPORT __declspec(dllexport)
#else
-#define CPPSCANNER_EXPORT
+#define CPPSCANNER_EXPORT __attribute__((visibility("default")))
#endif
#endif // CPP_GLOBAL_H
diff --git a/src/plugins/scanner/cpp/cppscanner.cpp b/src/plugins/scanner/cpp/cppscanner.cpp
index 46d16e2f1..2d652b9e2 100644
--- a/src/plugins/scanner/cpp/cppscanner.cpp
+++ b/src/plugins/scanner/cpp/cppscanner.cpp
@@ -43,6 +43,9 @@
using namespace CPlusPlus;
+#include <tools/qbspluginmanager.h>
+#include <tools/scannerpluginmanager.h>
+
#ifdef Q_OS_UNIX
#include <sys/types.h>
#include <sys/stat.h>
@@ -295,8 +298,6 @@ static const char **additionalFileTags(void *opaq, int *size)
return 0;
}
-extern "C" {
-
ScannerPlugin includeScanner =
{
"include_scanner",
@@ -310,11 +311,15 @@ ScannerPlugin includeScanner =
ScannerPlugin *cppScanners[] = { &includeScanner, NULL };
-#ifndef QBS_STATIC_LIB
-CPPSCANNER_EXPORT ScannerPlugin **getScanners()
+static void QbsCppScannerPluginLoad()
{
- return cppScanners;
+ qbs::Internal::ScannerPluginManager::instance()->registerPlugins(cppScanners);
}
-#endif
-} // extern "C"
+static void QbsCppScannerPluginUnload()
+{
+}
+
+QBS_REGISTER_STATIC_PLUGIN(extern "C" CPPSCANNER_EXPORT, QbsCppScannerPlugin,
+ QbsCppScannerPluginLoad, QbsCppScannerPluginUnload)
+
diff --git a/src/plugins/scanner/qt/qt.qbs b/src/plugins/scanner/qt/qt.qbs
index ecc71f8cf..a6aea1c33 100644
--- a/src/plugins/scanner/qt/qt.qbs
+++ b/src/plugins/scanner/qt/qt.qbs
@@ -1,7 +1,7 @@
import qbs 1.0
-import "../scannerplugin.qbs" as ScannerPlugin
+import "../../qbsplugin.qbs" as QbsPlugin
-ScannerPlugin {
+QbsPlugin {
name: "qbs_qt_scanner"
files: [
"../scanner.h",
diff --git a/src/plugins/scanner/qt/qtscanner.cpp b/src/plugins/scanner/qt/qtscanner.cpp
index c53a69fd1..408a65220 100644
--- a/src/plugins/scanner/qt/qtscanner.cpp
+++ b/src/plugins/scanner/qt/qtscanner.cpp
@@ -40,11 +40,14 @@
#if defined(WIN32) || defined(_WIN32)
#define SCANNER_EXPORT __declspec(dllexport)
#else
-#define SCANNER_EXPORT
+#define SCANNER_EXPORT __attribute__((visibility("default")))
#endif
#include "../scanner.h"
+#include <tools/qbspluginmanager.h>
+#include <tools/scannerpluginmanager.h>
+
#include <QtCore/qglobal.h>
#ifdef Q_OS_UNIX
@@ -171,8 +174,6 @@ static const char **additionalFileTagsQrc(void *, int *size)
return 0;
}
-extern "C" {
-
ScannerPlugin qrcScanner =
{
"qt_qrc_scanner",
@@ -186,11 +187,14 @@ ScannerPlugin qrcScanner =
ScannerPlugin *qtScanners[] = {&qrcScanner, NULL};
-#ifndef QBS_STATIC_LIB
-SCANNER_EXPORT ScannerPlugin **getScanners()
+static void QbsQtScannerPluginLoad()
+{
+ qbs::Internal::ScannerPluginManager::instance()->registerPlugins(qtScanners);
+}
+
+static void QbsQtScannerPluginUnload()
{
- return qtScanners;
}
-#endif
-} // extern "C"
+QBS_REGISTER_STATIC_PLUGIN(extern "C" SCANNER_EXPORT, QbsQtScannerPlugin,
+ QbsQtScannerPluginLoad, QbsQtScannerPluginUnload)
diff --git a/src/plugins/scanner/scanner.h b/src/plugins/scanner/scanner.h
index 7843ceec5..0d62a2ea2 100644
--- a/src/plugins/scanner/scanner.h
+++ b/src/plugins/scanner/scanner.h
@@ -100,8 +100,6 @@ public:
int flags;
};
-typedef ScannerPlugin **(*getScanners_f)();
-
#ifdef __cplusplus
}
#endif
diff --git a/src/plugins/scanner/scannerplugin.qbs b/src/plugins/scanner/scannerplugin.qbs
deleted file mode 100644
index ae87ca980..000000000
--- a/src/plugins/scanner/scannerplugin.qbs
+++ /dev/null
@@ -1,21 +0,0 @@
-import qbs 1.0
-
-QbsProduct {
- Depends { name: "cpp" }
- Depends { name: "bundle"; condition: qbs.targetOS.contains("darwin") }
- Depends { name: "Qt.core" }
- Depends { name: "qbsbuildconfig" }
- type: Qt.core.staticBuild ? ["staticlibrary"] : ["dynamiclibrary"]
- cpp.defines: base.concat(type.contains("staticlibrary") ? ["QBS_STATIC_LIB"] : ["QBS_LIBRARY"])
- cpp.cxxLanguageVersion: "c++11"
- destinationDirectory: qbsbuildconfig.libDirName + "/qbs/plugins"
- Group {
- fileTagsFilter: ["dynamiclibrary"]
- qbs.install: true
- qbs.installDir: qbsbuildconfig.pluginsInstallDir + "/qbs/plugins"
- }
- Properties {
- condition: qbs.targetOS.contains("darwin")
- bundle.isBundle: false
- }
-}