summaryrefslogtreecommitdiffstats
path: root/lib/systems/doubles.nix
AgeCommit message (Collapse)Author
2020-11-16Merge master into staging-nextFrederik Rietdijk
2020-11-09Initial support for OpenRISC 1000 (or1k)Samuel Dionne-Riel
2020-11-09Initial implementation of mmix cross-compileBen Siraphob
2020-09-20platforms: add bigEndian and littleEndianFrancesco Gazzetta
2020-08-04Define a i686-genode system doubleEmery Hemingway
2020-07-21redox: add as targetAaron Janse
2020-03-24lib/systems: Add Genode platform definitionsEmery Hemingway
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-12lib: Add armv6l-none to doubles listJohn Ericson
2019-11-25Merge branch 'ghcjs-cross-without-cc-19.09' into ghcjs-cross-without-ccJohn Ericson
2019-11-25Fix lib testsJohn Ericson
js-ghcjs didn't fit in an existing categor.
2019-11-25Merge remote-tracking branch 'upstream/master' into ghcjs-cross-without-ccJohn Ericson
2019-11-25Add support for cross compiling to `js-ghcjs`John Ericson
This platform doesn't have a C compiler, and so relies and the changes in the previous commit to work.
2019-11-19initial implementation of vc4 cross-compileMichael Bishop
2019-10-01lib: Add armv7a-linux to doubles.nixJohn Ericson
This is needed for android.
2019-08-28treewide: remove redundant recvolth
2019-07-25Add RISC-V embedded crossSystemsJay Kruer
2019-07-10Revert "Revert "systems/doubles.nix: add Apple doubles""Matthew Bauer
This reverts commit ce2f74df2cade57e74c235292c8b074281903e71. Doubles are treated as -darwin here, to provide some consistency. There is some ambiguity between “x86_64-darwin” and “i686-darwin” which could refer to binaries linked between iOS simulator or real macOS binaries. useiOSPrebuilt can be used to determine which to use, however.
2019-07-10Revert "systems/doubles.nix: add Apple doubles"Frederik Rietdijk
The lib tests need to be fixed as well. This unbreaks the tarball job. This reverts commit 00ba557856d6217121e50ea69c251e9458d9dc08.
2019-07-08systems/doubles.nix: add Apple doublesMatthew Bauer
These are used in cross-compilation to iOS devices and simulators. Fallout from #60349.
2019-06-04systems: fix lib-testsMatthew Bauer
These were broken by the added system doubles. This just adds those to the lib-tests.
2019-06-04systems: fixup from last commitMatthew Bauer
it’s powerpc-none not ppc-none
2019-06-04systems: add missing doublesMatthew Bauer
in https://github.com/NixOS/nixpkgs/pull/60349, the attr handling was removed. This means we rely on these double values for determing what we are compatible with. This adds some of the missing doubles to this list. https://hydra.nixos.org/eval/1523389#tabs-removed
2019-04-30systems: add riscv doubleMatthew Bauer
This was never listed in doubles.nix! Not sure why?
2019-04-23wasm: init cross targetMatthew Bauer
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-02-24mesa: armv7a-linux supports mesaMatthew Bauer
2018-10-18tests/systems.nix: fix testsMatthew Bauer
these weren’t being run correctly
2018-10-17Correctly set windows doublesMatthew Bauer
mingw is the toolchain name but it is actually run on a window kernel
2018-10-16systems/doubles.nix: add mingw doublesMatthew Bauer
this makes it easier to show what supports windows vs. unix.
2018-08-28hurd: cleanup unmaintained targetJörg Thalheim
This has been not touched in 6 years. Let's remove it to cause less problems when adding new cross-compiling infrastructure. This also simplify gcc significantly.
2018-08-21[RFC] ppc64le enablement (#45340)CrystalGamma
* ppc64le enablement * gcc, glibc: properly handle __float128 * lib/systems, stdenv: syntax cleanup * gcc7: remove ugly hack * gcc: add/update __float128 flags * stdenv: add another pair of quotes for consistency * gcc: move __float128 flag for ppc64le-glibc into common/platform-flags.nix
2018-04-25treewide: isArm -> isAarch32John Ericson
Following legacy packing conventions, `isArm` was defined just for 32-bit ARM instruction set. This is confusing to non packagers though, because Aarch64 is an ARM instruction set. The official ARM overview for ARMv8[1] is surprisingly not confusing, given the overall state of affairs for ARM naming conventions, and offers us a solution. It divides the nomenclature into three levels: ``` ISA: ARMv8 {-A, -R, -M} / \ Mode: Aarch32 Aarch64 | / \ Encoding: A64 A32 T32 ``` At the top is the overall v8 instruction set archicture. Second are the two modes, defined by bitwidth but differing in other semantics too, and buttom are the encodings, (hopefully?) isomorphic if they encode the same mode. The 32 bit encodings are mostly backwards compatible with previous non-Thumb and Thumb encodings, and if so we can pun the mode names to instead mean "sets of compatable or isomorphic encodings", and then voilà we have nice names for 32-bit and 64-bit arm instruction sets which do not use the word ARM so as to not confused either laymen or experienced ARM packages. [1]: https://developer.arm.com/products/architecture/a-profile
2018-03-15lib, stdenv: Check `meta.platforms` against host platform and be open worldJohn Ericson
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
2018-03-14treewide: get rid of platforms.allButJohn Ericson
Negative reasoning like `allBut` is a bad idea with an open world of platforms. Concretely, if we add a new, quite different sort of platform, existing packages with `allBut` will claim they work on it even though they probably won't.
2018-02-23lib, treewide: Add missing MIPS arches, and fix existing usageDaniel Barlow
Existing "mips64el" should be "mipsel". This is just the barest minimum so that nixpkgs can recognize them as systems - although required for building individual derivations onto MIPS boards, it is not sufficient if you want to actually build nixos on those targets
2018-01-31lib: Avoid double importJohn Ericson
2017-09-16Convert libs to a fixed-pointGraham Christensen
This does break the API of being able to import any lib file and get its libs, however I'm not sure people did this. I made this while exploring being able to swap out docFn with a stub in #2305, to avoid functor performance problems. I don't know if that is going to move forward (or if it is a problem or not,) but after doing all this work figured I'd put it up anyway :) Two notable advantages to this approach: 1. when a lib inherits another lib's functions, it doesn't automatically get put in to the scope of lib 2. when a lib implements a new obscure functions, it doesn't automatically get put in to the scope of lib Using the test script (later in this commit) I got the following diff on the API: + diff master fixed-lib 11764a11765,11766 > .types.defaultFunctor > .types.defaultTypeMerge 11774a11777,11778 > .types.isOptionType > .types.isType 11781a11786 > .types.mkOptionType 11788a11794 > .types.setType 11795a11802 > .types.types This means that this commit _adds_ to the API, however I can't find a way to fix these last remaining discrepancies. At least none are _removed_. Test script (run with nix-repl in the PATH): #!/bin/sh set -eux repl() { suff=${1:-} echo "(import ./lib)$suff" \ | nix-repl 2>&1 } attrs_to_check() { repl "${1:-}" \ | tr ';' $'\n' \ | grep "\.\.\." \ | cut -d' ' -f2 \ | sed -e "s/^/${1:-}./" \ | sort } summ() { repl "${1:-}" \ | tr ' ' $'\n' \ | sort \ | uniq } deep_summ() { suff="${1:-}" depth="${2:-4}" depth=$((depth - 1)) summ "$suff" for attr in $(attrs_to_check "$suff" | grep -v "types.types"); do if [ $depth -eq 0 ]; then summ "$attr" | sed -e "s/^/$attr./" else deep_summ "$attr" "$depth" | sed -e "s/^/$attr./" fi done } ( cd nixpkgs #git add . #git commit -m "Auto-commit, sorry" || true git checkout fixed-lib deep_summ > ../fixed-lib git checkout master deep_summ > ../master ) if diff master fixed-lib; then echo "SHALLOW MATCH!" fi ( cd nixpkgs git checkout fixed-lib repl .types )
2017-08-24treewide: Consistently call ARM 'arm'Tuomas Tynkkynen
No need for silly differences.
2017-05-22lib: Make platform predicates more ergonomic to useJohn Ericson
`hostPlatform.isDarwin` instead of `lib.system.parse.isDarwin hostPlatform.parsed`
2017-05-17lib platform parsing: Fix windows support to conform to LLVM, take 2John Ericson
Second attempt at pull request #25275 This reverts commit b70924bd80918d153a5e2023afd7647ae7b24a12, reapplying 2282a5774cd80567644a44d31585bf965a55f9ec
2017-05-06Revert "Merge pull request #25275 from Ericson2314/platform-normalize"Vladimír Čunát
This reverts commit 2282a5774cd80567644a44d31585bf965a55f9ec, reversing changes made to 14adea91566019549f33392d4710d9babd0108d7. The lib tests are bloking nixpkgs-unstable, and I don't like debugging it soon enough.
2017-04-27lib platform parsing: Fix windowsJohn Ericson
There is no more `cygwin` OS, but instead a `cygnus` abi. "win32" and "mingw32" parse as `windows`. Add a 3-part hack because autotools breaks on explicit abi with windows-like (e.g. "i686-pc-windows-gnu"). Also change cross triples to conform
2017-04-17lib: Fix system parsing, and use for doubles listsJohn Ericson
The old hard-coded lists are now used to test system parsing. In the process, make an `assertTrue` in release lib for eval tests; also use it in release-cross
2017-04-17lib: Collect system/platform related filesJohn Ericson
Previously, platforms was a random thing in top-level