diff options
author | Antti Määttä <[email protected]> | 2023-10-05 14:48:14 +0300 |
---|---|---|
committer | Antti Määttä <[email protected]> | 2023-10-30 18:59:21 +0300 |
commit | 0f2558470d4a4b7983e31748f3916a057fae1f50 (patch) | |
tree | 961f2197fe48626af4c757b8814b4d3798bdcb89 | |
parent | 457566c96f420c452c4709e1e1942933c1ea2c5d (diff) |
Fix CTF with static build
- Do not require feature library
- Load static plugin
Change-Id: I6c3ec72e20b9f2800c1d350dac795fccbb8c381e
Reviewed-by: Janne Koskinen <[email protected]>
Reviewed-by: Antti Määttä <[email protected]>
-rw-r--r-- | src/corelib/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/corelib/tracing/qctf.cpp | 27 | ||||
-rw-r--r-- | src/corelib/tracing/qctf_p.h | 2 | ||||
-rw-r--r-- | src/plugins/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/plugins/tracing/CMakeLists.txt | 3 |
5 files changed, 30 insertions, 6 deletions
diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt index 9cf67be32fb..868513513e0 100644 --- a/src/corelib/CMakeLists.txt +++ b/src/corelib/CMakeLists.txt @@ -1341,7 +1341,7 @@ qt_internal_extend_target(Core CONDITION WASM kernel/qeventdispatcher_wasm.cpp kernel/qeventdispatcher_wasm_p.h ) -qt_internal_extend_target(Core CONDITION QT_FEATURE_ctf AND QT_FEATURE_library +qt_internal_extend_target(Core CONDITION QT_FEATURE_ctf SOURCES tracing/qctf_p.h tracing/qctf.cpp PLUGIN_TYPES diff --git a/src/corelib/tracing/qctf.cpp b/src/corelib/tracing/qctf.cpp index 6601398beb3..ff81d0a678c 100644 --- a/src/corelib/tracing/qctf.cpp +++ b/src/corelib/tracing/qctf.cpp @@ -7,6 +7,7 @@ #include <qpluginloader.h> #include <qfileinfo.h> #include <qdir.h> +#include <qjsonarray.h> #include "qctf_p.h" @@ -18,6 +19,8 @@ static bool s_prevent_recursion = false; static bool s_shutdown = false; static QCtfLib* s_plugin = nullptr; +#if QT_CONFIG(library) && defined(QT_SHARED) + #if defined(Q_OS_ANDROID) static QString findPlugin(const QString &plugin) { @@ -64,6 +67,30 @@ static bool loadPlugin(bool &retry) return true; } +#else + +#define QCtfPluginIID QStringLiteral("org.qt-project.Qt.QCtfLib") + +static bool loadPlugin(bool &retry) +{ + retry = false; + const auto &plugins = QPluginLoader::staticPlugins(); + for (const auto &plugin : plugins) { + const auto json = plugin.metaData(); + const auto IID = json[QStringLiteral("IID")]; + if (IID.toString() == QCtfPluginIID) { + s_plugin = qobject_cast<QCtfLib *>(plugin.instance()); + if (!s_plugin) + return false; + s_plugin->shutdown(&s_shutdown); + return true; + } + } + return false; +} + +#endif + static bool initialize() { if (s_shutdown || s_prevent_recursion) diff --git a/src/corelib/tracing/qctf_p.h b/src/corelib/tracing/qctf_p.h index b8db869e09a..70d00d018c3 100644 --- a/src/corelib/tracing/qctf_p.h +++ b/src/corelib/tracing/qctf_p.h @@ -19,8 +19,6 @@ #include <qtcoreexports.h> #include <qobject.h> -QT_REQUIRE_CONFIG(library); - QT_BEGIN_NAMESPACE struct QCtfTraceMetadata; diff --git a/src/plugins/CMakeLists.txt b/src/plugins/CMakeLists.txt index dc7c45c2d87..d26d2aae443 100644 --- a/src/plugins/CMakeLists.txt +++ b/src/plugins/CMakeLists.txt @@ -25,6 +25,6 @@ if (TARGET Qt::Network) add_subdirectory(networkinformation) add_subdirectory(tls) endif() -if (QT_FEATURE_ctf AND QT_FEATURE_library) +if (QT_FEATURE_ctf AND TARGET Qt::Network) add_subdirectory(tracing) endif() diff --git a/src/plugins/tracing/CMakeLists.txt b/src/plugins/tracing/CMakeLists.txt index b4a908c7ea9..94e9eccfdd2 100644 --- a/src/plugins/tracing/CMakeLists.txt +++ b/src/plugins/tracing/CMakeLists.txt @@ -12,14 +12,13 @@ endfunction(make_includable) make_includable(metadata_template.txt metadata_template.h) qt_internal_add_plugin(QCtfTracePlugin - SHARED CLASS_NAME QCtfTracePlugin PLUGIN_TYPE tracing SOURCES qctflib_p.h qctflib.cpp metadata_template.txt qctfplugin.cpp qctfplugin_p.h qctfserver_p.h qctfserver.cpp LIBRARIES - Qt6::Core Qt6::CorePrivate Qt6::Network + Qt::Core Qt::CorePrivate Qt::Network ) qt_internal_extend_target(QCtfTracePlugin CONDITION QT_FEATURE_zstd |