summary refs log tree commit diff
path: root/lib/systems/parse.nix
Commit message (Collapse)AuthorAge
* Initial implementation of s390 cross-compileBen Siraphob2021-07-25
|
* Initial implementation of m68k cross-compileBen Siraphob2021-07-24
|
* lib.systems.parsed: add "elf" for some NetBSD archsAlyssa Ross2021-06-06
| | | | | | | In Autoconf, some old NetBSD targets like "i686-unknown-netbsd" are interpreted as a.out, not elf, and virtually nothing supports it. We need to specify e.g. "i686-unknown-netbsdelf" to get the right behaviour.
* lib.systems.parse.kernels: fix typo in commentAlyssa Ross2021-06-06
|
* lib/systems/parse: make isCompatible description clearer and more usefulBen Siraphob2021-05-14
| | | | | | | 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.
* lib/systems: remove powerpc64 elfv1 supportRyan Burns2021-03-15
| | | | | I was specifying the ELF ABI using -elfv1 and -elfv2 target config suffixes, which are nonstandard and no longer work with gnu-config.
* lib.systems: add powerpc64-linuxRyan Burns2021-01-30
| | | | | | | | | | | | | | | | | 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.
* Merge master into staging-nextFrederik Rietdijk2020-11-16
|\
| * Initial implementation of mmix cross-compileBen Siraphob2020-11-09
| |
* | Initial support for OpenRISC 1000 (or1k)Samuel Dionne-Riel2020-11-09
|/
* redox: add as targetAaron Janse2020-07-21
|
* lib/systems: Add Genode platform definitionsEmery Hemingway2020-03-24
| | | | | | | 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
* initial implementation of vc4 cross-compileMichael Bishop2019-11-19
|
* Merge remote-tracking branch 'upstream/master' into mingw-mcfthreadsJohn Ericson2019-11-11
|\
| * lib.systems: handle mips family properlyoxalica2019-11-03
| |
* | lib: Switch to w64 vendor for MinGWJohn Ericson2019-11-11
|/ | | | It is needed for the `-municode` flag, supposedly.
* Merge branch 'master' into stagingVladimír Čunát2019-09-02
|\
| * Merge remote-tracking branch 'upstream/master' into feature/js-unknown-ghcjsJohn Ericson2019-09-02
| |\
| * | Add support for `js-unknown-ghcjs`Moritz Angermann2019-09-02
| | | | | | | | | | | | This adds enough logic to nixpkgs to support the `js-unknown-ghcjs` triple.
* | | treewide: remove redundant recvolth2019-08-28
| |/ |/|
* | treewide: remove unused variables (#63177)volth2019-06-16
| | | | | | | | | | | | * treewide: remove unused variables * making ofborg happy
* | Merge pull request #56555 from matthewbauer/wasmMatthew Bauer2019-04-23
|\ \ | | | | | | Initial WebAssembly/WASI cross-compilation support
| * | wasm: init cross targetMatthew Bauer2019-04-23
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | cc-wrapper: make machine configuration configurableMatthew Bauer2019-04-20
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | systems/parse.nix: fixup arm compatibilitiesMatthew Bauer2019-04-19
| |
* | systems: support TI MSP430 microcontrollersAaron Lindsay2019-03-25
| |
* | systems: add isCompatible handlingMatthew Bauer2019-02-21
|/
* lib: Fix Mingw on 32-bit ARMJohn Ericson2019-01-04
|
* systems/parse.nix: support eabihfMatthew Bauer2018-12-02
| | | | | | | | | | | | 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
* systems/parse: add older x86 architecturesMatthew Bauer2018-11-21
| | | | | i386, i486, i586 are added. These may have issues as many places assume i686 is the only valid 32 bit x86 architecture.
* Update parse.nixVincent Weisner2018-11-02
|
* CPU FixJörg Thalheim2018-11-01
| | | Co-Authored-By: vincrusher <vincentweisner@icloud.com>
* Update parse.nixVincent Weisner2018-11-01
|
* systems/examples: add i686 & x86-64 embeddedMatthew Bauer2018-10-30
| | | | Fixes #28160
* systems/parse.nix: support weird system configsMatthew Bauer2018-10-29
| | | | | | | | There are some weird ones out there that don’t follow any pattern: - arm-none-eabi - powerpc-none-eabi - aarch64-none-elf
* avr: use new compilation infrastructureMatthew Bauer2018-10-29
| | | | | | | | | | Gets rid of: avrbinutils avrgcc to replace with: pkgsCross.avr.buildPackages.binutils pkgsCross.avr.buildPackages.gcc
* hurd: cleanup unmaintained targetJörg Thalheim2018-08-28
| | | | | | 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.
* [RFC] ppc64le enablement (#45340)CrystalGamma2018-08-21
| | | | | | | | | | | | | | | | * 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
* systems: fix netbsd triple parsingMatthew Bauer2018-07-28
| | | | | | | | binutils expects x86_64-unknown-netbsd<version> (only 3 parts!). Any other combo seems to fail. Also handle darwin versions similarly. /cc @Ericson2314
* systems: Allow detection of powerpc and sparcJohn Q Crosscompiler2018-07-26
|
* Merge branch 'fix-gcc-with-float'John Ericson2018-05-12
|\
| * lib: Fix float handling for Aarch32John Ericson2018-05-12
| | | | | | | | Forgot to adjust default so abi with explicit float attr would be used.
* | lib/system: Remove float from androideabiJohn Ericson2018-05-11
| | | | | | | | | | | | | | | | 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.
* | lib/systems: Add assertion to "android" ABIJohn Ericson2018-05-11
| | | | | | | | This is analogous to the GNU assertion.
* | Merge pull request #40378 from obsidiansystems/lib-platform-sortJohn Ericson2018-05-11
|\| | | | | lib/systems: Sort platforms, and space CPUs
| * lib/systems: Sort platforms, and space CPUsJohn Ericson2018-05-11
| |
* | Merge remote-tracking branch 'upstream/master' into lib-floatJohn Ericson2018-05-10
|\ \ | |/ |/|
| * lib/systems: Prohibit "gnu" ABI (*-gnu) with 32-bit ARMJohn Ericson2018-05-10
| | | | | | | | It is ambiguous, and therefore banned within GCC.
| * Merge commit '70963b382f3f820ba6d3bc3b3aaf50a2957ec1ff' into uclibcJohn Ericson2018-05-10
| |\
| | * treewide: isArm -> isAarch32John Ericson2018-04-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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