From 99eecab83d4a4c79979aa0b1fcf1f58c14dcf526 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 4 Feb 2014 13:56:45 +0100 Subject: [PATCH] Automatically link printsupport plugins to static applications. Add the required printsupport plugins to the QTPLUGIN variable as is done for the QPA plugin. [ChangeLog][QtPrintSupport] Made the Qt buildsystem automatically include the necessary plugins so that static applications can print. Task-number: QTBUG-29663 Change-Id: I0e2e3b0f25dd5714bd187711c85893926b0c4e85 Reviewed-by: Thiago Macieira --- configure | 13 +++++++++++++ mkspecs/features/qt.prf | 2 ++ src/printsupport/printsupport.pro | 1 + tools/configure/configureapp.cpp | 14 +++++++++++--- tools/configure/configureapp.h | 1 + 5 files changed, 28 insertions(+), 3 deletions(-) diff --git a/configure b/configure index 529471d0c4..fee5885619 100755 --- a/configure +++ b/configure @@ -780,6 +780,8 @@ QT_LIBS_GLIB= # default qpa platform QT_QPA_DEFAULT_PLATFORM= +# default print support plugin +QT_PRINTSUPPORT_DEFAULT_PLUGIN= # Android vars CFG_DEFAULT_ANDROID_NDK_ROOT=$ANDROID_NDK_ROOT @@ -5427,6 +5429,15 @@ if [ -z "$QT_QPA_DEFAULT_PLATFORM" ]; then fi fi +# Determine print support plugin belonging to the default QPA platform +if [ "$QT_QPA_DEFAULT_PLATFORM" = "cocoa" ]; then + QT_PRINTSUPPORT_DEFAULT_PLUGIN=cocoaprintersupport +elif [ "$QT_QPA_DEFAULT_PLATFORM" = "windows" ]; then + QT_PRINTSUPPORT_DEFAULT_PLUGIN=windowsprintersupport +elif [ "$QT_QPA_DEFAULT_PLATFORM" = "xcb" ]; then + QT_PRINTSUPPORT_DEFAULT_PLUGIN=cupsprintersupport +fi + if [ -n "$QMAKE_CFLAGS_XCB" ] || [ -n "$QMAKE_LIBS_XCB" ]; then QMakeVar set QMAKE_CFLAGS_XCB "$QMAKE_CFLAGS_XCB" QMakeVar set QMAKE_LIBS_XCB "$QMAKE_LIBS_XCB" @@ -6412,6 +6423,7 @@ EOF fi echo "#define QT_QPA_DEFAULT_PLATFORM_NAME \"$QT_QPA_DEFAULT_PLATFORM\"" >>"$outpath/src/corelib/global/qconfig.h.new" +echo "#define QT_QPA_DEFAULT_PRINTSUPPORTPLUGIN_NAME \"QT_PRINTSUPPORT_DEFAULT_PLUGIN\"" >>"$outpath/src/corelib/global/qconfig.h.new" # avoid unecessary rebuilds by copying only if qconfig.h has changed if cmp -s "$outpath/src/corelib/global/qconfig.h" "$outpath/src/corelib/global/qconfig.h.new"; then @@ -6499,6 +6511,7 @@ EOF if [ "$CFG_SHARED" = "no" ]; then echo "QT_DEFAULT_QPA_PLUGIN = q$QT_QPA_DEFAULT_PLATFORM" >> "$QTCONFIG.tmp" + echo "QT_DEFAULT_PRINTSUPPORTPLUGIN = $QT_PRINTSUPPORT_DEFAULT_PLUGIN" >> "$QTCONFIG.tmp" echo >> "$QTCONFIG.tmp" fi diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf index 83a8778654..fb83e59e65 100644 --- a/mkspecs/features/qt.prf +++ b/mkspecs/features/qt.prf @@ -172,6 +172,8 @@ contains(QT_CONFIG, static) { else: \ QTPLUGIN += $$QT_DEFAULT_QPA_PLUGIN } + needs_printsupport_plugin: \ + QTPLUGIN += $$QT_DEFAULT_PRINTSUPPORTPLUGIN import_plugins:!isEmpty(QTPLUGIN) { IMPORT_FILE_CONT = \ "// This file is autogenerated by qmake. It imports static plugin classes for" \ diff --git a/src/printsupport/printsupport.pro b/src/printsupport/printsupport.pro index ee4f9f72df..a92d36f7bc 100644 --- a/src/printsupport/printsupport.pro +++ b/src/printsupport/printsupport.pro @@ -1,6 +1,7 @@ TARGET = QtPrintSupport QT = core-private gui-private widgets-private +MODULE_CONFIG = needs_printsupport_plugin DEFINES += QT_NO_USING_NAMESPACE QMAKE_DOCS = $$PWD/doc/qtprintsupport.qdocconf diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index e04bd57b7f..868acc7b90 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -3291,8 +3291,10 @@ void Configure::generateQConfigPri() if (!dictionary["QT_NAMESPACE"].isEmpty()) configStream << "#namespaces" << endl << "QT_NAMESPACE = " << dictionary["QT_NAMESPACE"] << endl; - if (dictionary[ "SHARED" ] == "no") - configStream << "QT_DEFAULT_QPA_PLUGIN = q" << qpaPlatformName() << endl; + if (dictionary[ "SHARED" ] == "no") { + configStream << "QT_DEFAULT_QPA_PLUGIN = q" << qpaPlatformName() << endl + << "QT_DEFAULT_PRINTSUPPORTPLUGIN = " << qpaPrintSupportPluginName() << endl; + } if (!configStream.flush()) dictionary[ "DONE" ] = "error"; @@ -3474,7 +3476,8 @@ void Configure::generateConfigfiles() for (int i = 0; i < qconfigList.count(); ++i) tmpStream << addDefine(qconfigList.at(i)); - tmpStream<<"#define QT_QPA_DEFAULT_PLATFORM_NAME \"" << qpaPlatformName() << "\""<