From 9f91fa02a6a3e6800dff5f80f061410e83aaeb28 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Tue, 24 Mar 2020 13:32:18 +0530 Subject: lib/systems: Add Genode platform definitions Add platform definitions for 64-bit ARM and x86. This is sufficient for for building Genode where a toolchain is provided as an overlay. Toolchain: git+https://git.sr.ht/~ehmry/genodepkgs?rev=14fc773ac9ecd2cbb30cb4612b284eee83d83546 --- lib/systems/default.nix | 1 + lib/systems/doubles.nix | 3 +++ lib/systems/inspect.nix | 1 + lib/systems/parse.nix | 3 +++ lib/tests/systems.nix | 5 +++-- 5 files changed, 11 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/systems/default.nix b/lib/systems/default.nix index 4ca932d17921..210674cc6399 100644 --- a/lib/systems/default.nix +++ b/lib/systems/default.nix @@ -65,6 +65,7 @@ rec { freebsd = "FreeBSD"; openbsd = "OpenBSD"; wasi = "Wasi"; + genode = "Genode"; }.${final.parsed.kernel.name} or null; # uname -p diff --git a/lib/systems/doubles.nix b/lib/systems/doubles.nix index 619b0427918d..a839b3d3d573 100644 --- a/lib/systems/doubles.nix +++ b/lib/systems/doubles.nix @@ -35,6 +35,8 @@ let "vc4-none" "js-ghcjs" + + "aarch64-genode" "x86_64-genode" ]; allParsed = map parse.mkSystemFromString all; @@ -68,6 +70,7 @@ in { unix = filterDoubles predicates.isUnix; wasi = filterDoubles predicates.isWasi; windows = filterDoubles predicates.isWindows; + genode = filterDoubles predicates.isGenode; embedded = filterDoubles predicates.isNone; diff --git a/lib/systems/inspect.nix b/lib/systems/inspect.nix index 01dcf0787dfa..90a1fb6d80c2 100644 --- a/lib/systems/inspect.nix +++ b/lib/systems/inspect.nix @@ -47,6 +47,7 @@ rec { isMinGW = { kernel = kernels.windows; abi = abis.gnu; }; isWasi = { kernel = kernels.wasi; }; isGhcjs = { kernel = kernels.ghcjs; }; + isGenode = { kernel = kernels.genode; }; isNone = { kernel = kernels.none; }; isAndroid = [ { abi = abis.android; } { abi = abis.androideabi; } ]; diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix index 6a02dbb51528..648e7c270240 100644 --- a/lib/systems/parse.nix +++ b/lib/systems/parse.nix @@ -279,6 +279,7 @@ rec { wasi = { execFormat = wasm; families = { }; }; windows = { execFormat = pe; families = { }; }; ghcjs = { execFormat = unknown; families = { }; }; + genode = { execFormat = elf; families = { }; }; } // { # aliases # 'darwin' is the kernel for all of them. We choose macOS by default. darwin = kernels.macos; @@ -395,6 +396,8 @@ rec { then { cpu = elemAt l 0; vendor = "unknown"; kernel = elemAt l 1; abi = elemAt l 2; } else if (elemAt l 2 == "ghcjs") then { cpu = elemAt l 0; vendor = "unknown"; kernel = elemAt l 2; } + else if hasPrefix "genode" (elemAt l 2) + then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = 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)} diff --git a/lib/tests/systems.nix b/lib/tests/systems.nix index dd2b9575fc2c..ea6e337937f9 100644 --- a/lib/tests/systems.nix +++ b/lib/tests/systems.nix @@ -12,16 +12,17 @@ let expected = lib.sort lib.lessThan y; }; in with lib.systems.doubles; lib.runTests { - testall = mseteq all (linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos ++ wasi ++ windows ++ embedded ++ js); + testall = mseteq all (linux ++ darwin ++ freebsd ++ openbsd ++ netbsd ++ illumos ++ wasi ++ windows ++ embedded ++ js ++ genode); testarm = mseteq arm [ "armv5tel-linux" "armv6l-linux" "armv6l-none" "armv7a-linux" "armv7l-linux" "arm-none" "armv7a-darwin" ]; testi686 = mseteq i686 [ "i686-linux" "i686-freebsd" "i686-netbsd" "i686-openbsd" "i686-cygwin" "i686-windows" "i686-none" "i686-darwin" ]; testmips = mseteq mips [ "mipsel-linux" ]; - testx86_64 = mseteq x86_64 [ "x86_64-linux" "x86_64-darwin" "x86_64-freebsd" "x86_64-openbsd" "x86_64-netbsd" "x86_64-cygwin" "x86_64-solaris" "x86_64-windows" "x86_64-none" ]; + testx86_64 = mseteq x86_64 [ "x86_64-linux" "x86_64-darwin" "x86_64-freebsd" "x86_64-genode" "x86_64-openbsd" "x86_64-netbsd" "x86_64-cygwin" "x86_64-solaris" "x86_64-windows" "x86_64-none" ]; testcygwin = mseteq cygwin [ "i686-cygwin" "x86_64-cygwin" ]; testdarwin = mseteq darwin [ "x86_64-darwin" "i686-darwin" "aarch64-darwin" "armv7a-darwin" ]; testfreebsd = mseteq freebsd [ "i686-freebsd" "x86_64-freebsd" ]; + testgenode = mseteq genode [ "aarch64-genode" "x86_64-genode" ]; testgnu = mseteq gnu (linux /* ++ kfreebsd ++ ... */); testillumos = mseteq illumos [ "x86_64-solaris" ]; testlinux = mseteq linux [ "aarch64-linux" "armv5tel-linux" "armv6l-linux" "armv7a-linux" "armv7l-linux" "i686-linux" "mipsel-linux" "riscv32-linux" "riscv64-linux" "x86_64-linux" "powerpc64le-linux" ]; -- cgit 1.4.1