aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/qtprofilesetup
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@digia.com>2014-02-14 17:06:16 +0100
committerJoerg Bornemann <joerg.bornemann@digia.com>2014-02-17 11:01:33 +0100
commit5e34c0538f38a675b2fa7ac1e9400402de242fd9 (patch)
tree0f227a28d344d8f758487f452eb021b44fe0d1af /src/lib/qtprofilesetup
parentf25ef1b86755be284d89ad86212f62b0bc7a80ed (diff)
Move "static Qt" discovery into libqtprofilesetup.
Otherwise the non-trivial detection code would have to be duplicated in Qt Creator. Change-Id: I7f0c9e1c578ac23c757efad3da8c301a25649677 Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/lib/qtprofilesetup')
-rw-r--r--src/lib/qtprofilesetup/qtprofilesetup.cpp32
-rw-r--r--src/lib/qtprofilesetup/qtprofilesetup.h1
2 files changed, 28 insertions, 5 deletions
diff --git a/src/lib/qtprofilesetup/qtprofilesetup.cpp b/src/lib/qtprofilesetup/qtprofilesetup.cpp
index 33bd533b3..5278bfc9f 100644
--- a/src/lib/qtprofilesetup/qtprofilesetup.cpp
+++ b/src/lib/qtprofilesetup/qtprofilesetup.cpp
@@ -39,6 +39,7 @@
#include <QDirIterator>
#include <QFile>
#include <QFileInfo>
+#include <QLibrary>
#include <QRegExp>
#include <QTextStream>
@@ -340,9 +341,34 @@ static QString guessMinimumWindowsVersion(const QtEnvironment &qt)
return qt.qtMajorVersion < 5 ? QLatin1String("5.0") : QLatin1String("5.1");
}
+static bool checkForStaticBuild(const QtEnvironment &qt)
+{
+ if (qt.qtMajorVersion >= 5)
+ return qt.qtConfigItems.contains(QLatin1String("static"));
+ if (qt.frameworkBuild)
+ return false; // there are no Qt4 static frameworks
+ QDir libdir(qt.libraryPath);
+ const QStringList coreLibFiles
+ = libdir.entryList(QStringList(QLatin1String("*Core*")), QDir::Files);
+ if (coreLibFiles.isEmpty())
+ throw ErrorInfo(Internal::Tr::tr("Could not determine whether Qt is a static build."));
+ foreach (const QString &fileName, coreLibFiles) {
+ if (QLibrary::isLibrary(qt.libraryPath + QLatin1Char('/') + fileName))
+ return false;
+ }
+ return true;
+}
+
ErrorInfo setupQtProfile(const QString &profileName, Settings *settings,
- const QtEnvironment &qtEnvironment)
+ const QtEnvironment &_qtEnvironment)
{
+ QtEnvironment qtEnvironment = _qtEnvironment;
+ const bool staticBuild = checkForStaticBuild(qtEnvironment);
+
+ // determine whether user apps require C++11
+ if (qtEnvironment.qtConfigItems.contains(QLatin1String("c++11")) && staticBuild)
+ qtEnvironment.configItems.append(QLatin1String("c++11"));
+
Profile profile(profileName, settings);
profile.removeProfile();
const QString settingsTemplate(QLatin1String("Qt.core.%1"));
@@ -358,9 +384,7 @@ ErrorInfo setupQtProfile(const QString &profileName, Settings *settings,
profile.setValue(settingsTemplate.arg("namespace"), qtEnvironment.qtNameSpace);
profile.setValue(settingsTemplate.arg("libInfix"), qtEnvironment.qtLibInfix);
profile.setValue(settingsTemplate.arg("buildVariant"), qtEnvironment.buildVariant);
- if (qtEnvironment.staticBuild)
- profile.setValue(settingsTemplate.arg(QLatin1String("staticBuild")),
- qtEnvironment.staticBuild);
+ profile.setValue(settingsTemplate.arg(QLatin1String("staticBuild")), staticBuild);
// Set the minimum operating system versions appropriate for this Qt version
const QString windowsVersion = guessMinimumWindowsVersion(qtEnvironment);
diff --git a/src/lib/qtprofilesetup/qtprofilesetup.h b/src/lib/qtprofilesetup/qtprofilesetup.h
index df0c1fb1c..a2283202a 100644
--- a/src/lib/qtprofilesetup/qtprofilesetup.h
+++ b/src/lib/qtprofilesetup/qtprofilesetup.h
@@ -61,7 +61,6 @@ public:
int qtMinorVersion;
int qtPatchVersion;
bool frameworkBuild;
- bool staticBuild;
};
QBS_EXPORT ErrorInfo setupQtProfile(const QString &profileName, Settings *settings,