44cb95a234
This is very similar to what we had in bb0b0822ef
.
The xlocale.h header is no longer existing in glibc version 2.26, so we
need to avoid including it.
I've tested building against all of the libcxx attributes of LLVM 3.5,
3.7, 3.8, 3.9, 4 and 5.
All of them succeeded except version 3.5, which failed because of an
unrelated issue (build of libc++abi has failed, one of its
dependencies), so I only verified whether the patch applies cleanly.
Signed-off-by: aszlig <aszlig@nix.build>
Cc: @vcunat
50 lines
1.5 KiB
Nix
50 lines
1.5 KiB
Nix
{ lib, stdenv, fetchurl, cmake, libcxxabi, fixDarwinDylibNames }:
|
|
|
|
let version = "3.5.2"; in
|
|
|
|
stdenv.mkDerivation rec {
|
|
name = "libc++-${version}";
|
|
|
|
src = fetchurl {
|
|
url = "http://llvm.org/releases/${version}/libcxx-${version}.src.tar.xz";
|
|
sha256 = "0irnl54fwzh2hzn9x4jfvnfyq5kd0zn0iwbzdivgwhqzw6fjdwdv";
|
|
};
|
|
|
|
# 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
|
|
# glibc 2.26 fix
|
|
./xlocale-glibc-2.26.patch
|
|
];
|
|
|
|
buildInputs = [ cmake libcxxabi ] ++ lib.optional stdenv.isDarwin fixDarwinDylibNames;
|
|
|
|
cmakeFlags = [
|
|
"-DLIBCXX_LIBCXXABI_INCLUDE_PATHS=${libcxxabi}/include"
|
|
"-DLIBCXX_LIBCXXABI_LIB_PATH=${libcxxabi}/lib"
|
|
"-DLIBCXX_LIBCPPABI_VERSION=2"
|
|
"-DLIBCXX_CXX_ABI=libcxxabi"
|
|
];
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
linkCxxAbi = stdenv.isLinux;
|
|
|
|
setupHook = ./setup-hook.sh;
|
|
|
|
meta = {
|
|
homepage = http://libcxx.llvm.org/;
|
|
description = "A new implementation of the C++ standard library, targeting C++11";
|
|
license = with stdenv.lib.licenses; [ ncsa mit ];
|
|
platforms = stdenv.lib.platforms.unix;
|
|
};
|
|
}
|