diff options
author | hjk <hjk@qt.io> | 2023-04-17 10:12:53 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2023-04-17 16:08:42 +0000 |
commit | cacc4aeede245ddc92a196e99fb1e66458d4403c (patch) | |
tree | a6858c25bd4da906dcddb89e4779bb5e085b47bf /src/plugins/projectexplorer | |
parent | 3b76420e0f5055e55d24dd51d1f88a880392982c (diff) | |
download | qt-creator-cacc4aeede245ddc92a196e99fb1e66458d4403c.tar.gz |
ProjectExplorer: Run toolchain autodetection on startup
... explicitly only for the Desktop device. This was implicitly done in
some cases by assuming 'no device' == 'desktop'. Make that explicit now.
Change-Id: I2ce86702a9b5b795fb4832301a11a8c8b40e77ea
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer')
-rw-r--r-- | src/plugins/projectexplorer/gcctoolchain.cpp | 7 | ||||
-rw-r--r-- | src/plugins/projectexplorer/msvctoolchain.cpp | 5 | ||||
-rw-r--r-- | src/plugins/projectexplorer/toolchain.cpp | 4 | ||||
-rw-r--r-- | src/plugins/projectexplorer/toolchainsettingsaccessor.cpp | 9 |
4 files changed, 15 insertions, 10 deletions
diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp index b145ba56b6..7212e24dd5 100644 --- a/src/plugins/projectexplorer/gcctoolchain.cpp +++ b/src/plugins/projectexplorer/gcctoolchain.cpp @@ -1040,10 +1040,9 @@ GccToolChainFactory::GccToolChainFactory() Toolchains GccToolChainFactory::autoDetect(const ToolchainDetector &detector) const { // GCC is almost never what you want on macOS, but it is by default found in /usr/bin - if (HostOsInfo::isMacHost() - && (!detector.device || detector.device->type() == Constants::DESKTOP_DEVICE_TYPE)) { + if (HostOsInfo::isMacHost() && detector.device->type() == Constants::DESKTOP_DEVICE_TYPE) return {}; - } + Toolchains tcs; static const auto tcChecker = [](const ToolChain *tc) { return tc->targetAbi().osFlavor() != Abi::WindowsMSysFlavor @@ -1086,7 +1085,7 @@ static FilePaths findCompilerCandidates(const ToolchainDetector &detector, { const IDevice::ConstPtr device = detector.device; const QFileInfo fi(compilerName); - if (device.isNull() && fi.isAbsolute() && fi.isFile()) + if (device->type() == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE && fi.isAbsolute() && fi.isFile()) return {FilePath::fromString(compilerName)}; QStringList nameFilters(compilerName); diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index 1eebcc6806..334777c24e 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -3,6 +3,7 @@ #include "msvctoolchain.h" +#include "devicesupport/idevice.h" #include "gcctoolchain.h" #include "msvcparser.h" #include "projectexplorer.h" @@ -1909,7 +1910,7 @@ static void detectCppBuildTools2015(Toolchains *list) Toolchains MsvcToolChainFactory::autoDetect(const ToolchainDetector &detector) const { - if (!detector.device.isNull()) { + if (detector.device->type() != ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE) { // FIXME currently no support for msvc toolchains on a device return {}; } @@ -2024,7 +2025,7 @@ bool ClangClToolChainFactory::canCreate() const Toolchains ClangClToolChainFactory::autoDetect(const ToolchainDetector &detector) const { - if (!detector.device.isNull()) { + if (detector.device->type() != ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE) { // FIXME currently no support for msvc toolchains on a device return {}; } diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp index dfca4040fe..8b8cfce2c8 100644 --- a/src/plugins/projectexplorer/toolchain.cpp +++ b/src/plugins/projectexplorer/toolchain.cpp @@ -674,7 +674,9 @@ ToolchainDetector::ToolchainDetector(const Toolchains &alreadyKnown, const IDevice::ConstPtr &device, const FilePaths &searchPaths) : alreadyKnown(alreadyKnown), device(device), searchPaths(searchPaths) -{} +{ + QTC_CHECK(device); +} BadToolchain::BadToolchain(const Utils::FilePath &filePath) : BadToolchain(filePath, filePath.symLinkTarget(), filePath.lastModified()) diff --git a/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp b/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp index 4152e9882e..d7db868e85 100644 --- a/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp +++ b/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp @@ -3,6 +3,7 @@ #include "toolchainsettingsaccessor.h" +#include "devicesupport/devicemanager.h" #include "projectexplorerconstants.h" #include "projectexplorertr.h" #include "toolchain.h" @@ -192,9 +193,11 @@ Toolchains ToolChainSettingsAccessor::restoreToolChains(QWidget *parent) const // Autodetect: Pass autodetected toolchains from user file so the information can be reused: const Toolchains autodetectedUserFileTcs = Utils::filtered(userFileTcs, &ToolChain::isAutoDetected); - // FIXME: Use real device? - const Toolchains autodetectedTcs = - autoDetectToolChains(ToolchainDetector(autodetectedUserFileTcs, {}, {})); + + // Autodect from system paths on the desktop device. + // The restriction is intentional to keep startup and automatic validation a limited effort + ToolchainDetector detector(autodetectedUserFileTcs, DeviceManager::defaultDesktopDevice(), {}); + const Toolchains autodetectedTcs = autoDetectToolChains(detector); // merge tool chains and register those that we need to keep: const ToolChainOperations ops = mergeToolChainLists(systemFileTcs, userFileTcs, autodetectedTcs); |