a902d99422
This might be a bit debatable but upstream uses "xx" instead of "++" when using it as identifier / in the code (file/directory names, build scripts, website URLs, etc.) so we should probably too. And at least the attribute name and pname will be consistent now.
54 lines
1.6 KiB
Nix
54 lines
1.6 KiB
Nix
{ lib, stdenv, llvm_meta, fetch, cmake, python3, libcxxabi, llvm, fixDarwinDylibNames, version
|
|
, enableShared ? !stdenv.hostPlatform.isStatic
|
|
}:
|
|
|
|
stdenv.mkDerivation {
|
|
pname = "libcxx";
|
|
inherit version;
|
|
|
|
src = fetch "libcxx" "1wf3ww29xkx7prs7pdwicy5qqfapib26110jgmkjrbka9z57bjvx";
|
|
|
|
postUnpack = ''
|
|
unpackFile ${libcxxabi.src}
|
|
mv libcxxabi-* libcxxabi
|
|
unpackFile ${llvm.src}
|
|
mv llvm-* llvm
|
|
'';
|
|
|
|
patches = lib.optional stdenv.hostPlatform.isMusl ../../libcxx-0001-musl-hacks.patch;
|
|
|
|
preConfigure = lib.optionalString stdenv.hostPlatform.isMusl ''
|
|
patchShebangs utils/cat_files.py
|
|
'';
|
|
|
|
nativeBuildInputs = [ cmake python3 ]
|
|
++ lib.optional stdenv.isDarwin fixDarwinDylibNames;
|
|
|
|
buildInputs = [ libcxxabi ];
|
|
|
|
cmakeFlags = [
|
|
"-DLIBCXX_CXX_ABI=libcxxabi"
|
|
] ++ lib.optional (stdenv.hostPlatform.isMusl || stdenv.hostPlatform.isWasi) "-DLIBCXX_HAS_MUSL_LIBC=1"
|
|
++ lib.optional (stdenv.hostPlatform.useLLVM or false) "-DLIBCXX_USE_COMPILER_RT=ON"
|
|
++ lib.optional stdenv.hostPlatform.isWasm [
|
|
"-DLIBCXX_ENABLE_THREADS=OFF"
|
|
"-DLIBCXX_ENABLE_FILESYSTEM=OFF"
|
|
"-DLIBCXX_ENABLE_EXCEPTIONS=OFF"
|
|
] ++ lib.optional (!enableShared) "-DLIBCXX_ENABLE_SHARED=OFF";
|
|
|
|
passthru = {
|
|
isLLVM = true;
|
|
};
|
|
|
|
meta = llvm_meta // {
|
|
homepage = "https://libcxx.llvm.org/";
|
|
description = "C++ standard library";
|
|
longDescription = ''
|
|
libc++ is an implementation of the C++ standard library, targeting C++11,
|
|
C++14 and above.
|
|
'';
|
|
# "All of the code in libc++ is dual licensed under the MIT license and the
|
|
# UIUC License (a BSD-like license)":
|
|
license = with lib.licenses; [ mit ncsa ];
|
|
};
|
|
}
|