From e238f456b8d643d5afe5370e942e82204907d0ef Mon Sep 17 00:00:00 2001 From: sternenseemann Date: Fri, 7 Jan 2022 12:58:21 +0100 Subject: [PATCH] llvmPackages_*.clang: pick clangUseLLVM if targetPlatform.useLLVM libcxxClang still depends on cc wrapper's gccForLibs for libgcc which is not available when useLLVM is set. In such cases we need to switch to clangUseLLVM and (try) to use compiler-rt instead. Resolves #153759: pkgsLLVM.llvmPackages.stdenv now correctly clangUseLLVM as cc, allowing compilation to work as expected. --- pkgs/development/compilers/llvm/10/default.nix | 4 ++-- pkgs/development/compilers/llvm/11/default.nix | 4 ++-- pkgs/development/compilers/llvm/12/default.nix | 4 ++-- pkgs/development/compilers/llvm/13/default.nix | 4 ++-- pkgs/development/compilers/llvm/5/default.nix | 4 ++-- pkgs/development/compilers/llvm/6/default.nix | 4 ++-- pkgs/development/compilers/llvm/7/default.nix | 4 ++-- pkgs/development/compilers/llvm/8/default.nix | 4 ++-- pkgs/development/compilers/llvm/9/default.nix | 4 ++-- pkgs/development/compilers/llvm/git/default.nix | 4 ++-- 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/pkgs/development/compilers/llvm/10/default.nix b/pkgs/development/compilers/llvm/10/default.nix index 83840b4fd27e..5cb6c278659d 100644 --- a/pkgs/development/compilers/llvm/10/default.nix +++ b/pkgs/development/compilers/llvm/10/default.nix @@ -91,8 +91,8 @@ let # pick clang appropriate for package set we are targeting clang = - if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU - then tools.libstdcxxClang + /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM + else if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU then tools.libstdcxxClang else tools.libcxxClang; libstdcxxClang = wrapCCWith rec { diff --git a/pkgs/development/compilers/llvm/11/default.nix b/pkgs/development/compilers/llvm/11/default.nix index b5c070915242..82a78af85cac 100644 --- a/pkgs/development/compilers/llvm/11/default.nix +++ b/pkgs/development/compilers/llvm/11/default.nix @@ -106,8 +106,8 @@ let # pick clang appropriate for package set we are targeting clang = - if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU - then tools.libstdcxxClang + /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM + else if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU then tools.libstdcxxClang else tools.libcxxClang; libstdcxxClang = wrapCCWith rec { diff --git a/pkgs/development/compilers/llvm/12/default.nix b/pkgs/development/compilers/llvm/12/default.nix index 8de6bb420d41..4a2a7ee87894 100644 --- a/pkgs/development/compilers/llvm/12/default.nix +++ b/pkgs/development/compilers/llvm/12/default.nix @@ -94,8 +94,8 @@ let # pick clang appropriate for package set we are targeting clang = - if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU - then tools.libstdcxxClang + /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM + else if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU then tools.libstdcxxClang else tools.libcxxClang; libstdcxxClang = wrapCCWith rec { diff --git a/pkgs/development/compilers/llvm/13/default.nix b/pkgs/development/compilers/llvm/13/default.nix index bdc07a68742d..be5e9404cdd4 100644 --- a/pkgs/development/compilers/llvm/13/default.nix +++ b/pkgs/development/compilers/llvm/13/default.nix @@ -95,8 +95,8 @@ let # pick clang appropriate for package set we are targeting clang = - if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU - then tools.libstdcxxClang + /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM + else if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU then tools.libstdcxxClang else tools.libcxxClang; libstdcxxClang = wrapCCWith rec { diff --git a/pkgs/development/compilers/llvm/5/default.nix b/pkgs/development/compilers/llvm/5/default.nix index 4a6d55d55727..ef9886fb5ea7 100644 --- a/pkgs/development/compilers/llvm/5/default.nix +++ b/pkgs/development/compilers/llvm/5/default.nix @@ -67,8 +67,8 @@ let # pick clang appropriate for package set we are targeting clang = - if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU - then tools.libstdcxxClang + /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM + else if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU then tools.libstdcxxClang else tools.libcxxClang; libstdcxxClang = wrapCCWith rec { diff --git a/pkgs/development/compilers/llvm/6/default.nix b/pkgs/development/compilers/llvm/6/default.nix index 1b9a793e8858..4acfe6cd85d7 100644 --- a/pkgs/development/compilers/llvm/6/default.nix +++ b/pkgs/development/compilers/llvm/6/default.nix @@ -68,8 +68,8 @@ let # pick clang appropriate for package set we are targeting clang = - if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU - then tools.libstdcxxClang + /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM + else if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU then tools.libstdcxxClang else tools.libcxxClang; libstdcxxClang = wrapCCWith rec { diff --git a/pkgs/development/compilers/llvm/7/default.nix b/pkgs/development/compilers/llvm/7/default.nix index 841fc120d744..f0908f30775d 100644 --- a/pkgs/development/compilers/llvm/7/default.nix +++ b/pkgs/development/compilers/llvm/7/default.nix @@ -98,8 +98,8 @@ let # pick clang appropriate for package set we are targeting clang = - if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU - then tools.libstdcxxClang + /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM + else if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU then tools.libstdcxxClang else tools.libcxxClang; libstdcxxClang = wrapCCWith rec { diff --git a/pkgs/development/compilers/llvm/8/default.nix b/pkgs/development/compilers/llvm/8/default.nix index 234473c1adae..43050a72b922 100644 --- a/pkgs/development/compilers/llvm/8/default.nix +++ b/pkgs/development/compilers/llvm/8/default.nix @@ -99,8 +99,8 @@ let # pick clang appropriate for package set we are targeting clang = - if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU - then tools.libstdcxxClang + /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM + else if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU then tools.libstdcxxClang else tools.libcxxClang; libstdcxxClang = wrapCCWith rec { diff --git a/pkgs/development/compilers/llvm/9/default.nix b/pkgs/development/compilers/llvm/9/default.nix index a10bac13824e..7efe8486a387 100644 --- a/pkgs/development/compilers/llvm/9/default.nix +++ b/pkgs/development/compilers/llvm/9/default.nix @@ -99,8 +99,8 @@ let # pick clang appropriate for package set we are targeting clang = - if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU - then tools.libstdcxxClang + /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM + else if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU then tools.libstdcxxClang else tools.libcxxClang; libstdcxxClang = wrapCCWith rec { diff --git a/pkgs/development/compilers/llvm/git/default.nix b/pkgs/development/compilers/llvm/git/default.nix index 56904addb52b..890270c851db 100644 --- a/pkgs/development/compilers/llvm/git/default.nix +++ b/pkgs/development/compilers/llvm/git/default.nix @@ -95,8 +95,8 @@ let # pick clang appropriate for package set we are targeting clang = - if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU - then tools.libstdcxxClang + /**/ if stdenv.targetPlatform.useLLVM or false then tools.clangUseLLVM + else if (pkgs.targetPackages.stdenv or stdenv).cc.isGNU then tools.libstdcxxClang else tools.libcxxClang; libstdcxxClang = wrapCCWith rec {