forked from qt-creator/qt-creator
ProjectExplorer: Move autodetection checker creation
... to a later point in time, closer to its use. Change-Id: I578f818a9e11f0cbdbaece58a4b2b55ed482f65e Reviewed-by: Christian Kandeler <christian.kandeler@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -1384,22 +1384,17 @@ Toolchains GccToolChainFactory::autoDetect(const ToolchainDetector &detector) co
|
|||||||
|
|
||||||
// MinGW
|
// MinGW
|
||||||
|
|
||||||
static const auto tcChecker = [](const ToolChain *tc) {
|
|
||||||
return tc->targetAbi().osFlavor() == Abi::WindowsMSysFlavor;
|
|
||||||
};
|
|
||||||
|
|
||||||
result += autoDetectToolchains(findCompilerCandidates(os, executables, "g++", true),
|
result += autoDetectToolchains(findCompilerCandidates(os, executables, "g++", true),
|
||||||
Constants::CXX_LANGUAGE_ID,
|
Constants::CXX_LANGUAGE_ID,
|
||||||
Constants::MINGW_TOOLCHAIN_TYPEID,
|
Constants::MINGW_TOOLCHAIN_TYPEID,
|
||||||
detector.alreadyKnown,
|
detector.alreadyKnown,
|
||||||
GccToolChain::MinGW,
|
GccToolChain::MinGW);
|
||||||
tcChecker);
|
|
||||||
result += autoDetectToolchains(findCompilerCandidates(os, executables, "gcc", true),
|
result += autoDetectToolchains(findCompilerCandidates(os, executables, "gcc", true),
|
||||||
Constants::C_LANGUAGE_ID,
|
Constants::C_LANGUAGE_ID,
|
||||||
Constants::MINGW_TOOLCHAIN_TYPEID,
|
Constants::MINGW_TOOLCHAIN_TYPEID,
|
||||||
detector.alreadyKnown,
|
detector.alreadyKnown,
|
||||||
GccToolChain::MinGW,
|
GccToolChain::MinGW);
|
||||||
tcChecker);
|
|
||||||
|
|
||||||
// Clang
|
// Clang
|
||||||
|
|
||||||
@@ -1434,23 +1429,16 @@ Toolchains GccToolChainFactory::autoDetect(const ToolchainDetector &detector) co
|
|||||||
// Gcc is almost never what you want on macOS, but it is by default found in /usr/bin
|
// Gcc is almost never what you want on macOS, but it is by default found in /usr/bin
|
||||||
if (!HostOsInfo::isMacHost() || detector.device->type() != Constants::DESKTOP_DEVICE_TYPE) {
|
if (!HostOsInfo::isMacHost() || detector.device->type() != Constants::DESKTOP_DEVICE_TYPE) {
|
||||||
|
|
||||||
static const auto tcChecker = [](const ToolChain *tc) {
|
|
||||||
return tc->targetAbi().osFlavor() != Abi::WindowsMSysFlavor
|
|
||||||
&& tc->compilerCommand().fileName() != "c89-gcc"
|
|
||||||
&& tc->compilerCommand().fileName() != "c99-gcc";
|
|
||||||
};
|
|
||||||
result += autoDetectToolchains(findCompilerCandidates(os, executables, "g++", true),
|
result += autoDetectToolchains(findCompilerCandidates(os, executables, "g++", true),
|
||||||
Constants::CXX_LANGUAGE_ID,
|
Constants::CXX_LANGUAGE_ID,
|
||||||
Constants::GCC_TOOLCHAIN_TYPEID,
|
Constants::GCC_TOOLCHAIN_TYPEID,
|
||||||
detector.alreadyKnown,
|
detector.alreadyKnown,
|
||||||
GccToolChain::RealGcc,
|
GccToolChain::RealGcc);
|
||||||
tcChecker);
|
|
||||||
result += autoDetectToolchains(findCompilerCandidates(os, executables, "gcc", true),
|
result += autoDetectToolchains(findCompilerCandidates(os, executables, "gcc", true),
|
||||||
Constants::C_LANGUAGE_ID,
|
Constants::C_LANGUAGE_ID,
|
||||||
Constants::GCC_TOOLCHAIN_TYPEID,
|
Constants::GCC_TOOLCHAIN_TYPEID,
|
||||||
detector.alreadyKnown,
|
detector.alreadyKnown,
|
||||||
GccToolChain::RealGcc,
|
GccToolChain::RealGcc);
|
||||||
tcChecker);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@@ -1528,11 +1516,25 @@ Toolchains GccToolChainFactory::autoDetectToolchains(const FilePaths &compilerPa
|
|||||||
const Id language,
|
const Id language,
|
||||||
const Id requiredTypeId,
|
const Id requiredTypeId,
|
||||||
const Toolchains &known,
|
const Toolchains &known,
|
||||||
const GccToolChain::SubType subType,
|
const GccToolChain::SubType subType)
|
||||||
const ToolchainChecker &checker)
|
|
||||||
{
|
{
|
||||||
|
ToolchainChecker checker;
|
||||||
|
|
||||||
|
if (subType == GccToolChain::MinGW) {
|
||||||
|
checker = [](const ToolChain *tc) {
|
||||||
|
return tc->targetAbi().osFlavor() == Abi::WindowsMSysFlavor;
|
||||||
|
};
|
||||||
|
} else if (subType == GccToolChain::RealGcc) {
|
||||||
|
checker = [](const ToolChain *tc) {
|
||||||
|
return tc->targetAbi().osFlavor() != Abi::WindowsMSysFlavor
|
||||||
|
&& tc->compilerCommand().fileName() != "c89-gcc"
|
||||||
|
&& tc->compilerCommand().fileName() != "c99-gcc";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
Toolchains existingCandidates = filtered(known,
|
Toolchains existingCandidates = filtered(known,
|
||||||
[language](const ToolChain *tc) { return tc->language() == language; });
|
[language](const ToolChain *tc) { return tc->language() == language; });
|
||||||
|
|
||||||
Toolchains result;
|
Toolchains result;
|
||||||
for (const FilePath &compilerPath : std::as_const(compilerPaths)) {
|
for (const FilePath &compilerPath : std::as_const(compilerPaths)) {
|
||||||
bool alreadyExists = false;
|
bool alreadyExists = false;
|
||||||
|
|||||||
@@ -197,8 +197,7 @@ private:
|
|||||||
const Utils::Id language,
|
const Utils::Id language,
|
||||||
const Utils::Id requiredTypeId,
|
const Utils::Id requiredTypeId,
|
||||||
const Toolchains &known,
|
const Toolchains &known,
|
||||||
const GccToolChain::SubType subType,
|
const GccToolChain::SubType subType);
|
||||||
const ToolchainChecker &checker = {});
|
|
||||||
static Toolchains autoDetectToolChain(const ToolChainDescription &tcd,
|
static Toolchains autoDetectToolChain(const ToolChainDescription &tcd,
|
||||||
const GccToolChain::SubType subType,
|
const GccToolChain::SubType subType,
|
||||||
const ToolchainChecker &checker = {});
|
const ToolchainChecker &checker = {});
|
||||||
|
|||||||
Reference in New Issue
Block a user