| 18 Dec 2025 |
emily | it will be less painful than a nest of hacky overrideAttrs | 14:02:00 |
emily | (I also suggest putting this effort into making a newer GCC work instead) | 14:02:15 |
bake.monorail | OK, thanks for the feedback | 14:02:29 |
@rosssmyth:matrix.org | Something I was considering yesterday:
Currently we have gcc-arm-embedded, which is a pre-built GCC distribution. It has a manifest with all the configure flags. How hard is it to add a new version of GCC? I took a little look and there's a lot of machinery all over the place in the GCC directory. Maybe easier to use the NG package set?
| 15:22:17 |
K900 | Add a new version of GCC that does what? | 15:23:37 |
K900 | Builds a proper nixpkgs stdenv/ | 15:23:50 |
K900 | * Builds a proper nixpkgs stdenv? | 15:23:51 |
K900 | Because gcc-arm-embedded is extremely not that | 15:23:57 |
emily | gcc-arm-embedded is basically just there because we don't have working stdenvs for its targets, I think. | 15:32:21 |
@rosssmyth:matrix.org | yes | 15:34:15 |
@rosssmyth:matrix.org | Nixpkg's cross-compilation infra doesn't really work with some targets | 15:34:38 |
@rosssmyth:matrix.org | Unfortunately | 15:34:48 |
@rosssmyth:matrix.org | I am an avid user of it | 15:35:00 |
@rosssmyth:matrix.org | * I am an avid user of gcc-arm-embedded | 15:35:14 |
@rosssmyth:matrix.org | But it would be nice for it to be better integrated with Nixpkgs so that more things work better like clang-tools things | 15:36:36 |
emily | we can just fix that, though. | 15:37:51 |
emily | I mean, "just" | 15:37:55 |
emily | it's effort better spent than trying to integrate gcc-arm-embedded further, IMO | 15:38:07 |
emily | source-building the right GCC is not really the hard part | 15:38:17 |
@rosssmyth:matrix.org | I put some effort into that once and it will probably require a breaking change in the embedded parts of lib.systems or multilib support. For example when one writes lib.systems.examples.arm-embedded that will compile a GCC that only targets Armv4 (iirc). So ror any reasonable usage multilib is required because FUCK compiling GCC for every little arm variant. But if you try to make a GCC for specific targets, it also fails (I can't remember why, it's been a while since I tried). There's also build system funniness, such as CMake interpreting embedded target triple differently than GCC and Clang. | 15:45:35 |
@rosssmyth:matrix.org | * I put some effort into that once and it will probably require a breaking change in the embedded parts of lib.systems or multilib support. For example when one writes lib.systems.examples.arm-embedded that will compile a GCC that only targets Armv4 (iirc). So for any reasonable usage multilib is required because FUCK compiling GCC for every little arm variant. But if you try to make a GCC for specific targets, it also fails (I can't remember why, it's been a while since I tried). There's also build system funniness, such as CMake interpreting embedded target triple differently than GCC and Clang. | 15:45:50 |
emily | the embedded parts of lib.systems are sufficiently little used that I'm not very concerned about breaking changes to them | 15:46:05 |
@rosssmyth:matrix.org | * I put some effort into that once and it will probably require a breaking change in the embedded parts of lib.systems or multilib support. For example when one writes lib.systems.examples.arm-embedded that will compile a GCC that only targets Armv4 (iirc). So for any reasonable usage multilib is required because FUCK compiling GCC for every little arm variant. But if you try to make a GCC for specific targets, it also fails (I can't remember why, it's been a while since I tried). There's also build system funniness, such as CMake interpreting embedded target triples differently than GCC and Clang. | 15:46:07 |
emily | (I also don't think one GCC build per target is that bad though) | 15:46:18 |
emily | (if you don't want to rebuild a compiler per target my suggestion is to use LLVM :) ) | 15:46:26 |
@rosssmyth:matrix.org | I would like to use llvm at work but that has its own challenges that I have not been able to solve yet. Mainly around libgcc and linker scripts. | 15:47:12 |
@rosssmyth:matrix.org | and asm | 15:48:07 |
@rosssmyth:matrix.org | Because Clang does not support the same asm as gcc, it supports mainly a subset of what gcc does | 15:48:37 |
emily | do you target so many ARM versions (with so little builder resources) that building some GCCs is untenable? | 15:49:19 |
emily | that said, multilib support wouldn't be a terrible thing | 15:49:27 |