diff options
Diffstat (limited to 'lib/systems/parse.nix')
-rw-r--r-- | lib/systems/parse.nix | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix index bb26c93f3d7a..db97a5c4b33b 100644 --- a/lib/systems/parse.nix +++ b/lib/systems/parse.nix @@ -101,6 +101,8 @@ rec { wasm32 = { bits = 32; significantByte = littleEndian; family = "wasm"; }; wasm64 = { bits = 64; significantByte = littleEndian; family = "wasm"; }; + + avr = { bits = 8; family = "avr"; }; }; ################################################################################ @@ -117,6 +119,7 @@ rec { apple = {}; pc = {}; + none = {}; unknown = {}; }; @@ -200,6 +203,7 @@ rec { cygnus = {}; msvc = {}; eabi = {}; + elf = {}; androideabi = {}; android = { @@ -255,9 +259,16 @@ rec { setType "system" components; mkSkeletonFromList = l: { + "1" = if elemAt l 0 == "avr" + then { cpu = elemAt l 0; kernel = "none"; abi = "unknown"; } + else throw "Target specification with 1 components is ambiguous"; "2" = # We only do 2-part hacks for things Nix already supports if elemAt l 1 == "cygwin" then { cpu = elemAt l 0; kernel = "windows"; abi = "cygnus"; } + else if (elemAt l 1 == "eabi") + then { cpu = elemAt l 0; vendor = "none"; kernel = "none"; abi = elemAt l 1; } + else if (elemAt l 1 == "elf") + then { cpu = elemAt l 0; vendor = "none"; kernel = "none"; abi = elemAt l 1; } else { cpu = elemAt l 0; kernel = elemAt l 1; }; "3" = # Awkwards hacks, beware! if elemAt l 1 == "apple" @@ -268,6 +279,10 @@ rec { then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = "windows"; abi = "gnu"; } else if hasPrefix "netbsd" (elemAt l 2) then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = elemAt l 2; } + else if (elemAt l 2 == "eabi") + then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = "none"; abi = elemAt l 2; } + else if (elemAt l 2 == "elf") + then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = "none"; abi = elemAt l 2; } else throw "Target specification with 3 components is ambiguous"; "4" = { cpu = elemAt l 0; vendor = elemAt l 1; kernel = elemAt l 2; abi = elemAt l 3; }; }.${toString (length l)} |