summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorDaiderd Jordan <daiderd@gmail.com>2017-09-05 21:40:31 +0200
committerGitHub <noreply@github.com>2017-09-05 21:40:31 +0200
commit0adb83e2a2b4140a97d90ddcc0c801808e3f4af8 (patch)
treed64c13cc91f683ee2a1315b015e131e2ea8c82e8 /pkgs
parent402e6ac0893d59c3e86c38f86ac82a114881950d (diff)
parent907222098acbbf68d3c565c6cbd9bad36e0255a8 (diff)
downloadnixlib-0adb83e2a2b4140a97d90ddcc0c801808e3f4af8.tar
nixlib-0adb83e2a2b4140a97d90ddcc0c801808e3f4af8.tar.gz
nixlib-0adb83e2a2b4140a97d90ddcc0c801808e3f4af8.tar.bz2
nixlib-0adb83e2a2b4140a97d90ddcc0c801808e3f4af8.tar.lz
nixlib-0adb83e2a2b4140a97d90ddcc0c801808e3f4af8.tar.xz
nixlib-0adb83e2a2b4140a97d90ddcc0c801808e3f4af8.tar.zst
nixlib-0adb83e2a2b4140a97d90ddcc0c801808e3f4af8.zip
Merge pull request #28998 from LnL7/libstdcxx-hook
libstdc++: add setup-hook
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/development/compilers/gcc/libstdc++-hook.sh2
-rw-r--r--pkgs/development/compilers/llvm/4/default.nix14
-rw-r--r--pkgs/top-level/all-packages.nix4
3 files changed, 18 insertions, 2 deletions
diff --git a/pkgs/development/compilers/gcc/libstdc++-hook.sh b/pkgs/development/compilers/gcc/libstdc++-hook.sh
new file mode 100644
index 000000000000..2d30c845b5a3
--- /dev/null
+++ b/pkgs/development/compilers/gcc/libstdc++-hook.sh
@@ -0,0 +1,2 @@
+export NIX_CXXSTDLIB_COMPILE+="-isystem $(echo -n @gcc@/include/c++/*) -isystem $(echo -n @gcc@/include/c++/*)/$(@gcc@/bin/gcc -dumpmachine)"
+export NIX_CXXSTDLIB_LINK=" -stdlib=libstdc++"
diff --git a/pkgs/development/compilers/llvm/4/default.nix b/pkgs/development/compilers/llvm/4/default.nix
index 9e5bccff3556..11a9a46c15e5 100644
--- a/pkgs/development/compilers/llvm/4/default.nix
+++ b/pkgs/development/compilers/llvm/4/default.nix
@@ -1,4 +1,8 @@
-{ lowPrio, newScope, stdenv, cmake, libxml2, python2, isl, fetchurl, overrideCC, wrapCC, darwin, ccWrapperFun }:
+{ lowPrio, newScope, stdenv, targetPlatform, cmake, libstdcxxHook
+, libxml2, python2, isl, fetchurl, overrideCC, wrapCC, ccWrapperFun
+, darwin
+}:
+
 let
   callPackage = newScope (self // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; });
 
@@ -46,7 +50,12 @@ let
       extraPackages = [ self.libcxx self.libcxxabi ];
     };
 
-    stdenv = overrideCC stdenv self.clang;
+    stdenv = stdenv.override (drv: {
+      allowedRequisites = null;
+      cc = self.clang;
+      # Use the gcc libstdc++ when targeting linux.
+      extraBuildInputs = if stdenv.cc.isGNU then [ libstdcxxHook ] else drv.extraBuildInputs;
+    });
 
     libcxxStdenv = overrideCC stdenv self.libcxxClang;
 
@@ -58,4 +67,5 @@ let
 
     libcxxabi = callPackage ./libc++abi.nix {};
   };
+
 in self
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 2f4fb44653d4..1aa06ccfa116 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -5360,6 +5360,10 @@ with pkgs;
 
   gccApple = throw "gccApple is no longer supported";
 
+  libstdcxxHook = makeSetupHook
+    { substitutions = { gcc = gcc-unwrapped; }; }
+    ../development/compilers/gcc/libstdc++-hook.sh;
+
   # Can't just overrideCC, because then the stdenv-cross mkDerivation will be
   # thrown away. TODO: find a better solution for this.
   crossLibcStdenv = buildPackages.makeStdenvCross {