update libcxx[abi] to 3.5

+36 -25
+2 -3
pkgs/build-support/cc-wrapper/default.nix
··· 9 9 , cc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? stdenv.shell 10 10 , zlib ? null, extraPackages ? [] 11 11 , setupHook ? ./setup-hook.sh 12 - , libcxx ? null, libcxxabi ? null 13 12 }: 14 13 15 14 with stdenv.lib; ··· 35 34 36 35 preferLocalBuild = true; 37 36 38 - inherit cc shell libcxx libcxxabi; 37 + inherit cc shell; 39 38 libc = if nativeLibc then null else libc; 40 39 binutils = if nativeTools then null else binutils; 41 40 # The wrapper scripts use 'cat', so we may need coreutils. ··· 88 87 '' 89 88 90 89 + (if nativeTools then '' 91 - ccPath="${nativePrefix}/bin" 90 + ccPath="${if stdenv.isDarwin then cc else nativePrefix}/bin" 92 91 ldPath="${nativePrefix}/bin" 93 92 '' else '' 94 93 echo $cc > $out/nix-support/orig-cc
+13 -3
pkgs/development/libraries/libc++/default.nix
··· 1 1 { lib, stdenv, fetchurl, cmake, libcxxabi, fixDarwinDylibNames }: 2 2 3 - let version = "3.4.2"; in 3 + let version = "3.5.0"; in 4 4 5 5 stdenv.mkDerivation rec { 6 6 name = "libc++-${version}"; 7 7 8 8 src = fetchurl { 9 - url = "http://llvm.org/releases/${version}/libcxx-${version}.src.tar.gz"; 10 - sha256 = "0z3jdvgcq995khkpis5c5vaxhbmvbqjlalbhn09k6pgb5zp46rc2"; 9 + url = "http://llvm.org/releases/${version}/libcxx-${version}.src.tar.xz"; 10 + sha256 = "1h5is2jd802344kddm45jcm7bra51llsiv9r34h0rrb3ba2dlic0"; 11 11 }; 12 + 13 + # instead of allowing libc++ to link with /usr/lib/libc++abi.dylib, 14 + # force it to link with our copy 15 + preConfigure = stdenv.lib.optionalString stdenv.isDarwin '' 16 + substituteInPlace lib/CMakeLists.txt \ 17 + --replace 'OSX_RE_EXPORT_LINE "/usr/lib/libc++abi.dylib' \ 18 + 'OSX_RE_EXPORT_LINE "${libcxxabi}/lib/libc++abi.dylib' \ 19 + --replace '"''${CMAKE_OSX_SYSROOT}/usr/lib/libc++abi.dylib"' \ 20 + '"${libcxxabi}/lib/libc++abi.dylib"' 21 + ''; 12 22 13 23 patches = [ ./darwin.patch ]; 14 24
+21 -19
pkgs/development/libraries/libc++abi/default.nix
··· 1 - { lib, stdenv, fetchurl, libcxx, coreutils, gnused }: 1 + { stdenv, cmake, coreutils, fetchurl, libcxx, libunwind, llvm }: 2 2 3 - let rev = "199626"; in 3 + let version = "3.5.0"; in 4 4 5 5 stdenv.mkDerivation { 6 - name = "libc++abi-${rev}"; 6 + name = "libc++abi-${version}"; 7 7 8 8 src = fetchurl { 9 - url = "http://tarballs.nixos.org/libcxxabi-${rev}.tar.bz2"; 10 - sha256 = "09wr6qwgmdzbmgfkdzfhph9giy0zd6fp3s017fcfy4g0prjn5s4c"; 9 + url = "http://llvm.org/releases/${version}/libcxxabi-${version}.src.tar.xz"; 10 + sha256 = "1ndcpw3gfrzh7m1jac2qadhkrqgvb65cns69j9niydyj5mmbxijk"; 11 11 }; 12 12 13 - patches = [ ./no-stdc++.patch ./darwin.patch ]; 13 + NIX_CFLAGS_LINK = "-L${libunwind}/lib"; 14 14 15 - buildInputs = [ coreutils ]; 15 + buildInputs = [ coreutils cmake llvm ]; 16 16 17 17 postUnpack = '' 18 18 unpackFile ${libcxx.src} 19 - cp -r libcxx-*/include libcxxabi*/ 20 - '' + lib.optionalString stdenv.isDarwin '' 19 + export NIX_CFLAGS_COMPILE+=" -I${libunwind}/include -I$PWD/include" 20 + export cmakeFlags="-DLIBCXXABI_LIBCXX_INCLUDES=$(${coreutils}/bin/readlink -f libcxx-*)/include" 21 + '' + stdenv.lib.optionalString stdenv.isDarwin '' 21 22 export TRIPLE=x86_64-apple-darwin 22 - # Hack: NIX_CFLAGS_COMPILE doesn't work here because clang++ isn't 23 - # wrapped at this point. 24 - export CXX="clang++ -D_LIBCXX_DYNAMIC_FALLBACK=1" 25 - unset SDKROOT 26 23 ''; 27 24 28 25 installPhase = if stdenv.isDarwin 29 26 then '' 30 - install -d -m 755 $out/include $out/lib 31 - install -m 644 lib/libc++abi.dylib $out/lib 32 - install -m 644 include/cxxabi.h $out/include 27 + for file in lib/*; do 28 + # this should be done in CMake, but having trouble figuring out 29 + # the magic combination of necessary CMake variables 30 + # if you fancy a try, take a look at 31 + # http://www.cmake.org/Wiki/CMake_RPATH_handling 32 + install_name_tool -id $out/$file $file 33 + done 34 + make install 35 + install -d 755 $out/include 36 + install -m 644 ../include/cxxabi.h $out/include 33 37 '' 34 38 else '' 35 39 install -d -m 755 $out/include $out/lib 36 40 install -m 644 lib/libc++abi.so.1.0 $out/lib 37 - install -m 644 include/cxxabi.h $out/include 41 + install -m 644 ../include/cxxabi.h $out/include 38 42 ln -s libc++abi.so.1.0 $out/lib/libc++abi.so 39 43 ln -s libc++abi.so.1.0 $out/lib/libc++abi.so.1 40 44 ''; 41 - 42 - buildPhase = "(cd lib; ./buildit)"; 43 45 44 46 meta = { 45 47 homepage = http://libcxxabi.llvm.org/;