diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix index ec024c72481..57607ba25b9 100644 --- a/pkgs/build-support/cc-wrapper/default.nix +++ b/pkgs/build-support/cc-wrapper/default.nix @@ -7,7 +7,7 @@ { name ? "", stdenv, nativeTools, nativeLibc, nativePrefix ? "" , cc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? stdenv.shell -, zlib ? null, extraPackages ? [] +, zlib ? null, extraPackages ? [], extraBuildCommands ? "" , dyld ? null # TODO: should this be a setup-hook on dyld? , isGNU ? false, isClang ? false }: @@ -232,7 +232,8 @@ stdenv.mkDerivation { substituteAll ${./add-flags} $out/nix-support/add-flags.sh cp -p ${./utils.sh} $out/nix-support/utils.sh - ''; + '' + + extraBuildCommands; # The dynamic linker has different names on different Linux platforms. dynamicLinker = diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 32dda557f1d..ea85bd3547b 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3687,8 +3687,12 @@ let gcc_multi = if system == "x86_64-linux" then lowPrio ( - wrapCCWith (import ../build-support/cc-wrapper) glibc_multi (gcc.cc.override { - stdenv = overrideCC stdenv (wrapCCWith (import ../build-support/cc-wrapper) glibc_multi gcc.cc); + let + extraBuildCommands = '' + echo "dontMoveLib64=1" >> $out/nix-support/setup-hook + ''; + in wrapCCWith (import ../build-support/cc-wrapper) glibc_multi extraBuildCommands (gcc.cc.override { + stdenv = overrideCC stdenv (wrapCCWith (import ../build-support/cc-wrapper) glibc_multi "" gcc.cc); profiledCompiler = false; enableMultilib = true; })) @@ -4741,7 +4745,7 @@ let win32hello = callPackage ../development/compilers/visual-c++/test { }; - wrapCCWith = ccWrapper: libc: baseCC: ccWrapper { + wrapCCWith = ccWrapper: libc: extraBuildCommands: baseCC: ccWrapper { nativeTools = stdenv.cc.nativeTools or false; nativeLibc = stdenv.cc.nativeLibc or false; nativePrefix = stdenv.cc.nativePrefix or ""; @@ -4750,10 +4754,10 @@ let dyld = if stdenv.isDarwin then darwin.dyld else null; isGNU = baseCC.isGNU or false; isClang = baseCC.isClang or false; - inherit stdenv binutils coreutils zlib; + inherit stdenv binutils coreutils zlib extraBuildCommands; }; - wrapCC = wrapCCWith (makeOverridable (import ../build-support/cc-wrapper)) stdenv.cc.libc; + wrapCC = wrapCCWith (makeOverridable (import ../build-support/cc-wrapper)) stdenv.cc.libc ""; # legacy version, used for gnat bootstrapping wrapGCC-old = baseGCC: (makeOverridable (import ../build-support/gcc-wrapper-old)) { nativeTools = stdenv.cc.nativeTools or false;