From 02b9d9b7a21f0ae73f09f9481f48dbe1c087bf07 Mon Sep 17 00:00:00 2001 From: Denis Shienkov Date: Tue, 28 Apr 2020 15:01:57 +0300 Subject: [PATCH] BareMetal: Auto-detect IAR toolchain for Renesas 78K architecture This patch implements auto-detection for the 78K toolchain, provided by IAR Systems: * https://www.iar.com/iar-embedded-workbench/#!?architecture=78K Change-Id: Idef5e8982984c0cf24c120d31af0f6cee210694b 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 a29f82fd320..9c682a757ea 100644 --- a/src/plugins/baremetal/iarewtoolchain.cpp +++ b/src/plugins/baremetal/iarewtoolchain.cpp @@ -75,7 +75,7 @@ static QString cppLanguageOption(const FilePath &compiler) } if (baseName == "icc8051" || baseName == "iccavr" || baseName == "iccstm8" || baseName == "icc430" - || baseName == "iccv850") { + || baseName == "iccv850" || baseName == "icc78k") { return QString("--ec++"); } return {}; @@ -206,6 +206,8 @@ static Abi::Architecture guessArchitecture(const Macros ¯os) return Abi::Architecture::Rh850Architecture; if (macro.key == "__ICCRX__") return Abi::Architecture::RxArchitecture; + if (macro.key == "__ICC78K__") + return Abi::Architecture::K78Architecture; } return Abi::Architecture::UnknownArchitecture; } @@ -232,7 +234,8 @@ static Abi::BinaryFormat guessFormat(Abi::Architecture arch) if (arch == Abi::Architecture::Mcs51Architecture || arch == Abi::Architecture::AvrArchitecture || arch == Abi::Architecture::Msp430Architecture - || arch == Abi::Architecture::V850Architecture) { + || arch == Abi::Architecture::V850Architecture + || arch == Abi::Architecture::K78Architecture) { return Abi::BinaryFormat::UbrofFormat; } return Abi::BinaryFormat::UnknownFormat; @@ -461,6 +464,7 @@ QList IarToolChainFactory::autoDetect(const QList &alr {{"EWV850"}, {"\\v850\\bin\\iccv850.exe"}}, {{"EWRH850"}, {"\\rh850\\bin\\iccrh850.exe"}}, {{"EWRX"}, {"\\rx\\bin\\iccrx.exe"}}, + {{"EW78K"}, {"\\78k\\bin\\icc78k.exe"}}, }; QSettings registry(kRegistryNode, QSettings::NativeFormat); diff --git a/src/plugins/projectexplorer/abi.cpp b/src/plugins/projectexplorer/abi.cpp index 6f930b42a08..8493709b510 100644 --- a/src/plugins/projectexplorer/abi.cpp +++ b/src/plugins/projectexplorer/abi.cpp @@ -731,6 +731,8 @@ QString Abi::toString(const Architecture &a) return QLatin1String("rh850"); case RxArchitecture: return QLatin1String("rx"); + case K78Architecture: + return QLatin1String("78k"); case UnknownArchitecture: Q_FALLTHROUGH(); default: @@ -883,6 +885,8 @@ Abi::Architecture Abi::architectureFromString(const QStringRef &a) return Rh850Architecture; if (a == "rx") return RxArchitecture; + if (a == "78k") + return K78Architecture; else if (a == "xtensa") return XtensaArchitecture; if (a == "asmjs") diff --git a/src/plugins/projectexplorer/abi.h b/src/plugins/projectexplorer/abi.h index 58cea949ce9..060a1a3a1cc 100644 --- a/src/plugins/projectexplorer/abi.h +++ b/src/plugins/projectexplorer/abi.h @@ -67,6 +67,7 @@ public: V850Architecture, Rh850Architecture, RxArchitecture, + K78Architecture, UnknownArchitecture };