summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@digia.com>2013-09-03 10:58:59 +0200
committerFriedemann Kleint <Friedemann.Kleint@digia.com>2013-09-03 11:32:33 +0200
commit1226400af3da68f355f298935bc13807f257d224 (patch)
tree51105d06435ec24663c9976e6131e7203d9c1faa
parentf1d18ba38bffd85f4946223cce6cd983d814f440 (diff)
downloadqt-creator-1226400af3da68f355f298935bc13807f257d224.tar.gz
Introduce an enumeration for toolchain autodetection.
Replace boolean "autodetect" by an enumeration with a value AutoDetectionFromSettings indicating whether the Autodetection originates from a settings file. Enable the "Remove" button for those cases. Currently, there is no way to remove toolchains that were once autodetected and are no longer present. This happens for example when working in different MinGW environments, which then clutter up the toolchain options page and dramatically slow down the options page opening since gcc is launched to query the flags, etc. Change-Id: I731168d8694fe56f60d909f9779f83cffa55fd44 Reviewed-by: Tobias Hunger <tobias.hunger@digia.com> Reviewed-by: hjk <hjk121@nokiamail.com>
-rw-r--r--src/plugins/android/androidtoolchain.cpp8
-rw-r--r--src/plugins/android/androidtoolchain.h2
-rw-r--r--src/plugins/projectexplorer/abstractmsvctoolchain.cpp8
-rw-r--r--src/plugins/projectexplorer/abstractmsvctoolchain.h4
-rw-r--r--src/plugins/projectexplorer/customtoolchain.cpp12
-rw-r--r--src/plugins/projectexplorer/customtoolchain.h4
-rw-r--r--src/plugins/projectexplorer/gcctoolchain.cpp36
-rw-r--r--src/plugins/projectexplorer/gcctoolchain.h10
-rw-r--r--src/plugins/projectexplorer/msvctoolchain.cpp28
-rw-r--r--src/plugins/projectexplorer/msvctoolchain.h2
-rw-r--r--src/plugins/projectexplorer/toolchain.cpp27
-rw-r--r--src/plugins/projectexplorer/toolchain.h14
-rw-r--r--src/plugins/projectexplorer/toolchainmanager.cpp6
-rw-r--r--src/plugins/projectexplorer/toolchainoptionspage.cpp2
-rw-r--r--src/plugins/projectexplorer/wincetoolchain.cpp8
-rw-r--r--src/plugins/projectexplorer/wincetoolchain.h2
-rw-r--r--src/plugins/qnx/blackberryconfiguration.cpp2
17 files changed, 94 insertions, 81 deletions
diff --git a/src/plugins/android/androidtoolchain.cpp b/src/plugins/android/androidtoolchain.cpp
index c0f2d86338..ca927d10d8 100644
--- a/src/plugins/android/androidtoolchain.cpp
+++ b/src/plugins/android/androidtoolchain.cpp
@@ -66,8 +66,8 @@ static const char ANDROID_NDK_TC_VERION[] = "Qt4ProjectManager.Android.NDK_TC_VE
QMap<ProjectExplorer::Abi::Architecture, QList<int> > AndroidToolChainFactory::m_newestVersionForArch;
Utils::FileName AndroidToolChainFactory::m_ndkLocation;
-AndroidToolChain::AndroidToolChain(Abi::Architecture arch, const QString &ndkToolChainVersion, bool autodetected)
- : GccToolChain(QLatin1String(Constants::ANDROID_TOOLCHAIN_ID), autodetected),
+AndroidToolChain::AndroidToolChain(Abi::Architecture arch, const QString &ndkToolChainVersion, Detection d)
+ : GccToolChain(QLatin1String(Constants::ANDROID_TOOLCHAIN_ID), d),
m_ndkToolChainVersion(ndkToolChainVersion), m_secondaryToolChain(false)
{
ProjectExplorer::Abi abi = ProjectExplorer::Abi(arch, ProjectExplorer::Abi::LinuxOS,
@@ -81,7 +81,7 @@ AndroidToolChain::AndroidToolChain(Abi::Architecture arch, const QString &ndkToo
// for fromMap
AndroidToolChain::AndroidToolChain()
- : GccToolChain(QLatin1String(Constants::ANDROID_TOOLCHAIN_ID), false),
+ : GccToolChain(QLatin1String(Constants::ANDROID_TOOLCHAIN_ID), ToolChain::ManualDetection),
m_secondaryToolChain(false)
{
}
@@ -383,7 +383,7 @@ QList<ToolChain *> AndroidToolChainFactory::createToolChainsForNdk(const Utils::
Abi::Architecture arch = AndroidConfigurations::architectureForToolChainPrefix(platform);
if (arch == Abi::UnknownArchitecture) // e.g. mipsel which is not yet supported
continue;
- AndroidToolChain *tc = new AndroidToolChain(arch, version, true);
+ AndroidToolChain *tc = new AndroidToolChain(arch, version, ToolChain::AutoDetection);
FileName compilerPath = AndroidConfigurations::instance().gccPath(arch, version);
tc->setCompilerCommand(compilerPath);
result.append(tc);
diff --git a/src/plugins/android/androidtoolchain.h b/src/plugins/android/androidtoolchain.h
index 7999686460..0f60da4372 100644
--- a/src/plugins/android/androidtoolchain.h
+++ b/src/plugins/android/androidtoolchain.h
@@ -68,7 +68,7 @@ protected:
QList<ProjectExplorer::Abi> detectSupportedAbis() const;
private:
- AndroidToolChain(ProjectExplorer::Abi::Architecture arch, const QString &ndkToolChainVersion, bool autodetected);
+ explicit AndroidToolChain(ProjectExplorer::Abi::Architecture arch, const QString &ndkToolChainVersion, Detection d);
AndroidToolChain();
AndroidToolChain(const AndroidToolChain &);
diff --git a/src/plugins/projectexplorer/abstractmsvctoolchain.cpp b/src/plugins/projectexplorer/abstractmsvctoolchain.cpp
index 9ebc21b409..b6d8da5cd0 100644
--- a/src/plugins/projectexplorer/abstractmsvctoolchain.cpp
+++ b/src/plugins/projectexplorer/abstractmsvctoolchain.cpp
@@ -47,10 +47,10 @@ namespace Internal {
AbstractMsvcToolChain::AbstractMsvcToolChain(const QString &id,
- bool autodetect,
+ Detection d,
const Abi &abi,
const QString& vcvarsBat) :
- ToolChain(id, autodetect),
+ ToolChain(id, d),
m_lastEnvironment(Utils::Environment::systemEnvironment()),
m_abi(abi),
m_vcvarsBat(vcvarsBat)
@@ -61,8 +61,8 @@ AbstractMsvcToolChain::AbstractMsvcToolChain(const QString &id,
Q_ASSERT(!m_vcvarsBat.isEmpty());
}
-AbstractMsvcToolChain::AbstractMsvcToolChain(const QString &id, bool autodetect) :
- ToolChain(id, autodetect),
+AbstractMsvcToolChain::AbstractMsvcToolChain(const QString &id, Detection d) :
+ ToolChain(id, d),
m_lastEnvironment(Utils::Environment::systemEnvironment())
{
diff --git a/src/plugins/projectexplorer/abstractmsvctoolchain.h b/src/plugins/projectexplorer/abstractmsvctoolchain.h
index bcf405e417..13ec2dbb78 100644
--- a/src/plugins/projectexplorer/abstractmsvctoolchain.h
+++ b/src/plugins/projectexplorer/abstractmsvctoolchain.h
@@ -43,8 +43,8 @@ namespace Internal {
class PROJECTEXPLORER_EXPORT AbstractMsvcToolChain : public ToolChain
{
public:
- AbstractMsvcToolChain(const QString &id, bool autodetect, const Abi &abi, const QString& vcvarsBat);
- AbstractMsvcToolChain(const QString &id, bool autodetect);
+ explicit AbstractMsvcToolChain(const QString &id, Detection d, const Abi &abi, const QString& vcvarsBat);
+ explicit AbstractMsvcToolChain(const QString &id, Detection d);
Abi targetAbi() const;
diff --git a/src/plugins/projectexplorer/customtoolchain.cpp b/src/plugins/projectexplorer/customtoolchain.cpp
index 2c9a06412d..29a0f5d815 100644
--- a/src/plugins/projectexplorer/customtoolchain.cpp
+++ b/src/plugins/projectexplorer/customtoolchain.cpp
@@ -76,13 +76,13 @@ static const char messageCapKeyC[] = "ProjectExplorer.CustomToolChain.MessageCap
// CustomToolChain
// --------------------------------------------------------------------------
-CustomToolChain::CustomToolChain(bool autodetect) :
- ToolChain(QLatin1String(Constants::CUSTOM_TOOLCHAIN_ID), autodetect),
+CustomToolChain::CustomToolChain(Detection d) :
+ ToolChain(QLatin1String(Constants::CUSTOM_TOOLCHAIN_ID), d),
m_outputParser(Gcc)
{ }
-CustomToolChain::CustomToolChain(const QString &id, bool autodetect) :
- ToolChain(id, autodetect)
+CustomToolChain::CustomToolChain(const QString &id, Detection d) :
+ ToolChain(id, d)
{ }
CustomToolChain::CustomToolChain(const CustomToolChain &tc) :
@@ -416,7 +416,7 @@ bool CustomToolChainFactory::canRestore(const QVariantMap &data)
ToolChain *CustomToolChainFactory::restore(const QVariantMap &data)
{
- CustomToolChain *tc = new CustomToolChain(false);
+ CustomToolChain *tc = new CustomToolChain(ToolChain::ManualDetection);
if (tc->fromMap(data))
return tc;
@@ -426,7 +426,7 @@ ToolChain *CustomToolChainFactory::restore(const QVariantMap &data)
CustomToolChain *CustomToolChainFactory::createToolChain(bool autoDetect)
{
- return new CustomToolChain(autoDetect);
+ return new CustomToolChain(autoDetect ? ToolChain::AutoDetection : ToolChain::ManualDetection);
}
// --------------------------------------------------------------------------
diff --git a/src/plugins/projectexplorer/customtoolchain.h b/src/plugins/projectexplorer/customtoolchain.h
index 2b0408dea2..a344f605a9 100644
--- a/src/plugins/projectexplorer/customtoolchain.h
+++ b/src/plugins/projectexplorer/customtoolchain.h
@@ -122,11 +122,11 @@ public:
static QString parserName(OutputParser parser);
protected:
- CustomToolChain(const QString &id, bool autodetect);
+ explicit CustomToolChain(const QString &id, Detection d);
CustomToolChain(const CustomToolChain &);
private:
- CustomToolChain(bool autodetect);
+ explicit CustomToolChain(Detection d);
Utils::FileName m_compilerCommand;
Utils::FileName m_makeCommand;
diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp
index 4621250a15..dd03cb48d5 100644
--- a/src/plugins/projectexplorer/gcctoolchain.cpp
+++ b/src/plugins/projectexplorer/gcctoolchain.cpp
@@ -281,12 +281,12 @@ static QString gccVersion(const FileName &path, const QStringList &env)
// GccToolChain
// --------------------------------------------------------------------------
-GccToolChain::GccToolChain(bool autodetect) :
- ToolChain(QLatin1String(Constants::GCC_TOOLCHAIN_ID), autodetect)
+GccToolChain::GccToolChain(Detection d) :
+ ToolChain(QLatin1String(Constants::GCC_TOOLCHAIN_ID), d)
{ }
-GccToolChain::GccToolChain(const QString &id, bool autodetect) :
- ToolChain(id, autodetect)
+GccToolChain::GccToolChain(const QString &id, Detection d) :
+ ToolChain(id, d)
{ }
GccToolChain::GccToolChain(const GccToolChain &tc) :
@@ -754,7 +754,7 @@ bool GccToolChainFactory::canRestore(const QVariantMap &data)
ToolChain *GccToolChainFactory::restore(const QVariantMap &data)
{
- GccToolChain *tc = new GccToolChain(false);
+ GccToolChain *tc = new GccToolChain(ToolChain::ManualDetection);
// Updating from 2.5:
QVariantMap updated = data;
QString id = idFromMap(updated);
@@ -772,7 +772,7 @@ ToolChain *GccToolChainFactory::restore(const QVariantMap &data)
GccToolChain *GccToolChainFactory::createToolChain(bool autoDetect)
{
- return new GccToolChain(autoDetect);
+ return new GccToolChain(autoDetect ? ToolChain::AutoDetection : ToolChain::ManualDetection);
}
QList<ToolChain *> GccToolChainFactory::autoDetectToolchains(const QString &compiler,
@@ -953,8 +953,8 @@ void GccToolChainConfigWidget::handlePlatformLinkerFlagsChange()
// ClangToolChain
// --------------------------------------------------------------------------
-ClangToolChain::ClangToolChain(bool autodetect) :
- GccToolChain(QLatin1String(Constants::CLANG_TOOLCHAIN_ID), autodetect)
+ClangToolChain::ClangToolChain(Detection d) :
+ GccToolChain(QLatin1String(Constants::CLANG_TOOLCHAIN_ID), d)
{ }
QString ClangToolChain::type() const
@@ -1082,7 +1082,7 @@ bool ClangToolChainFactory::canRestore(const QVariantMap &data)
ToolChain *ClangToolChainFactory::restore(const QVariantMap &data)
{
- ClangToolChain *tc = new ClangToolChain(false);
+ ClangToolChain *tc = new ClangToolChain(ToolChain::ManualDetection);
if (tc->fromMap(data))
return tc;
@@ -1092,15 +1092,15 @@ ToolChain *ClangToolChainFactory::restore(const QVariantMap &data)
GccToolChain *ClangToolChainFactory::createToolChain(bool autoDetect)
{
- return new ClangToolChain(autoDetect);
+ return new ClangToolChain(autoDetect ? ToolChain::AutoDetection : ToolChain::ManualDetection);
}
// --------------------------------------------------------------------------
// MingwToolChain
// --------------------------------------------------------------------------
-MingwToolChain::MingwToolChain(bool autodetect) :
- GccToolChain(QLatin1String(Constants::MINGW_TOOLCHAIN_ID), autodetect)
+MingwToolChain::MingwToolChain(Detection d) :
+ GccToolChain(QLatin1String(Constants::MINGW_TOOLCHAIN_ID), d)
{ }
QString MingwToolChain::type() const
@@ -1188,7 +1188,7 @@ bool MingwToolChainFactory::canRestore(const QVariantMap &data)
ToolChain *MingwToolChainFactory::restore(const QVariantMap &data)
{
- MingwToolChain *tc = new MingwToolChain(false);
+ MingwToolChain *tc = new MingwToolChain(ToolChain::ManualDetection);
if (tc->fromMap(data))
return tc;
@@ -1198,15 +1198,15 @@ ToolChain *MingwToolChainFactory::restore(const QVariantMap &data)
GccToolChain *MingwToolChainFactory::createToolChain(bool autoDetect)
{
- return new MingwToolChain(autoDetect);
+ return new MingwToolChain(autoDetect ? ToolChain::AutoDetection : ToolChain::ManualDetection);
}
// --------------------------------------------------------------------------
// LinuxIccToolChain
// --------------------------------------------------------------------------
-LinuxIccToolChain::LinuxIccToolChain(bool autodetect) :
- GccToolChain(QLatin1String(Constants::LINUXICC_TOOLCHAIN_ID), autodetect)
+LinuxIccToolChain::LinuxIccToolChain(Detection d) :
+ GccToolChain(QLatin1String(Constants::LINUXICC_TOOLCHAIN_ID), d)
{ }
QString LinuxIccToolChain::type() const
@@ -1284,7 +1284,7 @@ bool LinuxIccToolChainFactory::canRestore(const QVariantMap &data)
ToolChain *LinuxIccToolChainFactory::restore(const QVariantMap &data)
{
- LinuxIccToolChain *tc = new LinuxIccToolChain(false);
+ LinuxIccToolChain *tc = new LinuxIccToolChain(ToolChain::ManualDetection);
if (tc->fromMap(data))
return tc;
@@ -1294,7 +1294,7 @@ ToolChain *LinuxIccToolChainFactory::restore(const QVariantMap &data)
GccToolChain *LinuxIccToolChainFactory::createToolChain(bool autoDetect)
{
- return new LinuxIccToolChain(autoDetect);
+ return new LinuxIccToolChain(autoDetect ? ToolChain::AutoDetection : ToolChain::ManualDetection);
}
GccToolChain::WarningFlagAdder::WarningFlagAdder(const QString &flag, ToolChain::WarningFlags &flags) :
diff --git a/src/plugins/projectexplorer/gcctoolchain.h b/src/plugins/projectexplorer/gcctoolchain.h
index 093e2c6c30..64dda77a30 100644
--- a/src/plugins/projectexplorer/gcctoolchain.h
+++ b/src/plugins/projectexplorer/gcctoolchain.h
@@ -55,7 +55,7 @@ class LinuxIccToolChainFactory;
class PROJECTEXPLORER_EXPORT GccToolChain : public ToolChain
{
public:
- GccToolChain(const QString &id, bool autodetect);
+ GccToolChain(const QString &id, Detection d);
QString type() const;
QString typeDisplayName() const;
Abi targetAbi() const;
@@ -124,7 +124,7 @@ protected:
};
private:
- GccToolChain(bool autodetect);
+ explicit GccToolChain(Detection d);
void updateSupportedAbis() const;
@@ -166,7 +166,7 @@ protected:
virtual CompilerFlags defaultCompilerFlags() const;
private:
- ClangToolChain(bool autodetect);
+ explicit ClangToolChain(Detection d);
friend class Internal::ClangToolChainFactory;
friend class ToolChainFactory;
@@ -188,7 +188,7 @@ public:
QList<Utils::FileName> suggestedMkspecList() const;
private:
- MingwToolChain(bool autodetect);
+ explicit MingwToolChain(Detection d);
friend class Internal::MingwToolChainFactory;
friend class ToolChainFactory;
@@ -212,7 +212,7 @@ public:
QList<Utils::FileName> suggestedMkspecList() const;
private:
- LinuxIccToolChain(bool autodetect);
+ explicit LinuxIccToolChain(Detection d);
friend class Internal::LinuxIccToolChainFactory;
friend class ToolChainFactory;
diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp
index ad2a9fac84..e3544f7949 100644
--- a/src/plugins/projectexplorer/msvctoolchain.cpp
+++ b/src/plugins/projectexplorer/msvctoolchain.cpp
@@ -304,8 +304,8 @@ Utils::Environment MsvcToolChain::readEnvironmentSetting(Utils::Environment& env
// --------------------------------------------------------------------------
MsvcToolChain::MsvcToolChain(const QString &name, const Abi &abi,
- const QString &varsBat, const QString &varsBatArg, bool autodetect) :
- AbstractMsvcToolChain(QLatin1String(Constants::MSVC_TOOLCHAIN_ID), autodetect, abi, varsBat),
+ const QString &varsBat, const QString &varsBatArg, Detection d) :
+ AbstractMsvcToolChain(QLatin1String(Constants::MSVC_TOOLCHAIN_ID), d, abi, varsBat),
m_varsBatArg(varsBatArg)
{
Q_ASSERT(!name.isEmpty());
@@ -322,7 +322,7 @@ bool MsvcToolChain::isValid() const
}
MsvcToolChain::MsvcToolChain() :
- AbstractMsvcToolChain(QLatin1String(Constants::MSVC_TOOLCHAIN_ID), false)
+ AbstractMsvcToolChain(QLatin1String(Constants::MSVC_TOOLCHAIN_ID), ManualDetection)
{
}
@@ -497,14 +497,14 @@ QList<ToolChain *> MsvcToolChainFactory::autoDetect()
QList<ToolChain *> tmp;
tmp.append(new MsvcToolChain(generateDisplayName(name, MsvcToolChain::WindowsSDK, MsvcToolChain::x86),
findAbiOfMsvc(MsvcToolChain::WindowsSDK, MsvcToolChain::x86, sdkKey),
- fi.absoluteFilePath(), QLatin1String("/x86"), true));
+ fi.absoluteFilePath(), QLatin1String("/x86"), ToolChain::AutoDetection));
// Add all platforms, cross-compiler is automatically selected by SetEnv.cmd if needed
tmp.append(new MsvcToolChain(generateDisplayName(name, MsvcToolChain::WindowsSDK, MsvcToolChain::amd64),
findAbiOfMsvc(MsvcToolChain::WindowsSDK, MsvcToolChain::amd64, sdkKey),
- fi.absoluteFilePath(), QLatin1String("/x64"), true));
+ fi.absoluteFilePath(), QLatin1String("/x64"), ToolChain::AutoDetection));
tmp.append(new MsvcToolChain(generateDisplayName(name, MsvcToolChain::WindowsSDK, MsvcToolChain::ia64),
findAbiOfMsvc(MsvcToolChain::WindowsSDK, MsvcToolChain::ia64, sdkKey),
- fi.absoluteFilePath(), QLatin1String("/ia64"), true));
+ fi.absoluteFilePath(), QLatin1String("/ia64"), ToolChain::AutoDetection));
// Make sure the default is front.
if (folder == defaultSdkPath)
results = tmp + results;
@@ -539,23 +539,23 @@ QList<ToolChain *> MsvcToolChainFactory::autoDetect()
if (QFileInfo(vcVarsBatFor(path, QLatin1String("x86"))).isFile())
results.append(new MsvcToolChain(generateDisplayName(vsName, MsvcToolChain::VS, MsvcToolChain::x86),
findAbiOfMsvc(MsvcToolChain::VS, MsvcToolChain::x86, vsName),
- vcvarsAllbat, QLatin1String("x86"), true));
+ vcvarsAllbat, QLatin1String("x86"), ToolChain::AutoDetection));
if (arch == Utils::HostOsInfo::HostArchitectureX86) {
if (QFileInfo(vcVarsBatFor(path, QLatin1String("x86_amd64"))).isFile())
results.append(new MsvcToolChain(generateDisplayName(vsName, MsvcToolChain::VS, MsvcToolChain::amd64),
findAbiOfMsvc(MsvcToolChain::VS, MsvcToolChain::amd64, vsName),
- vcvarsAllbat, QLatin1String("x86_amd64"), true));
+ vcvarsAllbat, QLatin1String("x86_amd64"), ToolChain::AutoDetection));
} else if (arch == Utils::HostOsInfo::HostArchitectureAMD64) {
if (QFileInfo(vcVarsBatFor(path, QLatin1String("amd64"))).isFile()) {
results.append(new MsvcToolChain(generateDisplayName(vsName, MsvcToolChain::VS, MsvcToolChain::amd64),
findAbiOfMsvc(MsvcToolChain::VS, MsvcToolChain::amd64, vsName),
- vcvarsAllbat, QLatin1String("amd64"), true));
+ vcvarsAllbat, QLatin1String("amd64"), ToolChain::AutoDetection));
} else if (QFileInfo(vcVarsBatFor(path, QLatin1String("x86_amd64"))).isFile()) {
// Fall back to 32 bit to 4 bit
results.append(new MsvcToolChain(generateDisplayName(vsName, MsvcToolChain::VS, MsvcToolChain::amd64),
findAbiOfMsvc(MsvcToolChain::VS, MsvcToolChain::amd64, vsName),
- vcvarsAllbat, QLatin1String("x86_amd64"), true));
+ vcvarsAllbat, QLatin1String("x86_amd64"), ToolChain::AutoDetection));
}
}
@@ -564,25 +564,25 @@ QList<ToolChain *> MsvcToolChainFactory::autoDetect()
if (QFileInfo(vcVarsBatFor(path, QLatin1String("x86_arm"))).isFile())
results.append(new MsvcToolChain(generateDisplayName(vsName, MsvcToolChain::VS, MsvcToolChain::arm),
findAbiOfMsvc(MsvcToolChain::VS, MsvcToolChain::arm, vsName),
- vcvarsAllbat, QLatin1String("x86_arm"), true));
+ vcvarsAllbat, QLatin1String("x86_arm"), ToolChain::AutoDetection));
} else if (arch == Utils::HostOsInfo::HostArchitectureArm) {
if (QFileInfo(vcVarsBatFor(path, QLatin1String("arm"))).isFile())
results.append(new MsvcToolChain(generateDisplayName(vsName, MsvcToolChain::VS, MsvcToolChain::arm),
findAbiOfMsvc(MsvcToolChain::VS, MsvcToolChain::arm, vsName),
- vcvarsAllbat, QLatin1String("arm"), true));
+ vcvarsAllbat, QLatin1String("arm"), ToolChain::AutoDetection));
}
if (arch == Utils::HostOsInfo::HostArchitectureItanium) {
if (QFileInfo(vcVarsBatFor(path, QLatin1String("ia64"))).isFile())
results.append(new MsvcToolChain(generateDisplayName(vsName, MsvcToolChain::VS, MsvcToolChain::ia64),
findAbiOfMsvc(MsvcToolChain::VS, MsvcToolChain::ia64, vsName),
- vcvarsAllbat, QLatin1String("ia64"), true));
+ vcvarsAllbat, QLatin1String("ia64"), ToolChain::AutoDetection));
} else if (arch == Utils::HostOsInfo::HostArchitectureX86
|| arch == Utils::HostOsInfo::HostArchitectureAMD64) {
if (QFileInfo(vcVarsBatFor(path, QLatin1String("x86_ia64"))).isFile())
results.append(new MsvcToolChain(generateDisplayName(vsName, MsvcToolChain::VS, MsvcToolChain::ia64),
findAbiOfMsvc(MsvcToolChain::VS, MsvcToolChain::ia64, vsName),
- vcvarsAllbat, QLatin1String("x86_ia64"), true));
+ vcvarsAllbat, QLatin1String("x86_ia64"), ToolChain::AutoDetection));
}
} else {
qWarning("Unable to find MSVC setup script %s in version %d", qPrintable(vcvarsAllbat), version);
diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h
index 29ecc16ba3..29d5387a1f 100644
--- a/src/plugins/projectexplorer/msvctoolchain.h
+++ b/src/plugins/projectexplorer/msvctoolchain.h
@@ -54,7 +54,7 @@ public:
};
MsvcToolChain(const QString &name, const Abi &abi,
- const QString &varsBat, const QString &varsBatArg, bool autodetect = false);
+ const QString &varsBat, const QString &varsBatArg, Detection d = ManualDetection);
bool isValid() const;
QList<Utils::FileName> suggestedMkspecList() const;
diff --git a/src/plugins/projectexplorer/toolchain.cpp b/src/plugins/projectexplorer/toolchain.cpp
index 5ad6d777dc..d7d7b14454 100644
--- a/src/plugins/projectexplorer/toolchain.cpp
+++ b/src/plugins/projectexplorer/toolchain.cpp
@@ -53,8 +53,10 @@ namespace Internal {
class ToolChainPrivate
{
public:
- ToolChainPrivate(const QString &id, bool autodetect) :
- m_autodetect(autodetect)
+ typedef ToolChain::Detection Detection;
+
+ explicit ToolChainPrivate(const QString &id, Detection d) :
+ m_detection(d)
{
m_id = createId(id);
}
@@ -67,7 +69,7 @@ public:
}
QString m_id;
- bool m_autodetect;
+ Detection m_detection;
mutable QString m_displayName;
};
@@ -81,12 +83,12 @@ public:
// --------------------------------------------------------------------------
-ToolChain::ToolChain(const QString &id, bool autodetect) :
- d(new Internal::ToolChainPrivate(id, autodetect))
+ToolChain::ToolChain(const QString &id, Detection d) :
+ d(new Internal::ToolChainPrivate(id, d))
{ }
ToolChain::ToolChain(const ToolChain &other) :
- d(new Internal::ToolChainPrivate(other.d->m_id, false))
+ d(new Internal::ToolChainPrivate(other.d->m_id, ManualDetection))
{
// leave the autodetection bit at false.
d->m_displayName = QCoreApplication::translate("ProjectExplorer::ToolChain", "Clone of %1")
@@ -114,9 +116,9 @@ void ToolChain::setDisplayName(const QString &name)
toolChainUpdated();
}
-bool ToolChain::isAutoDetected() const
+ToolChain::Detection ToolChain::detection() const
{
- return d->m_autodetect;
+ return d->m_detection;
}
QString ToolChain::id() const
@@ -172,11 +174,11 @@ void ToolChain::toolChainUpdated()
ToolChainManager::notifyAboutUpdate(this);
}
-void ToolChain::setAutoDetected(bool autodetect)
+void ToolChain::setDetection(ToolChain::Detection de)
{
- if (d->m_autodetect == autodetect)
+ if (d->m_detection == de)
return;
- d->m_autodetect = autodetect;
+ d->m_detection = de;
toolChainUpdated();
}
@@ -191,7 +193,8 @@ bool ToolChain::fromMap(const QVariantMap &data)
d->m_displayName = data.value(QLatin1String(DISPLAY_NAME_KEY)).toString();
// make sure we have new style ids:
d->m_id = data.value(QLatin1String(ID_KEY)).toString();
- d->m_autodetect = data.value(QLatin1String(AUTODETECT_KEY), false).toBool();
+ const bool autoDetect = data.value(QLatin1String(AUTODETECT_KEY), false).toBool();
+ d->m_detection = autoDetect ? AutoDetectionFromSettings : ManualDetection;
return true;
}
diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h
index 3364c75074..71b7b1e244 100644
--- a/src/plugins/projectexplorer/toolchain.h
+++ b/src/plugins/projectexplorer/toolchain.h
@@ -64,12 +64,20 @@ class Kit;
class PROJECTEXPLORER_EXPORT ToolChain
{
public:
+ enum Detection {
+ ManualDetection,
+ AutoDetection,
+ AutoDetectionFromSettings
+ };
+
virtual ~ToolChain();
QString displayName() const;
void setDisplayName(const QString &name);
- bool isAutoDetected() const;
+ inline bool isAutoDetected() const { return detection() != ManualDetection; }
+ Detection detection() const;
+
QString id() const;
virtual QList<Utils::FileName> suggestedMkspecList() const;
@@ -146,7 +154,7 @@ public:
virtual QVariantMap toMap() const;
virtual QList<Task> validateKit(const Kit *k) const;
protected:
- ToolChain(const QString &id, bool autoDetect);
+ explicit ToolChain(const QString &id, Detection d);
explicit ToolChain(const ToolChain &);
void toolChainUpdated();
@@ -155,7 +163,7 @@ protected:
virtual bool fromMap(const QVariantMap &data);
private:
- void setAutoDetected(bool);
+ void setDetection(Detection d);
Internal::ToolChainPrivate *const d;
diff --git a/src/plugins/projectexplorer/toolchainmanager.cpp b/src/plugins/projectexplorer/toolchainmanager.cpp
index deef447278..8c0f2dc99c 100644
--- a/src/plugins/projectexplorer/toolchainmanager.cpp
+++ b/src/plugins/projectexplorer/toolchainmanager.cpp
@@ -198,7 +198,7 @@ void ToolChainManager::restoreToolChains()
restoreFromFile(FileName::fromString(systemSettingsFile.absolutePath() + QLatin1String(TOOLCHAIN_FILENAME)));
// make sure we mark these as autodetected!
foreach (ToolChain *tc, readTcs)
- tc->setAutoDetected(true);
+ tc->setDetection(ToolChain::AutoDetection);
tcsToRegister = readTcs; // SDK TCs are always considered to be up-to-date, so no need to
// recheck them.
@@ -239,10 +239,12 @@ void ToolChainManager::restoreToolChains()
foreach (ToolChain *currentDetected, detectedTcs) {
toStore = currentDetected;
- // Check whether we had this TC stored and prefer the old one with the old id:
+ // Check whether we had this TC stored and prefer the old one with the old id, marked
+ // as auto-detection.
for (int i = 0; i < tcsToCheck.count(); ++i) {
if (*(tcsToCheck.at(i)) == *currentDetected) {
toStore = tcsToCheck.at(i);
+ toStore->setDetection(ToolChain::AutoDetection);
tcsToCheck.removeAt(i);
delete currentDetected;
break;
diff --git a/src/plugins/projectexplorer/toolchainoptionspage.cpp b/src/plugins/projectexplorer/toolchainoptionspage.cpp
index b8adc84943..44b1a82191 100644
--- a/src/plugins/projectexplorer/toolchainoptionspage.cpp
+++ b/src/plugins/projectexplorer/toolchainoptionspage.cpp
@@ -625,7 +625,7 @@ void ToolChainOptionsPage::updateState()
ToolChain *tc = m_model->toolChain(currentIndex());
if (tc) {
canCopy = tc->isValid() && tc->canClone();
- canDelete = !tc->isAutoDetected();
+ canDelete = tc->detection() != ToolChain::AutoDetection;
}
m_cloneButton->setEnabled(canCopy);
diff --git a/src/plugins/projectexplorer/wincetoolchain.cpp b/src/plugins/projectexplorer/wincetoolchain.cpp
index 3e4d2ae727..e1e7ed403d 100644
--- a/src/plugins/projectexplorer/wincetoolchain.cpp
+++ b/src/plugins/projectexplorer/wincetoolchain.cpp
@@ -240,8 +240,8 @@ WinCEToolChain::WinCEToolChain(const QString &name,
const QString &binPath,
const QString &includePath,
const QString &libPath,
- bool autodetect) :
- AbstractMsvcToolChain(QLatin1String(Constants::WINCE_TOOLCHAIN_ID), autodetect, abi, vcvarsBat),
+ Detection d) :
+ AbstractMsvcToolChain(QLatin1String(Constants::WINCE_TOOLCHAIN_ID), d, abi, vcvarsBat),
m_msvcVer(msvcVer),
m_ceVer(ceVer),
m_binPath(binPath),
@@ -257,7 +257,7 @@ WinCEToolChain::WinCEToolChain(const QString &name,
}
WinCEToolChain::WinCEToolChain() :
- AbstractMsvcToolChain(QLatin1String(Constants::WINCE_TOOLCHAIN_ID), false)
+ AbstractMsvcToolChain(QLatin1String(Constants::WINCE_TOOLCHAIN_ID), ManualDetection)
{
}
@@ -410,7 +410,7 @@ QList<ToolChain *> WinCEToolChainFactory::autoDetect()
binPath,
includePath,
libPath,
- true);
+ ToolChain::AutoDetection);
results.append(pChain);
}
}
diff --git a/src/plugins/projectexplorer/wincetoolchain.h b/src/plugins/projectexplorer/wincetoolchain.h
index 0f375f75ce..fddf6fa684 100644
--- a/src/plugins/projectexplorer/wincetoolchain.h
+++ b/src/plugins/projectexplorer/wincetoolchain.h
@@ -48,7 +48,7 @@ public:
const QString &binPath,
const QString &includePath,
const QString &libPath,
- bool autodetect = false);
+ Detection d = ManualDetection);
QList<Utils::FileName> suggestedMkspecList() const;
diff --git a/src/plugins/qnx/blackberryconfiguration.cpp b/src/plugins/qnx/blackberryconfiguration.cpp
index e6bf75f44b..750015d763 100644
--- a/src/plugins/qnx/blackberryconfiguration.cpp
+++ b/src/plugins/qnx/blackberryconfiguration.cpp
@@ -231,7 +231,7 @@ GccToolChain *BlackBerryConfiguration::createGccToolChain()
}
}
- GccToolChain* tc = new GccToolChain(QLatin1String(ProjectExplorer::Constants::GCC_TOOLCHAIN_ID), m_isAutoDetected);
+ GccToolChain* tc = new GccToolChain(QLatin1String(ProjectExplorer::Constants::GCC_TOOLCHAIN_ID), m_isAutoDetected ? ToolChain::AutoDetection : ToolChain::ManualDetection);
tc->setDisplayName(QString::fromLatin1("GCC BlackBerry 10 (%1)").arg(m_targetName));
tc->setCompilerCommand(m_gccCompiler);