From 0fcb031c250ffecf6abcc69b78ac7d1cc805de39 Mon Sep 17 00:00:00 2001 From: Ben Siraphob Date: Sun, 19 Apr 2026 08:10:34 -0700 Subject: [PATCH] lib/systems: add SH4 (SuperH) cross-compilation target Add sh4 CPU type (32-bit, little-endian, family "sh"), isSh4 predicate, "sh4-linux" system double, cross-compilation example (sh4-unknown-linux-gnu), linuxArch mapping to "sh", and test entry. --- lib/systems/default.nix | 2 ++ lib/systems/doubles.nix | 2 ++ lib/systems/examples.nix | 4 ++++ lib/systems/inspect.nix | 5 +++++ lib/systems/parse.nix | 6 ++++++ lib/tests/systems.nix | 1 + 6 files changed, 20 insertions(+) diff --git a/lib/systems/default.nix b/lib/systems/default.nix index eb06f12f25a0..f60ece0c8f5c 100644 --- a/lib/systems/default.nix +++ b/lib/systems/default.nix @@ -300,6 +300,8 @@ let "powerpc" else if final.isRiscV then "riscv" + else if final.isSh4 then + "sh" else if final.isS390 then "s390" else if final.isLoongArch64 then diff --git a/lib/systems/doubles.nix b/lib/systems/doubles.nix index 10d72f0f6c10..e9fa908dfc88 100644 --- a/lib/systems/doubles.nix +++ b/lib/systems/doubles.nix @@ -40,6 +40,7 @@ let "i686-linux" "loongarch64-linux" "m68k-linux" + "sh4-linux" "microblaze-linux" "microblazeel-linux" "mips-linux" @@ -145,6 +146,7 @@ in or1k = filterDoubles predicates.isOr1k; m68k = filterDoubles predicates.isM68k; arc = filterDoubles predicates.isArc; + sh4 = filterDoubles predicates.isSh4; s390 = filterDoubles predicates.isS390; s390x = filterDoubles predicates.isS390x; loongarch64 = filterDoubles predicates.isLoongArch64; diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix index 274d6a1af729..14693ca44e97 100644 --- a/lib/systems/examples.nix +++ b/lib/systems/examples.nix @@ -243,6 +243,10 @@ rec { config = "arc-unknown-linux-gnu"; }; + sh4 = { + config = "sh4-unknown-linux-gnu"; + }; + s390 = { config = "s390-unknown-linux-gnu"; }; diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix index 499f0ce774d5..36a4036f210a 100644 --- a/lib/systems/inspect.nix +++ b/lib/systems/inspect.nix @@ -234,6 +234,11 @@ rec { family = "arc"; }; }; + isSh4 = { + cpu = { + family = "sh"; + }; + }; isS390 = { cpu = { family = "s390"; diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix index 974bcbdc2465..626b5bcb41ac 100644 --- a/lib/systems/parse.nix +++ b/lib/systems/parse.nix @@ -284,6 +284,12 @@ rec { family = "m68k"; }; + sh4 = { + bits = 32; + significantByte = littleEndian; + family = "sh"; + }; + powerpc = { bits = 32; significantByte = bigEndian; diff --git a/lib/tests/systems.nix b/lib/tests/systems.nix index 9348e37a9d7b..e912d18cc73c 100644 --- a/lib/tests/systems.nix +++ b/lib/tests/systems.nix @@ -171,6 +171,7 @@ lib.runTests ( "i686-linux" "loongarch64-linux" "m68k-linux" + "sh4-linux" "microblaze-linux" "microblazeel-linux" "mips-linux"