diff options
| author | Joerg Bornemann <joerg.bornemann@digia.com> | 2013-04-09 17:11:15 +0200 |
|---|---|---|
| committer | Christian Kandeler <christian.kandeler@digia.com> | 2013-04-10 15:16:17 +0200 |
| commit | 7efe15d437af30903fa7be256f53c3d2e4675f00 (patch) | |
| tree | c36f3c6b7704927af031c2bee4d184cded5de1aa | |
| parent | b407803b34da8b57bbb9a1cf034344e6bee11d45 (diff) | |
| download | qbs-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.qbs | 1 | ||||
| -rw-r--r-- | src/app/qbs-setup-qt/setupqt.cpp | 19 | ||||
| -rw-r--r-- | src/app/qbs-setup-qt/setupqt.h | 2 |
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 |
