From e4b889802e1e5099d1eeeb4547511a6df598025f Mon Sep 17 00:00:00 2001 From: Denis Shienkov Date: Tue, 28 Apr 2020 14:55:03 +0300 Subject: [PATCH] BareMetal: Auto-detect IAR toolchain for Renesas RX architecture This patch implements auto-detection for the RX toolchain, provided by IAR Systems: * https://www.iar.com/iar-embedded-workbench/#!?architecture=RX Change-Id: I3f00ca525fef8b0ce989f1e0f97857446d04449c Reviewed-by: hjk --- src/plugins/baremetal/iarewtoolchain.cpp | 8 ++++++-- src/plugins/projectexplorer/abi.cpp | 4 ++++ src/plugins/projectexplorer/abi.h | 1 + 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/plugins/baremetal/iarewtoolchain.cpp b/src/plugins/baremetal/iarewtoolchain.cpp index f169c9c52cc..a29f82fd320 100644 --- a/src/plugins/baremetal/iarewtoolchain.cpp +++ b/src/plugins/baremetal/iarewtoolchain.cpp @@ -70,7 +70,7 @@ static QString cppLanguageOption(const FilePath &compiler) { const QString baseName = compiler.toFileInfo().baseName(); if (baseName == "iccarm" || baseName == "iccrl78" - || baseName == "iccrh850") { + || baseName == "iccrh850" || baseName == "iccrx") { return QString("--c++"); } if (baseName == "icc8051" || baseName == "iccavr" @@ -204,6 +204,8 @@ static Abi::Architecture guessArchitecture(const Macros ¯os) return Abi::Architecture::V850Architecture; if (macro.key == "__ICCRH850__") return Abi::Architecture::Rh850Architecture; + if (macro.key == "__ICCRX__") + return Abi::Architecture::RxArchitecture; } return Abi::Architecture::UnknownArchitecture; } @@ -223,7 +225,8 @@ static Abi::BinaryFormat guessFormat(Abi::Architecture arch) if (arch == Abi::Architecture::ArmArchitecture || arch == Abi::Architecture::Stm8Architecture || arch == Abi::Architecture::Rl78Architecture - || arch == Abi::Architecture::Rh850Architecture) { + || arch == Abi::Architecture::Rh850Architecture + || arch == Abi::Architecture::RxArchitecture) { return Abi::BinaryFormat::ElfFormat; } if (arch == Abi::Architecture::Mcs51Architecture @@ -457,6 +460,7 @@ QList IarToolChainFactory::autoDetect(const QList &alr {{"EWRL78"}, {"\\rl78\\bin\\iccrl78.exe"}}, {{"EWV850"}, {"\\v850\\bin\\iccv850.exe"}}, {{"EWRH850"}, {"\\rh850\\bin\\iccrh850.exe"}}, + {{"EWRX"}, {"\\rx\\bin\\iccrx.exe"}}, }; QSettings registry(kRegistryNode, QSettings::NativeFormat); diff --git a/src/plugins/projectexplorer/abi.cpp b/src/plugins/projectexplorer/abi.cpp index f230b9d0640..6f930b42a08 100644 --- a/src/plugins/projectexplorer/abi.cpp +++ b/src/plugins/projectexplorer/abi.cpp @@ -729,6 +729,8 @@ QString Abi::toString(const Architecture &a) return QLatin1String("v850"); case Rh850Architecture: return QLatin1String("rh850"); + case RxArchitecture: + return QLatin1String("rx"); case UnknownArchitecture: Q_FALLTHROUGH(); default: @@ -879,6 +881,8 @@ Abi::Architecture Abi::architectureFromString(const QStringRef &a) return V850Architecture; if (a == "rh850") return Rh850Architecture; + if (a == "rx") + return RxArchitecture; else if (a == "xtensa") return XtensaArchitecture; if (a == "asmjs") diff --git a/src/plugins/projectexplorer/abi.h b/src/plugins/projectexplorer/abi.h index b201ee4ad67..58cea949ce9 100644 --- a/src/plugins/projectexplorer/abi.h +++ b/src/plugins/projectexplorer/abi.h @@ -66,6 +66,7 @@ public: C166Architecture, V850Architecture, Rh850Architecture, + RxArchitecture, UnknownArchitecture };