tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
update libcxx[abi] to 3.5
Eric Seidel
11 years ago
6f7632a7
2ca30151
+36
-25
3 changed files
expand all
collapse all
unified
split
pkgs
build-support
cc-wrapper
default.nix
development
libraries
libc++
default.nix
libc++abi
default.nix
+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
12
-
, libcxx ? null, libcxxabi ? null
13
12
}:
14
13
15
14
with stdenv.lib;
···
35
34
36
35
preferLocalBuild = true;
37
36
38
38
-
inherit cc shell libcxx libcxxabi;
37
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
91
-
ccPath="${nativePrefix}/bin"
90
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
3
-
let version = "3.4.2"; in
3
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
9
-
url = "http://llvm.org/releases/${version}/libcxx-${version}.src.tar.gz";
10
10
-
sha256 = "0z3jdvgcq995khkpis5c5vaxhbmvbqjlalbhn09k6pgb5zp46rc2";
9
9
+
url = "http://llvm.org/releases/${version}/libcxx-${version}.src.tar.xz";
10
10
+
sha256 = "1h5is2jd802344kddm45jcm7bra51llsiv9r34h0rrb3ba2dlic0";
11
11
};
12
12
+
13
13
+
# instead of allowing libc++ to link with /usr/lib/libc++abi.dylib,
14
14
+
# force it to link with our copy
15
15
+
preConfigure = stdenv.lib.optionalString stdenv.isDarwin ''
16
16
+
substituteInPlace lib/CMakeLists.txt \
17
17
+
--replace 'OSX_RE_EXPORT_LINE "/usr/lib/libc++abi.dylib' \
18
18
+
'OSX_RE_EXPORT_LINE "${libcxxabi}/lib/libc++abi.dylib' \
19
19
+
--replace '"''${CMAKE_OSX_SYSROOT}/usr/lib/libc++abi.dylib"' \
20
20
+
'"${libcxxabi}/lib/libc++abi.dylib"'
21
21
+
'';
12
22
13
23
patches = [ ./darwin.patch ];
14
24
+21
-19
pkgs/development/libraries/libc++abi/default.nix
···
1
1
-
{ lib, stdenv, fetchurl, libcxx, coreutils, gnused }:
1
1
+
{ stdenv, cmake, coreutils, fetchurl, libcxx, libunwind, llvm }:
2
2
3
3
-
let rev = "199626"; in
3
3
+
let version = "3.5.0"; in
4
4
5
5
stdenv.mkDerivation {
6
6
-
name = "libc++abi-${rev}";
6
6
+
name = "libc++abi-${version}";
7
7
8
8
src = fetchurl {
9
9
-
url = "http://tarballs.nixos.org/libcxxabi-${rev}.tar.bz2";
10
10
-
sha256 = "09wr6qwgmdzbmgfkdzfhph9giy0zd6fp3s017fcfy4g0prjn5s4c";
9
9
+
url = "http://llvm.org/releases/${version}/libcxxabi-${version}.src.tar.xz";
10
10
+
sha256 = "1ndcpw3gfrzh7m1jac2qadhkrqgvb65cns69j9niydyj5mmbxijk";
11
11
};
12
12
13
13
-
patches = [ ./no-stdc++.patch ./darwin.patch ];
13
13
+
NIX_CFLAGS_LINK = "-L${libunwind}/lib";
14
14
15
15
-
buildInputs = [ coreutils ];
15
15
+
buildInputs = [ coreutils cmake llvm ];
16
16
17
17
postUnpack = ''
18
18
unpackFile ${libcxx.src}
19
19
-
cp -r libcxx-*/include libcxxabi*/
20
20
-
'' + lib.optionalString stdenv.isDarwin ''
19
19
+
export NIX_CFLAGS_COMPILE+=" -I${libunwind}/include -I$PWD/include"
20
20
+
export cmakeFlags="-DLIBCXXABI_LIBCXX_INCLUDES=$(${coreutils}/bin/readlink -f libcxx-*)/include"
21
21
+
'' + stdenv.lib.optionalString stdenv.isDarwin ''
21
22
export TRIPLE=x86_64-apple-darwin
22
22
-
# Hack: NIX_CFLAGS_COMPILE doesn't work here because clang++ isn't
23
23
-
# wrapped at this point.
24
24
-
export CXX="clang++ -D_LIBCXX_DYNAMIC_FALLBACK=1"
25
25
-
unset SDKROOT
26
23
'';
27
24
28
25
installPhase = if stdenv.isDarwin
29
26
then ''
30
30
-
install -d -m 755 $out/include $out/lib
31
31
-
install -m 644 lib/libc++abi.dylib $out/lib
32
32
-
install -m 644 include/cxxabi.h $out/include
27
27
+
for file in lib/*; do
28
28
+
# this should be done in CMake, but having trouble figuring out
29
29
+
# the magic combination of necessary CMake variables
30
30
+
# if you fancy a try, take a look at
31
31
+
# http://www.cmake.org/Wiki/CMake_RPATH_handling
32
32
+
install_name_tool -id $out/$file $file
33
33
+
done
34
34
+
make install
35
35
+
install -d 755 $out/include
36
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
37
-
install -m 644 include/cxxabi.h $out/include
41
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
41
-
42
42
-
buildPhase = "(cd lib; ./buildit)";
43
45
44
46
meta = {
45
47
homepage = http://libcxxabi.llvm.org/;