diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2014-02-14 17:06:16 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@digia.com> | 2014-02-17 11:01:33 +0100 |
commit | 5e34c0538f38a675b2fa7ac1e9400402de242fd9 (patch) | |
tree | 0f227a28d344d8f758487f452eb021b44fe0d1af /src/lib/qtprofilesetup | |
parent | f25ef1b86755be284d89ad86212f62b0bc7a80ed (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.cpp | 32 | ||||
-rw-r--r-- | src/lib/qtprofilesetup/qtprofilesetup.h | 1 |
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, |