| 14 Feb 2025 |
@rosssmyth:matrix.org | Then for the compiler itself, is there a way I can override the gcc wrapper settings? Currently it is compiling in ARM mode, while it needs to be in thumb. I once again tried a custom nixpkgs instance with
armPkgs = import nixpkgs {
inherit system;
crossSystem = {
config = "arm-none-eabi";
libc = "newlib";
gcc = {
arch = "armv6m";
cpu = "cortex-m0";
};
};
};
But that starts recompiling all of gcc again. I see this setting https://github.com/NixOS/nixpkgs/blob/b44babb85a1294e6b0e20ccc2c54cd0f62a84ceb/pkgs/build-support/cc-wrapper/default.nix#L248
Which is pretty much what I want.
| 18:49:17 |
@rosssmyth:matrix.org | * Then for the compiler itself, is there a way I can override the gcc wrapper settings? Currently it is compiling in ARM mode, while it needs to be in thumb. I once again tried a custom nixpkgs instance with
armPkgs = import nixpkgs {
inherit system;
crossSystem = {
config = "arm-none-eabi";
libc = "newlib";
gcc = {
arch = "armv6m";
cpu = "cortex-m0";
thumb = true;
};
};
};
But that starts recompiling all of gcc again. I see this setting https://github.com/NixOS/nixpkgs/blob/b44babb85a1294e6b0e20ccc2c54cd0f62a84ceb/pkgs/build-support/cc-wrapper/default.nix#L248
Which is pretty much what I want.
| 18:51:25 |
Artturin | the rebuilds are because you specified arch and cpu | 18:56:44 |
Artturin | Redacted or Malformed Event | 18:56:47 |
Artturin |  Download image.png | 18:56:52 |
Artturin | here's a nix-diff | 18:56:57 |
Artturin | I'm not sure if gcc really needs those 2 flags because cc-wrapper has -mcpu and -march | 18:59:19 |
@rosssmyth:matrix.org | Yeah that's what I was hoping it would set 😅. | 19:00:10 |
Artturin | stdenv = overrideCC stdenv (buildPackages.wrapCC (stdenv.cc // { stdenv.cc.targetPlatform = stdenv.cc.targetPlatform // { gcc = stdenv.cc.targetPlatform.gcc // { arch = "arv6m"; cpu = "cortex-m0"; thumb = true; }; }; })) | 19:07:09 |
Artturin | * stdenv = overrideCC stdenv (buildPackages.wrapCC (stdenv.cc // { stdenv.cc.targetPlatform = stdenv.cc.targetPlatform // { gcc = stdenv.cc.targetPlatform.gcc // { arch = "arv6m"; cpu = "cortex-m0"; thumb = true; }; }; })); | 19:07:11 |
Artturin | Should work if the gcc flags aren't really needed | 19:08:06 |
Artturin | * Should work if the gcc build flags aren't really needed | 19:08:51 |
@rosssmyth:matrix.org | If I put that in my default.nix it results in an infinite recursion. My plan with this is to be able to build for both the armv6m target and my x86 host as I have tests that meson runs as well. I am currently using the arm-embedded-gcc packages in a noCC derivation. | 19:17:36 |
Artturin | Change the variable name or put it in the callPackage overrides | 19:18:36 |
Artturin | callPackage ./file.nix { <here> | 19:18:47 |
Artturin | * callPackage ./file.nix { <here> } | 19:18:49 |
@rosssmyth:matrix.org | It still errors with infinite recursion. I have it setup as
highPower = with armPkgs;
callPackage ./default.nix {
stdenv = with pkgs;
overrideCC stdenv (buildPackages.wrapCC (stdenv.cc
// {
stdenv.cc.targetPlatform =
stdenv.cc.targetPlatform
// {
gcc =
stdenv.cc.targetPlatform.gcc
// {
arch = "arv6m";
cpu = "cortex-m0";
thumb = true;
};
};
}));
};
| 20:04:05 |
@rosssmyth:matrix.org | oh wait | 20:04:14 |
@rosssmyth:matrix.org | I think I see the error | 20:04:26 |
@rosssmyth:matrix.org | * It still errors with infinite recursion. I have it setup as
highPower = with armPkgs;
callPackage ./default.nix {
stdenv =
overrideCC stdenv (buildPackages.wrapCC (stdenv.cc
// {
stdenv.cc.targetPlatform =
stdenv.cc.targetPlatform
// {
gcc =
stdenv.cc.targetPlatform.gcc
// {
arch = "arv6m";
cpu = "cortex-m0";
thumb = true;
};
};
}));
};
| 20:05:06 |
@rosssmyth:matrix.org | No, I don't | 20:06:35 |
Artturin | Look through the trace | 20:17:09 |
alexfmpe | In reply to @emilazy:matrix.org fwiw still personally happy to mentor bringing iOS support up to date in line with my previous statements about how it should work :P I remember, it's just taking longer than I expected to get through pkgsCross.ghcjs so not enough budget yet for iOS | 20:26:24 |
alexfmpe | There's also the, heh, cross cutting concern of template haskell | 20:27:09 |
@rosssmyth:matrix.org | That still ends up building it in ARM mode. Oh well. | 20:44:36 |
| lucassong joined the room. | 20:53:29 |
lucassong | hello | 20:53:47 |
| 15 Feb 2025 |
alexfmpe | hmm the types.h errors are gone in staging-next, someone must have fixed something in between | 00:45:47 |
alexfmpe | though android-ndk-toolchain fails from the recent noBrokenSymlinks | 00:46:23 |
alexfmpe | * though android-ndk-toolchain still fails from the recent noBrokenSymlinks | 00:57:01 |