about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorEric Seidel <gridaphobe@gmail.com>2015-02-03 14:02:59 -0800
committerEric Seidel <gridaphobe@gmail.com>2015-02-03 14:02:59 -0800
commit6f7632a7bddf32d6888780f254827cb52a3e6a90 (patch)
tree04ea38b7f4e4df437171c0af38a0f67662c8d368 /pkgs
parent2ca30151c20508727cce91895ce9061464bfaeae (diff)
downloadnixlib-6f7632a7bddf32d6888780f254827cb52a3e6a90.tar
nixlib-6f7632a7bddf32d6888780f254827cb52a3e6a90.tar.gz
nixlib-6f7632a7bddf32d6888780f254827cb52a3e6a90.tar.bz2
nixlib-6f7632a7bddf32d6888780f254827cb52a3e6a90.tar.lz
nixlib-6f7632a7bddf32d6888780f254827cb52a3e6a90.tar.xz
nixlib-6f7632a7bddf32d6888780f254827cb52a3e6a90.tar.zst
nixlib-6f7632a7bddf32d6888780f254827cb52a3e6a90.zip
update libcxx[abi] to 3.5
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/build-support/cc-wrapper/default.nix5
-rw-r--r--pkgs/development/libraries/libc++/default.nix16
-rw-r--r--pkgs/development/libraries/libc++abi/default.nix40
3 files changed, 36 insertions, 25 deletions
diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix
index 0faec6aec21b..5d05b5eff869 100644
--- a/pkgs/build-support/cc-wrapper/default.nix
+++ b/pkgs/build-support/cc-wrapper/default.nix
@@ -9,7 +9,6 @@
 , cc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? stdenv.shell
 , zlib ? null, extraPackages ? []
 , setupHook ? ./setup-hook.sh
-, libcxx ? null, libcxxabi ? null
 }:
 
 with stdenv.lib;
