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
, cc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? stdenv.shell
10
, zlib ? null, extraPackages ? []
11
, setupHook ? ./setup-hook.sh
12
-
, libcxx ? null, libcxxabi ? null
13
}:
14
15
with stdenv.lib;
···
35
36
preferLocalBuild = true;
37
38
-
inherit cc shell libcxx libcxxabi;
39
libc = if nativeLibc then null else libc;
40
binutils = if nativeTools then null else binutils;
41
# The wrapper scripts use 'cat', so we may need coreutils.
···
88
''
89
90
+ (if nativeTools then ''
91
-
ccPath="${nativePrefix}/bin"
92
ldPath="${nativePrefix}/bin"
93
'' else ''
94
echo $cc > $out/nix-support/orig-cc
···
9
, cc ? null, libc ? null, binutils ? null, coreutils ? null, shell ? stdenv.shell
10
, zlib ? null, extraPackages ? []
11
, setupHook ? ./setup-hook.sh
0
12
}:
13
14
with stdenv.lib;
···
34
35
preferLocalBuild = true;
36
37
+
inherit cc shell;
38
libc = if nativeLibc then null else libc;
39
binutils = if nativeTools then null else binutils;
40
# The wrapper scripts use 'cat', so we may need coreutils.
···
87
''
88
89
+ (if nativeTools then ''
90
+
ccPath="${if stdenv.isDarwin then cc else nativePrefix}/bin"
91
ldPath="${nativePrefix}/bin"
92
'' else ''
93
echo $cc > $out/nix-support/orig-cc
+13
-3
pkgs/development/libraries/libc++/default.nix
···
1
{ lib, stdenv, fetchurl, cmake, libcxxabi, fixDarwinDylibNames }:
2
3
-
let version = "3.4.2"; in
4
5
stdenv.mkDerivation rec {
6
name = "libc++-${version}";
7
8
src = fetchurl {
9
-
url = "http://llvm.org/releases/${version}/libcxx-${version}.src.tar.gz";
10
-
sha256 = "0z3jdvgcq995khkpis5c5vaxhbmvbqjlalbhn09k6pgb5zp46rc2";
11
};
0
0
0
0
0
0
0
0
0
0
12
13
patches = [ ./darwin.patch ];
14
···
1
{ lib, stdenv, fetchurl, cmake, libcxxabi, fixDarwinDylibNames }:
2
3
+
let version = "3.5.0"; in
4
5
stdenv.mkDerivation rec {
6
name = "libc++-${version}";
7
8
src = fetchurl {
9
+
url = "http://llvm.org/releases/${version}/libcxx-${version}.src.tar.xz";
10
+
sha256 = "1h5is2jd802344kddm45jcm7bra51llsiv9r34h0rrb3ba2dlic0";
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
+
'';
22
23
patches = [ ./darwin.patch ];
24
+21
-19
pkgs/development/libraries/libc++abi/default.nix
···
1
-
{ lib, stdenv, fetchurl, libcxx, coreutils, gnused }:
2
3
-
let rev = "199626"; in
4
5
stdenv.mkDerivation {
6
-
name = "libc++abi-${rev}";
7
8
src = fetchurl {
9
-
url = "http://tarballs.nixos.org/libcxxabi-${rev}.tar.bz2";
10
-
sha256 = "09wr6qwgmdzbmgfkdzfhph9giy0zd6fp3s017fcfy4g0prjn5s4c";
11
};
12
13
-
patches = [ ./no-stdc++.patch ./darwin.patch ];
14
15
-
buildInputs = [ coreutils ];
16
17
postUnpack = ''
18
unpackFile ${libcxx.src}
19
-
cp -r libcxx-*/include libcxxabi*/
20
-
'' + lib.optionalString stdenv.isDarwin ''
0
21
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
'';
27
28
installPhase = if stdenv.isDarwin
29
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
0
0
0
0
0
0
0
33
''
34
else ''
35
install -d -m 755 $out/include $out/lib
36
install -m 644 lib/libc++abi.so.1.0 $out/lib
37
-
install -m 644 include/cxxabi.h $out/include
38
ln -s libc++abi.so.1.0 $out/lib/libc++abi.so
39
ln -s libc++abi.so.1.0 $out/lib/libc++abi.so.1
40
'';
41
-
42
-
buildPhase = "(cd lib; ./buildit)";
43
44
meta = {
45
homepage = http://libcxxabi.llvm.org/;
···
1
+
{ stdenv, cmake, coreutils, fetchurl, libcxx, libunwind, llvm }:
2
3
+
let version = "3.5.0"; in
4
5
stdenv.mkDerivation {
6
+
name = "libc++abi-${version}";
7
8
src = fetchurl {
9
+
url = "http://llvm.org/releases/${version}/libcxxabi-${version}.src.tar.xz";
10
+
sha256 = "1ndcpw3gfrzh7m1jac2qadhkrqgvb65cns69j9niydyj5mmbxijk";
11
};
12
13
+
NIX_CFLAGS_LINK = "-L${libunwind}/lib";
14
15
+
buildInputs = [ coreutils cmake llvm ];
16
17
postUnpack = ''
18
unpackFile ${libcxx.src}
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 ''
22
export TRIPLE=x86_64-apple-darwin
0
0
0
0
23
'';
24
25
installPhase = if stdenv.isDarwin
26
then ''
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
37
''
38
else ''
39
install -d -m 755 $out/include $out/lib
40
install -m 644 lib/libc++abi.so.1.0 $out/lib
41
+
install -m 644 ../include/cxxabi.h $out/include
42
ln -s libc++abi.so.1.0 $out/lib/libc++abi.so
43
ln -s libc++abi.so.1.0 $out/lib/libc++abi.so.1
44
'';
0
0
45
46
meta = {
47
homepage = http://libcxxabi.llvm.org/;