summaryrefslogtreecommitdiff
path: root/lib/systems/parse.nix (follow)
Commit message (Expand)AuthorAgeFilesLines
* lib/systems/parse: make isCompatible description clearer and more useful•••Stating that CPUs and the isCompatible relation forms a category (or preorder) is correct but overtly technical. We can state it more clearly for readers unfamiliar with mathematics while retaining some keywords to be useful to technical readers. Ben Siraphob2021-05-141-9/+14
* lib/systems: remove powerpc64 elfv1 support•••I was specifying the ELF ABI using -elfv1 and -elfv2 target config suffixes, which are nonstandard and no longer work with gnu-config. Ryan Burns2021-03-151-9/+0
* lib.systems: add powerpc64-linux•••PPC64 supports two ABIs: ELF v1 and v2. ELFv1 is historically what GCC and most packages expect, but this is changing because musl outright does not work with ELFv1. So any distro which uses musl must use ELFv2. Many other platforms are moving to ELFv2 too, such as FreeBSD (as of v13) and Gentoo (as of late 2020). Since we use musl extensively, let's default to ELFv2. Nix gives us the power to specify this declaratively for the entire system, so ELFv1 is not dropped entirely. It can be specified explicitly in the target config, e.g. "powerpc64-unknown-linux-elfv1". Otherwise the default is "powerpc64-unknown-linux-elfv2". For musl, "powerpc64-unknown-linux-musl" must use elfv2 internally to function. Ryan Burns2021-01-301-0/+9
* Merge master into staging-nextFrederik Rietdijk2020-11-161-14/+19
|\
| * Initial implementation of mmix cross-compileBen Siraphob2020-11-091-14/+19
* | Initial support for OpenRISC 1000 (or1k)Samuel Dionne-Riel2020-11-091-0/+2
|/
* redox: add as targetAaron Janse2020-07-211-0/+3
* 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 Emery Hemingway2020-03-241-0/+3
* initial implementation of vc4 cross-compileMichael Bishop2019-11-191-0/+2
* Merge remote-tracking branch 'upstream/master' into mingw-mcfthreadsJohn Ericson2019-11-111-0/+1
|\
| * lib.systems: handle mips family properlyoxalica2019-11-031-0/+1
* | lib: Switch to w64 vendor for MinGW•••It is needed for the `-municode` flag, supposedly. John Ericson2019-11-111-0/+3
|/
* Merge branch 'master' into stagingVladimír Čunát2019-09-021-1/+6
|\
| * Merge remote-tracking branch 'upstream/master' into feature/js-unknown-ghcjsJohn Ericson2019-09-021-18/+103
| |\
| * | Add support for `js-unknown-ghcjs`•••This adds enough logic to nixpkgs to support the `js-unknown-ghcjs` triple. Moritz Angermann2019-09-021-1/+6
* | | treewide: remove redundant recvolth2019-08-281-1/+1
| |/ |/|
* | treewide: remove unused variables (#63177)•••* treewide: remove unused variables * making ofborg happy volth2019-06-161-1/+1
* | Merge pull request #56555 from matthewbauer/wasm•••Initial WebAssembly/WASI cross-compilation supportMatthew Bauer2019-04-231-0/+4
|\ \
| * | 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. Matthew Bauer2019-04-231-0/+4
* | | cc-wrapper: make machine configuration configurable•••It is useful to make these dynamic and not bake them into gcc. This means we don’t have to rebuild gcc to change these values. Instead, we will pass cflags to gcc based on platform values. This was already done hackily for android gcc (which is multi-target), but not for our own gccs which are single target. To accomplish this, we need to add a few things: - add ‘arch’ to cpu - add NIX_CFLAGS_COMPILE_BEFORE flag (goes before args) - set -march everywhere - set mcpu, mfpu, mmode, and mtune based on targetPlatform.gcc flags cc-wrapper: only set -march when it is in the cpu type Some architectures don’t have a good mapping of -march. For instance POWER architecture doesn’t support the -march flag at all! https://gcc.gnu.org/onlinedocs/gcc/RS_002f6000-and-PowerPC-Options.html#RS_002f6000-and-PowerPC-Options Matthew Bauer2019-04-201-17/+17
|/ /
* | systems/parse.nix: fixup arm compatibilitiesMatthew Bauer2019-04-191-13/+33
* | systems: support TI MSP430 microcontrollersAaron Lindsay2019-03-251-0/+1
* | systems: add isCompatible handlingMatthew Bauer2019-02-211-0/+60
|/
* lib: Fix Mingw on 32-bit ARMJohn Ericson2019-01-041-4/+9
* systems/parse.nix: support eabihf•••eabihf is an abi that can be used with ARM architectures that support the “hard float”. It should probably only be used with ARM32 when you are absolutely sure your binaries will run on ARM systems with a FPU. Also, add an example "armhf-embedded" to match the preexisting arm-embedded system. qmk_firmware needs hard float in a few places, so add them here to get that to work. Fixes #51184 Matthew Bauer2018-12-021-10/+13
* systems/parse: add older x86 architectures•••i386, i486, i586 are added. These may have issues as many places assume i686 is the only valid 32 bit x86 architecture. Matthew Bauer2018-11-211-0/+3
* Update parse.nixVincent Weisner2018-11-021-1/+1
* CPU Fix•••Co-Authored-By: vincrusher <vincentweisner@icloud.com>Jörg Thalheim2018-11-011-1/+1
* Update parse.nixVincent Weisner2018-11-011-0/+4
* systems/examples: add i686 & x86-64 embedded•••Fixes #28160 Matthew Bauer2018-10-301-0/+2
* systems/parse.nix: support weird system configs•••There are some weird ones out there that don’t follow any pattern: - arm-none-eabi - powerpc-none-eabi - aarch64-none-elf Matthew Bauer2018-10-291-0/+8
* avr: use new compilation infrastructure•••Gets rid of: avrbinutils avrgcc to replace with: pkgsCross.avr.buildPackages.binutils pkgsCross.avr.buildPackages.gcc Matthew Bauer2018-10-291-0/+5
* hurd: cleanup unmaintained target•••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. Jörg Thalheim2018-08-281-3/+0
* [RFC] ppc64le enablement (#45340)•••* 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 CrystalGamma2018-08-211-0/+2
* systems: fix netbsd triple parsing•••binutils expects x86_64-unknown-netbsd<version> (only 3 parts!). Any other combo seems to fail. Also handle darwin versions similarly. /cc @Ericson2314 Matthew Bauer2018-07-281-4/+6
* systems: Allow detection of powerpc and sparcJohn Q Crosscompiler2018-07-261-0/+3
* Merge branch 'fix-gcc-with-float'John Ericson2018-05-121-12/+17
|\
| * lib: Fix float handling for Aarch32•••Forgot to adjust default so abi with explicit float attr would be used. John Ericson2018-05-121-12/+17
* | lib/system: Remove float from androideabi•••There are two different official variations which differ in their float support, so such a blanket statement is invalid. `lib.systems.platforms.*android` already handles each case correctly. Correcting an error in 827ef0914089e1a2bba140b49e1311eff28cc156. John Ericson2018-05-111-1/+1
* | lib/systems: Add assertion to "android" ABI•••This is analogous to the GNU assertion. John Ericson2018-05-111-2/+10
* | Merge pull request #40378 from obsidiansystems/lib-platform-sort•••lib/systems: Sort platforms, and space CPUsJohn Ericson2018-05-111-0/+5
|\|
| * lib/systems: Sort platforms, and space CPUsJohn Ericson2018-05-111-0/+5
* | Merge remote-tracking branch 'upstream/master' into lib-floatJohn Ericson2018-05-101-11/+27
|\ \ | |/ |/|
| * lib/systems: Prohibit "gnu" ABI (*-gnu) with 32-bit ARM•••It is ambiguous, and therefore banned within GCC. John Ericson2018-05-101-2/+10
| * Merge commit '70963b382f3f820ba6d3bc3b3aaf50a2957ec1ff' into uclibcJohn Ericson2018-05-101-9/+17
| |\
| | * treewide: isArm -> isAarch32•••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 John Ericson2018-04-251-1/+1
| | * Merge pull request #38485 from obsidiansystems/nixos-nixpkgs-options•••nixpkgs module: Clean up platform optionsJohn Ericson2018-04-191-2/+2
| | |\
| | | * nixpkgs module: Clean up platform options••• - `localSystem` is added, it strictly supercedes system - `crossSystem`'s description mentions `localSystem` (and vice versa). - No more weird special casing I don't even understand TEMP John Ericson2018-04-061-2/+2
| | * | Fix a typo: types.openSignifiantByte -> types.openSignificantByteJohn Wiegley2018-04-131-2/+2
| | |/
| | * lib: Split Darwin into macOS and iOS•••I noticed LLVM accepts `ios` as its own OS in platform triples; a recent change as far as I know. I see it also accepts `macos*` for macOS (formerly OS X). If it's now customary to distinguish iOS like so (rather than guessing from the aarch, lets add both so our OSes are still disjoint, and make Darwin a family instead. But changing the config everywhere would probably be a mass rebuild, and I'm not sure how well other software supports OSes besides "darwin", so I'm keeping that the default name for macOS for now. John Ericson2018-03-191-5/+13