mirror of
https://github.com/NixOS/nix.git
synced 2025-11-08 19:46:02 +01:00
meson: Fix nix_system_cpu for MIPS and 32 bit ARM systems
Prior patches in54dc5314e8and6db6190002fixed the default system double for i686 and ppc/ppc64. This also patch also covers 32 bit arm and mips. ARM cpu names are taken from host_machine.cpu() for a lack of a better option, but host_machine.cpu_family() is preferred, since that is supposed to be somewhat standard for cross files. Endianness is handled correctly by looking at host_machine.endian(). This also updates the documentation to be up to date to how system cpu is translated from the host_machine specification.
This commit is contained in:
parent
7f4acb9f10
commit
60d124b36e
2 changed files with 23 additions and 10 deletions
|
|
@ -215,14 +215,18 @@ nix build .#nix-everything-x86_64-w64-mingw32
|
||||||
|
|
||||||
For historic reasons and backward-compatibility, some CPU and OS identifiers are translated as follows:
|
For historic reasons and backward-compatibility, some CPU and OS identifiers are translated as follows:
|
||||||
|
|
||||||
| `config.guess` | Nix |
|
| `host_machine.cpu_family()` | `host_machine.endian()` | Nix |
|
||||||
|----------------------------|---------------------|
|
|-----------------------------|-------------------------|---------------------|
|
||||||
| `amd64` | `x86_64` |
|
| `x86` | | `i686` |
|
||||||
| `i*86` | `i686` |
|
| `arm` | | `host_machine.cpu()`|
|
||||||
| `arm6` | `arm6l` |
|
| `ppc` | `little` | `powerpcle` |
|
||||||
| `arm7` | `arm7l` |
|
| `ppc64` | `little` | `powerpc64le` |
|
||||||
| `linux-gnu*` | `linux` |
|
| `ppc` | `big` | `powerpc` |
|
||||||
| `linux-musl*` | `linux` |
|
| `ppc64` | `big` | `powerpc64` |
|
||||||
|
| `mips` | `little` | `mipsel` |
|
||||||
|
| `mips64` | `little` | `mips64el` |
|
||||||
|
| `mips` | `big` | `mips` |
|
||||||
|
| `mips64` | `big` | `mips64` |
|
||||||
|
|
||||||
## Compilation environments
|
## Compilation environments
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,19 @@
|
||||||
powerpc_system_cpus = [ 'ppc64', 'ppc' ]
|
# This attempts to translate meson cpu_family and cpu_name specified via
|
||||||
|
# --cross-file [1] into a nix *system double*. Nixpkgs mostly respects ([2]) the
|
||||||
|
# conventions outlined in [1].
|
||||||
|
#
|
||||||
|
# [1]: https://mesonbuild.com/Reference-tables.html#cpu-families
|
||||||
|
# [2]: https://github.com/NixOS/nixpkgs/blob/master/pkgs/build-support/lib/meson.nix
|
||||||
|
|
||||||
nix_system_cpu = {'ppc64' : 'powerpc64', 'ppc' : 'powerpc', 'x86' : 'i686'}.get(
|
nix_system_cpu = {'ppc64' : 'powerpc64', 'ppc' : 'powerpc', 'x86' : 'i686'}.get(
|
||||||
host_machine.cpu_family(),
|
host_machine.cpu_family(),
|
||||||
host_machine.cpu_family(),
|
host_machine.cpu_family(),
|
||||||
)
|
)
|
||||||
|
|
||||||
if powerpc_system_cpus.contains(host_machine.cpu_family()) and host_machine.endian() == 'little'
|
if (host_machine.cpu_family() in [ 'ppc64', 'ppc' ]) and host_machine.endian() == 'little'
|
||||||
nix_system_cpu += 'le'
|
nix_system_cpu += 'le'
|
||||||
|
elif host_machine.cpu_family() in [ 'mips64', 'mips' ] and host_machine.endian() == 'little'
|
||||||
|
nix_system_cpu += 'el'
|
||||||
|
elif host_machine.cpu_family() == 'arm'
|
||||||
|
nix_system_cpu = host_machine.cpu()
|
||||||
endif
|
endif
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue