lol

lib: Fix float handling for Aarch32

Forgot to adjust default so abi with explicit float attr would be used.

+23 -19
+17 -12
lib/systems/parse.nix
··· 68 68 69 69 cpuTypes = with significantBytes; setTypes types.openCpuType { 70 70 arm = { bits = 32; significantByte = littleEndian; family = "arm"; }; 71 - armv5tel = { bits = 32; significantByte = littleEndian; family = "arm"; }; 72 - armv6m = { bits = 32; significantByte = littleEndian; family = "arm"; }; 73 - armv6l = { bits = 32; significantByte = littleEndian; family = "arm"; }; 74 - armv7a = { bits = 32; significantByte = littleEndian; family = "arm"; }; 75 - armv7r = { bits = 32; significantByte = littleEndian; family = "arm"; }; 76 - armv7m = { bits = 32; significantByte = littleEndian; family = "arm"; }; 77 - armv7l = { bits = 32; significantByte = littleEndian; family = "arm"; }; 78 - armv8a = { bits = 32; significantByte = littleEndian; family = "arm"; }; 79 - armv8r = { bits = 32; significantByte = littleEndian; family = "arm"; }; 80 - armv8m = { bits = 32; significantByte = littleEndian; family = "arm"; }; 81 - aarch64 = { bits = 64; significantByte = littleEndian; family = "arm"; }; 71 + armv5tel = { bits = 32; significantByte = littleEndian; family = "arm"; version = "5"; }; 72 + armv6m = { bits = 32; significantByte = littleEndian; family = "arm"; version = "6"; }; 73 + armv6l = { bits = 32; significantByte = littleEndian; family = "arm"; version = "6"; }; 74 + armv7a = { bits = 32; significantByte = littleEndian; family = "arm"; version = "7"; }; 75 + armv7r = { bits = 32; significantByte = littleEndian; family = "arm"; version = "7"; }; 76 + armv7m = { bits = 32; significantByte = littleEndian; family = "arm"; version = "7"; }; 77 + armv7l = { bits = 32; significantByte = littleEndian; family = "arm"; version = "7"; }; 78 + armv8a = { bits = 32; significantByte = littleEndian; family = "arm"; version = "8"; }; 79 + armv8r = { bits = 32; significantByte = littleEndian; family = "arm"; version = "8"; }; 80 + armv8m = { bits = 32; significantByte = littleEndian; family = "arm"; version = "8"; }; 81 + aarch64 = { bits = 64; significantByte = littleEndian; family = "arm"; version = "8"; }; 82 82 83 83 i686 = { bits = 32; significantByte = littleEndian; family = "x86"; }; 84 84 x86_64 = { bits = 64; significantByte = littleEndian; family = "x86"; }; ··· 271 271 kernel = getKernel args.kernel; 272 272 abi = 273 273 /**/ if args ? abi then getAbi args.abi 274 - else if isLinux parsed then abis.gnu 274 + else if isLinux parsed then 275 + if isAarch32 parsed then 276 + if lib.versionAtLeast (parsed.cpu.version or "0") "6" 277 + then abis.gnueabihf 278 + else abis.gnueabi 279 + else abis.gnu 275 280 else if isWindows parsed then abis.gnu 276 281 else abis.unknown; 277 282 };
-1
lib/systems/platforms.nix
··· 245 245 gcc = { 246 246 arch = "armv6"; 247 247 fpu = "vfp"; 248 - float = "hard"; 249 248 # TODO(@Ericson2314) what is this and is it a good idea? It was 250 249 # used in some cross compilation examples but not others. 251 250 #
+3 -3
pkgs/development/compilers/gcc/common/platform-flags.nix
··· 1 1 { lib, targetPlatform }: 2 2 3 3 let 4 - p = targetPlatform.platform.gcc or {}; 5 - float = p.float or (targetPlatform.parsed.abi.float or null); 4 + p = targetPlatform.platform.gcc or {} 5 + // targetPlatform.parsed.abi; 6 6 in lib.concatLists [ 7 7 (lib.optional (p ? arch) "--with-arch=${p.arch}") 8 8 (lib.optional (p ? cpu) "--with-cpu=${p.cpu}") 9 9 (lib.optional (p ? abi) "--with-abi=${p.abi}") 10 10 (lib.optional (p ? fpu) "--with-fpu=${p.fpu}") 11 - (lib.optional (float != null) "--with-float=${float}") 11 + (lib.optional (p ? float) "--with-float=${p.float}") 12 12 (lib.optional (p ? mode) "--with-mode=${p.mode}") 13 13 ]
+3 -3
pkgs/development/mobile/androidenv/androidndk-pkgs.nix
··· 65 65 bintools = binutils; 66 66 libc = targetAndroidndkPkgs.libraries; 67 67 extraBuildCommands = lib.optionalString targetPlatform.isAarch32 (let 68 - p = targetPlatform.platform.gcc or {}; 69 - float = p.float or (targetPlatform.parsed.abi.float or null); 68 + p = targetPlatform.platform.gcc or {} 69 + // targetPlatform.parsed.abi; 70 70 flags = lib.concatLists [ 71 71 (lib.optional (p ? arch) "-march=${p.arch}") 72 72 (lib.optional (p ? cpu) "-mcpu=${p.cpu}") 73 73 (lib.optional (p ? abi) "-mabi=${p.abi}") 74 74 (lib.optional (p ? fpu) "-mfpu=${p.fpu}") 75 - (lib.optional (float != null) "-mfloat=${float}") 75 + (lib.optional (p ? float) "-mfloat=${p.float}") 76 76 (lib.optional (p ? float-abi) "-mfloat-abi=${p.float-abi}") 77 77 (lib.optional (p ? mode) "-mmode=${p.mode}") 78 78 ];