bintools-wrapper: Define fallback default emulation

This ensures we by-default cross-compile to the intended platform.
This commit is contained in:
John Ericson 2017-11-27 00:12:13 -05:00
parent 1cde06acf6
commit cc44e04472
2 changed files with 19 additions and 0 deletions

View File

@ -164,6 +164,20 @@ stdenv.mkDerivation {
set +u
'';
emulation = let
fmt =
/**/ if targetPlatform.isDarwin then "mach-o"
else if targetPlatform.isWindows then "pe"
else "elf" + toString targetPlatform.parsed.cpu.bits;
endianPrefix = if targetPlatform.isBigEndian then "big" else "little";
arch =
/**/ if targetPlatform.isAarch64 then endianPrefix + "aarch64"
else if targetPlatform.isArm then endianPrefix + "arm"
else if targetPlatform.isx86_64 then "x86-64"
else if targetPlatform.isi686 then "i386"
else throw "unknown emulation for platform: " + targetPlatform.config;
in targetPlatform.platform.bfdEmulation or (fmt + "-" + arch);
propagatedBuildInputs = extraPackages;
setupHook = ./setup-hook.sh;

View File

@ -67,6 +67,11 @@ fi
extraAfter+=($NIX_@infixSalt@_LDFLAGS_AFTER)
# Specify the target emulation if nothing is passed in ("-m" overrides this
# environment variable). Ensures we never blindly fallback on targeting the host
# platform.
: ${LDEMULATION:=@emulation@}
# Three tasks:
#
# 1. Find all -L... switches for rpath