llvmPackages_7.libcxxabi: Fix Darwin bootstrap
In 486e12ad68
cmake flags were added matching
later compilers use of libunwind for `useLLVM = true`. Unfortunately, `useLLVM`
on Darwin was not something tested before, and so the other compilers led us
astray: one of the new flags tried to make libunwind be used when it wasn't a
dep.
This is now fixed with more conditional code, but I hope things can perhaps be
made simpler with more insight into why libunwind is skipped. Perhaps it is
included in libSystem?
Finally, I moved the definition of `cmakeFlags` to match the order in the other
llvm versions.
CC @sternenseemann and @thefloweringash
This commit is contained in:
parent
da0e7f5fab
commit
3af7e98470
@ -1,5 +1,6 @@
|
||||
{ lib, stdenv, cmake, fetch, libcxx, libunwind, llvm, version
|
||||
, standalone ? stdenv.hostPlatform.useLLVM or false
|
||||
, withLibunwind ? !stdenv.isDarwin && !stdenv.isFreeBSD && !stdenv.hostPlatform.isWasm
|
||||
# on musl the shared objects don't build
|
||||
, enableShared ? !stdenv.hostPlatform.isStatic
|
||||
}:
|
||||
@ -11,7 +12,13 @@ stdenv.mkDerivation {
|
||||
src = fetch "libcxxabi" "1zcqxsdjhawgz1cvpk07y3jl6fg9p3ay4nl69zsirqb2ghgyhhb2";
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = lib.optional (!stdenv.isDarwin && !stdenv.isFreeBSD && !stdenv.hostPlatform.isWasm) libunwind;
|
||||
buildInputs = lib.optional withLibunwind libunwind;
|
||||
|
||||
cmakeFlags = lib.optionals standalone [
|
||||
"-DLLVM_ENABLE_LIBCXX=ON"
|
||||
] ++ lib.optionals (standalone && withLibunwind) [
|
||||
"-DLIBCXXABI_USE_LLVM_UNWINDER=ON"
|
||||
] ++ lib.optional (!enableShared) "-DLIBCXXABI_ENABLE_SHARED=OFF";
|
||||
|
||||
postUnpack = ''
|
||||
unpackFile ${libcxx.src}
|
||||
@ -23,11 +30,6 @@ stdenv.mkDerivation {
|
||||
patch -p1 -d $(ls -d libcxx-*) -i ${../../libcxx-0001-musl-hacks.patch}
|
||||
'';
|
||||
|
||||
cmakeFlags = lib.optionals standalone [
|
||||
"-DLLVM_ENABLE_LIBCXX=ON"
|
||||
"-DLIBCXXABI_USE_LLVM_UNWINDER=ON"
|
||||
] ++ lib.optional (!enableShared) "-DLIBCXXABI_ENABLE_SHARED=OFF";
|
||||
|
||||
installPhase = if stdenv.isDarwin
|
||||
then ''
|
||||
for file in lib/*.dylib; do
|
||||
|
Loading…
Reference in New Issue
Block a user