summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer/gcctoolchainfactories.h
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2019-04-05 11:05:06 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2019-04-08 09:53:51 +0000
commitdb4b02167a14a68c0817bac955f5aff502d10714 (patch)
tree34c76a8aa32f99096f35878d0f29a4bba5849288 /src/plugins/projectexplorer/gcctoolchainfactories.h
parent61b248703279e3c8bbd46994ecc01a2043652173 (diff)
downloadqt-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.h20
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 = {});
};
// --------------------------------------------------------------------------