forked from qt-creator/qt-creator
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:
@@ -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 ¯os)
|
|||||||
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);
|
||||||
|
@@ -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")
|
||||||
|
@@ -65,6 +65,7 @@ public:
|
|||||||
Rl78Architecture,
|
Rl78Architecture,
|
||||||
C166Architecture,
|
C166Architecture,
|
||||||
V850Architecture,
|
V850Architecture,
|
||||||
|
Rh850Architecture,
|
||||||
UnknownArchitecture
|
UnknownArchitecture
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user