diff options
author | Ilan Joselevich <personal@ilanjoselevich.com> | 2024-06-14 18:41:23 +0300 |
---|---|---|
committer | Ilan Joselevich <personal@ilanjoselevich.com> | 2024-06-24 19:27:13 +0300 |
commit | 957116419de7e473dbc29ec92aae3ef083e2d163 (patch) | |
tree | 23d038716cff892c0d91c4f395e002b99270de1f | |
parent | 216728b751c07bb6066a2b9e26d7fd700723c338 (diff) |
lib.systems.examples: add wasm32-unknown-none
This system was added to use the nixpkgs cross compilation logic when compiling to wasm32-unknown-unknown in rust.
-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 d37ff720edce6..da48f6af9622d 100644 --- a/lib/systems/default.nix +++ b/lib/systems/default.nix @@ -84,20 +84,21 @@ let useLLVM = final.isFreeBSD; 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 79ec4461e4193..2dd9f1bc61c13 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; |