diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2019-04-05 11:05:06 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2019-04-08 09:53:51 +0000 |
commit | db4b02167a14a68c0817bac955f5aff502d10714 (patch) | |
tree | 34c76a8aa32f99096f35878d0f29a4bba5849288 /src/plugins/projectexplorer/gcctoolchainfactories.h | |
parent | 61b248703279e3c8bbd46994ecc01a2043652173 (diff) | |
download | qt-creator-db4b02167a14a68c0817bac955f5aff502d10714.tar.gz |
ProjectExplorer: Sanitize GCC toolchain detection
The versionProbe() and autoDetectToolchains() functions had overlapping
responsibilities and were difficult to understand. They have now been
merged into a single function with a more sensible interface.
Functional improvements:
- MinGW compilers are no longer misdetected as plain GCC on Linux.
- Instead of only considering the first hit in PATH plus some
hardcoded locations, we now find all compilers in PATH.
Task-number: QTCREATORBUG-22160
Change-Id: Ide097e25e803d92e01f64d8c6091d21d649d7717
Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer/gcctoolchainfactories.h')
-rw-r--r-- | src/plugins/projectexplorer/gcctoolchainfactories.h | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/plugins/projectexplorer/gcctoolchainfactories.h b/src/plugins/projectexplorer/gcctoolchainfactories.h index 775e0db675..80f176a6da 100644 --- a/src/plugins/projectexplorer/gcctoolchainfactories.h +++ b/src/plugins/projectexplorer/gcctoolchainfactories.h @@ -33,6 +33,8 @@ #include <QList> #include <QSet> +#include <functional> + QT_BEGIN_NAMESPACE class QComboBox; QT_END_NAMESPACE @@ -64,20 +66,18 @@ public: protected: virtual GccToolChain *createToolChain(bool autoDetect); - void versionProbe(const QString &name, - Core::Id language, - Core::Id type, - QList<ToolChain *> &tcs, - QList<ToolChain *> &known, - const QSet<QString> &filteredNames = {}); Utils::FileName compilerPathFromEnvironment(const QString &compilerName); + enum class DetectVariants { Yes, No }; + using ToolchainChecker = std::function<bool(const ToolChain *)>; QList<ToolChain *> autoDetectToolchains( - const Utils::FileName &compilerPath, const Abi &requiredAbi, Core::Id language, - const Core::Id requiredTypeId, const QList<ToolChain *> &alreadyKnown); - QList<ToolChain *> autoDetectToolChain(const Utils::FileName &compilerPath, const Core::Id language, - const Abi &requiredAbi = Abi()); + const QString &compilerName, DetectVariants detectVariants, Core::Id language, + const Core::Id requiredTypeId, const QList<ToolChain *> &alreadyKnown, + const ToolchainChecker &checker = {}); + QList<ToolChain *> autoDetectToolChain( + const Utils::FileName &compilerPath, const Core::Id language, + const ToolchainChecker &checker = {}); }; // -------------------------------------------------------------------------- |