Sergei Trofimovich
34e468dc42
lib/systems: add minimal s390x-linux cross-compile support
...
Tested basic functionality as:
$ nix-build --arg crossSystem '{ config = "s390x-unknown-linux-gnu"; }' -A re2c
$ file ./result/bin/re2c
$ ./result/bin/re2c: ELF 64-bit MSB executable, IBM S/390, version 1 (SYSV),
dynamically linked, interpreter ...-gnu-2.33-50/lib/ld64.so.1, for GNU/Linux 2.6.32, not stripped
$ qemu-s390x ./result/bin/re2c --version
re2c 2.2
2021-09-09 10:58:47 +00:00
Andrew Childs
755d980440
darwin: use "11.0" as sdk and minimum version on aarch64-darwin
2021-05-17 00:27:03 +09:00
John Ericson
18c38f8aee
treewide: All the linker to be chosen independently
...
This will begin the process of breaking up the `useLLVM` monolith. That
is good in general, but I hope will be good for NetBSD and Darwin in
particular.
Co-authored-by: sterni <sternenseemann@systemli.org>
2021-05-14 21:29:51 +00:00
Andrew Childs
6c4ce7960e
bintools-wrapper, cc-wrapper: parameterize darwin min version variable
...
These variables are the ones that the standard toolchain uses, so we
should use those and not always use MACOSX_DEPLOYMENT_TARGET.
See 236a426c12/cctools/ld64/src/ld/PlatformSupport.cpp (L54-L55)
2021-04-11 09:47:10 +09:00
Andrew Childs
44f09ccabf
darwin: move deployment target and sdk version to platform config
2021-03-26 15:10:22 +09:00
Andrew Childs
1303257d88
lib/systems: add darwinArch
2021-03-02 17:13:15 +09:00
Ryan Burns
8baac2af75
lib/systems: fix linuxArch for power + riscv
...
Looks like these got left behind in the
kernelArch -> linuxArch migration.
Fixes:
* pkgsCross.powernv.linuxHeaders
* pkgsCross.riscv64.linuxHeaders
* pkgsCross.riscv32.linuxHeaders
and dependees
2021-01-25 17:57:05 -08:00
John Ericson
9c213398b3
lib: Clean up how linux and gcc config is specified
...
Second attempt of 8929989614589ee3acd070a6409b2b9700c92d65; see that
commit for details.
This reverts commit 0bc275e634
.
2021-01-23 10:01:28 -05:00
Jonathan Ringer
0bc275e634
Revert "lib: Clean up how linux and gcc config is specified"
...
This is a stdenv-rebuild, and should not be merged
into master
This reverts commit 8929989614
.
2021-01-22 14:07:06 -08:00
John Ericson
8929989614
lib: Clean up how linux and gcc config is specified
...
The `platform` field is pointless nesting: it's just stuff that happens
to be defined together, and that should be an implementation detail.
This instead makes `linux-kernel` and `gcc` top level fields in platform
configs. They join `rustc` there [all are optional], which was put there
and not in `platform` in anticipation of a change like this.
`linux-kernel.arch` in particular also becomes `linuxArch`, to match the
other `*Arch`es.
The next step after is this to combine the *specific* machines from
`lib.systems.platforms` with `lib.systems.examples`, keeping just the
"multiplatform" ones for defaulting.
2021-01-21 22:44:09 -05:00
Ben Siraphob
b77ca83282
lib/systems: add emulator for mmix
2020-12-31 13:22:12 +07:00
Linus Heckemann
2ee35e1fce
lib/systems: fix kernelArch for x86_64
...
IA64 (Itanium) is something completely different and certainly not
what we want! x86_64 code lives in arch/x86 just like "classic" x86.
2020-12-17 11:10:38 +01:00
John Ericson
40e7be11c8
lib.systems.platforms: Make selection more flexible
...
We dont have to match on exact strings if we get accessed to `parsed`.
Co-authored-by: Matthew Bauer <mjbauer95@gmail.com>
2020-11-29 00:03:45 +00:00
John Ericson
1965a241fc
Merge pull request #61019 from volth/gcc.arch-amd
...
platform.gcc.arch: support for AMD CPUs
2020-09-01 22:31:16 -04:00
Dmitry Bogatov
55195119d5
Distinguish pkgsStatic from pkgsMusl via stdenv.targetPlatform
...
This change allows derivations to distinguish dynamic musl build and
static musl build in cases where upstream build system can't detect it
by itself.
2020-08-27 18:36:34 -04:00
volth
cf7b63df5b
gcc.arch: refactor, move tables under lib/
2020-08-05 11:18:26 +00:00
Aaron Janse
60fd049b65
redox: add as target
2020-07-21 13:11:36 -07:00
Emery Hemingway
9f91fa02a6
lib/systems: Add Genode platform definitions
...
Add platform definitions for 64-bit ARM and x86. This is sufficient for
for building Genode where a toolchain is provided as an overlay.
Toolchain: git+https://git.sr.ht/~ehmry/genodepkgs?rev=14fc773ac9ecd2cbb30cb4612b284eee83d83546
2020-03-24 20:41:21 +05:30
John Ericson
2682170f21
Merge pull request #80814 from matthewbauer/default-newlib-for-none
...
lib/systems: Assume newlib when no kernel and no libc is provided
2020-02-22 15:36:03 -05:00
Matthew Bauer
8009c20711
lib/systems: Assume newlib when no kernel and no libc is provided
...
newlib is the default for most tools when no kernel is provided. Other
exist, but this seems like a safe default.
2020-02-22 12:37:46 -05:00
Chuck
a7835b936e
lib.systems.elaborate: isArm -> isAarch32
...
This is the last reference to isArm. isArm is deprecated after 18.03.
This substitution was performed tree-wide in #37401 .
2020-02-05 10:56:14 -08:00
Michael Bishop
4aa1ffae04
initial implementation of vc4 cross-compile
2019-11-19 22:19:15 -04:00
oxalica
c98da73802
lib.systems: remove redundant mapping
2019-11-04 12:13:30 +08:00
oxalica
955d032b47
lib.systems: handle mips family properly
2019-11-03 22:10:06 +08:00
volth
35d68ef143
treewide: remove redundant quotes
2019-08-26 21:40:19 +00:00
Matthew Bauer
635b762569
systems: allow passing in string for cross/localSystem
...
This makes things a little bit more convenient. Just pass in like:
$ nix-build ’<nixpkgs>’ -A hello --argstr localSystem x86_64-linux --argstr crossSystem aarch64-linux
2019-06-04 11:17:25 -04:00
Matthew Bauer
40271ae138
systems: remove forMeta
...
This is unused now.
2019-06-04 11:09:43 -04:00
Matthew Bauer
dbb94b984f
wasmtime: init and use for emulation
...
This isn’t really an "emulator" but it’s the closest concept we have
right now.
2019-04-23 21:48:57 -04:00
Matthew Bauer
9abff4af4f
wasm: init cross target
...
Adds pkgsCross.wasm32 and pkgsCross.wasm64. Use it to build Nixpkgs
with a WebAssembly toolchain.
stdenv/cross: use static overlay on isWasm
isWasm doesn’t make sense dynamically linked.
2019-04-23 21:48:57 -04:00
Matthew Bauer
d8934feba1
kernel-headers: infer ARCH from config triple
...
This makes us less reliant on the systems/examples.nix. You should be
able to cross compile with just your triple:
$ nix build --arg crossSystem '{ config = "armv6l-unknown-linux-gnueabi"; }' stdenv
2019-04-19 14:53:48 -04:00
Matthew Bauer
5eea658778
systems: correct qemu architectures
...
ppc64le and ppc64 are different targets in the configure script. We
can’t use the same one.
TODO: canonicalize similar ones based on qemu’s configure script.
2019-04-19 12:03:56 -04:00
Matthew Bauer
23560ea057
systems: fix emulator identity
...
Squashed to fix shell quoting, thanks @Ericson2314
2019-04-19 12:03:44 -04:00
Vladimír Čunát
2771375d6e
Merge branch 'master' into staging-next
...
Hydra nixpkgs: ?compare=1512490
2019-04-02 20:56:53 +02:00
Aaron Lindsay
1c7bb464d9
msp430: include vendor headers with stdenv
2019-03-25 20:39:51 -07:00
Frederik Rietdijk
205e0fc5bd
Merge staging-next into staging
2019-03-01 09:22:21 +01:00
Matthew Bauer
8e25da0beb
cross/tests: add llvm-based tests
2019-02-26 19:46:24 -05:00
Matthew Bauer
aab8c7ba43
netbsd: add cross target
2019-02-26 15:55:47 -05:00
Matthew Bauer
20a4bbe23b
systems: add “emultator” for wasm
...
v8 can run any wasm bytecode
2019-02-25 20:07:43 -05:00
Matthew Bauer
f455a07f13
systems: add isCompatible handling
2019-02-21 22:17:51 -05:00
Matthew Bauer
bf041c3f1d
systems/default.nix: wasm in platform.uname.system
...
This adds the "Wasm" system to platform.uname.system. This is used in CMake infrastructure.
2019-01-27 17:29:23 -05:00
Jörg Thalheim
554851e689
platform.emulator: fix non-x86 systems
2018-12-12 08:00:07 +00:00
Matthew Bauer
9c8fd41224
treewide: add emulator to platform
...
You can use stdenv.hostPlatform.emulator to get an executable that
runs cross-built binaries. This could be any emulator. For instance,
we use QEMU to emulate Linux targets and Wine to emulate Windows
targets. To work with qemu, we need to support custom targets.
I’ve reworked the cross tests in pkgs/test/cross to use this
functionality.
Also, I’ve used talloc to cross-execute with the emulator. There
appears to be a cross-execute for all waf builds. In the future, it
would be nice to set this for all waf builds.
Adds stdenv.hostPlatform.qemuArch attrbute to get the qemuArch for
each platform.
2018-11-29 19:15:30 -06:00
Matthew Bauer
72e3b2a662
systems: add avrlibc for avr systems
2018-10-29 14:34:09 -05:00
Matthew Bauer
45cc6e2a42
lib/systems: use lookup for uname.system
...
This is a little bit cleaner and avoids the if ... else if ... chain.
2018-10-17 14:43:49 -05:00
Matthew Bauer
0e0894c37d
lib/systems: add uname attrs
2018-10-16 21:48:43 -05:00
Matthew Bauer
0bfffbc5e1
xcode: add xcodePlatform to system
...
This give us a little bit more control over what target we are using.
Eventually we can target other things like WatchOS or MacOS.
2018-06-25 22:18:23 -04:00
John Ericson
58b2e875c2
lib/systems: Prohibit "gnu" ABI (*-gnu) with 32-bit ARM
...
It is ambiguous, and therefore banned within GCC.
2018-05-10 15:05:23 -04:00
John Ericson
b3ef322770
Merge commit '70963b382f3f820ba6d3bc3b3aaf50a2957ec1ff' into uclibc
2018-05-10 00:18:51 -04:00
John Ericson
e42a7a5c0b
lib/systems: Add uClibc just like MUSL
2018-05-09 23:39:23 -04:00
Ken Micklas
ef3db7d14c
ios-sdk-pkgs: Init from iOS SDK from XCode
2018-04-19 16:09:30 -04:00