diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/systems/default.nix | 35 | ||||
-rw-r--r-- | lib/systems/examples.nix | 6 | ||||
-rw-r--r-- | lib/systems/parse.nix | 5 |
3 files changed, 28 insertions, 18 deletions
diff --git a/lib/systems/default.nix b/lib/systems/default.nix index 0981122388bb1..074239b3fb6f1 100644 --- a/lib/systems/default.nix +++ b/lib/systems/default.nix @@ -84,20 +84,21 @@ let useLLVM = final.isFreeBSD || final.isOpenBSD; libc = - /**/ if final.isDarwin then "libSystem" - else if final.isMinGW then "msvcrt" - else if final.isWasi then "wasilibc" - else if final.isRedox then "relibc" - else if final.isMusl then "musl" - else if final.isUClibc then "uclibc" - else if final.isAndroid then "bionic" - else if final.isLinux /* default */ then "glibc" - else if final.isFreeBSD then "fblibc" - else if final.isOpenBSD then "oblibc" - else if final.isNetBSD then "nblibc" - else if final.isAvr then "avrlibc" - else if final.isGhcjs then null - else if final.isNone then "newlib" + /**/ if final.isDarwin then "libSystem" + else if final.isMinGW then "msvcrt" + else if final.isWasi then "wasilibc" + else if final.isWasm && !final.isWasi then null + else if final.isRedox then "relibc" + else if final.isMusl then "musl" + else if final.isUClibc then "uclibc" + else if final.isAndroid then "bionic" + else if final.isLinux /* default */ then "glibc" + else if final.isFreeBSD then "fblibc" + else if final.isOpenBSD then "oblibc" + else if final.isNetBSD then "nblibc" + else if final.isAvr then "avrlibc" + else if final.isGhcjs then null + else if final.isNone then "newlib" # TODO(@Ericson2314) think more about other operating systems else "native/impure"; # Choose what linker we wish to use by default. Someday we might also @@ -179,6 +180,7 @@ let (isAndroid || isGnu || isMusl # Linux (allows multiple libcs) || isDarwin || isSunOS || isOpenBSD || isFreeBSD || isNetBSD # BSDs || isCygwin || isMinGW # Windows + || isWasm # WASM ) && !isStatic; # The difference between `isStatic` and `hasSharedLibraries` is mainly the @@ -187,7 +189,7 @@ let # don't support dynamic linking, but don't get the `staticMarker`. # `pkgsStatic` sets `isStatic=true`, so `pkgsStatic.hostPlatform` always # has the `staticMarker`. - isStatic = final.isWasm || final.isRedox; + isStatic = final.isWasi || final.isRedox; # Just a guess, based on `system` inherit @@ -337,7 +339,8 @@ let if isList f then f else [ f ] ) else optional final.isUnix "unix" - ++ optional final.isWindows "windows"; + ++ optional final.isWindows "windows" + ++ optional final.isWasm "wasm"; # https://doc.rust-lang.org/reference/conditional-compilation.html#target_vendor vendor = let diff --git a/lib/systems/examples.nix b/lib/systems/examples.nix index 7e50266748434..178536efb0091 100644 --- a/lib/systems/examples.nix +++ b/lib/systems/examples.nix @@ -356,6 +356,12 @@ rec { useLLVM = true; }; + wasm32-unknown-none = { + config = "wasm32-unknown-none"; + rust.rustcTarget = "wasm32-unknown-unknown"; + useLLVM = true; + }; + # Ghcjs ghcjs = { # This triple is special to GHC/Cabal/GHCJS and not recognized by autotools diff --git a/lib/systems/parse.nix b/lib/systems/parse.nix index 1d7c95943a794..a2ee288f2c1f8 100644 --- a/lib/systems/parse.nix +++ b/lib/systems/parse.nix @@ -466,11 +466,12 @@ rec { } # cpu-vendor-os else if elemAt l 1 == "apple" || - elem (elemAt l 2) [ "wasi" "redox" "mmixware" "ghcjs" "mingw32" ] || + elem (elemAt l 2) [ "redox" "mmixware" "ghcjs" "mingw32" ] || hasPrefix "freebsd" (elemAt l 2) || hasPrefix "netbsd" (elemAt l 2) || hasPrefix "openbsd" (elemAt l 2) || - hasPrefix "genode" (elemAt l 2) + hasPrefix "genode" (elemAt l 2) || + hasPrefix "wasm32" (elemAt l 0) then { cpu = elemAt l 0; vendor = elemAt l 1; |