}
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
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