From 88c91b058630c82179babb3f4985977bf3b90aa5 Mon Sep 17 00:00:00 2001 From: Denis Shienkov Date: Wed, 14 Aug 2019 12:17:01 +0300 Subject: [PATCH] BareMetal: Auto-detect IAR EW toolchain for MSP430 architecture Also we introduce the new 'msp430' architecture in ProjectExplorer::Abi. Change-Id: Ifb857abb29d78396b0d55a4604511951597f4415 Reviewed-by: Christian Kandeler --- src/plugins/baremetal/iarewtoolchain.cpp | 10 ++++++++-- src/plugins/projectexplorer/abi.cpp | 4 ++++ src/plugins/projectexplorer/abi.h | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/plugins/baremetal/iarewtoolchain.cpp b/src/plugins/baremetal/iarewtoolchain.cpp index c58bcbda306..75dbee8cb55 100644 --- a/src/plugins/baremetal/iarewtoolchain.cpp +++ b/src/plugins/baremetal/iarewtoolchain.cpp @@ -71,8 +71,10 @@ static QString cppLanguageOption(const FilePath &compiler) const QString baseName = compiler.toFileInfo().baseName(); if (baseName == "iccarm") return QString("--c++"); - if (baseName == "icc8051" || baseName == "iccavr" || baseName == "iccstm8") + if (baseName == "icc8051" || baseName == "iccavr" + || baseName == "iccstm8" || baseName == "icc430") { return QString("--ec++"); + } return {}; } @@ -191,6 +193,8 @@ static Abi::Architecture guessArchitecture(const Macros ¯os) return Abi::Architecture::AvrArchitecture; if (macro.key == "__ICCSTM8__") return Abi::Architecture::Stm8Architecture; + if (macro.key == "__ICC430__") + return Abi::Architecture::Msp430Architecture; } return Abi::Architecture::UnknownArchitecture; } @@ -212,7 +216,8 @@ static Abi::BinaryFormat guessFormat(Abi::Architecture arch) return Abi::BinaryFormat::ElfFormat; } if (arch == Abi::Architecture::Mcs51Architecture - || arch == Abi::Architecture::AvrArchitecture) { + || arch == Abi::Architecture::AvrArchitecture + || arch == Abi::Architecture::Msp430Architecture) { return Abi::BinaryFormat::UbrofFormat; } return Abi::BinaryFormat::UnknownFormat; @@ -431,6 +436,7 @@ QList IarToolChainFactory::autoDetect(const QList &alr {{"EWAVR"}, {"\\avr\\bin\\iccavr.exe"}}, {{"EW8051"}, {"\\8051\\bin\\icc8051.exe"}}, {{"EWSTM8"}, {"\\stm8\\bin\\iccstm8.exe"}}, + {{"EW430"}, {"\\430\\bin\\icc430.exe"}}, }; QSettings registry(kRegistryNode, QSettings::NativeFormat); diff --git a/src/plugins/projectexplorer/abi.cpp b/src/plugins/projectexplorer/abi.cpp index d1d39cf49da..c76e34c6c4f 100644 --- a/src/plugins/projectexplorer/abi.cpp +++ b/src/plugins/projectexplorer/abi.cpp @@ -693,6 +693,8 @@ QString Abi::toString(const Architecture &a) return QLatin1String("asmjs"); case Stm8Architecture: return QLatin1String("stm8"); + case Msp430Architecture: + return QLatin1String("msp430"); case UnknownArchitecture: Q_FALLTHROUGH(); default: @@ -831,6 +833,8 @@ Abi::Architecture Abi::architectureFromString(const QStringRef &a) return ShArchitecture; if (a == "stm8") return Stm8Architecture; + if (a == "msp430") + return Msp430Architecture; else if (a == "xtensa") return XtensaArchitecture; if (a == "asmjs") diff --git a/src/plugins/projectexplorer/abi.h b/src/plugins/projectexplorer/abi.h index 032d6f3b899..dbc416335f8 100644 --- a/src/plugins/projectexplorer/abi.h +++ b/src/plugins/projectexplorer/abi.h @@ -60,6 +60,7 @@ public: Mcs51Architecture, AsmJsArchitecture, Stm8Architecture, + Msp430Architecture, UnknownArchitecture };