aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2021-01-25 18:05:42 +0300
committerDenis Shienkov <denis.shienkov@gmail.com>2021-01-26 15:41:41 +0000
commitdd07178bccc317d588b8738b60d04ca7896b0ade (patch)
tree58c78bbad6ddb3ef2f29cd673e5b0b7e31d14c22
parent3fbff749c6e1a396fd4e03f6287f5180ff09c1f0 (diff)
baremetal: Add support for HCS08 architectures to IAR toolchain
This patch adds the HCS08 architectures, provided by Freescale Semiconductor: * https://en.wikipedia.org/wiki/Motorola_S08 Change-Id: Idd668e30bfeb69e588b93b15131e741924b66f40 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--doc/reference/modules/qbs-module.qdoc3
-rw-r--r--share/qbs/modules/cpp/iar.js22
-rw-r--r--src/app/qbs-setup-toolchains/iarewprobe.cpp8
3 files changed, 26 insertions, 7 deletions
diff --git a/doc/reference/modules/qbs-module.qdoc b/doc/reference/modules/qbs-module.qdoc
index 9f8db9f33..3cea35217 100644
--- a/doc/reference/modules/qbs-module.qdoc
+++ b/doc/reference/modules/qbs-module.qdoc
@@ -335,6 +335,9 @@
\li 16-bit compact RISC architecture microcontroller family
developed by National Semiconductor
\row
+ \li \c{"hcs8"}
+ \li 8-bit HC08 and S08 microcontroller family from Freescale Semiconductor
+ \row
\li \c{"hcs12"}
\li 16-bit HC12 and S12 microcontroller family from Freescale Semiconductor
\row
diff --git a/share/qbs/modules/cpp/iar.js b/share/qbs/modules/cpp/iar.js
index 2928aa2f8..2e44a2514 100644
--- a/share/qbs/modules/cpp/iar.js
+++ b/share/qbs/modules/cpp/iar.js
@@ -43,7 +43,8 @@ function supportXLinker(architecture) {
|| architecture === "msp430" || architecture === "v850"
|| architecture === "m68k" || architecture === "m32c"
|| architecture === "r32c" || architecture === "m16c"
- || architecture === "cr16" || architecture === "hcs12";
+ || architecture === "cr16" || architecture === "hcs12"
+ || architecture === "hcs8";
}
function supportILinker(architecture) {
@@ -59,7 +60,8 @@ function supportXArchiver(architecture) {
|| architecture === "78k" || architecture === "avr32"
|| architecture === "m68k" || architecture === "m32c"
|| architecture === "r32c" || architecture === "m16c"
- || architecture === "cr16" || architecture === "hcs12";
+ || architecture === "cr16" || architecture === "hcs12"
+ || architecture === "hcs8";
}
function supportIArchiver(architecture) {
@@ -96,6 +98,8 @@ function architectureCode(architecture) {
return "45";
case "hcs12":
return "12";
+ case "hcs8":
+ return "78";
case "rh850": case "rl78": case "rx": case "stm8": case "sh": case "riscv":
return "";
default:
@@ -145,6 +149,8 @@ function compilerName(qbs) {
return "icccr16c";
else if (architecture === "hcs12")
return "icchcs12";
+ else if (architecture === "hcs8")
+ return "iccs08";
throw "Unable to deduce compiler name for unsupported architecture: '"
+ architecture + "'";
}
@@ -189,6 +195,8 @@ function assemblerName(qbs) {
return "acr16c";
else if (architecture === "hcs12")
return "ahcs12";
+ else if (architecture === "hcs8")
+ return "as08";
throw "Unable to deduce assembler name for unsupported architecture: '"
+ architecture + "'";
}
@@ -315,6 +323,8 @@ function guessArchitecture(macros) {
return "cr16";
else if (macros["__ICCHCS12__"] === "1")
return "hcs12";
+ else if (macros["__ICCS08__"] === "1")
+ return "hcs8";
}
function guessEndianness(macros) {
@@ -335,7 +345,8 @@ function guessVersion(macros, architecture)
|| architecture === "rh850" || architecture === "v850" || architecture === "78k"
|| architecture === "avr32" || architecture === "sh" || architecture === "riscv"
|| architecture === "m68k" || architecture === "m32c" || architecture === "r32c"
- || architecture === "m16c" || architecture === "cr16" || architecture === "hcs12") {
+ || architecture === "m16c" || architecture === "cr16" || architecture === "hcs12"
+ || architecture === "hcs8") {
return { major: parseInt(version / 100),
minor: parseInt(version % 100),
patch: 0 }
@@ -596,7 +607,7 @@ function compilerFlags(project, product, input, outputs, explicitlyDependsOn) {
args.push("--no_warnings");
break;
case "all":
- if (architecture !== "78k" && architecture !== "hcs12") {
+ if (architecture !== "78k" && architecture !== "hcs12" && architecture !== "hcs8") {
if (architecture !== "avr32" && architecture !== "r32c"
&& architecture !== "sh" && architecture !== "m16c") {
args.push("--deprecated_feature_warnings="
@@ -704,7 +715,8 @@ function assemblerFlags(project, product, input, outputs, explicitlyDependsOn) {
|| architecture === "rx" || architecture === "rh850"
|| architecture === "avr32" || architecture === "sh"
|| architecture === "riscv" || architecture === "m68k"
- || architecture === "r32c" || architecture === "cr16") {
+ || architecture === "r32c" || architecture === "cr16"
+ || architecture === "hcs8") {
// Silent output generation flag.
args.push("--silent");
// Warning level flags.
diff --git a/src/app/qbs-setup-toolchains/iarewprobe.cpp b/src/app/qbs-setup-toolchains/iarewprobe.cpp
index 8614f4818..63d32bfc3 100644
--- a/src/app/qbs-setup-toolchains/iarewprobe.cpp
+++ b/src/app/qbs-setup-toolchains/iarewprobe.cpp
@@ -66,7 +66,7 @@ static QStringList knownIarCompilerNames()
QStringLiteral("iccriscv"), QStringLiteral("icccf"),
QStringLiteral("iccm32c"), QStringLiteral("iccr32c"),
QStringLiteral("iccm16c"), QStringLiteral("icccr16c"),
- QStringLiteral("icchcs12")};
+ QStringLiteral("icchcs12"), QStringLiteral("iccs08")};
}
static QString guessIarArchitecture(const QFileInfo &compiler)
@@ -110,6 +110,8 @@ static QString guessIarArchitecture(const QFileInfo &compiler)
return QStringLiteral("cr16");
if (baseName == QLatin1String("icchcs12"))
return QStringLiteral("hcs12");
+ if (baseName == QLatin1String("iccs08"))
+ return QStringLiteral("hcs8");
return {};
}
@@ -194,7 +196,8 @@ static Version dumpIarCompilerVersion(const QFileInfo &compiler)
|| arch == QLatin1String("r32c")
|| arch == QLatin1String("m16c")
|| arch == QLatin1String("rc16")
- || arch == QLatin1String("hcs12")) {
+ || arch == QLatin1String("hcs12")
+ || arch == QLatin1String("hcs8")) {
return Version{verCode / 100, verCode % 100};
}
@@ -254,6 +257,7 @@ static std::vector<ToolchainInstallInfo> installedIarsFromRegistry()
{QStringLiteral("EWM16C"), QStringLiteral("/m16c/bin/iccm16c.exe")},
{QStringLiteral("EWCR16C"), QStringLiteral("/cr16c/bin/icccr16c.exe")},
{QStringLiteral("EWHCS12"), QStringLiteral("/hcs12/bin/icchcs12.exe")},
+ {QStringLiteral("EWS08"), QStringLiteral("/s08/bin/iccs08.exe")},
};
QSettings registry(QLatin1String(kRegistryNode), QSettings::NativeFormat);