diff --git a/src/plugins/baremetal/sdcctoolchain.cpp b/src/plugins/baremetal/sdcctoolchain.cpp index a35a468d202..f559aac3a65 100644 --- a/src/plugins/baremetal/sdcctoolchain.cpp +++ b/src/plugins/baremetal/sdcctoolchain.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include @@ -168,29 +169,73 @@ static Abi guessAbi(const Macros ¯os) guessFormat(arch), guessWordWidth(macros)}; } -static QString buildDisplayName(Abi::Architecture arch, Utils::Id language, - const QString &version) +static QString buildDisplayName(Abi::Architecture arch, Id language, const QString &version) { const QString archName = Abi::toString(arch); const QString langName = ToolChainManager::displayNameOfLanguageId(language); return Tr::tr("SDCC %1 (%2, %3)").arg(version, langName, archName); } -static Utils::FilePath compilerPathFromEnvironment(const QString &compilerName) +static FilePath compilerPathFromEnvironment(const QString &compilerName) { const Environment systemEnvironment = Environment::systemEnvironment(); return systemEnvironment.searchInPath(compilerName); } +// SdccToolChainConfigWidget + +class SdccToolChain; + +class SdccToolChainConfigWidget final : public ToolChainConfigWidget +{ +public: + explicit SdccToolChainConfigWidget(SdccToolChain *tc); + +private: + void applyImpl() final; + void discardImpl() final { setFromToolchain(); } + bool isDirtyImpl() const final; + void makeReadOnlyImpl() final; + + void setFromToolchain(); + void handleCompilerCommandChange(); + + PathChooser *m_compilerCommand = nullptr; + AbiWidget *m_abiWidget = nullptr; + Macros m_macros; +}; + // SdccToolChain -SdccToolChain::SdccToolChain() : - ToolChain(Constants::SDCC_TOOLCHAIN_TYPEID) +class SdccToolChain final : public ToolChain { - setTypeDisplayName(Tr::tr("SDCC")); - setTargetAbiKey("TargetAbi"); - setCompilerCommandKey("CompilerPath"); -} +public: + SdccToolChain() : ToolChain(Constants::SDCC_TOOLCHAIN_TYPEID) + { + setTypeDisplayName(Tr::tr("SDCC")); + setTargetAbiKey("TargetAbi"); + setCompilerCommandKey("CompilerPath"); + } + + MacroInspectionRunner createMacroInspectionRunner() const final; + + LanguageExtensions languageExtensions(const QStringList &cxxflags) const final; + WarningFlags warningFlags(const QStringList &cxxflags) const final; + + BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner(const Environment &) const final; + void addToEnvironment(Environment &env) const final; + QList createOutputParsers() const final; + + std::unique_ptr createConfigurationWidget() final; + + bool operator==(const ToolChain &other) const final; + + FilePath makeCommand(const Environment &env) const final; + +private: + friend class SdccToolChainFactory; + friend class SdccToolChainConfigWidget; +}; ToolChain::MacroInspectionRunner SdccToolChain::createMacroInspectionRunner() const { @@ -215,7 +260,7 @@ ToolChain::MacroInspectionRunner SdccToolChain::createMacroInspectionRunner() co }; } -Utils::LanguageExtensions SdccToolChain::languageExtensions(const QStringList &) const +LanguageExtensions SdccToolChain::languageExtensions(const QStringList &) const { return LanguageExtension::None; } diff --git a/src/plugins/baremetal/sdcctoolchain.h b/src/plugins/baremetal/sdcctoolchain.h index 274ae41fb2b..972eee000d5 100644 --- a/src/plugins/baremetal/sdcctoolchain.h +++ b/src/plugins/baremetal/sdcctoolchain.h @@ -3,52 +3,10 @@ #pragma once -#include #include -#include - -QT_BEGIN_NAMESPACE -class QPlainTextEdit; -class QPushButton; -class QTextEdit; -QT_END_NAMESPACE - -namespace Utils { class PathChooser; } - -namespace ProjectExplorer { class AbiWidget; } namespace BareMetal::Internal { -// SdccToolChain - -class SdccToolChain final : public ProjectExplorer::ToolChain -{ -public: - MacroInspectionRunner createMacroInspectionRunner() const final; - - Utils::LanguageExtensions languageExtensions(const QStringList &cxxflags) const final; - Utils::WarningFlags warningFlags(const QStringList &cxxflags) const final; - - BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner( - const Utils::Environment &) const final; - void addToEnvironment(Utils::Environment &env) const final; - QList createOutputParsers() const final; - - std::unique_ptr createConfigurationWidget() final; - - bool operator ==(const ToolChain &other) const final; - - Utils::FilePath makeCommand(const Utils::Environment &env) const final; - -private: - SdccToolChain(); - - friend class SdccToolChainFactory; - friend class SdccToolChainConfigWidget; -}; - -// SdccToolChainFactory - class SdccToolChainFactory final : public ProjectExplorer::ToolChainFactory { public: @@ -64,25 +22,4 @@ private: const Candidate &candidate, Utils::Id language) const; }; -// SdccToolChainConfigWidget - -class SdccToolChainConfigWidget final : public ProjectExplorer::ToolChainConfigWidget -{ -public: - explicit SdccToolChainConfigWidget(SdccToolChain *tc); - -private: - void applyImpl() final; - void discardImpl() final { setFromToolchain(); } - bool isDirtyImpl() const final; - void makeReadOnlyImpl() final; - - void setFromToolchain(); - void handleCompilerCommandChange(); - - Utils::PathChooser *m_compilerCommand = nullptr; - ProjectExplorer::AbiWidget *m_abiWidget = nullptr; - ProjectExplorer::Macros m_macros; -}; - } // BareMetal::Internal