diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix index 06aabf2a6f3..55be5f3a9d0 100644 --- a/pkgs/build-support/cc-wrapper/default.nix +++ b/pkgs/build-support/cc-wrapper/default.nix @@ -372,11 +372,11 @@ stdenv.mkDerivation { echo "-isystem $dir" >> $out/nix-support/libcxx-cxxflags done '' - + optionalString (libcxx.isLLVM or false) ('' + + optionalString (libcxx.isLLVM or false) '' echo "-isystem ${lib.getDev libcxx}/include/c++/v1" >> $out/nix-support/libcxx-cxxflags echo "-stdlib=libc++" >> $out/nix-support/libcxx-ldflags - echo "-lc++abi" >> $out/nix-support/libcxx-ldflags - '') + echo "-l${libcxx.cxxabi.libName}" >> $out/nix-support/libcxx-ldflags + '' ## ## Initial CFLAGS diff --git a/pkgs/development/compilers/llvm/10/default.nix b/pkgs/development/compilers/llvm/10/default.nix index a3b3f9acf75..f4120cb91ca 100644 --- a/pkgs/development/compilers/llvm/10/default.nix +++ b/pkgs/development/compilers/llvm/10/default.nix @@ -110,7 +110,7 @@ let cc = tools.clang-unwrapped; libcxx = targetLlvmLibraries.libcxx; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ]; extraBuildCommands = mkExtraBuildCommands cc; @@ -147,7 +147,7 @@ let libcxx = targetLlvmLibraries.libcxx; bintools = bintools'; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ] ++ lib.optionals (!stdenv.targetPlatform.isWasm) [ targetLlvmLibraries.libunwind diff --git a/pkgs/development/compilers/llvm/10/libcxx/default.nix b/pkgs/development/compilers/llvm/10/libcxx/default.nix index 0c0f535f743..cc029ea657c 100644 --- a/pkgs/development/compilers/llvm/10/libcxx/default.nix +++ b/pkgs/development/compilers/llvm/10/libcxx/default.nix @@ -1,7 +1,11 @@ -{ lib, stdenv, llvm_meta, fetch, cmake, python3, libcxxabi, fixDarwinDylibNames, version +{ lib, stdenv, llvm_meta, fetch, cmake, python3, fixDarwinDylibNames, version +, cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else libcxxabi +, libcxxabi, libcxxrt , enableShared ? !stdenv.hostPlatform.isStatic }: +assert stdenv.isDarwin -> cxxabi.pname == "libcxxabi"; + stdenv.mkDerivation { pname = "libcxx"; inherit version; @@ -37,13 +41,13 @@ stdenv.mkDerivation { ++ lib.optional (stdenv.hostPlatform.isMusl || stdenv.hostPlatform.isWasi) python3 ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames; - buildInputs = [ libcxxabi ]; + buildInputs = [ cxxabi ]; cmakeFlags = [ - "-DLIBCXX_LIBCXXABI_LIB_PATH=${libcxxabi}/lib" "-DLIBCXX_LIBCPPABI_VERSION=2" - "-DLIBCXX_CXX_ABI=libcxxabi" + "-DLIBCXX_CXX_ABI=${cxxabi.pname}" ] ++ lib.optional (stdenv.hostPlatform.isMusl || stdenv.hostPlatform.isWasi) "-DLIBCXX_HAS_MUSL_LIBC=1" + ++ lib.optional (cxxabi.pname == "libcxxabi") "-DLIBCXX_LIBCXXABI_LIB_PATH=${cxxabi}/lib" ++ lib.optional (stdenv.hostPlatform.useLLVM or false) "-DLIBCXX_USE_COMPILER_RT=ON" ++ lib.optionals stdenv.hostPlatform.isWasm [ "-DLIBCXX_ENABLE_THREADS=OFF" @@ -60,13 +64,14 @@ stdenv.mkDerivation { abiName=$(echo "$baseName" | sed -e 's/libc++/libc++abi/') for other in $(${stdenv.cc.targetPrefix}otool -L $file | awk '$1 ~ "/libc\\+\\+abi" { print $1 }'); do - ${stdenv.cc.targetPrefix}install_name_tool -change $other ${libcxxabi}/lib/$abiName $file + ${stdenv.cc.targetPrefix}install_name_tool -change $other ${cxxabi}/lib/$abiName $file done done ''; passthru = { isLLVM = true; + inherit cxxabi; }; meta = llvm_meta // { diff --git a/pkgs/development/compilers/llvm/10/libcxxabi/default.nix b/pkgs/development/compilers/llvm/10/libcxxabi/default.nix index d62422fc9a1..d59191dfd72 100644 --- a/pkgs/development/compilers/llvm/10/libcxxabi/default.nix +++ b/pkgs/development/compilers/llvm/10/libcxxabi/default.nix @@ -67,6 +67,10 @@ stdenv.mkDerivation { install -m 644 ../include/${if stdenv.isDarwin then "*" else "cxxabi.h"} "$dev/include" ''; + passthru = { + libName = "c++abi"; + }; + meta = llvm_meta // { homepage = "https://libcxxabi.llvm.org/"; description = "Provides C++ standard library support"; diff --git a/pkgs/development/compilers/llvm/11/default.nix b/pkgs/development/compilers/llvm/11/default.nix index 90207852568..c950beef0e8 100644 --- a/pkgs/development/compilers/llvm/11/default.nix +++ b/pkgs/development/compilers/llvm/11/default.nix @@ -125,7 +125,7 @@ let cc = tools.clang-unwrapped; libcxx = targetLlvmLibraries.libcxx; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ]; extraBuildCommands = mkExtraBuildCommands cc; @@ -162,7 +162,7 @@ let libcxx = targetLlvmLibraries.libcxx; bintools = bintools'; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ] ++ lib.optionals (!stdenv.targetPlatform.isWasm) [ targetLlvmLibraries.libunwind diff --git a/pkgs/development/compilers/llvm/11/libcxx/default.nix b/pkgs/development/compilers/llvm/11/libcxx/default.nix index 237bbd4e061..3e77e03b124 100644 --- a/pkgs/development/compilers/llvm/11/libcxx/default.nix +++ b/pkgs/development/compilers/llvm/11/libcxx/default.nix @@ -1,7 +1,11 @@ -{ lib, stdenv, llvm_meta, fetch, fetchpatch, cmake, python3, libcxxabi, llvm, fixDarwinDylibNames, version +{ lib, stdenv, llvm_meta, fetch, fetchpatch, cmake, python3, llvm, fixDarwinDylibNames, version +, cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else libcxxabi +, libcxxabi, libcxxrt , enableShared ? !stdenv.hostPlatform.isStatic }: +assert stdenv.isDarwin -> cxxabi.pname == "libcxxabi"; + stdenv.mkDerivation { pname = "libcxx"; inherit version; @@ -42,10 +46,10 @@ stdenv.mkDerivation { nativeBuildInputs = [ cmake python3 ] ++ lib.optional stdenv.isDarwin fixDarwinDylibNames; - buildInputs = [ libcxxabi ]; + buildInputs = [ cxxabi ]; cmakeFlags = [ - "-DLIBCXX_CXX_ABI=libcxxabi" + "-DLIBCXX_CXX_ABI=${cxxabi.pname}" ] ++ 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.optionals stdenv.hostPlatform.isWasm [ @@ -76,13 +80,14 @@ stdenv.mkDerivation { abiName=$(echo "$baseName" | sed -e 's/libc++/libc++abi/') for other in $(${stdenv.cc.targetPrefix}otool -L $file | awk '$1 ~ "/libc\\+\\+abi" { print $1 }'); do - ${stdenv.cc.targetPrefix}install_name_tool -change $other ${libcxxabi}/lib/$abiName $file + ${stdenv.cc.targetPrefix}install_name_tool -change $other ${cxxabi}/lib/$abiName $file done done ''; passthru = { isLLVM = true; + inherit cxxabi; }; meta = llvm_meta // { diff --git a/pkgs/development/compilers/llvm/11/libcxxabi/default.nix b/pkgs/development/compilers/llvm/11/libcxxabi/default.nix index ed0efe28a17..77f7e141188 100644 --- a/pkgs/development/compilers/llvm/11/libcxxabi/default.nix +++ b/pkgs/development/compilers/llvm/11/libcxxabi/default.nix @@ -71,6 +71,10 @@ stdenv.mkDerivation { install -m 644 ../include/${if stdenv.isDarwin then "*" else "cxxabi.h"} "$dev/include" ''; + passthru = { + libName = "c++abi"; + }; + meta = llvm_meta // { homepage = "https://libcxxabi.llvm.org/"; description = "Provides C++ standard library support"; diff --git a/pkgs/development/compilers/llvm/12/default.nix b/pkgs/development/compilers/llvm/12/default.nix index afa14fbf60c..da3beccbe32 100644 --- a/pkgs/development/compilers/llvm/12/default.nix +++ b/pkgs/development/compilers/llvm/12/default.nix @@ -113,7 +113,7 @@ let cc = tools.clang-unwrapped; libcxx = targetLlvmLibraries.libcxx; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ]; extraBuildCommands = mkExtraBuildCommands cc; @@ -154,7 +154,7 @@ let libcxx = targetLlvmLibraries.libcxx; bintools = bintools'; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ] ++ lib.optionals (!stdenv.targetPlatform.isWasm) [ targetLlvmLibraries.libunwind diff --git a/pkgs/development/compilers/llvm/12/libcxx/default.nix b/pkgs/development/compilers/llvm/12/libcxx/default.nix index ef90eedb38c..40bff3c1168 100644 --- a/pkgs/development/compilers/llvm/12/libcxx/default.nix +++ b/pkgs/development/compilers/llvm/12/libcxx/default.nix @@ -1,7 +1,11 @@ -{ lib, stdenv, llvm_meta, fetch, cmake, python3, libcxxabi, llvm, fixDarwinDylibNames, version +{ lib, stdenv, llvm_meta, fetch, cmake, python3, llvm, fixDarwinDylibNames, version +, cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else libcxxabi +, libcxxabi, libcxxrt , enableShared ? !stdenv.hostPlatform.isStatic }: +assert stdenv.isDarwin -> cxxabi.pname == "libcxxabi"; + stdenv.mkDerivation { pname = "libcxx"; inherit version; @@ -30,10 +34,10 @@ stdenv.mkDerivation { nativeBuildInputs = [ cmake python3 ] ++ lib.optional stdenv.isDarwin fixDarwinDylibNames; - buildInputs = [ libcxxabi ]; + buildInputs = [ cxxabi ]; cmakeFlags = [ - "-DLIBCXX_CXX_ABI=libcxxabi" + "-DLIBCXX_CXX_ABI=${cxxabi.pname}" ] ++ 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.optionals stdenv.hostPlatform.isWasm [ @@ -51,13 +55,14 @@ stdenv.mkDerivation { abiName=$(echo "$baseName" | sed -e 's/libc++/libc++abi/') for other in $(${stdenv.cc.targetPrefix}otool -L $file | awk '$1 ~ "/libc\\+\\+abi" { print $1 }'); do - ${stdenv.cc.targetPrefix}install_name_tool -change $other ${libcxxabi}/lib/$abiName $file + ${stdenv.cc.targetPrefix}install_name_tool -change $other ${cxxabi}/lib/$abiName $file done done ''; passthru = { isLLVM = true; + inherit cxxabi; }; meta = llvm_meta // { diff --git a/pkgs/development/compilers/llvm/12/libcxxabi/default.nix b/pkgs/development/compilers/llvm/12/libcxxabi/default.nix index 41c559a52ee..bab39a5272c 100644 --- a/pkgs/development/compilers/llvm/12/libcxxabi/default.nix +++ b/pkgs/development/compilers/llvm/12/libcxxabi/default.nix @@ -69,6 +69,10 @@ stdenv.mkDerivation { install -m 644 ../include/${if stdenv.isDarwin then "*" else "cxxabi.h"} "$dev/include" ''; + passthru = { + libName = "c++abi"; + }; + meta = llvm_meta // { homepage = "https://libcxxabi.llvm.org/"; description = "Provides C++ standard library support"; diff --git a/pkgs/development/compilers/llvm/13/default.nix b/pkgs/development/compilers/llvm/13/default.nix index c5721e5d7fc..3fc459eb7f0 100644 --- a/pkgs/development/compilers/llvm/13/default.nix +++ b/pkgs/development/compilers/llvm/13/default.nix @@ -114,7 +114,7 @@ let cc = tools.clang-unwrapped; libcxx = targetLlvmLibraries.libcxx; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ]; extraBuildCommands = mkExtraBuildCommands cc; @@ -154,7 +154,7 @@ let libcxx = targetLlvmLibraries.libcxx; bintools = bintools'; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ] ++ lib.optionals (!stdenv.targetPlatform.isWasm) [ targetLlvmLibraries.libunwind diff --git a/pkgs/development/compilers/llvm/13/libcxx/default.nix b/pkgs/development/compilers/llvm/13/libcxx/default.nix index f6b76901de3..b18c9da18ff 100644 --- a/pkgs/development/compilers/llvm/13/libcxx/default.nix +++ b/pkgs/development/compilers/llvm/13/libcxx/default.nix @@ -1,5 +1,6 @@ { lib, stdenv, llvm_meta, src, cmake, python3, fixDarwinDylibNames, version -, libcxxabi +, cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else libcxxabi +, libcxxabi, libcxxrt , enableShared ? !stdenv.hostPlatform.isStatic # If headersOnly is true, the resulting package would only include the headers. @@ -10,6 +11,8 @@ , headersOnly ? false }: +assert stdenv.isDarwin -> cxxabi.pname == "libcxxabi"; + stdenv.mkDerivation rec { pname = if headersOnly then "cxx-headers" else "libcxx"; inherit version; @@ -32,9 +35,9 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ cmake python3 ] ++ lib.optional stdenv.isDarwin fixDarwinDylibNames; - buildInputs = lib.optionals (!headersOnly) [ libcxxabi ]; + buildInputs = lib.optionals (!headersOnly) [ cxxabi ]; - cmakeFlags = [ "-DLIBCXX_CXX_ABI=libcxxabi" ] + cmakeFlags = [ "-DLIBCXX_CXX_ABI=${cxxabi.pname}" ] ++ 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.optionals stdenv.hostPlatform.isWasm [ @@ -55,7 +58,7 @@ stdenv.mkDerivation rec { abiName=$(echo "$baseName" | sed -e 's/libc++/libc++abi/') for other in $(${stdenv.cc.targetPrefix}otool -L $file | awk '$1 ~ "/libc\\+\\+abi" { print $1 }'); do - ${stdenv.cc.targetPrefix}install_name_tool -change $other ${libcxxabi}/lib/$abiName $file + ${stdenv.cc.targetPrefix}install_name_tool -change $other ${cxxabi}/lib/$abiName $file done done ''; @@ -71,6 +74,7 @@ stdenv.mkDerivation rec { passthru = { isLLVM = true; + inherit cxxabi; }; meta = llvm_meta // { diff --git a/pkgs/development/compilers/llvm/13/libcxxabi/default.nix b/pkgs/development/compilers/llvm/13/libcxxabi/default.nix index bced2ccb789..06137ab0673 100644 --- a/pkgs/development/compilers/llvm/13/libcxxabi/default.nix +++ b/pkgs/development/compilers/llvm/13/libcxxabi/default.nix @@ -66,6 +66,10 @@ stdenv.mkDerivation rec { install -m 644 ../include/${if stdenv.isDarwin then "*" else "cxxabi.h"} "$dev/include" ''; + passthru = { + libName = "c++abi"; + }; + meta = llvm_meta // { homepage = "https://libcxxabi.llvm.org/"; description = "Provides C++ standard library support"; diff --git a/pkgs/development/compilers/llvm/14/default.nix b/pkgs/development/compilers/llvm/14/default.nix index 722603bb706..5d14c2f5f93 100644 --- a/pkgs/development/compilers/llvm/14/default.nix +++ b/pkgs/development/compilers/llvm/14/default.nix @@ -114,7 +114,7 @@ let cc = tools.clang-unwrapped; libcxx = targetLlvmLibraries.libcxx; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ]; extraBuildCommands = mkExtraBuildCommands cc; @@ -154,7 +154,7 @@ let libcxx = targetLlvmLibraries.libcxx; bintools = bintools'; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ] ++ lib.optionals (!stdenv.targetPlatform.isWasm) [ targetLlvmLibraries.libunwind diff --git a/pkgs/development/compilers/llvm/14/libcxx/default.nix b/pkgs/development/compilers/llvm/14/libcxx/default.nix index c623d41f92f..3e42a8b1e43 100644 --- a/pkgs/development/compilers/llvm/14/libcxx/default.nix +++ b/pkgs/development/compilers/llvm/14/libcxx/default.nix @@ -1,7 +1,8 @@ { lib, stdenv, llvm_meta , monorepoSrc, runCommand , cmake, python3, fixDarwinDylibNames, version -, libcxxabi +, cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else libcxxabi +, libcxxabi, libcxxrt , enableShared ? !stdenv.hostPlatform.isStatic # If headersOnly is true, the resulting package would only include the headers. @@ -16,6 +17,8 @@ let basename = "libcxx"; in +assert stdenv.isDarwin -> cxxabi.pname == "libcxxabi"; + stdenv.mkDerivation rec { pname = basename + lib.optionalString headersOnly "-headers"; inherit version; @@ -48,9 +51,9 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ cmake python3 ] ++ lib.optional stdenv.isDarwin fixDarwinDylibNames; - buildInputs = lib.optionals (!headersOnly) [ libcxxabi ]; + buildInputs = lib.optionals (!headersOnly) [ cxxabi ]; - cmakeFlags = [ "-DLIBCXX_CXX_ABI=libcxxabi" ] + cmakeFlags = [ "-DLIBCXX_CXX_ABI=${cxxabi.pname}" ] ++ 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.optionals stdenv.hostPlatform.isWasm [ @@ -71,13 +74,14 @@ stdenv.mkDerivation rec { abiName=$(echo "$baseName" | sed -e 's/libc++/libc++abi/') for other in $(${stdenv.cc.targetPrefix}otool -L $file | awk '$1 ~ "/libc\\+\\+abi" { print $1 }'); do - ${stdenv.cc.targetPrefix}install_name_tool -change $other ${libcxxabi}/lib/$abiName $file + ${stdenv.cc.targetPrefix}install_name_tool -change $other ${cxxabi}/lib/$abiName $file done done ''; passthru = { isLLVM = true; + inherit cxxabi; }; meta = llvm_meta // { diff --git a/pkgs/development/compilers/llvm/14/libcxxabi/default.nix b/pkgs/development/compilers/llvm/14/libcxxabi/default.nix index 3be2f964abc..30cc34a8c0e 100644 --- a/pkgs/development/compilers/llvm/14/libcxxabi/default.nix +++ b/pkgs/development/compilers/llvm/14/libcxxabi/default.nix @@ -85,6 +85,10 @@ stdenv.mkDerivation rec { ln -s libc++abi.so.1.0 $out/lib/libc++abi.so.1 ''; + passthru = { + libName = "c++abi"; + }; + meta = llvm_meta // { homepage = "https://libcxxabi.llvm.org/"; description = "Provides C++ standard library support"; diff --git a/pkgs/development/compilers/llvm/5/default.nix b/pkgs/development/compilers/llvm/5/default.nix index 0dc4151f236..3cfc89dac75 100644 --- a/pkgs/development/compilers/llvm/5/default.nix +++ b/pkgs/development/compilers/llvm/5/default.nix @@ -86,7 +86,7 @@ let cc = tools.clang-unwrapped; libcxx = targetLlvmLibraries.libcxx; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ]; extraBuildCommands = mkExtraBuildCommands cc; diff --git a/pkgs/development/compilers/llvm/5/libcxx/default.nix b/pkgs/development/compilers/llvm/5/libcxx/default.nix index a5a86fcab4d..073787e92db 100644 --- a/pkgs/development/compilers/llvm/5/libcxx/default.nix +++ b/pkgs/development/compilers/llvm/5/libcxx/default.nix @@ -1,4 +1,9 @@ -{ lib, stdenv, llvm_meta, fetch, cmake, python3, libcxxabi, fixDarwinDylibNames, version }: +{ lib, stdenv, llvm_meta, fetch, cmake, python3, fixDarwinDylibNames, version +, cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else libcxxabi +, libcxxabi, libcxxrt +}: + +assert stdenv.isDarwin -> cxxabi.pname == "libcxxabi"; stdenv.mkDerivation { pname = "libcxx"; @@ -33,13 +38,13 @@ stdenv.mkDerivation { ++ lib.optional stdenv.hostPlatform.isMusl python3 ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames; - buildInputs = [ libcxxabi ]; + buildInputs = [ cxxabi ]; cmakeFlags = [ - "-DLIBCXX_LIBCXXABI_LIB_PATH=${libcxxabi}/lib" "-DLIBCXX_LIBCPPABI_VERSION=2" - "-DLIBCXX_CXX_ABI=libcxxabi" - ] ++ lib.optional stdenv.hostPlatform.isMusl "-DLIBCXX_HAS_MUSL_LIBC=1"; + "-DLIBCXX_CXX_ABI=${cxxabi.pname}" + ] ++ lib.optional stdenv.hostPlatform.isMusl "-DLIBCXX_HAS_MUSL_LIBC=1" + ++ lib.optional (cxxabi.pname == "libcxxabi") "-DLIBCXX_LIBCXXABI_LIB_PATH=${cxxabi}/lib"; preInstall = lib.optionalString (stdenv.isDarwin) '' for file in lib/*.dylib; do @@ -50,13 +55,14 @@ stdenv.mkDerivation { abiName=$(echo "$baseName" | sed -e 's/libc++/libc++abi/') for other in $(${stdenv.cc.targetPrefix}otool -L $file | awk '$1 ~ "/libc\\+\\+abi" { print $1 }'); do - ${stdenv.cc.targetPrefix}install_name_tool -change $other ${libcxxabi}/lib/$abiName $file + ${stdenv.cc.targetPrefix}install_name_tool -change $other ${cxxabi}/lib/$abiName $file done done ''; passthru = { isLLVM = true; + inherit cxxabi; }; meta = llvm_meta // { diff --git a/pkgs/development/compilers/llvm/5/libcxxabi/default.nix b/pkgs/development/compilers/llvm/5/libcxxabi/default.nix index 97077ac7711..cc2ac1beaf0 100644 --- a/pkgs/development/compilers/llvm/5/libcxxabi/default.nix +++ b/pkgs/development/compilers/llvm/5/libcxxabi/default.nix @@ -52,6 +52,10 @@ stdenv.mkDerivation { install -m 644 ../include/${if stdenv.isDarwin then "*" else "cxxabi.h"} "$dev/include" ''; + passthru = { + libName = "c++abi"; + }; + meta = llvm_meta // { homepage = "https://libcxxabi.llvm.org/"; description = "Provides C++ standard library support"; diff --git a/pkgs/development/compilers/llvm/6/default.nix b/pkgs/development/compilers/llvm/6/default.nix index 55a9adf8a63..a0c4ba72718 100644 --- a/pkgs/development/compilers/llvm/6/default.nix +++ b/pkgs/development/compilers/llvm/6/default.nix @@ -87,7 +87,7 @@ let cc = tools.clang-unwrapped; libcxx = targetLlvmLibraries.libcxx; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ]; extraBuildCommands = mkExtraBuildCommands cc; diff --git a/pkgs/development/compilers/llvm/6/libcxx/default.nix b/pkgs/development/compilers/llvm/6/libcxx/default.nix index a6e723753ef..0fc31d43cfa 100644 --- a/pkgs/development/compilers/llvm/6/libcxx/default.nix +++ b/pkgs/development/compilers/llvm/6/libcxx/default.nix @@ -1,4 +1,9 @@ -{ lib, stdenv, llvm_meta, fetch, cmake, python3, libcxxabi, fixDarwinDylibNames, version }: +{ lib, stdenv, llvm_meta, fetch, cmake, python3, fixDarwinDylibNames, version +, cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else libcxxabi +, libcxxabi, libcxxrt +}: + +assert stdenv.isDarwin -> cxxabi.pname == "libcxxabi"; stdenv.mkDerivation { pname = "libcxx"; @@ -39,13 +44,13 @@ stdenv.mkDerivation { ++ lib.optional stdenv.hostPlatform.isMusl python3 ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames; - buildInputs = [ libcxxabi ]; + buildInputs = [ cxxabi ]; cmakeFlags = [ - "-DLIBCXX_LIBCXXABI_LIB_PATH=${libcxxabi}/lib" "-DLIBCXX_LIBCPPABI_VERSION=2" - "-DLIBCXX_CXX_ABI=libcxxabi" - ] ++ lib.optional stdenv.hostPlatform.isMusl "-DLIBCXX_HAS_MUSL_LIBC=1"; + "-DLIBCXX_CXX_ABI=${cxxabi.pname}" + ] ++ lib.optional stdenv.hostPlatform.isMusl "-DLIBCXX_HAS_MUSL_LIBC=1" + ++ lib.optional (cxxabi.pname == "libcxxabi") "-DLIBCXX_LIBCXXABI_LIB_PATH=${cxxabi}/lib"; preInstall = lib.optionalString (stdenv.isDarwin) '' for file in lib/*.dylib; do @@ -56,13 +61,14 @@ stdenv.mkDerivation { abiName=$(echo "$baseName" | sed -e 's/libc++/libc++abi/') for other in $(${stdenv.cc.targetPrefix}otool -L $file | awk '$1 ~ "/libc\\+\\+abi" { print $1 }'); do - ${stdenv.cc.targetPrefix}install_name_tool -change $other ${libcxxabi}/lib/$abiName $file + ${stdenv.cc.targetPrefix}install_name_tool -change $other ${cxxabi}/lib/$abiName $file done done ''; passthru = { isLLVM = true; + inherit cxxabi; }; meta = llvm_meta // { diff --git a/pkgs/development/compilers/llvm/6/libcxxabi/default.nix b/pkgs/development/compilers/llvm/6/libcxxabi/default.nix index aea126b31d9..0821dbdae06 100644 --- a/pkgs/development/compilers/llvm/6/libcxxabi/default.nix +++ b/pkgs/development/compilers/llvm/6/libcxxabi/default.nix @@ -52,6 +52,10 @@ stdenv.mkDerivation { install -m 644 ../include/${if stdenv.isDarwin then "*" else "cxxabi.h"} "$dev/include" ''; + passthru = { + libName = "c++abi"; + }; + meta = llvm_meta // { homepage = "https://libcxxabi.llvm.org/"; description = "Provides C++ standard library support"; diff --git a/pkgs/development/compilers/llvm/7/default.nix b/pkgs/development/compilers/llvm/7/default.nix index cca3e5d9965..7ddd14b60d3 100644 --- a/pkgs/development/compilers/llvm/7/default.nix +++ b/pkgs/development/compilers/llvm/7/default.nix @@ -117,7 +117,7 @@ let cc = tools.clang-unwrapped; libcxx = targetLlvmLibraries.libcxx; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ]; extraBuildCommands = mkExtraBuildCommands cc; @@ -154,7 +154,7 @@ let libcxx = targetLlvmLibraries.libcxx; bintools = bintools'; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ] ++ lib.optionals (!stdenv.targetPlatform.isWasm) [ targetLlvmLibraries.libunwind diff --git a/pkgs/development/compilers/llvm/7/libcxx/default.nix b/pkgs/development/compilers/llvm/7/libcxx/default.nix index 145f0df8837..3834e17fb8d 100644 --- a/pkgs/development/compilers/llvm/7/libcxx/default.nix +++ b/pkgs/development/compilers/llvm/7/libcxx/default.nix @@ -1,7 +1,11 @@ -{ lib, stdenv, llvm_meta, fetch, cmake, python3, libcxxabi, fixDarwinDylibNames, version +{ lib, stdenv, llvm_meta, fetch, cmake, python3, fixDarwinDylibNames, version +, cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else libcxxabi +, libcxxabi, libcxxrt , enableShared ? !stdenv.hostPlatform.isStatic }: +assert stdenv.isDarwin -> cxxabi.pname == "libcxxabi"; + stdenv.mkDerivation { pname = "libcxx"; inherit version; @@ -42,13 +46,13 @@ stdenv.mkDerivation { ++ lib.optional stdenv.hostPlatform.isMusl python3 ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames; - buildInputs = [ libcxxabi ]; + buildInputs = [ cxxabi ]; cmakeFlags = [ - "-DLIBCXX_LIBCXXABI_LIB_PATH=${libcxxabi}/lib" "-DLIBCXX_LIBCPPABI_VERSION=2" - "-DLIBCXX_CXX_ABI=libcxxabi" + "-DLIBCXX_CXX_ABI=${cxxabi.pname}" ] ++ lib.optional stdenv.hostPlatform.isMusl "-DLIBCXX_HAS_MUSL_LIBC=1" + ++ lib.optional (cxxabi.pname == "libcxxabi") "-DLIBCXX_LIBCXXABI_LIB_PATH=${cxxabi}/lib" ++ lib.optional (stdenv.hostPlatform.useLLVM or false) "-DLIBCXX_USE_COMPILER_RT=ON" ++ lib.optional (!enableShared) "-DLIBCXX_ENABLE_SHARED=OFF" ; @@ -61,13 +65,14 @@ stdenv.mkDerivation { abiName=$(echo "$baseName" | sed -e 's/libc++/libc++abi/') for other in $(${stdenv.cc.targetPrefix}otool -L $file | awk '$1 ~ "/libc\\+\\+abi" { print $1 }'); do - ${stdenv.cc.targetPrefix}install_name_tool -change $other ${libcxxabi}/lib/$abiName $file + ${stdenv.cc.targetPrefix}install_name_tool -change $other ${cxxabi}/lib/$abiName $file done done ''; passthru = { isLLVM = true; + inherit cxxabi; }; meta = llvm_meta // { diff --git a/pkgs/development/compilers/llvm/7/libcxxabi/default.nix b/pkgs/development/compilers/llvm/7/libcxxabi/default.nix index d6f90634cd0..c33c61361e2 100644 --- a/pkgs/development/compilers/llvm/7/libcxxabi/default.nix +++ b/pkgs/development/compilers/llvm/7/libcxxabi/default.nix @@ -71,6 +71,10 @@ stdenv.mkDerivation { install -m 644 ../include/${if stdenv.isDarwin then "*" else "cxxabi.h"} "$dev/include" ''; + passthru = { + libName = "c++abi"; + }; + meta = llvm_meta // { homepage = "https://libcxxabi.llvm.org/"; description = "Provides C++ standard library support"; diff --git a/pkgs/development/compilers/llvm/8/default.nix b/pkgs/development/compilers/llvm/8/default.nix index ede40d3b72e..29a2ee7ddc1 100644 --- a/pkgs/development/compilers/llvm/8/default.nix +++ b/pkgs/development/compilers/llvm/8/default.nix @@ -118,7 +118,7 @@ let cc = tools.clang-unwrapped; libcxx = targetLlvmLibraries.libcxx; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ]; extraBuildCommands = mkExtraBuildCommands cc; @@ -155,7 +155,7 @@ let libcxx = targetLlvmLibraries.libcxx; bintools = bintools'; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ] ++ lib.optionals (!stdenv.targetPlatform.isWasm) [ targetLlvmLibraries.libunwind diff --git a/pkgs/development/compilers/llvm/8/libcxx/default.nix b/pkgs/development/compilers/llvm/8/libcxx/default.nix index 4a078ac9cda..967d4b748db 100644 --- a/pkgs/development/compilers/llvm/8/libcxx/default.nix +++ b/pkgs/development/compilers/llvm/8/libcxx/default.nix @@ -1,7 +1,11 @@ -{ lib, stdenv, llvm_meta, fetch, cmake, python3, libcxxabi, fixDarwinDylibNames, version +{ lib, stdenv, llvm_meta, fetch, cmake, python3, fixDarwinDylibNames, version +, cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else libcxxabi +, libcxxabi, libcxxrt , enableShared ? !stdenv.hostPlatform.isStatic }: +assert stdenv.isDarwin -> cxxabi.pname == "libcxxabi"; + stdenv.mkDerivation { pname = "libcxx"; inherit version; @@ -41,13 +45,13 @@ stdenv.mkDerivation { ++ lib.optional (stdenv.hostPlatform.isMusl || stdenv.hostPlatform.isWasi) python3 ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames; - buildInputs = [ libcxxabi ]; + buildInputs = [ cxxabi ]; cmakeFlags = [ - "-DLIBCXX_LIBCXXABI_LIB_PATH=${libcxxabi}/lib" "-DLIBCXX_LIBCPPABI_VERSION=2" - "-DLIBCXX_CXX_ABI=libcxxabi" + "-DLIBCXX_CXX_ABI=${cxxabi.pname}" ] ++ lib.optional (stdenv.hostPlatform.isMusl || stdenv.hostPlatform.isWasi) "-DLIBCXX_HAS_MUSL_LIBC=1" + ++ lib.optional (cxxabi.pname == "libcxxabi") "-DLIBCXX_LIBCXXABI_LIB_PATH=${cxxabi}/lib" ++ lib.optional (stdenv.hostPlatform.useLLVM or false) "-DLIBCXX_USE_COMPILER_RT=ON" ++ lib.optionals stdenv.hostPlatform.isWasm [ "-DLIBCXX_ENABLE_THREADS=OFF" @@ -64,13 +68,14 @@ stdenv.mkDerivation { abiName=$(echo "$baseName" | sed -e 's/libc++/libc++abi/') for other in $(${stdenv.cc.targetPrefix}otool -L $file | awk '$1 ~ "/libc\\+\\+abi" { print $1 }'); do - ${stdenv.cc.targetPrefix}install_name_tool -change $other ${libcxxabi}/lib/$abiName $file + ${stdenv.cc.targetPrefix}install_name_tool -change $other ${cxxabi}/lib/$abiName $file done done ''; passthru = { isLLVM = true; + inherit cxxabi; }; meta = llvm_meta // { diff --git a/pkgs/development/compilers/llvm/8/libcxxabi/default.nix b/pkgs/development/compilers/llvm/8/libcxxabi/default.nix index ab2d46f40a4..ebf8a5c702e 100644 --- a/pkgs/development/compilers/llvm/8/libcxxabi/default.nix +++ b/pkgs/development/compilers/llvm/8/libcxxabi/default.nix @@ -67,6 +67,10 @@ stdenv.mkDerivation { install -m 644 ../include/${if stdenv.isDarwin then "*" else "cxxabi.h"} "$dev/include" ''; + passthru = { + libName = "c++abi"; + }; + meta = llvm_meta // { homepage = "https://libcxxabi.llvm.org/"; description = "Provides C++ standard library support"; diff --git a/pkgs/development/compilers/llvm/9/default.nix b/pkgs/development/compilers/llvm/9/default.nix index 9e09650d153..e2191a81e79 100644 --- a/pkgs/development/compilers/llvm/9/default.nix +++ b/pkgs/development/compilers/llvm/9/default.nix @@ -118,7 +118,7 @@ let cc = tools.clang-unwrapped; libcxx = targetLlvmLibraries.libcxx; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ]; extraBuildCommands = mkExtraBuildCommands cc; @@ -155,7 +155,7 @@ let libcxx = targetLlvmLibraries.libcxx; bintools = bintools'; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ] ++ lib.optionals (!stdenv.targetPlatform.isWasm) [ targetLlvmLibraries.libunwind diff --git a/pkgs/development/compilers/llvm/9/libcxx/default.nix b/pkgs/development/compilers/llvm/9/libcxx/default.nix index 65441c359d6..ec09998ed37 100644 --- a/pkgs/development/compilers/llvm/9/libcxx/default.nix +++ b/pkgs/development/compilers/llvm/9/libcxx/default.nix @@ -1,7 +1,11 @@ -{ lib, stdenv, llvm_meta, fetch, cmake, python3, libcxxabi, fixDarwinDylibNames, version +{ lib, stdenv, llvm_meta, fetch, cmake, python3, fixDarwinDylibNames, version +, cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else libcxxabi +, libcxxabi, libcxxrt , enableShared ? !stdenv.hostPlatform.isStatic }: +assert stdenv.isDarwin -> cxxabi.pname == "libcxxabi"; + stdenv.mkDerivation { pname = "libcxx"; inherit version; @@ -37,13 +41,13 @@ stdenv.mkDerivation { ++ lib.optional (stdenv.hostPlatform.isMusl || stdenv.hostPlatform.isWasi) python3 ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames; - buildInputs = [ libcxxabi ]; + buildInputs = [ cxxabi ]; cmakeFlags = [ - "-DLIBCXX_LIBCXXABI_LIB_PATH=${libcxxabi}/lib" "-DLIBCXX_LIBCPPABI_VERSION=2" - "-DLIBCXX_CXX_ABI=libcxxabi" + "-DLIBCXX_CXX_ABI=${cxxabi.pname}" ] ++ lib.optional (stdenv.hostPlatform.isMusl || stdenv.hostPlatform.isWasi) "-DLIBCXX_HAS_MUSL_LIBC=1" + ++ lib.optional (cxxabi.pname == "libcxxabi") "-DLIBCXX_LIBCXXABI_LIB_PATH=${cxxabi}/lib" ++ lib.optional (stdenv.hostPlatform.useLLVM or false) "-DLIBCXX_USE_COMPILER_RT=ON" ++ lib.optionals stdenv.hostPlatform.isWasm [ "-DLIBCXX_ENABLE_THREADS=OFF" @@ -60,13 +64,14 @@ stdenv.mkDerivation { abiName=$(echo "$baseName" | sed -e 's/libc++/libc++abi/') for other in $(${stdenv.cc.targetPrefix}otool -L $file | awk '$1 ~ "/libc\\+\\+abi" { print $1 }'); do - ${stdenv.cc.targetPrefix}install_name_tool -change $other ${libcxxabi}/lib/$abiName $file + ${stdenv.cc.targetPrefix}install_name_tool -change $other ${cxxabi}/lib/$abiName $file done done ''; passthru = { isLLVM = true; + inherit cxxabi; }; meta = llvm_meta // { diff --git a/pkgs/development/compilers/llvm/9/libcxxabi/default.nix b/pkgs/development/compilers/llvm/9/libcxxabi/default.nix index cfd1c32abd0..f19bfb157ce 100644 --- a/pkgs/development/compilers/llvm/9/libcxxabi/default.nix +++ b/pkgs/development/compilers/llvm/9/libcxxabi/default.nix @@ -67,6 +67,10 @@ stdenv.mkDerivation { install -m 644 ../include/${if stdenv.isDarwin then "*" else "cxxabi.h"} "$dev/include" ''; + passthru = { + libName = "c++abi"; + }; + meta = llvm_meta // { homepage = "https://libcxxabi.llvm.org/"; description = "Provides C++ standard library support"; diff --git a/pkgs/development/compilers/llvm/git/default.nix b/pkgs/development/compilers/llvm/git/default.nix index b667f5f453c..ffbce74a482 100644 --- a/pkgs/development/compilers/llvm/git/default.nix +++ b/pkgs/development/compilers/llvm/git/default.nix @@ -113,7 +113,7 @@ let cc = tools.clang-unwrapped; libcxx = targetLlvmLibraries.libcxx; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ]; extraBuildCommands = mkExtraBuildCommands cc; @@ -153,7 +153,7 @@ let libcxx = targetLlvmLibraries.libcxx; bintools = bintools'; extraPackages = [ - targetLlvmLibraries.libcxxabi + libcxx.cxxabi targetLlvmLibraries.compiler-rt ] ++ lib.optionals (!stdenv.targetPlatform.isWasm) [ targetLlvmLibraries.libunwind diff --git a/pkgs/development/compilers/llvm/git/libcxx/default.nix b/pkgs/development/compilers/llvm/git/libcxx/default.nix index 95e32041037..a29edb0658d 100644 --- a/pkgs/development/compilers/llvm/git/libcxx/default.nix +++ b/pkgs/development/compilers/llvm/git/libcxx/default.nix @@ -1,7 +1,8 @@ { lib, stdenv, llvm_meta , monorepoSrc, runCommand , cmake, python3, fixDarwinDylibNames, version -, libcxxabi +, cxxabi ? if stdenv.hostPlatform.isFreeBSD then libcxxrt else libcxxabi +, libcxxabi, libcxxrt , enableShared ? !stdenv.hostPlatform.isStatic # If headersOnly is true, the resulting package would only include the headers. @@ -16,6 +17,8 @@ let basename = "libcxx"; in +assert stdenv.isDarwin -> cxxabi.pname == "libcxxabi"; + stdenv.mkDerivation rec { pname = basename + lib.optionalString headersOnly "-headers"; inherit version; @@ -59,12 +62,12 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ cmake python3 ] ++ lib.optional stdenv.isDarwin fixDarwinDylibNames; - buildInputs = lib.optionals (!headersOnly) [ libcxxabi ]; + buildInputs = lib.optionals (!headersOnly) [ cxxabi ]; cmakeFlags = [ "-DLLVM_ENABLE_RUNTIMES=libcxx" - "-DLIBCXX_CXX_ABI=${lib.optionalString (!headersOnly) "system-"}libcxxabi" - ] ++ lib.optional (!headersOnly) "-DLIBCXX_CXX_ABI_INCLUDE_PATHS=${libcxxabi.dev}/include/c++/v1" + "-DLIBCXX_CXX_ABI=${lib.optionalString (!headersOnly) "system-"}${cxxabi.pname}" + ] ++ lib.optional (!headersOnly && cxxabi.pname == "libcxxabi") "-DLIBCXX_CXX_ABI_INCLUDE_PATHS=${cxxabi.dev}/include/c++/v1" ++ 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.optionals stdenv.hostPlatform.isWasm [ @@ -85,13 +88,14 @@ stdenv.mkDerivation rec { abiName=$(echo "$baseName" | sed -e 's/libc++/libc++abi/') for other in $(${stdenv.cc.targetPrefix}otool -L $file | awk '$1 ~ "/libc\\+\\+abi" { print $1 }'); do - ${stdenv.cc.targetPrefix}install_name_tool -change $other ${libcxxabi}/lib/$abiName $file + ${stdenv.cc.targetPrefix}install_name_tool -change $other ${cxxabi}/lib/$abiName $file done done ''; passthru = { isLLVM = true; + inherit cxxabi; }; meta = llvm_meta // { diff --git a/pkgs/development/compilers/llvm/git/libcxxabi/default.nix b/pkgs/development/compilers/llvm/git/libcxxabi/default.nix index 804acd6c745..3d5f875637f 100644 --- a/pkgs/development/compilers/llvm/git/libcxxabi/default.nix +++ b/pkgs/development/compilers/llvm/git/libcxxabi/default.nix @@ -95,6 +95,10 @@ stdenv.mkDerivation rec { install -m 644 ../../${pname}/include/${if stdenv.isDarwin then "*" else "cxxabi.h"} "$dev/include" ''; + passthru = { + libName = "c++abi"; + }; + meta = llvm_meta // { homepage = "https://libcxxabi.llvm.org/"; description = "Provides C++ standard library support"; diff --git a/pkgs/development/libraries/libcxxrt/default.nix b/pkgs/development/libraries/libcxxrt/default.nix index 3d5228ad12a..e981945ccbd 100644 --- a/pkgs/development/libraries/libcxxrt/default.nix +++ b/pkgs/development/libraries/libcxxrt/default.nix @@ -20,6 +20,7 @@ stdenv.mkDerivation { ''; passthru = { + libName = "cxxrt"; updateScript = unstableGitUpdater { }; }; diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix index 113aa946276..2ee8c070ae1 100644 --- a/pkgs/stdenv/darwin/default.nix +++ b/pkgs/stdenv/darwin/default.nix @@ -339,6 +339,7 @@ rec { ''; passthru = { isLLVM = true; + cxxabi = self."${finalLlvmPackages}".libcxxabi; }; }; @@ -348,6 +349,9 @@ rec { mkdir -p $out/lib ln -s ${bootstrapTools}/lib/libc++abi.dylib $out/lib/libc++abi.dylib ''; + passthru = { + libName = "c++abi"; + }; }; compiler-rt = stdenv.mkDerivation {