BareMetal: Auto-detect IAR toolchain for Renesas RH850 architecture

This patch implements auto-detection for the RH850 toolchain,
provided by IAR Systems:

 * https://www.iar.com/iar-embedded-workbench/#!?architecture=RH850

Change-Id: I15f54026b052be7b84a96f9c43a32b83ea499f38
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Denis Shienkov
2020-04-28 14:48:27 +03:00
parent 04d0e09568
commit d5f107bb54
3 changed files with 13 additions and 2 deletions

View File

@@ -69,8 +69,10 @@ static bool compilerExists(const FilePath &compilerPath)
static QString cppLanguageOption(const FilePath &compiler) static QString cppLanguageOption(const FilePath &compiler)
{ {
const QString baseName = compiler.toFileInfo().baseName(); const QString baseName = compiler.toFileInfo().baseName();
if (baseName == "iccarm" || baseName == "iccrl78") if (baseName == "iccarm" || baseName == "iccrl78"
|| baseName == "iccrh850") {
return QString("--c++"); return QString("--c++");
}
if (baseName == "icc8051" || baseName == "iccavr" if (baseName == "icc8051" || baseName == "iccavr"
|| baseName == "iccstm8" || baseName == "icc430" || baseName == "iccstm8" || baseName == "icc430"
|| baseName == "iccv850") { || baseName == "iccv850") {
@@ -200,6 +202,8 @@ static Abi::Architecture guessArchitecture(const Macros &macros)
return Abi::Architecture::Rl78Architecture; return Abi::Architecture::Rl78Architecture;
if (macro.key == "__ICCV850__") if (macro.key == "__ICCV850__")
return Abi::Architecture::V850Architecture; return Abi::Architecture::V850Architecture;
if (macro.key == "__ICCRH850__")
return Abi::Architecture::Rh850Architecture;
} }
return Abi::Architecture::UnknownArchitecture; return Abi::Architecture::UnknownArchitecture;
} }
@@ -218,7 +222,8 @@ static Abi::BinaryFormat guessFormat(Abi::Architecture arch)
{ {
if (arch == Abi::Architecture::ArmArchitecture if (arch == Abi::Architecture::ArmArchitecture
|| arch == Abi::Architecture::Stm8Architecture || arch == Abi::Architecture::Stm8Architecture
|| arch == Abi::Architecture::Rl78Architecture) { || arch == Abi::Architecture::Rl78Architecture
|| arch == Abi::Architecture::Rh850Architecture) {
return Abi::BinaryFormat::ElfFormat; return Abi::BinaryFormat::ElfFormat;
} }
if (arch == Abi::Architecture::Mcs51Architecture if (arch == Abi::Architecture::Mcs51Architecture
@@ -451,6 +456,7 @@ QList<ToolChain *> IarToolChainFactory::autoDetect(const QList<ToolChain *> &alr
{{"EW430"}, {"\\430\\bin\\icc430.exe"}}, {{"EW430"}, {"\\430\\bin\\icc430.exe"}},
{{"EWRL78"}, {"\\rl78\\bin\\iccrl78.exe"}}, {{"EWRL78"}, {"\\rl78\\bin\\iccrl78.exe"}},
{{"EWV850"}, {"\\v850\\bin\\iccv850.exe"}}, {{"EWV850"}, {"\\v850\\bin\\iccv850.exe"}},
{{"EWRH850"}, {"\\rh850\\bin\\iccrh850.exe"}},
}; };
QSettings registry(kRegistryNode, QSettings::NativeFormat); QSettings registry(kRegistryNode, QSettings::NativeFormat);

View File

@@ -727,6 +727,8 @@ QString Abi::toString(const Architecture &a)
return QLatin1String("c166"); return QLatin1String("c166");
case V850Architecture: case V850Architecture:
return QLatin1String("v850"); return QLatin1String("v850");
case Rh850Architecture:
return QLatin1String("rh850");
case UnknownArchitecture: case UnknownArchitecture:
Q_FALLTHROUGH(); Q_FALLTHROUGH();
default: default:
@@ -875,6 +877,8 @@ Abi::Architecture Abi::architectureFromString(const QStringRef &a)
return C166Architecture; return C166Architecture;
if (a == "v850") if (a == "v850")
return V850Architecture; return V850Architecture;
if (a == "rh850")
return Rh850Architecture;
else if (a == "xtensa") else if (a == "xtensa")
return XtensaArchitecture; return XtensaArchitecture;
if (a == "asmjs") if (a == "asmjs")

View File

@@ -65,6 +65,7 @@ public:
Rl78Architecture, Rl78Architecture,
C166Architecture, C166Architecture,
V850Architecture, V850Architecture,
Rh850Architecture,
UnknownArchitecture UnknownArchitecture
}; };