@@ -35,7 +34,7 @@ stdenv.mkDerivation {
 
   preferLocalBuild = true;
 
-  inherit cc shell libcxx libcxxabi;
+  inherit cc shell;
   libc = if nativeLibc then null else libc;
   binutils = if nativeTools then null else binutils;
   # The wrapper scripts use 'cat', so we may need coreutils.
@@ -88,7 +87,7 @@ stdenv.mkDerivation {
     ''
 
     + (if nativeTools then ''
-      ccPath="${nativePrefix}/bin"
+      ccPath="${if stdenv.isDarwin then cc else nativePrefix}/bin"
       ldPath="${nativePrefix}/bin"
     '' else ''
       echo $cc > $out/nix-support/orig-cc
diff --git a/pkgs/development/libraries/libc++/default.nix b/pkgs/development/libraries/libc++/default.nix
index 99e9bfe1de2e..86f03e6a8da7 100644
--- a/pkgs/development/libraries/libc++/default.nix
+++ b/pkgs/development/libraries/libc++/default.nix
@@ -1,15 +1,25 @@
 { lib, stdenv, fetchurl, cmake, libcxxabi, fixDarwinDylibNames }:
 
-let version = "3.4.2"; in
+let version = "3.5.0"; in
 
 stdenv.mkDerivation rec {
   name = "libc++-${version}";
 
   src = fetchurl {
-    url = "http://llvm.org/releases/${version}/libcxx-${version}.src.tar.gz";
-    sha256 = "0z3jdvgcq995khkpis5c5vaxhbmvbqjlalbhn09k6pgb5zp46rc2";
+    url = "http://llvm.org/releases/${version}/libcxx-${version}.src.tar.xz";
+    sha256 = "1h5is2jd802344kddm45jcm7bra51llsiv9r34h0rrb3ba2dlic0";
   };
 
+  # instead of allowing libc++ to link with /usr/lib/libc++abi.dylib,
+  # force it to link with our copy
+  preConfigure = stdenv.lib.optionalString stdenv.isDarwin ''
+    substituteInPlace lib/CMakeLists.txt \
+      --replace 'OSX_RE_EXPORT_LINE "/usr/lib/libc++abi.dylib' \
+                'OSX_RE_EXPORT_LINE "${libcxxabi}/lib/libc++abi.dylib' \
+      --replace '"''${CMAKE_OSX_SYSROOT}/usr/lib/libc++abi.dylib"' \
+                '"${libcxxabi}/lib/libc++abi.dylib"'
+  '';
+
   patches = [ ./darwin.patch ];
 
   buildInputs = [ cmake libcxxabi ] ++ lib.optional stdenv.isDarwin fixDarwinDylibNames;
diff --git a/pkgs/development/libraries/libc++abi/default.nix b/pkgs/development/libraries/libc++abi/default.nix
index cbfe8e8f6659..492dbf3b06da 100644
--- a/pkgs/development/libraries/libc++abi/default.nix
+++ b/pkgs/development/libraries/libc++abi/default.nix
@@ -1,46 +1,48 @@
-{ lib, stdenv, fetchurl, libcxx, coreutils, gnused }:
+{ stdenv, cmake, coreutils, fetchurl, libcxx, libunwind, llvm }:
 
-let rev = "199626"; in
+let version = "3.5.0"; in
 
 stdenv.mkDerivation {
-  name = "libc++abi-${rev}";
+  name = "libc++abi-${version}";
 
   src = fetchurl {
-    url = "http://tarballs.nixos.org/libcxxabi-${rev}.tar.bz2";
-    sha256 = "09wr6qwgmdzbmgfkdzfhph9giy0zd6fp3s017fcfy4g0prjn5s4c";
+    url = "http://llvm.org/releases/${version}/libcxxabi-${version}.src.tar.xz";
+    sha256 = "1ndcpw3gfrzh7m1jac2qadhkrqgvb65cns69j9niydyj5mmbxijk";
   };
 
-  patches = [ ./no-stdc++.patch ./darwin.patch ];
+  NIX_CFLAGS_LINK = "-L${libunwind}/lib";
 
-  buildInputs = [ coreutils ];
+  buildInputs = [ coreutils cmake llvm ];
 
   postUnpack = ''
     unpackFile ${libcxx.src}
-    cp -r libcxx-*/include libcxxabi*/
-  '' + lib.optionalString stdenv.isDarwin ''
+    export NIX_CFLAGS_COMPILE+=" -I${libunwind}/include -I$PWD/include"
+    export cmakeFlags="-DLIBCXXABI_LIBCXX_INCLUDES=$(${coreutils}/bin/readlink -f libcxx-*)/include"
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
     export TRIPLE=x86_64-apple-darwin
-    # Hack: NIX_CFLAGS_COMPILE doesn't work here because clang++ isn't
-    # wrapped at this point.
-    export CXX="clang++ -D_LIBCXX_DYNAMIC_FALLBACK=1"
-    unset SDKROOT
   '';
 
   installPhase = if stdenv.isDarwin
     then ''
-      install -d -m 755 $out/include $out/lib
-      install -m 644 lib/libc++abi.dylib $out/lib
-      install -m 644 include/cxxabi.h $out/include
+      for file in lib/*; do
+        # this should be done in CMake, but having trouble figuring out
+        # the magic combination of necessary CMake variables
+        # if you fancy a try, take a look at
+        # http://www.cmake.org/Wiki/CMake_RPATH_handling
+        install_name_tool -id $out/$file $file
+      done
+      make install
+      install -d 755 $out/include
+      install -m 644 ../include/cxxabi.h $out/include
     ''
     else ''
       install -d -m 755 $out/include $out/lib
       install -m 644 lib/libc++abi.so.1.0 $out/lib
-      install -m 644 include/cxxabi.h $out/include
+      install -m 644 ../include/cxxabi.h $out/include
       ln -s libc++abi.so.1.0 $out/lib/libc++abi.so
       ln -s libc++abi.so.1.0 $out/lib/libc++abi.so.1
     '';
 
-  buildPhase = "(cd lib; ./buildit)";
-
   meta = {
     homepage = http://libcxxabi.llvm.org/;
     description = "A new implementation of low level support for a standard C++ library";