summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@digia.com>2013-04-09 17:11:15 +0200
committerChristian Kandeler <christian.kandeler@digia.com>2013-04-10 15:16:17 +0200
commit7efe15d437af30903fa7be256f53c3d2e4675f00 (patch)
treec36f3c6b7704927af031c2bee4d184cded5de1aa
parentb407803b34da8b57bbb9a1cf034344e6bee11d45 (diff)
downloadqbs-7efe15d437af30903fa7be256f53c3d2e4675f00.tar.gz
setup-qt: detect static Qt builds
qt.core.staticBuild will be set to true for static builds. Change-Id: I9e316eccacb43982ac616377642ac73d530596c8 Reviewed-by: Christian Kandeler <christian.kandeler@digia.com>
-rw-r--r--share/qbs/modules/qt/core/qtcore.qbs1
-rw-r--r--src/app/qbs-setup-qt/setupqt.cpp19
-rw-r--r--src/app/qbs-setup-qt/setupqt.h2
3 files changed, 19 insertions, 3 deletions
diff --git a/share/qbs/modules/qt/core/qtcore.qbs b/share/qbs/modules/qt/core/qtcore.qbs
index 70bc356a4..09614bb49 100644
--- a/share/qbs/modules/qt/core/qtcore.qbs
+++ b/share/qbs/modules/qt/core/qtcore.qbs
@@ -28,6 +28,7 @@ Module {
property var versionMinor: versionParts[1]
property var versionPatch: versionParts[2]
property bool frameworkBuild
+ property bool staticBuild
property string generatedFilesDir: 'GeneratedFiles/' + product.name // ### TODO: changing this property does not change the path in the rule ATM.
property string qmFilesDir: {
if (qbs.targetOS === "mac" && product.type.indexOf('applicationbundle') >= 0)
diff --git a/src/app/qbs-setup-qt/setupqt.cpp b/src/app/qbs-setup-qt/setupqt.cpp
index 388ddefa4..3412da6df 100644
--- a/src/app/qbs-setup-qt/setupqt.cpp
+++ b/src/app/qbs-setup-qt/setupqt.cpp
@@ -143,6 +143,11 @@ static QString configVariable(const QByteArray &configContent, const QString &ke
return QString();
}
+static QStringList configVariableItems(const QByteArray &configContent, const QString &key)
+{
+ return configVariable(configContent, key).split(QLatin1Char(' '), QString::SkipEmptyParts);
+}
+
static Version extractVersion(const QString &versionString)
{
Version v;
@@ -185,20 +190,25 @@ QtEnviroment SetupQt::fetchEnviroment(const QString &qmakePath)
qtEnvironment.qtPatchVersion = configVariable(qconfigContent, "QT_PATCH_VERSION").toInt();
qtEnvironment.qtNameSpace = configVariable(qconfigContent, "QT_NAMESPACE");
qtEnvironment.qtLibInfix = configVariable(qconfigContent, "QT_LIBINFIX");
- qtEnvironment.configItems = configVariable(qconfigContent, QLatin1String("CONFIG")).split(
- QLatin1Char(' '), QString::SkipEmptyParts);
+ qtEnvironment.configItems = configVariableItems(qconfigContent, QLatin1String("CONFIG"));
+ qtEnvironment.qtConfigItems = configVariableItems(qconfigContent, QLatin1String("QT_CONFIG"));
- // read mkspec
if (qtVersion.majorVersion >= 5) {
const QString mkspecName = queryOutput.value("QMAKE_XSPEC");
qtEnvironment.mkspecPath = mkspecsBasePath + QLatin1Char('/') + mkspecName;
+ qtEnvironment.staticBuild = qtEnvironment.qtConfigItems.contains(QLatin1String("static"));
} else {
+ QDir libdir(qtEnvironment.libraryPath);
+ QStringList dylibs;
if (HostOsInfo::isWindowsHost()) {
const QByteArray fileContent = readFileContent(mkspecsBasePath + "/default/qmake.conf");
qtEnvironment.mkspecPath = configVariable(fileContent, "QMAKESPEC_ORIGINAL");
+ dylibs = libdir.entryList(QStringList() << QLatin1String("*Core*.dll"), QDir::Files);
} else {
qtEnvironment.mkspecPath = QFileInfo(mkspecsBasePath + "/default").symLinkTarget();
+ dylibs = libdir.entryList(QStringList() << QLatin1String("*Core*.so"), QDir::Files);
}
+ qtEnvironment.staticBuild = dylibs.isEmpty();
}
if (!QFileInfo(qtEnvironment.mkspecPath).exists())
@@ -224,6 +234,9 @@ void SetupQt::saveToQbsSettings(const QString &qtVersionName, const QtEnviroment
profile.setValue(settingsTemplate.arg("version"), qtEnviroment.qtVersion);
profile.setValue(settingsTemplate.arg("namespace"), qtEnviroment.qtNameSpace);
profile.setValue(settingsTemplate.arg("libInfix"), qtEnviroment.qtLibInfix);
+ if (qtEnviroment.staticBuild)
+ profile.setValue(settingsTemplate.arg(QLatin1String("staticBuild")),
+ qtEnviroment.staticBuild);
QDir qconfigDir;
if (qtEnviroment.mkspecPath.contains("macx")) {
diff --git a/src/app/qbs-setup-qt/setupqt.h b/src/app/qbs-setup-qt/setupqt.h
index b0500d328..d3c282edd 100644
--- a/src/app/qbs-setup-qt/setupqt.h
+++ b/src/app/qbs-setup-qt/setupqt.h
@@ -51,10 +51,12 @@ public:
QString qtNameSpace;
QString mkspecPath;
QStringList configItems;
+ QStringList qtConfigItems;
QString qtVersion;
int qtMajorVersion;
int qtMinorVersion;
int qtPatchVersion;
+ bool staticBuild;
};
class SetupQt