about summary refs log tree commit diff
path: root/lib/systems/default.nix
AgeCommit message (Collapse)AuthorFilesLines
2021-05-17darwin: use "11.0" as sdk and minimum version on aarch64-darwinAndrew Childs1-1/+1
2021-05-14treewide: All the linker to be chosen independentlyJohn Ericson1-0/+13
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-04-11bintools-wrapper, cc-wrapper: parameterize darwin min version variableAndrew Childs1-0/+4
These variables are the ones that the standard toolchain uses, so we should use those and not always use MACOSX_DEPLOYMENT_TARGET. See https://github.com/tpoechtrager/cctools-port/blob/236a426c1205a3bfcf0dbb2e2faf2296f0a100e5/cctools/ld64/src/ld/PlatformSupport.cpp#L54-L55
2021-03-26darwin: move deployment target and sdk version to platform configAndrew Childs1-0/+9
2021-03-02lib/systems: add `darwinArch`Andrew Childs1-0/+5
2021-01-25lib/systems: fix linuxArch for power + riscvRyan Burns1-0/+2
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-23lib: Clean up how linux and gcc config is specifiedJohn Ericson1-6/+13
Second attempt of 8929989614589ee3acd070a6409b2b9700c92d65; see that commit for details. This reverts commit 0bc275e63423456d6deb650e146120c39c1e0723.
2021-01-22Revert "lib: Clean up how linux and gcc config is specified"Jonathan Ringer1-10/+3
This is a stdenv-rebuild, and should not be merged into master This reverts commit 8929989614589ee3acd070a6409b2b9700c92d65.
2021-01-21lib: Clean up how linux and gcc config is specifiedJohn Ericson1-3/+10
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.
2020-12-31lib/systems: add emulator for mmixBen Siraphob1-0/+2
2020-12-17lib/systems: fix kernelArch for x86_64Linus Heckemann1-1/+1
IA64 (Itanium) is something completely different and certainly not what we want! x86_64 code lives in arch/x86 just like "classic" x86.
2020-11-29lib.systems.platforms: Make selection more flexibleJohn Ericson1-1/+1
We dont have to match on exact strings if we get accessed to `parsed`. Co-authored-by: Matthew Bauer <mjbauer95@gmail.com>
2020-09-01Merge pull request #61019 from volth/gcc.arch-amdJohn Ericson1-0/+2
platform.gcc.arch: support for AMD CPUs
2020-08-27Distinguish pkgsStatic from pkgsMusl via stdenv.targetPlatformDmitry Bogatov1-0/+1
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-05gcc.arch: refactor, move tables under lib/volth1-0/+2
2020-07-21redox: add as targetAaron Janse1-0/+2
2020-03-24lib/systems: Add Genode platform definitionsEmery Hemingway1-0/+1
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-02-22Merge pull request #80814 from matthewbauer/default-newlib-for-noneJohn Ericson1-2/+1
lib/systems: Assume newlib when no kernel and no libc is provided
2020-02-22lib/systems: Assume newlib when no kernel and no libc is providedMatthew Bauer1-2/+1
newlib is the default for most tools when no kernel is provided. Other exist, but this seems like a safe default.
2020-02-05lib.systems.elaborate: isArm -> isAarch32Chuck1-1/+1
This is the last reference to isArm. isArm is deprecated after 18.03. This substitution was performed tree-wide in #37401.
2019-11-19initial implementation of vc4 cross-compileMichael Bishop1-0/+1
2019-11-04lib.systems: remove redundant mappingoxalica1-4/+0
2019-11-03lib.systems: handle mips family properlyoxalica1-0/+5
2019-08-26treewide: remove redundant quotesvolth1-11/+11
2019-06-04systems: allow passing in string for cross/localSystemMatthew Bauer1-1/+3
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-04systems: remove forMetaMatthew Bauer1-1/+0
This is unused now.
2019-04-23wasmtime: init and use for emulationMatthew Bauer1-2/+2
This isn’t really an "emulator" but it’s the closest concept we have right now.
2019-04-23wasm: init cross targetMatthew Bauer1-1/+2
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-19kernel-headers: infer ARCH from config tripleMatthew Bauer1-0/+7
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-19systems: correct qemu architecturesMatthew Bauer1-3/+2
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-19systems: fix emulator identityMatthew Bauer1-1/+1
Squashed to fix shell quoting, thanks @Ericson2314
2019-04-02Merge branch 'master' into staging-nextVladimír Čunát1-0/+1
Hydra nixpkgs: ?compare=1512490
2019-03-25msp430: include vendor headers with stdenvAaron Lindsay1-0/+1
2019-03-01Merge staging-next into stagingFrederik Rietdijk1-3/+6
2019-02-26cross/tests: add llvm-based testsMatthew Bauer1-1/+1
2019-02-26netbsd: add cross targetMatthew Bauer1-0/+1
2019-02-25systems: add “emultator” for wasmMatthew Bauer1-0/+2
v8 can run any wasm bytecode
2019-02-21systems: add isCompatible handlingMatthew Bauer1-2/+3
2019-01-27systems/default.nix: wasm in platform.uname.systemMatthew Bauer1-0/+1
This adds the "Wasm" system to platform.uname.system. This is used in CMake infrastructure.
2018-12-12platform.emulator: fix non-x86 systemsJörg Thalheim1-1/+1
2018-11-29treewide: add emulator to platformMatthew Bauer1-0/+40
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-10-29systems: add avrlibc for avr systemsMatthew Bauer1-0/+1
2018-10-17lib/systems: use lookup for uname.systemMatthew Bauer1-7/+8
This is a little bit cleaner and avoids the if ... else if ... chain.
2018-10-16lib/systems: add uname attrsMatthew Bauer1-0/+18
2018-06-25xcode: add xcodePlatform to systemMatthew Bauer1-1/+0
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-05-10lib/systems: Prohibit "gnu" ABI (*-gnu) with 32-bit ARMJohn Ericson1-0/+7
It is ambiguous, and therefore banned within GCC.
2018-05-10Merge commit '70963b382f3f820ba6d3bc3b3aaf50a2957ec1ff' into uclibcJohn Ericson1-0/+2
2018-05-09lib/systems: Add uClibc just like MUSLJohn Ericson1-0/+1
2018-04-19ios-sdk-pkgs: Init from iOS SDK from XCodeKen Micklas1-0/+2
2018-03-15lib, stdenv: Check `meta.platforms` against host platform and be open worldJohn Ericson1-0/+1
First, we need check against the host platform, not the build platform. That's simple enough. Second, we move away from exahustive finite case analysis (i.e. exhaustively listing all platforms the package builds on). That only work in a closed-world setting, where we know all platforms we might build one. But with cross compilation, we may be building for arbitrary platforms, So we need fancier filters. This is the closed world to open world change. The solution is instead of having a list of systems (strings in the form "foo-bar"), we have a list of of systems or "patterns", i.e. attributes that partially match the output of the parsers in `lib.systems.parse`. The "check meta" logic treats the systems strings as an exact whitelist just as before, but treats the patterns as a fuzzy whitelist, intersecting the actual `hostPlatform` with the pattern and then checking for equality. (This is done using `matchAttrs`). The default convenience lists for `meta.platforms` are now changed to be lists of patterns (usually a single pattern) in `lib/systems/for-meta.nix` for maximum flexibility under this new system. Fixes #30902