summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authorMatthew Bauer <mjbauer95@gmail.com>2018-10-19 11:47:43 -0500
committerMatthew Bauer <mjbauer95@gmail.com>2018-10-29 14:34:10 -0500
commit52dbd3380e0e9328d69c4abaae2d28b3e7e76bce (patch)
tree862539305954b1256792d0addeae9a4528014e56 /lib
parent8db71d9d773956d41778b88d88ead126a0138e67 (diff)
downloadnixlib-52dbd3380e0e9328d69c4abaae2d28b3e7e76bce.tar
nixlib-52dbd3380e0e9328d69c4abaae2d28b3e7e76bce.tar.gz
nixlib-52dbd3380e0e9328d69c4abaae2d28b3e7e76bce.tar.bz2
nixlib-52dbd3380e0e9328d69c4abaae2d28b3e7e76bce.tar.lz
nixlib-52dbd3380e0e9328d69c4abaae2d28b3e7e76bce.tar.xz
nixlib-52dbd3380e0e9328d69c4abaae2d28b3e7e76bce.tar.zst
nixlib-52dbd3380e0e9328d69c4abaae2d28b3e7e76bce.zip
systems/parse.nix: support weird system configs
There are some weird ones out there that don’t follow any pattern:

- arm-none-eabi
- powerpc-none-eabi
- aarch64-none-elf
Diffstat (limited to 'lib')
-rw-r--r--lib/systems/parse.nix8
1 files changed, 8 insertions, 0 deletions
diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix
index 058d4bed9085..a390a098c60f 100644
--- a/lib/systems/parse.nix
+++ b/lib/systems/parse.nix
@@ -119,6 +119,7 @@ rec {
     apple = {};
     pc = {};
 
+    none = {};
     unknown = {};
   };
 
@@ -202,6 +203,7 @@ rec {
     cygnus       = {};
     msvc         = {};
     eabi         = {};
+    elf         = {};
 
     androideabi  = {};
     android      = {
@@ -263,6 +265,8 @@ rec {
     "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   { cpu = elemAt l 0;                      kernel = elemAt l 1;                   };
     "3" = # Awkwards hacks, beware!
       if elemAt l 1 == "apple"
@@ -273,6 +277,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)}