diff options
author | John Ericson <John.Ericson@Obsidian.Systems> | 2017-11-27 00:12:13 -0500 |
---|---|---|
committer | John Ericson <John.Ericson@Obsidian.Systems> | 2017-12-29 17:32:28 -0500 |
commit | cc44e04472bf8d0774e09a6cc4bd47175e531b8e (patch) | |
tree | 63a68b190807d96b7c78fb30b4a3b543a242f65d | |
parent | 1cde06acf691316a59ad30b207cbd68c64cbc0fa (diff) | |
download | nixlib-cc44e04472bf8d0774e09a6cc4bd47175e531b8e.tar nixlib-cc44e04472bf8d0774e09a6cc4bd47175e531b8e.tar.gz nixlib-cc44e04472bf8d0774e09a6cc4bd47175e531b8e.tar.bz2 nixlib-cc44e04472bf8d0774e09a6cc4bd47175e531b8e.tar.lz nixlib-cc44e04472bf8d0774e09a6cc4bd47175e531b8e.tar.xz nixlib-cc44e04472bf8d0774e09a6cc4bd47175e531b8e.tar.zst nixlib-cc44e04472bf8d0774e09a6cc4bd47175e531b8e.zip |
bintools-wrapper: Define fallback default emulation
This ensures we by-default cross-compile to the intended platform.
-rw-r--r-- | pkgs/build-support/bintools-wrapper/default.nix | 14 | ||||
-rw-r--r-- | pkgs/build-support/bintools-wrapper/ld-wrapper.sh | 5 |
2 files changed, 19 insertions, 0 deletions
diff --git a/pkgs/build-support/bintools-wrapper/default.nix b/pkgs/build-support/bintools-wrapper/default.nix index 0dcae204824d..57859b2f371b 100644 --- a/pkgs/build-support/bintools-wrapper/default.nix +++ b/pkgs/build-support/bintools-wrapper/default.nix @@ -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; diff --git a/pkgs/build-support/bintools-wrapper/ld-wrapper.sh b/pkgs/build-support/bintools-wrapper/ld-wrapper.sh index 136621d27af5..991ed0fe263c 100644 --- a/pkgs/build-support/bintools-wrapper/ld-wrapper.sh +++ b/pkgs/build-support/bintools-wrapper/ld-wrapper.sh @@ -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 |