From e494de20b3bde5d670a11f7f6d0e6c5beb2ee590 Mon Sep 17 00:00:00 2001 From: Nicolas Mattia <nicolas@nmattia.com> Date: Wed, 2 Oct 2019 13:28:04 +0200 Subject: [PATCH 1/2] libcxxapi: don't produce shared libs on musl --- pkgs/development/compilers/llvm/7/libc++abi.nix | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/pkgs/development/compilers/llvm/7/libc++abi.nix b/pkgs/development/compilers/llvm/7/libc++abi.nix index 522c8d1a163..9067bf43a8f 100644 --- a/pkgs/development/compilers/llvm/7/libc++abi.nix +++ b/pkgs/development/compilers/llvm/7/libc++abi.nix @@ -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 { pname = "libc++abi"; @@ -11,13 +13,15 @@ stdenv.mkDerivation { postUnpack = '' unpackFile ${libcxx.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 '' export TRIPLE=x86_64-apple-darwin '' + stdenv.lib.optionalString stdenv.hostPlatform.isMusl '' 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 then '' for file in lib/*.dylib; do @@ -34,10 +38,10 @@ stdenv.mkDerivation { else '' install -d -m 755 $out/include $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 - 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"} + ${stdenv.lib.optionalString enableShared "ln -s libc++abi.so.1.0 $out/lib/libc++abi.so.1"} ''; meta = { From fadd37ba4688e024fbe57f08b0209a42dd6fba3e Mon Sep 17 00:00:00 2001 From: Nicolas Mattia <nicolas@nmattia.com> Date: Wed, 2 Oct 2019 13:28:21 +0200 Subject: [PATCH 2/2] libcxx: don't produce shared libs on musl --- pkgs/development/compilers/llvm/7/libc++/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/development/compilers/llvm/7/libc++/default.nix b/pkgs/development/compilers/llvm/7/libc++/default.nix index 7a0716a6eb3..f6f9970d7a6 100644 --- a/pkgs/development/compilers/llvm/7/libc++/default.nix +++ b/pkgs/development/compilers/llvm/7/libc++/default.nix @@ -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 { pname = "libc++"; @@ -31,7 +32,8 @@ stdenv.mkDerivation { "-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"; + ] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl "-DLIBCXX_HAS_MUSL_LIBC=1" + ++ stdenv.lib.optional (!enableShared) "-DLIBCXX_ENABLE_SHARED=OFF" ; enableParallelBuilding = true;