lib/systems: Prohibit "gnu" ABI (*-gnu) with 32-bit ARM
It is ambiguous, and therefore banned within GCC.
This commit is contained in:
parent
4ae207aea0
commit
58b2e875c2
2 changed files with 17 additions and 2 deletions
|
@ -50,5 +50,12 @@ rec {
|
|||
} // mapAttrs (n: v: v final.parsed) inspect.predicates
|
||||
// args;
|
||||
in assert final.useAndroidPrebuilt -> final.isAndroid;
|
||||
assert lib.foldl
|
||||
(pass: { assertion, message }:
|
||||
if assertion final
|
||||
then pass
|
||||
else throw message)
|
||||
true
|
||||
(final.parsed.abi.assertions or []);
|
||||
final;
|
||||
}
|
||||
|
|
|
@ -192,7 +192,15 @@ rec {
|
|||
abis = setTypes types.openAbi {
|
||||
android = {};
|
||||
cygnus = {};
|
||||
gnu = {};
|
||||
gnu = {
|
||||
assertions = [
|
||||
{ assertion = platform: !platform.isAarch32;
|
||||
message = ''
|
||||
The "gnu" ABI is ambiguous on 32-bit ARM. Use "gnueabi" or "gnueabihf" instead.
|
||||
'';
|
||||
}
|
||||
];
|
||||
};
|
||||
msvc = {};
|
||||
eabi = {};
|
||||
androideabi = {};
|
||||
|
@ -270,7 +278,7 @@ rec {
|
|||
kernel = getKernel args.kernel;
|
||||
abi =
|
||||
/**/ if args ? abi then getAbi args.abi
|
||||
else if isLinux parsed then abis.gnu
|
||||
else if isLinux parsed then (if isAarch32 parsed then abis.gnueabi else abis.gnu)
|
||||
else if isWindows parsed then abis.gnu
|
||||
else abis.unknown;
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue