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 <hjk@qt.io>
This commit is contained in:
Denis Shienkov
2020-04-28 15:01:57 +03:00
parent e4b889802e
commit 02b9d9b7a2
3 changed files with 11 additions and 2 deletions

View File

@@ -75,7 +75,7 @@ static QString cppLanguageOption(const FilePath &compiler)
} }
if (baseName == "icc8051" || baseName == "iccavr" if (baseName == "icc8051" || baseName == "iccavr"
|| baseName == "iccstm8" || baseName == "icc430" || baseName == "iccstm8" || baseName == "icc430"
|| baseName == "iccv850") { || baseName == "iccv850" || baseName == "icc78k") {
return QString("--ec++"); return QString("--ec++");
} }
return {}; return {};
@@ -206,6 +206,8 @@ static Abi::Architecture guessArchitecture(const Macros &macros)
return Abi::Architecture::Rh850Architecture; return Abi::Architecture::Rh850Architecture;
if (macro.key == "__ICCRX__") if (macro.key == "__ICCRX__")
return Abi::Architecture::RxArchitecture; return Abi::Architecture::RxArchitecture;
if (macro.key == "__ICC78K__")
return Abi::Architecture::K78Architecture;
} }
return Abi::Architecture::UnknownArchitecture; return Abi::Architecture::UnknownArchitecture;
} }
@@ -232,7 +234,8 @@ static Abi::BinaryFormat guessFormat(Abi::Architecture arch)
if (arch == Abi::Architecture::Mcs51Architecture if (arch == Abi::Architecture::Mcs51Architecture
|| arch == Abi::Architecture::AvrArchitecture || arch == Abi::Architecture::AvrArchitecture
|| arch == Abi::Architecture::Msp430Architecture || arch == Abi::Architecture::Msp430Architecture
|| arch == Abi::Architecture::V850Architecture) { || arch == Abi::Architecture::V850Architecture
|| arch == Abi::Architecture::K78Architecture) {
return Abi::BinaryFormat::UbrofFormat; return Abi::BinaryFormat::UbrofFormat;
} }
return Abi::BinaryFormat::UnknownFormat; return Abi::BinaryFormat::UnknownFormat;
@@ -461,6 +464,7 @@ QList<ToolChain *> IarToolChainFactory::autoDetect(const QList<ToolChain *> &alr
{{"EWV850"}, {"\\v850\\bin\\iccv850.exe"}}, {{"EWV850"}, {"\\v850\\bin\\iccv850.exe"}},
{{"EWRH850"}, {"\\rh850\\bin\\iccrh850.exe"}}, {{"EWRH850"}, {"\\rh850\\bin\\iccrh850.exe"}},
{{"EWRX"}, {"\\rx\\bin\\iccrx.exe"}}, {{"EWRX"}, {"\\rx\\bin\\iccrx.exe"}},
{{"EW78K"}, {"\\78k\\bin\\icc78k.exe"}},
}; };
QSettings registry(kRegistryNode, QSettings::NativeFormat); QSettings registry(kRegistryNode, QSettings::NativeFormat);

View File

@@ -731,6 +731,8 @@ QString Abi::toString(const Architecture &a)
return QLatin1String("rh850"); return QLatin1String("rh850");
case RxArchitecture: case RxArchitecture:
return QLatin1String("rx"); return QLatin1String("rx");
case K78Architecture:
return QLatin1String("78k");
case UnknownArchitecture: case UnknownArchitecture:
Q_FALLTHROUGH(); Q_FALLTHROUGH();
default: default:
@@ -883,6 +885,8 @@ Abi::Architecture Abi::architectureFromString(const QStringRef &a)
return Rh850Architecture; return Rh850Architecture;
if (a == "rx") if (a == "rx")
return RxArchitecture; return RxArchitecture;
if (a == "78k")
return K78Architecture;
else if (a == "xtensa") else if (a == "xtensa")
return XtensaArchitecture; return XtensaArchitecture;
if (a == "asmjs") if (a == "asmjs")

View File

@@ -67,6 +67,7 @@ public:
V850Architecture, V850Architecture,
Rh850Architecture, Rh850Architecture,
RxArchitecture, RxArchitecture,
K78Architecture,
UnknownArchitecture UnknownArchitecture
}; };