about summary refs log tree commit diff
path: root/pkgs/development/compilers/llvm
diff options
context:
space:
mode:
authorJohn Ericson <John.Ericson@Obsidian.Systems>2018-06-14 10:22:33 -0400
committerJohn Ericson <John.Ericson@Obsidian.Systems>2018-06-14 19:19:54 -0400
commitfc9644d4c9c9d29958e9bcf1676d48d4b3026bb4 (patch)
treec5ae58a61ecae149ba8f8ecdbc5e2a26a2a270b4 /pkgs/development/compilers/llvm
parent1eacf21bd4cf88fe284bb1687e35a52389e6caac (diff)
downloadnixlib-fc9644d4c9c9d29958e9bcf1676d48d4b3026bb4.tar
nixlib-fc9644d4c9c9d29958e9bcf1676d48d4b3026bb4.tar.gz
nixlib-fc9644d4c9c9d29958e9bcf1676d48d4b3026bb4.tar.bz2
nixlib-fc9644d4c9c9d29958e9bcf1676d48d4b3026bb4.tar.lz
nixlib-fc9644d4c9c9d29958e9bcf1676d48d4b3026bb4.tar.xz
nixlib-fc9644d4c9c9d29958e9bcf1676d48d4b3026bb4.tar.zst
nixlib-fc9644d4c9c9d29958e9bcf1676d48d4b3026bb4.zip
llvm 6: Fix libcxxabi impurity and darwin sanitizers
Diffstat (limited to 'pkgs/development/compilers/llvm')
-rw-r--r--pkgs/development/compilers/llvm/6/compiler-rt.nix10
-rw-r--r--pkgs/development/compilers/llvm/6/default.nix35
2 files changed, 24 insertions, 21 deletions
diff --git a/pkgs/development/compilers/llvm/6/compiler-rt.nix b/pkgs/development/compilers/llvm/6/compiler-rt.nix
index 333818f7dbde..88bccca36476 100644
--- a/pkgs/development/compilers/llvm/6/compiler-rt.nix
+++ b/pkgs/development/compilers/llvm/6/compiler-rt.nix
@@ -1,4 +1,4 @@
-{ stdenv, version, fetch, cmake, python, llvm }:
+{ stdenv, version, fetch, cmake, python, llvm, libcxxabi }:
 with stdenv.lib;
 stdenv.mkDerivation rec {
   name = "compiler-rt-${version}";
@@ -6,12 +6,13 @@ stdenv.mkDerivation rec {
   src = fetch "compiler-rt" "16m7rvh3w6vq10iwkjrr1nn293djld3xm62l5zasisaprx117k6h";
 
   nativeBuildInputs = [ cmake python llvm ];
+  buildInputs = stdenv.lib.optional stdenv.hostPlatform.isDarwin libcxxabi;
 
   configureFlags = [
     "-DCOMPILER_RT_DEFAULT_TARGET_ONLY=ON"
   ];
 
-  outputs = [ "dev" "out" ];
+  outputs = [ "out" "dev" ];
 
   patches = [
     ./compiler-rt-codesign.patch # Revert compiler-rt commit that makes codesign mandatory
@@ -27,5 +28,10 @@ stdenv.mkDerivation rec {
       --replace 'set(COMPILER_RT_HAS_TSAN TRUE)' 'set(COMPILER_RT_HAS_TSAN FALSE)'
   '';
 
+  # Hack around weird upsream RPATH bug
+  postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
+    ln -s "$out/lib"/*/* "$out/lib"
+  '';
+
   enableParallelBuilding = true;
 }
diff --git a/pkgs/development/compilers/llvm/6/default.nix b/pkgs/development/compilers/llvm/6/default.nix
index 8fe68bad213d..40d602e222ed 100644
--- a/pkgs/development/compilers/llvm/6/default.nix
+++ b/pkgs/development/compilers/llvm/6/default.nix
@@ -23,9 +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 { });
+
     clang-unwrapped = overrideManOutput (callPackage ./clang {
       inherit clang-tools-extra_src;
     });
@@ -38,16 +48,11 @@ let
 
     libstdcxxClang = wrapCCWith rec {
       cc = tools.clang-unwrapped;
-      extraPackages = [ libstdcxxHook targetLlvmLibraries.compiler-rt ];
-      extraBuildCommands = ''
-        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
-      '';
+      extraPackages = [
+        libstdcxxHook
+        targetLlvmLibraries.compiler-rt
+      ];
+      extraBuildCommands = mkExtraBuildCommands cc;
     };
 
     libcxxClang = wrapCCWith rec {
@@ -57,15 +62,7 @@ let
         targetLlvmLibraries.libcxxabi
         targetLlvmLibraries.compiler-rt
       ];
-      extraBuildCommands = ''
-        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
-      '';
+      extraBuildCommands = mkExtraBuildCommands cc;
     };
 
     lld = callPackage ./lld.nix {};