summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntti Määttä <[email protected]>2023-10-05 14:48:14 +0300
committerAntti Määttä <[email protected]>2023-10-30 18:59:21 +0300
commit0f2558470d4a4b7983e31748f3916a057fae1f50 (patch)
tree961f2197fe48626af4c757b8814b4d3798bdcb89
parent457566c96f420c452c4709e1e1942933c1ea2c5d (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.txt2
-rw-r--r--src/corelib/tracing/qctf.cpp27
-rw-r--r--src/corelib/tracing/qctf_p.h2
-rw-r--r--src/plugins/CMakeLists.txt2
-rw-r--r--src/plugins/tracing/CMakeLists.txt3
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