diff options
author | Jake Petroules <jake.petroules@qt.io> | 2017-05-12 18:50:50 -0700 |
---|---|---|
committer | Jake Petroules <jake.petroules@qt.io> | 2017-06-13 15:47:18 +0000 |
commit | 8b5e5af31e7c0860f8cf4f8fa50e7b322cadca62 (patch) | |
tree | 36a7e2fc38c7571cdf7e4c6b6449754e39cb993c /src/plugins/scanner | |
parent | d5dc7a2571027168d1a74cbb2578848dc843e20e (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.qbs | 4 | ||||
-rw-r--r-- | src/plugins/scanner/cpp/cpp_global.h | 2 | ||||
-rw-r--r-- | src/plugins/scanner/cpp/cppscanner.cpp | 19 | ||||
-rw-r--r-- | src/plugins/scanner/qt/qt.qbs | 4 | ||||
-rw-r--r-- | src/plugins/scanner/qt/qtscanner.cpp | 20 | ||||
-rw-r--r-- | src/plugins/scanner/scanner.h | 2 | ||||
-rw-r--r-- | src/plugins/scanner/scannerplugin.qbs | 21 |
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 - } -} |