Merge pull request #70244 from nmattia/nm-fix-libcxx
libcxx: fix build on linux musl
This commit is contained in:
commit
c10098322a
|
@ -1,4 +1,5 @@
|
||||||
{ lib, stdenv, fetch, cmake, python, libcxxabi, fixDarwinDylibNames, version }:
|
{ lib, stdenv, fetch, cmake, python, libcxxabi, fixDarwinDylibNames, version
|
||||||
|
, enableShared ? ! stdenv.hostPlatform.isMusl }:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
pname = "libc++";
|
pname = "libc++";
|
||||||
|
@ -31,7 +32,8 @@ stdenv.mkDerivation {
|
||||||
"-DLIBCXX_LIBCXXABI_LIB_PATH=${libcxxabi}/lib"
|
"-DLIBCXX_LIBCXXABI_LIB_PATH=${libcxxabi}/lib"
|
||||||
"-DLIBCXX_LIBCPPABI_VERSION=2"
|
"-DLIBCXX_LIBCPPABI_VERSION=2"
|
||||||
"-DLIBCXX_CXX_ABI=libcxxabi"
|
"-DLIBCXX_CXX_ABI=libcxxabi"
|
||||||
] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl "-DLIBCXX_HAS_MUSL_LIBC=1";
|
] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl "-DLIBCXX_HAS_MUSL_LIBC=1"
|
||||||
|
++ stdenv.lib.optional (!enableShared) "-DLIBCXX_ENABLE_SHARED=OFF" ;
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
{ stdenv, cmake, fetch, libcxx, llvm, version }:
|
{ stdenv, cmake, fetch, libcxx, llvm, version
|
||||||
|
# on musl the shared objects don't build
|
||||||
|
, enableShared ? ! stdenv.hostPlatform.isMusl }:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation {
|
||||||
pname = "libc++abi";
|
pname = "libc++abi";
|
||||||
|
@ -11,13 +13,15 @@ stdenv.mkDerivation {
|
||||||
postUnpack = ''
|
postUnpack = ''
|
||||||
unpackFile ${libcxx.src}
|
unpackFile ${libcxx.src}
|
||||||
unpackFile ${llvm.src}
|
unpackFile ${llvm.src}
|
||||||
export cmakeFlags="-DLLVM_PATH=$PWD/$(ls -d llvm-*) -DLIBCXXABI_LIBCXX_PATH=$PWD/$(ls -d libcxx-*)"
|
cmakeFlagsArray=($cmakeFlagsArray -DLLVM_PATH=$PWD/$(ls -d llvm-*) -DLIBCXXABI_LIBCXX_PATH=$PWD/$(ls -d libcxx-*) )
|
||||||
'' + stdenv.lib.optionalString stdenv.isDarwin ''
|
'' + stdenv.lib.optionalString stdenv.isDarwin ''
|
||||||
export TRIPLE=x86_64-apple-darwin
|
export TRIPLE=x86_64-apple-darwin
|
||||||
'' + stdenv.lib.optionalString stdenv.hostPlatform.isMusl ''
|
'' + stdenv.lib.optionalString stdenv.hostPlatform.isMusl ''
|
||||||
patch -p1 -d $(ls -d libcxx-*) -i ${../libcxx-0001-musl-hacks.patch}
|
patch -p1 -d $(ls -d libcxx-*) -i ${../libcxx-0001-musl-hacks.patch}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
cmakeFlags = stdenv.lib.optional (!enableShared) "-DLIBCXXABI_ENABLE_SHARED=OFF";
|
||||||
|
|
||||||
installPhase = if stdenv.isDarwin
|
installPhase = if stdenv.isDarwin
|
||||||
then ''
|
then ''
|
||||||
for file in lib/*.dylib; do
|
for file in lib/*.dylib; do
|
||||||
|
@ -34,10 +38,10 @@ stdenv.mkDerivation {
|
||||||
else ''
|
else ''
|
||||||
install -d -m 755 $out/include $out/lib
|
install -d -m 755 $out/include $out/lib
|
||||||
install -m 644 lib/libc++abi.a $out/lib
|
install -m 644 lib/libc++abi.a $out/lib
|
||||||
install -m 644 lib/libc++abi.so.1.0 $out/lib
|
${stdenv.lib.optionalString enableShared "install -m 644 lib/libc++abi.so.1.0 $out/lib"}
|
||||||
install -m 644 ../include/cxxabi.h $out/include
|
install -m 644 ../include/cxxabi.h $out/include
|
||||||
ln -s libc++abi.so.1.0 $out/lib/libc++abi.so
|
${stdenv.lib.optionalString enableShared "ln -s libc++abi.so.1.0 $out/lib/libc++abi.so"}
|
||||||
ln -s libc++abi.so.1.0 $out/lib/libc++abi.so.1
|
${stdenv.lib.optionalString enableShared "ln -s libc++abi.so.1.0 $out/lib/libc++abi.so.1"}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
|
Loading…
Reference in New Issue