summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mkspecs/features/qt.prf25
-rw-r--r--mkspecs/features/qt_plugin.prf4
2 files changed, 27 insertions, 2 deletions
diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf
index 443914e011..6b2833b09e 100644
--- a/mkspecs/features/qt.prf
+++ b/mkspecs/features/qt.prf
@@ -36,7 +36,30 @@ plugin { #Qt plugins
}
QT_PLUGIN_VERIFY = DEPLOYMENT_PLUGIN
-contains(QT_CONFIG, static): QT_PLUGIN_VERIFY += QTPLUGIN
+
+contains(QT_CONFIG, static) {
+ QT_PLUGIN_VERIFY += QTPLUGIN
+ contains(TEMPLATE, .*app) {
+ import_plugins:!isEmpty(QTPLUGIN) {
+ IMPORT_FILE_CONT = \
+ "// This file is autogenerated by qmake. It imports static plugin classes for" \
+ "// static plugins specified using QTPLUGIN and QT_PLUGIN_CLASS.<plugin> variables." \
+ "$${LITERAL_HASH}include <QtPlugin>"
+ for(IMPORT_PLUG, $$list($$unique(QTPLUGIN))) {
+ PLUG_CLASS = $$eval(QT_PLUGIN.$${IMPORT_PLUG}.CLASS_NAME)
+ !isEmpty(PLUG_CLASS): \
+ IMPORT_FILE_CONT += "Q_IMPORT_PLUGIN($$PLUG_CLASS)"
+ else: \
+ warning("Plugin class name could not be determined for $$IMPORT_PLUG plugin.")
+ }
+ IMPORT_CPP = $$OUT_PWD/$$lower($$basename(TARGET))_plugin_import.cpp
+ write_file($$IMPORT_CPP, IMPORT_FILE_CONT)|error("Aborting.")
+ SOURCES += $$IMPORT_CPP
+ QMAKE_DISTCLEAN += $$IMPORT_CPP
+ }
+ }
+}
+
for(QT_CURRENT_VERIFY, $$list($$QT_PLUGIN_VERIFY)) {
for(QTPLUG, $$list($$lower($$unique($$QT_CURRENT_VERIFY)))) {
# Check if the plugin is known to Qt. We can use this to determine
diff --git a/mkspecs/features/qt_plugin.prf b/mkspecs/features/qt_plugin.prf
index e09e5d0a3c..f547e2d1eb 100644
--- a/mkspecs/features/qt_plugin.prf
+++ b/mkspecs/features/qt_plugin.prf
@@ -26,7 +26,9 @@ else:CONFIG += shared
MODULE_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_plugin_$${MODULE}.pri
MODULE_PRI_CONT = \
- "QT_PLUGIN.$${MODULE}.TYPE = $$PLUGIN_TYPE"
+ "QT_PLUGIN.$${MODULE}.TYPE = $$PLUGIN_TYPE" \
+ "QT_PLUGIN.$${MODULE}.CLASS_NAME = $$PLUGIN_CLASS_NAME"
+
write_file($$MODULE_PRI, MODULE_PRI_CONT)|error("Aborting.")
pritarget.path = $$[QT_HOST_DATA]/mkspecs/modules