diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-02-04 16:58:12 +0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-02-05 19:18:33 +0100 |
commit | 7703f04b751084aecca9eeda4517ce7c053a4000 (patch) | |
tree | 8901c18219b1351d1ddfbb7381844007b5690736 /pkgs/stdenv/adapters.nix | |
parent | e060d9a2ffb677f7482ddba4845544392a1f4b28 (diff) |
Add a stdenv adapter ‘useGoldLinker’ to force use of Gold
Diffstat (limited to 'pkgs/stdenv/adapters.nix')
-rw-r--r-- | pkgs/stdenv/adapters.nix | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index 662f3307b4632..85063621815ca 100644 --- a/pkgs/stdenv/adapters.nix +++ b/pkgs/stdenv/adapters.nix @@ -2,8 +2,7 @@ a new stdenv with different behaviour, e.g. using a different C compiler. */ -{dietlibc, fetchurl, runCommand}: - +pkgs: rec { @@ -57,13 +56,13 @@ rec { NIX_GCC = import ../build-support/gcc-wrapper { inherit stdenv; - libc = dietlibc; + libc = pkgs.dietlibc; inherit (stdenv.gcc) gcc binutils nativeTools nativePrefix; nativeLibc = false; }; }); isDietLibC = true; - } // {inherit fetchurl;}; + }; # Return a modified stdenv that uses klibc to create small @@ -80,7 +79,7 @@ rec { configureFlags = args.configureFlags or "" + " --disable-shared"; # brrr... - NIX_GCC = runCommand "klibc-wrapper" {} '' + NIX_GCC = pkgs.runCommand "klibc-wrapper" {} '' mkdir -p $out/bin ln -s ${klibc}/bin/klcc $out/bin/gcc ln -s ${klibc}/bin/klcc $out/bin/cc @@ -90,7 +89,7 @@ rec { }); isKlibc = true; isStatic = true; - } // {inherit fetchurl;}; + }; # Return a modified stdenv that tries to build statically linked @@ -103,7 +102,7 @@ rec { + " --disable-shared"; # brrr... }); isStatic = true; - } // {inherit fetchurl;}; + }; # Return a modified stdenv that builds static libraries instead of @@ -115,7 +114,7 @@ rec { toString args.configureFlags or "" + " --enable-static --disable-shared"; }); - } // {inherit fetchurl;}; + }; # Return a modified stdenv that adds a cross compiler to the @@ -277,7 +276,7 @@ rec { */ replaceMaintainersField = stdenv: pkgs: maintainers: stdenv // { mkDerivation = args: - pkgs.lib.recursiveUpdate + stdenv.lib.recursiveUpdate (stdenv.mkDerivation args) { meta.maintainers = maintainers; }; }; @@ -354,4 +353,17 @@ rec { }); }; + + /* Modify a stdenv so that it used the Gold linker. */ + useGoldLinker = stdenv: + let + binutils = stdenv.gcc.binutils; + binutils' = pkgs.runCommand "${binutils.name}-gold" { } + '' + mkdir -p $out/bin + ln -s ${binutils}/bin/* $out/bin/ + ln -sfn ${binutils}/bin/ld.gold $out/bin/ld + ''; # */ + in overrideGCC stdenv (stdenv.gcc.override { binutils = binutils'; }); + } |