2110c0bd30
Also fix some setup hooks that unnecessarily used environment hooks, which revolted in the same variable being modified too many times.
54 lines
1.8 KiB
Nix
54 lines
1.8 KiB
Nix
{ lib, stdenv, fetch, cmake, python, llvm, libcxxabi, fixDarwinDylibNames, version }:
|
|
|
|
stdenv.mkDerivation rec {
|
|
name = "libc++-${version}";
|
|
|
|
src = fetch "libcxx" "1n8d0iadkk9fdpplvxkdgrgh2szc6msrx1mpdjpmilz9pn3im4vh";
|
|
|
|
postUnpack = ''
|
|
unpackFile ${libcxxabi.src}
|
|
export LIBCXXABI_INCLUDE_DIR="$PWD/$(ls -d libcxxabi-${version}*)/include"
|
|
'';
|
|
|
|
# on next rebuild, this can be replaced with optionals; for now set to null to avoid
|
|
# patches = stdenv.lib.optionals stdenv.hostPlatform.isMusl [
|
|
patches = if stdenv.hostPlatform.isMusl then [
|
|
../../libcxx-0001-musl-hacks.patch
|
|
] else null;
|
|
|
|
prePatch = ''
|
|
substituteInPlace lib/CMakeLists.txt --replace "/usr/lib/libc++" "\''${LIBCXX_LIBCXXABI_LIB_PATH}/libc++"
|
|
'';
|
|
|
|
preConfigure = ''
|
|
# Get headers from the cxxabi source so we can see private headers not installed by the cxxabi package
|
|
cmakeFlagsArray=($cmakeFlagsArray -DLIBCXX_CXX_ABI_INCLUDE_PATHS="$LIBCXXABI_INCLUDE_DIR")
|
|
'' + lib.optionalString stdenv.hostPlatform.isMusl ''
|
|
patchShebangs utils/cat_files.py
|
|
'';
|
|
nativeBuildInputs = [ cmake ] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl python;
|
|
|
|
buildInputs = [ libcxxabi ] ++ lib.optional stdenv.isDarwin fixDarwinDylibNames;
|
|
|
|
cmakeFlags = [
|
|
"-DLIBCXX_LIBCXXABI_LIB_PATH=${libcxxabi}/lib"
|
|
"-DLIBCXX_LIBCPPABI_VERSION=2"
|
|
"-DLIBCXX_CXX_ABI=libcxxabi"
|
|
] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl "-DLIBCXX_HAS_MUSL_LIBC=1";
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
linkCxxAbi = stdenv.isLinux;
|
|
|
|
setupHooks = [
|
|
../../../../../build-support/setup-hooks/role.bash
|
|
./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;
|
|
};
|
|
}
|