- `toRustTarget` and friends pulled out from rust tools into rust library. Since they don't depend on any packages they can be more widely useable. - `build-rust-package` gets its own directory - `fetch-cargo-tarball` gets its own directorymain
parent
3b0bff383f
commit
18ed048c7b
@ -0,0 +1,37 @@ |
||||
{ lib }: |
||||
|
||||
rec { |
||||
# https://doc.rust-lang.org/reference/conditional-compilation.html#target_arch |
||||
toTargetArch = platform: |
||||
if platform.isAarch32 then "arm" |
||||
else platform.parsed.cpu.name; |
||||
|
||||
# https://doc.rust-lang.org/reference/conditional-compilation.html#target_os |
||||
toTargetOs = platform: |
||||
if platform.isDarwin then "macos" |
||||
else platform.parsed.kernel.name; |
||||
|
||||
# Returns the name of the rust target, even if it is custom. Adjustments are |
||||
# because rust has slightly different naming conventions than we do. |
||||
toRustTarget = platform: let |
||||
inherit (platform.parsed) cpu vendor kernel abi; |
||||
cpu_ = platform.rustc.platform.arch or { |
||||
"armv7a" = "armv7"; |
||||
"armv7l" = "armv7"; |
||||
"armv6l" = "arm"; |
||||
"armv5tel" = "armv5te"; |
||||
"riscv64" = "riscv64gc"; |
||||
}.${cpu.name} or cpu.name; |
||||
vendor_ = platform.rustc.platform.vendor or { |
||||
"w64" = "pc"; |
||||
}.${vendor.name} or vendor.name; |
||||
in platform.rustc.config |
||||
or "${cpu_}-${vendor_}-${kernel.name}${lib.optionalString (abi.name != "unknown") "-${abi.name}"}"; |
||||
|
||||
# Returns the name of the rust target if it is standard, or the json file |
||||
# containing the custom target spec. |
||||
toRustTargetSpec = platform: |
||||
if (platform.rustc or {}) ? platform |
||||
then builtins.toFile (toRustTarget platform + ".json") (builtins.toJSON platform.rustc.platform) |
||||
else toRustTarget platform; |
||||
} |
Loading…
Reference in new issue