diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2018-10-10 13:46:03 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2018-10-18 09:02:16 +0000 |
commit | d658f63d699f2fbb939c59ad6c39e493011de99e (patch) | |
tree | 087c14eab70b057aaa7dddd5f8af0555f4022262 | |
parent | fa5e42f915211637da0d6461c9764962ee47f923 (diff) |
qtprofilesetup: Understand the mkspec prefix "mingw"
E.g. Fedora provides "mingw-w64-g++".
Change-Id: Ife197baa8ddd1b364025056b1ec7895a0b60d5dc
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r-- | src/app/qbs-setup-qt/setupqt.cpp | 10 | ||||
-rw-r--r-- | src/lib/qtprofilesetup/qtenvironment.h | 14 | ||||
-rw-r--r-- | src/lib/qtprofilesetup/qtprofilesetup.cpp | 14 | ||||
-rw-r--r-- | src/lib/qtprofilesetup/qtprofilesetup.h | 2 |
4 files changed, 27 insertions, 13 deletions
diff --git a/src/app/qbs-setup-qt/setupqt.cpp b/src/app/qbs-setup-qt/setupqt.cpp index 097c9381a..f54411b48 100644 --- a/src/app/qbs-setup-qt/setupqt.cpp +++ b/src/app/qbs-setup-qt/setupqt.cpp @@ -337,11 +337,12 @@ template <typename T> bool areProfilePropertiesIncompatible(const T &set1, const return set1.size() > 0 && set2.size() > 0 && set1 != set2; } -static QStringList qbsToolchainFromQtMkspec(const QString &mkspec) +static QStringList qbsToolchainFromQtMkspec(const QtEnvironment &qtEnv) { + const QString mkspec = qtEnv.mkspecName; if (mkspec.contains(QLatin1String("-msvc"))) return QStringList() << QLatin1String("msvc"); - if (mkspec == QLatin1String("win32-g++")) + if (qtEnv.isForMinGw()) return QStringList() << QLatin1String("mingw") << QLatin1String("gcc"); if (mkspec.contains(QLatin1String("-clang"))) @@ -365,7 +366,7 @@ static Match compatibility(const EnhancedQtEnvironment &env, const Profile &tool const auto toolchainNames = Internal::Set<QString>::fromList( toolchainProfile.value(QLatin1String("qbs.toolchain")).toStringList()); const auto mkspecToolchainNames = Internal::Set<QString>::fromList( - qbsToolchainFromQtMkspec(env.mkspecName)); + qbsToolchainFromQtMkspec(env)); if (areProfilePropertiesIncompatible(toolchainNames, mkspecToolchainNames)) { auto intersection = toolchainNames; intersection.intersect(mkspecToolchainNames); @@ -377,8 +378,7 @@ static Match compatibility(const EnhancedQtEnvironment &env, const Profile &tool const auto targetPlatform = toolchainProfile.value( QLatin1String("qbs.targetPlatform")).toString(); - if (!targetPlatform.isEmpty() - && targetPlatform != qbsTargetPlatformFromQtMkspec(env.mkspecName)) + if (!targetPlatform.isEmpty() && targetPlatform != qbsTargetPlatformFromQtMkspec(env)) return MatchNone; const QString toolchainArchitecture = toolchainProfile.value(QLatin1String("qbs.architecture")) diff --git a/src/lib/qtprofilesetup/qtenvironment.h b/src/lib/qtprofilesetup/qtenvironment.h index 4fb5a03ee..72725cfae 100644 --- a/src/lib/qtprofilesetup/qtenvironment.h +++ b/src/lib/qtprofilesetup/qtenvironment.h @@ -48,6 +48,9 @@ namespace qbs { class QBS_EXPORT QtEnvironment { public: + inline bool targetsDesktopWindows() const; + inline bool isForMinGw() const; + QString installPrefixPath; QString libraryPath; QString includePath; @@ -82,6 +85,17 @@ public: bool frameworkBuild = false; }; +bool QtEnvironment::targetsDesktopWindows() const +{ + return mkspecName.startsWith(QLatin1String("win32-")) || isForMinGw(); +} + +bool QtEnvironment::isForMinGw() const +{ + return mkspecName.startsWith(QLatin1String("win32-g++")) + || mkspecName.startsWith(QLatin1String("mingw")); +} + } // namespace qbs #endif // Include guard. diff --git a/src/lib/qtprofilesetup/qtprofilesetup.cpp b/src/lib/qtprofilesetup/qtprofilesetup.cpp index adeeef7bc..7b8b9c49b 100644 --- a/src/lib/qtprofilesetup/qtprofilesetup.cpp +++ b/src/lib/qtprofilesetup/qtprofilesetup.cpp @@ -430,8 +430,7 @@ static void replaceSpecialValues(QByteArray *content, const Profile &profile, { QHash<QByteArray, QByteArray> dict; dict.insert("archs", utf8JSLiteral(extractQbsArchs(module, qtEnvironment))); - dict.insert("targetPlatform", utf8JSLiteral(qbsTargetPlatformFromQtMkspec( - qtEnvironment.mkspecName))); + dict.insert("targetPlatform", utf8JSLiteral(qbsTargetPlatformFromQtMkspec(qtEnvironment))); dict.insert("config", utf8JSLiteral(qtEnvironment.configItems)); dict.insert("qtConfig", utf8JSLiteral(qtEnvironment.qtConfigItems)); dict.insert("binPath", utf8JSLiteral(qtEnvironment.binaryPath)); @@ -648,7 +647,7 @@ static QString guessMinimumWindowsVersion(const QtEnvironment &qt) if (qt.mkspecName.startsWith(QLatin1String("winrt-"))) return QLatin1String("10.0"); - if (!qt.mkspecName.startsWith(QLatin1String("win32-"))) + if (!qt.targetsDesktopWindows()) return QString(); if (qt.architecture == QLatin1String("x86_64") @@ -692,7 +691,7 @@ static QStringList fillEntryPointLibs(const QtEnvironment &qtEnvironment, const { QStringList result; QString qtmain = qtEnvironment.libraryPath + QLatin1Char('/'); - const bool isMinGW = qtEnvironment.mkspecName.startsWith(QLatin1String("win32-g++")); + const bool isMinGW = qtEnvironment.isForMinGw(); if (isMinGW) qtmain += QLatin1String("lib"); qtmain += QLatin1String("qtmain") + qtEnvironment.qtLibInfix; @@ -811,11 +810,12 @@ void doSetupQtProfile(const QString &profileName, Settings *settings, createModules(profile, settings, qtEnvironment); } -QString qbsTargetPlatformFromQtMkspec(const QString &mkspec) +QString qbsTargetPlatformFromQtMkspec(const QtEnvironment &qtEnv) { + QString mkspec = qtEnv.mkspecName; int idx = mkspec.lastIndexOf(QLatin1Char('/')); if (idx != -1) - return qbsTargetPlatformFromQtMkspec(mkspec.mid(idx + 1)); + mkspec = mkspec.mid(idx + 1); if (mkspec.startsWith(QLatin1String("aix-"))) return QLatin1String("aix"); if (mkspec.startsWith(QLatin1String("android-"))) @@ -855,7 +855,7 @@ QString qbsTargetPlatformFromQtMkspec(const QString &mkspec) return QLatin1String("solaris"); if (mkspec.startsWith(QLatin1String("vxworks-"))) return QLatin1String("vxworks"); - if (mkspec.startsWith(QLatin1String("win32-")) || mkspec.startsWith(QLatin1String("winrt-"))) + if (qtEnv.targetsDesktopWindows() || mkspec.startsWith(QLatin1String("winrt-"))) return QLatin1String("windows"); return QString(); } diff --git a/src/lib/qtprofilesetup/qtprofilesetup.h b/src/lib/qtprofilesetup/qtprofilesetup.h index be6642842..f28733a1b 100644 --- a/src/lib/qtprofilesetup/qtprofilesetup.h +++ b/src/lib/qtprofilesetup/qtprofilesetup.h @@ -49,7 +49,7 @@ namespace qbs { class ErrorInfo; class Settings; -QBS_EXPORT QString qbsTargetPlatformFromQtMkspec(const QString &mkspec); +QBS_EXPORT QString qbsTargetPlatformFromQtMkspec(const QtEnvironment &qtEnv); QBS_EXPORT ErrorInfo setupQtProfile(const QString &profileName, Settings *settings, const QtEnvironment &qtEnvironment); |