From 3ef7a9c34782fbc4e17a4d6448ee8ff1daea32ce Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Fri, 25 Sep 2020 08:25:35 +0200 Subject: Fix static build The register_types() function was optimized away by the linker and the imports would not be found. Change-Id: I3d98602daf78996399630b7b1296cc5dc0d3da05 Reviewed-by: Fabian Kosmale --- src/imports/controls/.prev_CMakeLists.txt | 1 + src/imports/controls/CMakeLists.txt | 1 + .../controls/basic/impl/qtquickcontrols2basicstyleimplplugin.cpp | 4 ++++ src/imports/controls/basic/qtquickcontrols2basicstyleplugin.cpp | 4 ++++ src/imports/controls/controls.pro | 2 +- .../controls/fusion/impl/qtquickcontrols2fusionstyleimplplugin.cpp | 4 ++++ src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp | 4 ++++ .../controls/imagine/impl/qtquickcontrols2imaginestyleimplplugin.cpp | 4 ++++ src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp | 4 ++++ .../material/impl/qtquickcontrols2materialstyleimplplugin.cpp | 4 ++++ src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp | 4 ++++ src/imports/controls/qtquickcontrols2plugin.cpp | 3 +++ .../universal/impl/qtquickcontrols2universalstyleimplplugin.cpp | 4 ++++ .../controls/universal/qtquickcontrols2universalstyleplugin.cpp | 4 ++++ src/quickcontrols2/qquickdummyregistration_p.h | 4 ++++ src/quickcontrols2/qtquickcontrols2global.h | 2 ++ 16 files changed, 52 insertions(+), 1 deletion(-) diff --git a/src/imports/controls/.prev_CMakeLists.txt b/src/imports/controls/.prev_CMakeLists.txt index d2731194..78dfae8d 100644 --- a/src/imports/controls/.prev_CMakeLists.txt +++ b/src/imports/controls/.prev_CMakeLists.txt @@ -30,6 +30,7 @@ qt_internal_add_qml_module(qtquickcontrols2plugin Qt::Gui Qt::Qml Qt::Quick + Qt::QuickControls2 ) #### Keys ignored in scope 1:.:.:controls.pro:: diff --git a/src/imports/controls/CMakeLists.txt b/src/imports/controls/CMakeLists.txt index 91517ef9..c71d73b6 100644 --- a/src/imports/controls/CMakeLists.txt +++ b/src/imports/controls/CMakeLists.txt @@ -30,6 +30,7 @@ qt_internal_add_qml_module(qtquickcontrols2plugin Qt::Gui Qt::Qml Qt::Quick + Qt::QuickControls2 ) #### Keys ignored in scope 1:.:.:controls.pro:: diff --git a/src/imports/controls/basic/impl/qtquickcontrols2basicstyleimplplugin.cpp b/src/imports/controls/basic/impl/qtquickcontrols2basicstyleimplplugin.cpp index 8a8bba46..b39bdb5c 100644 --- a/src/imports/controls/basic/impl/qtquickcontrols2basicstyleimplplugin.cpp +++ b/src/imports/controls/basic/impl/qtquickcontrols2basicstyleimplplugin.cpp @@ -36,6 +36,8 @@ #include +extern void qml_register_types_QtQuick_Controls_Basic_impl(); + QT_BEGIN_NAMESPACE class QtQuickControls2BasicStyleImplPlugin : public QQmlEngineExtensionPlugin @@ -50,6 +52,8 @@ public: QtQuickControls2BasicStyleImplPlugin::QtQuickControls2BasicStyleImplPlugin(QObject *parent) : QQmlEngineExtensionPlugin(parent) { + volatile auto registration = &::qml_register_types_QtQuick_Controls_Basic_impl; + Q_UNUSED(registration); } QT_END_NAMESPACE diff --git a/src/imports/controls/basic/qtquickcontrols2basicstyleplugin.cpp b/src/imports/controls/basic/qtquickcontrols2basicstyleplugin.cpp index cf5adf1c..7786223c 100644 --- a/src/imports/controls/basic/qtquickcontrols2basicstyleplugin.cpp +++ b/src/imports/controls/basic/qtquickcontrols2basicstyleplugin.cpp @@ -40,6 +40,8 @@ #include #include +extern void qml_register_types_QtQuick_Controls_Basic(); + QT_BEGIN_NAMESPACE class QtQuickControls2BasicStylePlugin: public QQuickStylePlugin @@ -58,6 +60,8 @@ public: QtQuickControls2BasicStylePlugin::QtQuickControls2BasicStylePlugin(QObject *parent) : QQuickStylePlugin(parent) { + volatile auto registration = &qml_register_types_QtQuick_Controls_Basic; + Q_UNUSED(registration); } QString QtQuickControls2BasicStylePlugin::name() const diff --git a/src/imports/controls/controls.pro b/src/imports/controls/controls.pro index 4eb402a3..bc8c5e10 100644 --- a/src/imports/controls/controls.pro +++ b/src/imports/controls/controls.pro @@ -2,7 +2,7 @@ TARGET = qtquickcontrols2plugin TARGETPATH = QtQuick/Controls QML_IMPORT_VERSION = $$QT_VERSION -QT += qml quick +QT += qml quick quickcontrols2 QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private quickcontrols2-private quickcontrols2impl-private DEFINES += QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII diff --git a/src/imports/controls/fusion/impl/qtquickcontrols2fusionstyleimplplugin.cpp b/src/imports/controls/fusion/impl/qtquickcontrols2fusionstyleimplplugin.cpp index 56cfc151..5b02409f 100644 --- a/src/imports/controls/fusion/impl/qtquickcontrols2fusionstyleimplplugin.cpp +++ b/src/imports/controls/fusion/impl/qtquickcontrols2fusionstyleimplplugin.cpp @@ -36,6 +36,8 @@ #include +extern void qml_register_types_QtQuick_Controls_Fusion_impl(); + QT_BEGIN_NAMESPACE class QtQuickControls2FusionStyleImplPlugin : public QQmlEngineExtensionPlugin @@ -50,6 +52,8 @@ public: QtQuickControls2FusionStyleImplPlugin::QtQuickControls2FusionStyleImplPlugin(QObject *parent) : QQmlEngineExtensionPlugin(parent) { + volatile auto registration = &qml_register_types_QtQuick_Controls_Fusion_impl; + Q_UNUSED(registration); } QT_END_NAMESPACE diff --git a/src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp b/src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp index fcaa959e..f0d0e41a 100644 --- a/src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp +++ b/src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp @@ -41,6 +41,8 @@ #include #include +extern void qml_register_types_QtQuick_Controls_Fusion(); + QT_BEGIN_NAMESPACE class QtQuickControls2FusionStylePlugin : public QQuickStylePlugin @@ -59,6 +61,8 @@ public: QtQuickControls2FusionStylePlugin::QtQuickControls2FusionStylePlugin(QObject *parent) : QQuickStylePlugin(parent) { + volatile auto registration = &qml_register_types_QtQuick_Controls_Fusion; + Q_UNUSED(registration); } QString QtQuickControls2FusionStylePlugin::name() const diff --git a/src/imports/controls/imagine/impl/qtquickcontrols2imaginestyleimplplugin.cpp b/src/imports/controls/imagine/impl/qtquickcontrols2imaginestyleimplplugin.cpp index 514d9ed8..d3b7f94e 100644 --- a/src/imports/controls/imagine/impl/qtquickcontrols2imaginestyleimplplugin.cpp +++ b/src/imports/controls/imagine/impl/qtquickcontrols2imaginestyleimplplugin.cpp @@ -36,6 +36,8 @@ #include +extern void qml_register_types_QtQuick_Controls_Imagine_impl(); + QT_BEGIN_NAMESPACE class QtQuickControls2ImagineStyleImplPlugin : public QQmlEngineExtensionPlugin @@ -50,6 +52,8 @@ public: QtQuickControls2ImagineStyleImplPlugin::QtQuickControls2ImagineStyleImplPlugin(QObject *parent) : QQmlEngineExtensionPlugin(parent) { + volatile auto registration = &qml_register_types_QtQuick_Controls_Imagine_impl; + Q_UNUSED(registration); } QT_END_NAMESPACE diff --git a/src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp b/src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp index 16c3f0d7..bc885cfd 100644 --- a/src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp +++ b/src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp @@ -42,6 +42,8 @@ #include #include +extern void qml_register_types_QtQuick_Controls_Imagine(); + QT_BEGIN_NAMESPACE class QtQuickControls2ImagineStylePlugin : public QQuickStylePlugin @@ -60,6 +62,8 @@ public: QtQuickControls2ImagineStylePlugin::QtQuickControls2ImagineStylePlugin(QObject *parent) : QQuickStylePlugin(parent) { + volatile auto registration = &qml_register_types_QtQuick_Controls_Imagine; + Q_UNUSED(registration); } QString QtQuickControls2ImagineStylePlugin::name() const diff --git a/src/imports/controls/material/impl/qtquickcontrols2materialstyleimplplugin.cpp b/src/imports/controls/material/impl/qtquickcontrols2materialstyleimplplugin.cpp index 258ea2b6..6ac920b1 100644 --- a/src/imports/controls/material/impl/qtquickcontrols2materialstyleimplplugin.cpp +++ b/src/imports/controls/material/impl/qtquickcontrols2materialstyleimplplugin.cpp @@ -36,6 +36,8 @@ #include +extern void qml_register_types_QtQuick_Controls_Material_impl(); + QT_BEGIN_NAMESPACE class QtQuickControls2MaterialStyleImplPlugin : public QQmlEngineExtensionPlugin @@ -50,6 +52,8 @@ public: QtQuickControls2MaterialStyleImplPlugin::QtQuickControls2MaterialStyleImplPlugin(QObject *parent) : QQmlEngineExtensionPlugin(parent) { + volatile auto registration = &qml_register_types_QtQuick_Controls_Material_impl; + Q_UNUSED(registration); } QT_END_NAMESPACE diff --git a/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp b/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp index 095dd6d7..c8e7ebbc 100644 --- a/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp +++ b/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp @@ -41,6 +41,8 @@ #include #include +extern void qml_register_types_QtQuick_Controls_Material(); + QT_BEGIN_NAMESPACE class QtQuickControls2MaterialStylePlugin : public QQuickStylePlugin @@ -59,6 +61,8 @@ public: QtQuickControls2MaterialStylePlugin::QtQuickControls2MaterialStylePlugin(QObject *parent) : QQuickStylePlugin(parent) { + volatile auto registration = &qml_register_types_QtQuick_Controls_Material; + Q_UNUSED(registration); } QString QtQuickControls2MaterialStylePlugin::name() const diff --git a/src/imports/controls/qtquickcontrols2plugin.cpp b/src/imports/controls/qtquickcontrols2plugin.cpp index 2bd4047d..fcd025e0 100644 --- a/src/imports/controls/qtquickcontrols2plugin.cpp +++ b/src/imports/controls/qtquickcontrols2plugin.cpp @@ -41,6 +41,7 @@ #include #include #include +#include QT_BEGIN_NAMESPACE @@ -97,6 +98,8 @@ QString fallbackStyleUri() QtQuickControls2Plugin::QtQuickControls2Plugin(QObject *parent) : QQmlExtensionPlugin(parent) { + volatile auto registration = &qml_register_types_QtQuick_Controls; + Q_UNUSED(registration); } QtQuickControls2Plugin::~QtQuickControls2Plugin() diff --git a/src/imports/controls/universal/impl/qtquickcontrols2universalstyleimplplugin.cpp b/src/imports/controls/universal/impl/qtquickcontrols2universalstyleimplplugin.cpp index bc36be44..91c43261 100644 --- a/src/imports/controls/universal/impl/qtquickcontrols2universalstyleimplplugin.cpp +++ b/src/imports/controls/universal/impl/qtquickcontrols2universalstyleimplplugin.cpp @@ -36,6 +36,8 @@ #include +extern void qml_register_types_QtQuick_Controls_Universal_impl(); + QT_BEGIN_NAMESPACE class QtQuickControls2UniversalStyleImplPlugin : public QQmlEngineExtensionPlugin @@ -50,6 +52,8 @@ public: QtQuickControls2UniversalStyleImplPlugin::QtQuickControls2UniversalStyleImplPlugin(QObject *parent) : QQmlEngineExtensionPlugin(parent) { + volatile auto registration = &qml_register_types_QtQuick_Controls_Universal_impl; + Q_UNUSED(registration); } QT_END_NAMESPACE diff --git a/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp b/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp index 01074432..e3bbc00a 100644 --- a/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp +++ b/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp @@ -40,6 +40,8 @@ #include #include +extern void qml_register_types_QtQuick_Controls_Universal(); + QT_BEGIN_NAMESPACE class QtQuickControls2UniversalStylePlugin : public QQuickStylePlugin @@ -58,6 +60,8 @@ public: QtQuickControls2UniversalStylePlugin::QtQuickControls2UniversalStylePlugin(QObject *parent) : QQuickStylePlugin(parent) { + volatile auto registration = &qml_register_types_QtQuick_Controls_Universal; + Q_UNUSED(registration); } QString QtQuickControls2UniversalStylePlugin::name() const diff --git a/src/quickcontrols2/qquickdummyregistration_p.h b/src/quickcontrols2/qquickdummyregistration_p.h index 4d7fe5e4..0d3b34a8 100644 --- a/src/quickcontrols2/qquickdummyregistration_p.h +++ b/src/quickcontrols2/qquickdummyregistration_p.h @@ -49,6 +49,10 @@ // #include +// Ensure that the generated qmltyperegistrations .cpp file includes this header +// by including it here. Otherwise, the qtquickcontrols2plugin will fail to load +// due to the type registration function's symbol being undefined. +#include QT_BEGIN_NAMESPACE diff --git a/src/quickcontrols2/qtquickcontrols2global.h b/src/quickcontrols2/qtquickcontrols2global.h index 813cdbbb..e5f050ce 100644 --- a/src/quickcontrols2/qtquickcontrols2global.h +++ b/src/quickcontrols2/qtquickcontrols2global.h @@ -53,4 +53,6 @@ QT_BEGIN_NAMESPACE QT_END_NAMESPACE +Q_QUICKCONTROLS2_EXPORT void qml_register_types_QtQuick_Controls(); + #endif // QTQUICKCONTROLS2GLOBAL_H -- cgit v1.2.3