mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 06:53:01 +00:00
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.
This commit is contained in:
parent
216728b751
commit
957116419d
@ -84,20 +84,21 @@ let
|
|||||||
useLLVM = final.isFreeBSD;
|
useLLVM = final.isFreeBSD;
|
||||||
|
|
||||||
libc =
|
libc =
|
||||||
/**/ if final.isDarwin then "libSystem"
|
/**/ if final.isDarwin then "libSystem"
|
||||||
else if final.isMinGW then "msvcrt"
|
else if final.isMinGW then "msvcrt"
|
||||||
else if final.isWasi then "wasilibc"
|
else if final.isWasi then "wasilibc"
|
||||||
else if final.isRedox then "relibc"
|
else if final.isWasm && !final.isWasi then null
|
||||||
else if final.isMusl then "musl"
|
else if final.isRedox then "relibc"
|
||||||
else if final.isUClibc then "uclibc"
|
else if final.isMusl then "musl"
|
||||||
else if final.isAndroid then "bionic"
|
else if final.isUClibc then "uclibc"
|
||||||
else if final.isLinux /* default */ then "glibc"
|
else if final.isAndroid then "bionic"
|
||||||
else if final.isFreeBSD then "fblibc"
|
else if final.isLinux /* default */ then "glibc"
|
||||||
else if final.isOpenBSD then "oblibc"
|
else if final.isFreeBSD then "fblibc"
|
||||||
else if final.isNetBSD then "nblibc"
|
else if final.isOpenBSD then "oblibc"
|
||||||
else if final.isAvr then "avrlibc"
|
else if final.isNetBSD then "nblibc"
|
||||||
else if final.isGhcjs then null
|
else if final.isAvr then "avrlibc"
|
||||||
else if final.isNone then "newlib"
|
else if final.isGhcjs then null
|
||||||
|
else if final.isNone then "newlib"
|
||||||
# TODO(@Ericson2314) think more about other operating systems
|
# TODO(@Ericson2314) think more about other operating systems
|
||||||
else "native/impure";
|
else "native/impure";
|
||||||
# Choose what linker we wish to use by default. Someday we might also
|
# 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)
|
(isAndroid || isGnu || isMusl # Linux (allows multiple libcs)
|
||||||
|| isDarwin || isSunOS || isOpenBSD || isFreeBSD || isNetBSD # BSDs
|
|| isDarwin || isSunOS || isOpenBSD || isFreeBSD || isNetBSD # BSDs
|
||||||
|| isCygwin || isMinGW # Windows
|
|| isCygwin || isMinGW # Windows
|
||||||
|
|| isWasm # WASM
|
||||||
) && !isStatic;
|
) && !isStatic;
|
||||||
|
|
||||||
# The difference between `isStatic` and `hasSharedLibraries` is mainly the
|
# 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`.
|
# don't support dynamic linking, but don't get the `staticMarker`.
|
||||||
# `pkgsStatic` sets `isStatic=true`, so `pkgsStatic.hostPlatform` always
|
# `pkgsStatic` sets `isStatic=true`, so `pkgsStatic.hostPlatform` always
|
||||||
# has the `staticMarker`.
|
# has the `staticMarker`.
|
||||||
isStatic = final.isWasm || final.isRedox;
|
isStatic = final.isWasi || final.isRedox;
|
||||||
|
|
||||||
# Just a guess, based on `system`
|
# Just a guess, based on `system`
|
||||||
inherit
|
inherit
|
||||||
@ -337,7 +339,8 @@ let
|
|||||||
if isList f then f else [ f ]
|
if isList f then f else [ f ]
|
||||||
)
|
)
|
||||||
else optional final.isUnix "unix"
|
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
|
# https://doc.rust-lang.org/reference/conditional-compilation.html#target_vendor
|
||||||
vendor = let
|
vendor = let
|
||||||
|
@ -356,6 +356,12 @@ rec {
|
|||||||
useLLVM = true;
|
useLLVM = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
wasm32-unknown-none = {
|
||||||
|
config = "wasm32-unknown-none";
|
||||||
|
rust.rustcTarget = "wasm32-unknown-unknown";
|
||||||
|
useLLVM = true;
|
||||||
|
};
|
||||||
|
|
||||||
# Ghcjs
|
# Ghcjs
|
||||||
ghcjs = {
|
ghcjs = {
|
||||||
# This triple is special to GHC/Cabal/GHCJS and not recognized by autotools
|
# This triple is special to GHC/Cabal/GHCJS and not recognized by autotools
|
||||||
|
@ -466,11 +466,12 @@ rec {
|
|||||||
}
|
}
|
||||||
# cpu-vendor-os
|
# cpu-vendor-os
|
||||||
else if elemAt l 1 == "apple" ||
|
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 "freebsd" (elemAt l 2) ||
|
||||||
hasPrefix "netbsd" (elemAt l 2) ||
|
hasPrefix "netbsd" (elemAt l 2) ||
|
||||||
hasPrefix "openbsd" (elemAt l 2) ||
|
hasPrefix "openbsd" (elemAt l 2) ||
|
||||||
hasPrefix "genode" (elemAt l 2)
|
hasPrefix "genode" (elemAt l 2) ||
|
||||||
|
hasPrefix "wasm32" (elemAt l 0)
|
||||||
then {
|
then {
|
||||||
cpu = elemAt l 0;
|
cpu = elemAt l 0;
|
||||||
vendor = elemAt l 1;
|
vendor = elemAt l 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user