aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/qtprofilesetup/qtprofilesetup.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2014-07-09 16:00:59 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2014-07-11 15:18:17 +0200
commit64b51ff6cc1dfc4e6af50d85b8cdef510d724f25 (patch)
tree986c4b2dcade3c47dd8bb99713addabd2f265cc9 /src/lib/qtprofilesetup/qtprofilesetup.cpp
parentd51dddb4aefa72b2c3a662bb112c41c024a2288c (diff)
libqtprofilesetup: Gather information about Qt plugins.
And create modules for them. These also handle the creation of the "import" source file when building against a static Qt. Change-Id: I883a1dd96c5e38c9d4bb5c13af807b1bf388f8b1 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/lib/qtprofilesetup/qtprofilesetup.cpp')
-rw-r--r--src/lib/qtprofilesetup/qtprofilesetup.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/lib/qtprofilesetup/qtprofilesetup.cpp b/src/lib/qtprofilesetup/qtprofilesetup.cpp
index 75b15b025..9c6bae4d3 100644
--- a/src/lib/qtprofilesetup/qtprofilesetup.cpp
+++ b/src/lib/qtprofilesetup/qtprofilesetup.cpp
@@ -83,6 +83,29 @@ static QString pathToJSLiteral(const QString &path)
return toJSLiteral(QDir::fromNativeSeparators(path));
}
+static QString defaultQpaPlugin(const Profile &profile, const QtModuleInfo &module,
+ const QtEnvironment &qtEnv)
+{
+ if (qtEnv.qtMajorVersion < 5)
+ return QString();
+ QFile qConfigPri(qtEnv.mkspecBasePath + QLatin1String("/qconfig.pri"));
+ if (!qConfigPri.open(QIODevice::ReadOnly)) {
+ throw ErrorInfo(Tr::tr("Setting up Qt profile '%1' failed: Cannot open "
+ "file '%2' (%3).")
+ .arg(profile.name(), qConfigPri.fileName(), qConfigPri.errorString()));
+ }
+ const QList<QByteArray> lines = qConfigPri.readAll().split('\n');
+ const QByteArray magicString = "QT_DEFAULT_QPA_PLUGIN =";
+ foreach (const QByteArray &line, lines) {
+ const QByteArray simplifiedLine = line.simplified();
+ if (simplifiedLine.startsWith(magicString))
+ return QString::fromLatin1(simplifiedLine.mid(magicString.count()).trimmed());
+ }
+ if (module.isStaticLibrary)
+ qDebug("Warning: Could not determine default QPA plugin for static Qt.");
+ return QString();
+}
+
static void replaceSpecialValues(const QString &filePath, const Profile &profile,
const QtModuleInfo &module, const QtEnvironment &qtEnvironment)
{
@@ -141,6 +164,10 @@ static void replaceSpecialValues(const QString &filePath, const Profile &profile
+ baIndent + "}";
}
content.replace("@defines@", compilerDefines);
+ if (module.qbsName == QLatin1String("gui")) {
+ content.replace("@defaultQpaPlugin@",
+ utf8JSLiteral(defaultQpaPlugin(profile, module, qtEnvironment)));
+ }
if (!module.modulePrefix.isEmpty()) {
if (!propertiesString.isEmpty())
propertiesString += "\n ";
@@ -151,6 +178,8 @@ static void replaceSpecialValues(const QString &filePath, const Profile &profile
propertiesString += "\n ";
propertiesString += "isStaticLibrary: true";
}
+ if (module.isPlugin)
+ content.replace("@className@", utf8JSLiteral(module.pluginData.className));
content.replace("@special_properties@", propertiesString);
moduleFile.resize(0);
moduleFile.write(content);
@@ -171,6 +200,7 @@ static void createModules(Profile &profile, Settings *settings,
"the existing profile of the same name (%2).").arg(profile.name(), removeError));
}
copyTemplateFile(QLatin1String("QtModule.qbs"), qbsQtModuleBaseDir, profile.name());
+ copyTemplateFile(QLatin1String("QtPlugin.qbs"), qbsQtModuleBaseDir, profile.name());
foreach (const QtModuleInfo &module, modules) {
const QString qbsQtModuleDir = qbsQtModuleBaseDir + QLatin1Char('/') + module.qbsName;
QString moduleTemplateFileName;
@@ -181,6 +211,8 @@ static void createModules(Profile &profile, Settings *settings,
moduleTemplateFileName = QLatin1String("gui.qbs");
} else if (module.qbsName == QLatin1String("phonon")) {
moduleTemplateFileName = QLatin1String("phonon.qbs");
+ } else if (module.isPlugin) {
+ moduleTemplateFileName = QLatin1String("plugin.qbs");
} else {
moduleTemplateFileName = QLatin1String("module.qbs");
}