aboutsummaryrefslogtreecommitdiff
path: root/lib/systems
diff options
context:
space:
mode:
authorBen Siraphob <bensiraphob@gmail.com>2020-11-04 21:13:06 +0700
committerBen Siraphob <bensiraphob@gmail.com>2020-11-09 19:49:55 +0700
commit445dde63041d516195926d2a2358541f9fbc8b7e (patch)
tree713c0324323691be06cb95adba5e995dabbb60e1 /lib/systems
parentb52da4e64108eb1496c037b4ca0f347624e50d51 (diff)
Initial implementation of mmix cross-compile
Diffstat (limited to 'lib/systems')
-rw-r--r--lib/systems/doubles.nix3
-rw-r--r--lib/systems/examples.nix5
-rw-r--r--lib/systems/inspect.nix1
-rw-r--r--lib/systems/parse.nix33
4 files changed, 28 insertions, 14 deletions
diff --git a/lib/systems/doubles.nix b/lib/systems/doubles.nix
index 517a7296afd2..d8bfc48a96f8 100644
--- a/lib/systems/doubles.nix
+++ b/lib/systems/doubles.nix
@@ -36,6 +36,8 @@ let
"riscv64-none" "riscv32-none"
"vc4-none"
+ "mmix-mmixware"
+
"js-ghcjs"
"aarch64-genode" "i686-genode" "x86_64-genode"
@@ -56,6 +58,7 @@ in {
i686 = filterDoubles predicates.isi686;
x86_64 = filterDoubles predicates.isx86_64;
mips = filterDoubles predicates.isMips;
+ mmix = filterDoubles predicates.isMmix;
riscv = filterDoubles predicates.isRiscV;
vc4 = filterDoubles predicates.isVc4;
js = filterDoubles predicates.isJavaScript;
diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix
index 87c05a0b0524..c869429d3ae7 100644
--- a/lib/systems/examples.nix
+++ b/lib/systems/examples.nix
@@ -109,6 +109,11 @@ rec {
platform = platforms.riscv-multiplatform "32";
};
+ mmix = {
+ config = "mmix-unknown-mmixware";
+ libc = "newlib";
+ };
+
msp430 = {
config = "msp430-elf";
libc = "newlib";
diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix
index 8fa630572509..7adbc98f9a9d 100644
--- a/lib/systems/inspect.nix
+++ b/lib/systems/inspect.nix
@@ -17,6 +17,7 @@ rec {
isAarch32 = { cpu = { family = "arm"; bits = 32; }; };
isAarch64 = { cpu = { family = "arm"; bits = 64; }; };
isMips = { cpu = { family = "mips"; }; };
+ isMmix = { cpu = { family = "mmix"; }; };
isRiscV = { cpu = { family = "riscv"; }; };
isSparc = { cpu = { family = "sparc"; }; };
isWasm = { cpu = { family = "wasm"; }; };
diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix
index 6bd44a007466..6ba3c40c665a 100644
--- a/lib/systems/parse.nix
+++ b/lib/systems/parse.nix
@@ -93,6 +93,8 @@ rec {
mips64 = { bits = 64; significantByte = bigEndian; family = "mips"; };
mips64el = { bits = 64; significantByte = littleEndian; family = "mips"; };
+ mmix = { bits = 64; significantByte = bigEndian; family = "mmix"; };
+
powerpc = { bits = 32; significantByte = bigEndian; family = "power"; };
powerpc64 = { bits = 64; significantByte = bigEndian; family = "power"; };
powerpc64le = { bits = 64; significantByte = littleEndian; family = "power"; };
@@ -268,19 +270,20 @@ rec {
kernels = with execFormats; with kernelFamilies; setTypes types.openKernel {
# TODO(@Ericson2314): Don't want to mass-rebuild yet to keeping 'darwin' as
# the nnormalized name for macOS.
- macos = { execFormat = macho; families = { inherit darwin; }; name = "darwin"; };
- ios = { execFormat = macho; families = { inherit darwin; }; };
- freebsd = { execFormat = elf; families = { inherit bsd; }; };
- linux = { execFormat = elf; families = { }; };
- netbsd = { execFormat = elf; families = { inherit bsd; }; };
- none = { execFormat = unknown; families = { }; };
- openbsd = { execFormat = elf; families = { inherit bsd; }; };
- solaris = { execFormat = elf; families = { }; };
- wasi = { execFormat = wasm; families = { }; };
- redox = { execFormat = elf; families = { }; };
- windows = { execFormat = pe; families = { }; };
- ghcjs = { execFormat = unknown; families = { }; };
- genode = { execFormat = elf; families = { }; };
+ macos = { execFormat = macho; families = { inherit darwin; }; name = "darwin"; };
+ ios = { execFormat = macho; families = { inherit darwin; }; };
+ freebsd = { execFormat = elf; families = { inherit bsd; }; };
+ linux = { execFormat = elf; families = { }; };
+ netbsd = { execFormat = elf; families = { inherit bsd; }; };
+ none = { execFormat = unknown; families = { }; };
+ openbsd = { execFormat = elf; families = { inherit bsd; }; };
+ solaris = { execFormat = elf; families = { }; };
+ wasi = { execFormat = wasm; families = { }; };
+ redox = { execFormat = elf; families = { }; };
+ windows = { execFormat = pe; families = { }; };
+ ghcjs = { execFormat = unknown; families = { }; };
+ genode = { execFormat = elf; families = { }; };
+ mmixware = { execFormat = unknown; families = { }; };
} // { # aliases
# 'darwin' is the kernel for all of them. We choose macOS by default.
darwin = kernels.macos;
@@ -382,7 +385,7 @@ rec {
else if (elemAt l 1) == "elf"
then { cpu = elemAt l 0; vendor = "unknown"; kernel = "none"; abi = elemAt l 1; }
else { cpu = elemAt l 0; kernel = elemAt l 1; };
- "3" = # Awkwards hacks, beware!
+ "3" = # Awkward hacks, beware!
if elemAt l 1 == "apple"
then { cpu = elemAt l 0; vendor = "apple"; kernel = elemAt l 2; }
else if (elemAt l 1 == "linux") || (elemAt l 2 == "gnu")
@@ -393,6 +396,8 @@ rec {
then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = "wasi"; }
else if (elemAt l 2 == "redox")
then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = "redox"; }
+ else if (elemAt l 2 == "mmixware")
+ then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = "mmixware"; }
else if hasPrefix "netbsd" (elemAt l 2)
then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = elemAt l 2; }
else if (elem (elemAt l 2) ["eabi" "eabihf" "elf"])