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 | |
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')
-rw-r--r-- | src/app/qbs-setup-qt/setupqt.cpp | 28 | ||||
-rw-r--r-- | src/lib/qtprofilesetup/qtprofilesetup.cpp | 32 | ||||
-rw-r--r-- | src/lib/qtprofilesetup/qtprofilesetup.h | 1 |
3 files changed, 28 insertions, 33 deletions
diff --git a/src/app/qbs-setup-qt/setupqt.cpp b/src/app/qbs-setup-qt/setupqt.cpp index f54dde429..b36272713 100644 --- a/src/app/qbs-setup-qt/setupqt.cpp +++ b/src/app/qbs-setup-qt/setupqt.cpp @@ -40,7 +40,6 @@ #include <QCoreApplication> #include <QDir> #include <QFileInfo> -#include <QLibrary> #include <QProcess> #include <QRegExp> #include <QStringList> @@ -250,29 +249,6 @@ QtEnvironment SetupQt::fetchEnvironment(const QString &qmakePath) throw ErrorInfo(tr("could not determine whether Qt is a frameworks build")); } - // determine whether we have a static build - if (qtVersion.majorVersion >= 5) { - qtEnvironment.staticBuild = qtEnvironment.qtConfigItems.contains(QLatin1String("static")); - } else { - if (qtEnvironment.frameworkBuild) { - // there are no Qt4 static frameworks - qtEnvironment.staticBuild = false; - } else { - qtEnvironment.staticBuild = true; - QDir libdir(qtEnvironment.libraryPath); - const QStringList coreLibFiles - = libdir.entryList(QStringList(QLatin1String("*Core*")), QDir::Files); - if (coreLibFiles.isEmpty()) - throw ErrorInfo(tr("Could not determine whether Qt is a static build.")); - foreach (const QString &fileName, coreLibFiles) { - if (QLibrary::isLibrary(qtEnvironment.libraryPath + QLatin1Char('/') + fileName)) { - qtEnvironment.staticBuild = false; - break; - } - } - } - } - // determine whether Qt is built with debug, release or both if (qtEnvironment.qtConfigItems.contains(QLatin1String("debug_and_release"))) { qtEnvironment.buildVariant << QLatin1String("debug") << QLatin1String("release"); @@ -285,10 +261,6 @@ QtEnvironment SetupQt::fetchEnvironment(const QString &qmakePath) qtEnvironment.buildVariant << QLatin1String("debug"); } - // determine whether user apps require C++11 - if (qtEnvironment.qtConfigItems.contains(QLatin1String("c++11")) && qtEnvironment.staticBuild) - qtEnvironment.configItems.append(QLatin1String("c++11")); - if (!QFileInfo(qtEnvironment.mkspecPath).exists()) throw ErrorInfo(tr("mkspec '%1' does not exist").arg(qtEnvironment.mkspecPath)); 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, |