diff options
Diffstat (limited to 'src/plugins/projectexplorer/gcctoolchain.cpp')
-rw-r--r-- | src/plugins/projectexplorer/gcctoolchain.cpp | 74 |
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; }); |