diff options
Diffstat (limited to 'pkgs/development/compilers/llvm/5/default.nix')
-rw-r--r-- | pkgs/development/compilers/llvm/5/default.nix | 35 |
1 files changed, 26 insertions, 9 deletions
diff --git a/pkgs/development/compilers/llvm/5/default.nix b/pkgs/development/compilers/llvm/5/default.nix index c3c1d87f2e4..ef2e1c29088 100644 --- a/pkgs/development/compilers/llvm/5/default.nix +++ b/pkgs/development/compilers/llvm/5/default.nix @@ -14,7 +14,6 @@ let inherit sha256; }; - compiler-rt_src = fetch "compiler-rt" "0ipd4jdxpczgr2w6lzrabymz6dhzj69ywmyybjjc1q397zgrvziy"; clang-tools-extra_src = fetch "clang-tools-extra" "018b3fiwah8f8br5i26qmzh6sjvzchpn358sn8v079m49f2jldm3"; # Add man output without introducing extra dependencies. @@ -24,12 +23,19 @@ let tools = stdenv.lib.makeExtensible (tools: let callPackage = newScope (tools // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; }); + mkExtraBuildCommands = cc: '' + rsrc="$out/resource-root" + mkdir "$rsrc" + ln -s "${cc}/lib/clang/${release_version}/include" "$rsrc" + ln -s "${targetLlvmLibraries.compiler-rt.out}/lib" "$rsrc/lib" + echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags + '' + stdenv.lib.optionalString stdenv.targetPlatform.isLinux '' + echo "--gcc-toolchain=${tools.clang-unwrapped.gcc}" >> $out/nix-support/cc-cflags + ''; in { - llvm = overrideManOutput (callPackage ./llvm.nix { - inherit compiler-rt_src; - inherit (targetLlvmLibraries) libcxxabi; - }); + llvm = overrideManOutput (callPackage ./llvm.nix { }); + clang-unwrapped = overrideManOutput (callPackage ./clang { inherit clang-tools-extra_src; }); @@ -40,14 +46,23 @@ let clang = if stdenv.cc.isGNU then tools.libstdcxxClang else tools.libcxxClang; - libstdcxxClang = wrapCCWith { + libstdcxxClang = wrapCCWith rec { cc = tools.clang-unwrapped; - extraPackages = [ libstdcxxHook ]; + extraPackages = [ + libstdcxxHook + targetLlvmLibraries.compiler-rt + ]; + extraBuildCommands = mkExtraBuildCommands cc; }; - libcxxClang = wrapCCWith { + libcxxClang = wrapCCWith rec { cc = tools.clang-unwrapped; - extraPackages = [ targetLlvmLibraries.libcxx targetLlvmLibraries.libcxxabi ]; + extraPackages = [ + targetLlvmLibraries.libcxx + targetLlvmLibraries.libcxxabi + targetLlvmLibraries.compiler-rt + ]; + extraBuildCommands = mkExtraBuildCommands cc; }; lld = callPackage ./lld.nix {}; @@ -59,6 +74,8 @@ let callPackage = newScope (libraries // buildLlvmTools // { inherit stdenv cmake libxml2 python2 isl release_version version fetch; }); in { + compiler-rt = callPackage ./compiler-rt.nix {}; + stdenv = overrideCC stdenv buildLlvmTools.clang; libcxxStdenv = overrideCC stdenv buildLlvmTools.libcxxClang; |