lib: Clean up how linux and gcc config is specified
The `platform` field is pointless nesting: it's just stuff that happens to be defined together, and that should be an implementation detail. This instead makes `linux-kernel` and `gcc` top level fields in platform configs. They join `rustc` there [all are optional], which was put there and not in `platform` in anticipation of a change like this. `linux-kernel.arch` in particular also becomes `linuxArch`, to match the other `*Arch`es. The next step after is this to combine the *specific* machines from `lib.systems.platforms` with `lib.systems.examples`, keeping just the "multiplatform" ones for defaulting.
This commit is contained in:
@@ -60,18 +60,17 @@ in
|
||||
|
||||
configureFlags = let
|
||||
isCross = stdenv.hostPlatform != stdenv.buildPlatform;
|
||||
host = stdenv.hostPlatform.platform;
|
||||
isAarch32 = stdenv.hostPlatform.isAarch32;
|
||||
inherit (stdenv.hostPlatform) gcc isArch32;
|
||||
in sharedConfigureFlags ++ [
|
||||
"--without-dtrace"
|
||||
] ++ (optionals isCross [
|
||||
"--cross-compiling"
|
||||
"--without-intl"
|
||||
"--without-snapshot"
|
||||
]) ++ (optionals (isCross && isAarch32 && hasAttr "fpu" host.gcc) [
|
||||
"--with-arm-fpu=${host.gcc.fpu}"
|
||||
]) ++ (optionals (isCross && isAarch32 && hasAttr "float-abi" host.gcc) [
|
||||
"--with-arm-float-abi=${host.gcc.float-abi}"
|
||||
]) ++ (optionals (isCross && isAarch32 && hasAttr "fpu" gcc) [
|
||||
"--with-arm-fpu=${gcc.fpu}"
|
||||
]) ++ (optionals (isCross && isAarch32 && hasAttr "float-abi" gcc) [
|
||||
"--with-arm-float-abi=${gcc.float-abi}"
|
||||
]) ++ (optionals (isCross && isAarch32) [
|
||||
"--dest-cpu=arm"
|
||||
]) ++ extraConfigFlags;
|
||||
|
||||
Reference in New Issue
Block a user