aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/projectexplorer/gcctoolchain.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/projectexplorer/gcctoolchain.cpp')
-rw-r--r--src/plugins/projectexplorer/gcctoolchain.cpp74
1 files changed, 30 insertions, 44 deletions
diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp
index eef0e9ad84..e4ea036d77 100644
--- a/src/plugins/projectexplorer/gcctoolchain.cpp
+++ b/src/plugins/projectexplorer/gcctoolchain.cpp
@@ -262,10 +262,10 @@ static Utils::FilePath gccInstallDir(const FilePath &path, const QStringList &en
// GccToolChain
// --------------------------------------------------------------------------
-GccToolChain::GccToolChain(Core::Id typeId) :
+GccToolChain::GccToolChain(Utils::Id typeId) :
ToolChain(typeId)
{
- setTypeDisplayName(GccToolChainFactory::tr("GCC"));
+ setTypeDisplayName(tr("GCC"));
}
void GccToolChain::setCompilerCommand(const FilePath &path)
@@ -448,7 +448,7 @@ ToolChain::MacroInspectionRunner GccToolChain::createMacroInspectionRunner() con
OptionsReinterpreter reinterpretOptions = m_optionsReinterpreter;
QTC_CHECK(reinterpretOptions);
MacrosCache macroCache = predefinedMacrosCache();
- Core::Id lang = language();
+ Utils::Id lang = language();
// This runner must be thread-safe!
return [env, compilerCommand, platformCodeGenFlags, reinterpretOptions, macroCache, lang]
@@ -567,7 +567,7 @@ WarningFlags GccToolChain::warningFlags(const QStringList &cflags) const
QStringList GccToolChain::gccPrepareArguments(const QStringList &flags,
const QString &sysRoot,
const QStringList &platformCodeGenFlags,
- Core::Id languageId,
+ Utils::Id languageId,
OptionsReinterpreter reinterpretOptions)
{
QStringList arguments;
@@ -595,7 +595,7 @@ HeaderPaths GccToolChain::builtInHeaderPaths(const Utils::Environment &env,
const QStringList &platformCodeGenFlags,
OptionsReinterpreter reinterpretOptions,
HeaderPathsCache headerCache,
- Core::Id languageId,
+ Utils::Id languageId,
ExtraHeaderPathsFunction extraHeaderPathsFunction,
const QStringList &flags,
const QString &sysRoot,
@@ -731,9 +731,9 @@ FilePath GccToolChain::makeCommand(const Environment &environment) const
return tmp.isEmpty() ? FilePath::fromString("make") : tmp;
}
-IOutputParser *GccToolChain::outputParser() const
+QList<OutputLineParser *> GccToolChain::createOutputParsers() const
{
- return new GccParser;
+ return GccParser::gccParserSuite();
}
void GccToolChain::resetToolChain(const FilePath &path)
@@ -1045,7 +1045,7 @@ static Utils::FilePaths renesasRl78SearchPathsFromRegistry()
GccToolChainFactory::GccToolChainFactory()
{
- setDisplayName(tr("GCC"));
+ setDisplayName(GccToolChain::tr("GCC"));
setSupportedToolChainType(Constants::GCC_TOOLCHAIN_TYPEID);
setSupportedLanguages({Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID});
setToolchainConstructor([] { return new GccToolChain(Constants::GCC_TOOLCHAIN_TYPEID); });
@@ -1075,9 +1075,11 @@ QList<ToolChain *> GccToolChainFactory::detectForImport(const ToolChainDescripti
{
const QString fileName = tcd.compilerPath.toFileInfo().completeBaseName();
if ((tcd.language == Constants::C_LANGUAGE_ID && (fileName.startsWith("gcc")
- || fileName.endsWith("gcc")))
+ || fileName.endsWith("gcc")
+ || fileName == "cc"))
|| (tcd.language == Constants::CXX_LANGUAGE_ID && (fileName.startsWith("g++")
- || fileName.endsWith("g++"))))
+ || fileName.endsWith("g++")
+ || fileName == "c++")))
return autoDetectToolChain(tcd, [](const ToolChain *tc) {
return tc->targetAbi().osFlavor() != Abi::WindowsMSysFlavor;
});
@@ -1085,8 +1087,8 @@ QList<ToolChain *> GccToolChainFactory::detectForImport(const ToolChainDescripti
}
QList<ToolChain *> GccToolChainFactory::autoDetectToolchains(
- const QString &compilerName, DetectVariants detectVariants, Core::Id language,
- const Core::Id requiredTypeId, const QList<ToolChain *> &alreadyKnown,
+ const QString &compilerName, DetectVariants detectVariants, Utils::Id language,
+ const Utils::Id requiredTypeId, const QList<ToolChain *> &alreadyKnown,
const ToolchainChecker &checker)
{
FilePaths compilerPaths;
@@ -1274,7 +1276,7 @@ void GccToolChainConfigWidget::applyImpl()
auto tc = static_cast<GccToolChain *>(toolChain());
Q_ASSERT(tc);
QString displayName = tc->displayName();
- tc->setCompilerCommand(m_compilerCommand->fileName());
+ tc->setCompilerCommand(m_compilerCommand->filePath());
if (m_abiWidget) {
tc->setSupportedAbis(m_abiWidget->supportedAbis());
tc->setTargetAbi(m_abiWidget->currentAbi());
@@ -1300,12 +1302,12 @@ void GccToolChainConfigWidget::setFromToolchain()
// subwidgets are not yet connected!
QSignalBlocker blocker(this);
auto tc = static_cast<GccToolChain *>(toolChain());
- m_compilerCommand->setFileName(tc->compilerCommand());
+ m_compilerCommand->setFilePath(tc->compilerCommand());
m_platformCodeGenFlagsLineEdit->setText(QtcProcess::joinArgs(tc->platformCodeGenFlags()));
m_platformLinkerFlagsLineEdit->setText(QtcProcess::joinArgs(tc->platformLinkerFlags()));
if (m_abiWidget) {
m_abiWidget->setAbis(tc->supportedAbis(), tc->targetAbi());
- if (!m_isReadOnly && !m_compilerCommand->path().isEmpty())
+ if (!m_isReadOnly && !m_compilerCommand->filePath().toString().isEmpty())
m_abiWidget->setEnabled(true);
}
}
@@ -1314,7 +1316,7 @@ bool GccToolChainConfigWidget::isDirtyImpl() const
{
auto tc = static_cast<GccToolChain *>(toolChain());
Q_ASSERT(tc);
- return m_compilerCommand->fileName() != tc->compilerCommand()
+ return m_compilerCommand->filePath() != tc->compilerCommand()
|| m_platformCodeGenFlagsLineEdit->text()
!= QtcProcess::joinArgs(tc->platformCodeGenFlags())
|| m_platformLinkerFlagsLineEdit->text()
@@ -1332,22 +1334,6 @@ void GccToolChainConfigWidget::makeReadOnlyImpl()
m_isReadOnly = true;
}
-QStringList GccToolChainConfigWidget::splitString(const QString &s)
-{
- QtcProcess::SplitError splitError;
- const OsType osType = HostOsInfo::hostOs();
- QStringList res = QtcProcess::splitArgs(s, osType, false, &splitError);
- if (splitError != QtcProcess::SplitOk){
- res = QtcProcess::splitArgs(s + '\\', osType, false, &splitError);
- if (splitError != QtcProcess::SplitOk){
- res = QtcProcess::splitArgs(s + '"', osType, false, &splitError);
- if (splitError != QtcProcess::SplitOk)
- res = QtcProcess::splitArgs(s + '\'', osType, false, &splitError);
- }
- }
- return res;
-}
-
void GccToolChainConfigWidget::handleCompilerCommandChange()
{
if (!m_abiWidget)
@@ -1356,7 +1342,7 @@ void GccToolChainConfigWidget::handleCompilerCommandChange()
bool haveCompiler = false;
Abi currentAbi = m_abiWidget->currentAbi();
bool customAbi = m_abiWidget->isCustomAbi() && m_abiWidget->isEnabled();
- FilePath path = m_compilerCommand->fileName();
+ FilePath path = m_compilerCommand->filePath();
Abis abiList;
if (!path.isEmpty()) {
@@ -1469,10 +1455,10 @@ ClangToolChain::ClangToolChain() :
{
}
-ClangToolChain::ClangToolChain(Core::Id typeId) :
+ClangToolChain::ClangToolChain(Utils::Id typeId) :
GccToolChain(typeId)
{
- setTypeDisplayName(ClangToolChainFactory::tr("Clang"));
+ setTypeDisplayName(tr("Clang"));
syncAutodetectedWithParentToolchains();
}
@@ -1628,9 +1614,9 @@ LanguageExtensions ClangToolChain::defaultLanguageExtensions() const
return LanguageExtension::Gnu;
}
-IOutputParser *ClangToolChain::outputParser() const
+QList<OutputLineParser *> ClangToolChain::createOutputParsers() const
{
- return new ClangParser;
+ return ClangParser::clangParserSuite();
}
// --------------------------------------------------------------------------
@@ -1639,7 +1625,7 @@ IOutputParser *ClangToolChain::outputParser() const
ClangToolChainFactory::ClangToolChainFactory()
{
- setDisplayName(tr("Clang"));
+ setDisplayName(ClangToolChain::tr("Clang"));
setSupportedToolChainType(Constants::CLANG_TOOLCHAIN_TYPEID);
setSupportedLanguages({Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID});
setToolchainConstructor([] { return new ClangToolChain; });
@@ -1798,7 +1784,7 @@ void ClangToolChainConfigWidget::makeReadOnlyImpl()
MingwToolChain::MingwToolChain() :
GccToolChain(Constants::MINGW_TOOLCHAIN_TYPEID)
{
- setTypeDisplayName(MingwToolChainFactory::tr("MinGW"));
+ setTypeDisplayName(MingwToolChain::tr("MinGW"));
}
QStringList MingwToolChain::suggestedMkspecList() const
@@ -1833,7 +1819,7 @@ FilePath MingwToolChain::makeCommand(const Environment &environment) const
MingwToolChainFactory::MingwToolChainFactory()
{
- setDisplayName(tr("MinGW"));
+ setDisplayName(MingwToolChain::tr("MinGW"));
setSupportedToolChainType(Constants::MINGW_TOOLCHAIN_TYPEID);
setSupportedLanguages({Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID});
setToolchainConstructor([] { return new MingwToolChain; });
@@ -1873,7 +1859,7 @@ QList<ToolChain *> MingwToolChainFactory::detectForImport(const ToolChainDescrip
LinuxIccToolChain::LinuxIccToolChain() :
GccToolChain(Constants::LINUXICC_TOOLCHAIN_TYPEID)
{
- setTypeDisplayName(LinuxIccToolChainFactory::tr("ICC"));
+ setTypeDisplayName(LinuxIccToolChain::tr("ICC"));
}
/**
@@ -1898,9 +1884,9 @@ LanguageExtensions LinuxIccToolChain::languageExtensions(const QStringList &cxxf
return extensions;
}
-IOutputParser *LinuxIccToolChain::outputParser() const
+QList<OutputLineParser *> LinuxIccToolChain::createOutputParsers() const
{
- return new LinuxIccParser;
+ return LinuxIccParser::iccParserSuite();
}
QStringList LinuxIccToolChain::suggestedMkspecList() const
@@ -1914,7 +1900,7 @@ QStringList LinuxIccToolChain::suggestedMkspecList() const
LinuxIccToolChainFactory::LinuxIccToolChainFactory()
{
- setDisplayName(tr("ICC"));
+ setDisplayName(LinuxIccToolChain::tr("ICC"));
setSupportedToolChainType(Constants::LINUXICC_TOOLCHAIN_TYPEID);
setSupportedLanguages({Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID});
setToolchainConstructor([] { return new LinuxIccToolChain; });