summary refs log tree commit diff
path: root/pkgs/development/compilers
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/compilers')
-rw-r--r--pkgs/development/compilers/idris/default.nix13
-rw-r--r--pkgs/development/compilers/llvm/clang-purity.patch105
-rw-r--r--pkgs/development/compilers/llvm/clang.nix10
-rw-r--r--pkgs/development/compilers/llvm/default.nix37
-rw-r--r--pkgs/development/compilers/llvm/more-memory-for-bugpoint.patch15
-rw-r--r--pkgs/development/compilers/llvm/set_soname.patch12
-rw-r--r--pkgs/development/compilers/swi-prolog/default.nix4
7 files changed, 111 insertions, 85 deletions
diff --git a/pkgs/development/compilers/idris/default.nix b/pkgs/development/compilers/idris/default.nix
index 225f8afcd82d..e36924f63fed 100644
--- a/pkgs/development/compilers/idris/default.nix
+++ b/pkgs/development/compilers/idris/default.nix
@@ -1,19 +1,20 @@
 { cabal, binary, Cabal, filepath, gmp, happy, haskeline
-, languageJava, libffi, mtl, parsec, split, text, transformers
+, languageJava, libffi, llvmGeneral, mtl, parsec, split, text
+, transformers, vector, vectorBinaryInstances, boehmgc
 }:
 
 cabal.mkDerivation (self: {
   pname = "idris";
-  version = "0.9.8";
-  sha256 = "1mxc6mic3d508ni9pqxw8q31f27shyaxs1rchfl2jg58i9w6iy7h";
+  version = "0.9.9";
+  sha256 = "0wwssgpiyn7akyfrpi1khvqxx1k8753kk7151zvvymz0zkks643m";
   isLibrary = false;
   isExecutable = true;
   buildDepends = [
-    binary Cabal filepath haskeline languageJava libffi mtl parsec
-    split text transformers
+    binary Cabal filepath haskeline languageJava libffi llvmGeneral mtl
+    parsec split text transformers vector vectorBinaryInstances
   ];
   buildTools = [ happy ];
-  extraLibraries = [ gmp ];
+  extraLibraries = [ gmp boehmgc ];
   meta = {
     homepage = "http://www.idris-lang.org/";
     description = "Functional Programming Language with Dependent Types";
diff --git a/pkgs/development/compilers/llvm/clang-purity.patch b/pkgs/development/compilers/llvm/clang-purity.patch
index 18c70b56c540..e82305189e8f 100644
--- a/pkgs/development/compilers/llvm/clang-purity.patch
+++ b/pkgs/development/compilers/llvm/clang-purity.patch
@@ -1,8 +1,8 @@
-diff -Naur clang-3.2.src-orig/lib/Driver/ToolChains.cpp clang-3.2.src/lib/Driver/ToolChains.cpp
---- clang-3.2.src-orig/lib/Driver/ToolChains.cpp	2012-12-16 10:59:27.000000000 -0500
-+++ clang-3.2.src/lib/Driver/ToolChains.cpp	2013-01-22 14:16:55.787547681 -0500
-@@ -2153,16 +2153,6 @@
-       addPathIfExists(LibPath + "/../" + GCCTriple.str() + "/lib", Paths);
+diff -Naur cfe-3.3.src-orig/lib/Driver/ToolChains.cpp cfe-3.3.src/lib/Driver/ToolChains.cpp
+--- cfe-3.3.src-orig/lib/Driver/ToolChains.cpp	2013-05-06 12:26:41.000000000 -0400
++++ cfe-3.3.src/lib/Driver/ToolChains.cpp	2013-06-21 19:28:12.120364372 -0400
+@@ -2318,17 +2318,6 @@
+                       Paths);
      }
    }
 -  addPathIfExists(SysRoot + "/lib/" + MultiarchTriple, Paths);
@@ -15,29 +15,30 @@ diff -Naur clang-3.2.src-orig/lib/Driver/ToolChains.cpp clang-3.2.src/lib/Driver
 -  if (GCCInstallation.isValid())
 -    addPathIfExists(SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() +
 -                    "/../../" + Multilib, Paths);
- 
+-
    // Add the non-multilib suffixed paths (if potentially different).
    if (GCCInstallation.isValid()) {
-@@ -2176,8 +2166,6 @@
+     const std::string &LibPath = GCCInstallation.getParentLibPath();
+@@ -2341,8 +2330,6 @@
        addPathIfExists(LibPath, Paths);
      }
    }
 -  addPathIfExists(SysRoot + "/lib", Paths);
 -  addPathIfExists(SysRoot + "/usr/lib", Paths);
- }
  
- bool Linux::HasNativeLLVMSupport() const {
-@@ -2228,9 +2216,6 @@
+   IsPIEDefault = SanitizerArgs(*this, Args).hasZeroBaseShadow();
+ }
+@@ -2395,9 +2382,6 @@
    if (DriverArgs.hasArg(options::OPT_nostdinc))
      return;
  
 -  if (!DriverArgs.hasArg(options::OPT_nostdlibinc))
--    addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/usr/local/include");
+-    addSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/local/include");
 -
    if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
      llvm::sys::Path P(D.ResourceDir);
      P.appendComponent("include");
-@@ -2295,24 +2280,6 @@
+@@ -2479,26 +2463,6 @@
      "/usr/include/powerpc64-linux-gnu"
    };
    ArrayRef<StringRef> MultiarchIncludeDirs;
@@ -45,6 +46,8 @@ diff -Naur clang-3.2.src-orig/lib/Driver/ToolChains.cpp clang-3.2.src/lib/Driver
 -    MultiarchIncludeDirs = X86_64MultiarchIncludeDirs;
 -  } else if (getTriple().getArch() == llvm::Triple::x86) {
 -    MultiarchIncludeDirs = X86MultiarchIncludeDirs;
+-  } else if (getTriple().getArch() == llvm::Triple::aarch64) {
+-    MultiarchIncludeDirs = AArch64MultiarchIncludeDirs;
 -  } else if (getTriple().getArch() == llvm::Triple::arm) {
 -    if (getTriple().getEnvironment() == llvm::Triple::GNUEABIHF)
 -      MultiarchIncludeDirs = ARMHFMultiarchIncludeDirs;
@@ -62,7 +65,7 @@ diff -Naur clang-3.2.src-orig/lib/Driver/ToolChains.cpp clang-3.2.src/lib/Driver
    for (ArrayRef<StringRef>::iterator I = MultiarchIncludeDirs.begin(),
                                       E = MultiarchIncludeDirs.end();
         I != E; ++I) {
-@@ -2324,13 +2291,6 @@
+@@ -2510,13 +2474,6 @@
  
    if (getTriple().getOS() == llvm::Triple::RTEMS)
      return;
@@ -70,24 +73,30 @@ diff -Naur clang-3.2.src-orig/lib/Driver/ToolChains.cpp clang-3.2.src/lib/Driver
 -  // Add an include of '/include' directly. This isn't provided by default by
 -  // system GCCs, but is often used with cross-compiling GCCs, and harmless to
 -  // add even when Clang is acting as-if it were a system compiler.
--  addExternCSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/include");
+-  addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/include");
 -
--  addExternCSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/usr/include");
+-  addExternCSystemInclude(DriverArgs, CC1Args, SysRoot + "/usr/include");
  }
  
- /// \brief Helper to add the thre variant paths for a libstdc++ installation.
-diff -Naur clang-3.2.src-orig/lib/Driver/Tools.cpp clang-3.2.src/lib/Driver/Tools.cpp
---- clang-3.2.src-orig/lib/Driver/Tools.cpp	2012-11-21 02:56:23.000000000 -0500
-+++ clang-3.2.src/lib/Driver/Tools.cpp	2013-01-22 14:24:37.167212186 -0500
-@@ -5972,34 +5972,6 @@
-       ToolChain.getArch() == llvm::Triple::thumb ||
-       (!Args.hasArg(options::OPT_static) &&
-        !Args.hasArg(options::OPT_shared))) {
+ /// \brief Helper to add the three variant paths for a libstdc++ installation.
+diff -Naur cfe-3.3.src-orig/lib/Driver/Tools.cpp cfe-3.3.src/lib/Driver/Tools.cpp
+--- cfe-3.3.src-orig/lib/Driver/Tools.cpp	2013-05-30 14:01:30.000000000 -0400
++++ cfe-3.3.src/lib/Driver/Tools.cpp	2013-06-21 19:30:51.604726574 -0400
+@@ -5976,43 +5976,6 @@
+     }
+   }
+ 
+-  if (ToolChain.getArch() == llvm::Triple::arm ||
+-      ToolChain.getArch() == llvm::Triple::thumb ||
+-      (!Args.hasArg(options::OPT_static) &&
+-       !Args.hasArg(options::OPT_shared))) {
 -    CmdArgs.push_back("-dynamic-linker");
 -    if (isAndroid)
 -      CmdArgs.push_back("/system/bin/linker");
 -    else if (ToolChain.getArch() == llvm::Triple::x86)
 -      CmdArgs.push_back("/lib/ld-linux.so.2");
+-    else if (ToolChain.getArch() == llvm::Triple::aarch64)
+-      CmdArgs.push_back("/lib/ld-linux-aarch64.so.1");
 -    else if (ToolChain.getArch() == llvm::Triple::arm ||
 -             ToolChain.getArch() == llvm::Triple::thumb) {
 -      if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF)
@@ -107,31 +116,47 @@ diff -Naur clang-3.2.src-orig/lib/Driver/Tools.cpp clang-3.2.src/lib/Driver/Tool
 -    }
 -    else if (ToolChain.getArch() == llvm::Triple::ppc)
 -      CmdArgs.push_back("/lib/ld.so.1");
--    else if (ToolChain.getArch() == llvm::Triple::ppc64)
+-    else if (ToolChain.getArch() == llvm::Triple::ppc64 ||
+-	     ToolChain.getArch() == llvm::Triple::systemz)
 -      CmdArgs.push_back("/lib64/ld64.so.1");
 -    else
 -      CmdArgs.push_back("/lib64/ld-linux-x86-64.so.2");
-   }
- 
+-  }
+-
    CmdArgs.push_back("-o");
-diff -Naur clang-3.2.src-orig/lib/Frontend/InitHeaderSearch.cpp clang-3.2.src/lib/Frontend/InitHeaderSearch.cpp
---- clang-3.2.src-orig/lib/Frontend/InitHeaderSearch.cpp	2012-10-24 12:19:39.000000000 -0400
-+++ clang-3.2.src/lib/Frontend/InitHeaderSearch.cpp	2013-01-22 14:20:32.803925775 -0500
-@@ -221,8 +221,6 @@
-     case llvm::Triple::Bitrig:
-       break;
-     default:
+   CmdArgs.push_back(Output.getFilename());
+ 
+diff -Naur cfe-3.3.src-orig/lib/Frontend/InitHeaderSearch.cpp cfe-3.3.src/lib/Frontend/InitHeaderSearch.cpp
+--- cfe-3.3.src-orig/lib/Frontend/InitHeaderSearch.cpp	2013-04-29 21:21:43.000000000 -0400
++++ cfe-3.3.src/lib/Frontend/InitHeaderSearch.cpp	2013-06-21 19:32:47.627016565 -0400
+@@ -225,20 +225,6 @@
+                                             const HeaderSearchOptions &HSOpts) {
+   llvm::Triple::OSType os = triple.getOS();
+ 
+-  if (HSOpts.UseStandardSystemIncludes) {
+-    switch (os) {
+-    case llvm::Triple::FreeBSD:
+-    case llvm::Triple::NetBSD:
+-    case llvm::Triple::OpenBSD:
+-    case llvm::Triple::Bitrig:
+-      break;
+-    default:
 -      // FIXME: temporary hack: hard-coded paths.
--      AddPath("/usr/local/include", System, true, false, false);
-       break;
-     }
-   }
-@@ -330,8 +328,6 @@
+-      AddPath("/usr/local/include", System, false);
+-      break;
+-    }
+-  }
+-
+   // Builtin includes use #include_next directives and should be positioned
+   // just prior C include dirs.
+   if (HSOpts.UseBuiltinIncludes) {
+@@ -332,9 +318,6 @@
+   default:
      break;
    }
- 
+-
 -  if ( os != llvm::Triple::RTEMS )
--    AddPath("/usr/include", System, false, false, false);
+-    AddPath("/usr/include", ExternCSystem, false);
  }
  
  void InitHeaderSearch::
diff --git a/pkgs/development/compilers/llvm/clang.nix b/pkgs/development/compilers/llvm/clang.nix
index c2117798666b..df58591973e6 100644
--- a/pkgs/development/compilers/llvm/clang.nix
+++ b/pkgs/development/compilers/llvm/clang.nix
@@ -1,14 +1,14 @@
-{ stdenv, fetchurl, perl, groff, llvm, cmake, libxml2 }:
+{ stdenv, fetchurl, perl, groff, llvm, cmake, libxml2, python }:
 
 let
-  version = "3.2";
+  version = "3.3";
   gccReal = if (stdenv.gcc.gcc or null) == null then stdenv.gcc else stdenv.gcc.gcc;
 in
 
 stdenv.mkDerivation {
   name = "clang-${version}";
 
-  buildInputs = [ perl llvm groff cmake libxml2 ];
+  buildInputs = [ perl llvm groff cmake libxml2 python ];
 
   patches = stdenv.lib.optional (stdenv.gcc.libc != null) ./clang-purity.patch;
 
@@ -24,8 +24,8 @@ stdenv.mkDerivation {
   enableParallelBuilding = true;
 
   src = fetchurl {
-      url = "http://llvm.org/releases/${version}/clang-${version}.src.tar.gz";
-      sha256 = "0n2nzw3pw2v7fk67f2k2qyzd9wibvi3i5j7cjzz1csqgghzz1aia";
+      url = "http://llvm.org/releases/${version}/cfe-${version}.src.tar.gz";
+      sha256 = "15mrvw43s4frk1j49qr4v5viq68h8qlf10qs6ghd6mrsmgj5vddi";
   };
 
   passthru = { gcc = stdenv.gcc.gcc; };
diff --git a/pkgs/development/compilers/llvm/default.nix b/pkgs/development/compilers/llvm/default.nix
index 1e53256a2405..abd3277d919e 100644
--- a/pkgs/development/compilers/llvm/default.nix
+++ b/pkgs/development/compilers/llvm/default.nix
@@ -1,34 +1,35 @@
-{ stdenv, fetchurl, perl, groff, cmake, python, libffi }:
+{ stdenv, fetchurl, perl, groff, cmake, python, libffi, binutils_gold }:
 
-let version = "3.2"; in
+let version = "3.3"; in
 
-stdenv.mkDerivation {
+stdenv.mkDerivation rec {
   name = "llvm-${version}";
 
   src = fetchurl {
     url    = "http://llvm.org/releases/${version}/llvm-${version}.src.tar.gz";
-    sha256 = "0hv30v5l4fkgyijs56sr1pbrlzgd674pg143x7az2h37sb290l0j";
+    sha256 = "0y3mfbb5qzcpw3v5qncn69x1hdrrrfirgs82ypi2annhf0g6nxk8";
   };
 
-  patches = [ ./set_soname.patch ]; # http://llvm.org/bugs/show_bug.cgi?id=12334
-  patchFlags = "-p0";
+  # The default rlimits are too low for shared libraries.
+  patches = [ ./more-memory-for-bugpoint.patch ];
 
-  preConfigure = "patchShebangs .";
+  # libffi was propagated before, but it wasn't even being used, so
+  # unless something needs it just an input is fine.
+  buildInputs = [ perl groff cmake python libffi ]; # ToDo: polly, libc++; enable cxx11?
 
-  propagatedBuildInputs = [ libffi ];
-  buildInputs = [ perl groff cmake python ]; # ToDo: polly, libc++; enable cxx11?
+  # hacky fix: created binaries need to be run before installation
+  preBuild = let LD = if stdenv.isDarwin then "DYLD" else "LD";
+    in "export ${LD}_LIBRARY_PATH='$$${LD}_LIBRARY_PATH:'`pwd`/lib";
 
-  # created binaries need to be run before installation... I coudn't find a
-  # better way
-  preBuild = ( if stdenv.isDarwin
-               then "export DYLD_LIBRARY_PATH='$DYLD_LIBRARY_PATH:'`pwd`/lib"
-               else "export LD_LIBRARY_PATH='$LD_LIBRARY_PATH:'`pwd`/lib" );
-
-  cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" ]
-    ++ stdenv.lib.optional (!stdenv.isDarwin) [ "-DBUILD_SHARED_LIBS=ON" ];
+  cmakeFlags = with stdenv; [
+    "-DCMAKE_BUILD_TYPE=Release"
+    "-DLLVM_ENABLE_FFI=ON"
+    "-DLLVM_BINUTILS_INCDIR=${binutils_gold}/include"
+  ] ++ lib.optional (!isDarwin) [ "-DBUILD_SHARED_LIBS=ON" ];
 
   enableParallelBuilding = true;
-  # doCheck = true; # tests are broken, don't know why
+
+  doCheck = true;
 
   meta = with stdenv.lib; {
     description = "Collection of modular and reusable compiler and toolchain technologies";
diff --git a/pkgs/development/compilers/llvm/more-memory-for-bugpoint.patch b/pkgs/development/compilers/llvm/more-memory-for-bugpoint.patch
new file mode 100644
index 000000000000..fa19ce4f5871
--- /dev/null
+++ b/pkgs/development/compilers/llvm/more-memory-for-bugpoint.patch
@@ -0,0 +1,15 @@
+diff -Naur llvm-3.3.src-orig/tools/bugpoint/bugpoint.cpp llvm-3.3.src/tools/bugpoint/bugpoint.cpp
+--- llvm-3.3.src-orig/tools/bugpoint/bugpoint.cpp	2013-01-27 20:35:51.000000000 -0500
++++ llvm-3.3.src/tools/bugpoint/bugpoint.cpp	2013-06-21 18:29:47.612731499 -0400
+@@ -48,9 +48,9 @@
+                       "is killed (default is 300s), 0 disables timeout"));
+ 
+ static cl::opt<int>
+-MemoryLimit("mlimit", cl::init(-1), cl::value_desc("MBytes"),
++MemoryLimit("mlimit", cl::init(0), cl::value_desc("MBytes"),
+              cl::desc("Maximum amount of memory to use. 0 disables check."
+-                      " Defaults to 100MB (800MB under valgrind)."));
++                      " Check disabled by default."));
+ 
+ static cl::opt<bool>
+ UseValgrind("enable-valgrind",
diff --git a/pkgs/development/compilers/llvm/set_soname.patch b/pkgs/development/compilers/llvm/set_soname.patch
deleted file mode 100644
index 69ba74dddad8..000000000000
--- a/pkgs/development/compilers/llvm/set_soname.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-https://bugs.gentoo.org/show_bug.cgi?id=409267
-http://llvm.org/bugs/show_bug.cgi?id=12334
---- tools/llvm-shlib/Makefile.orig	2012-03-26 18:14:13.071797115 +0200
-+++ tools/llvm-shlib/Makefile	2012-03-26 17:31:12.491196254 +0200
-@@ -67,6 +67,7 @@
-     # Include everything from the .a's into the shared library.
-     LLVMLibsOptions := -Wl,--whole-archive $(LLVMLibsOptions) \
-                        -Wl,--no-whole-archive
-+    LLVMLibsOptions += -Wl,--soname,lib$(LIBRARYNAME)$(SHLIBEXT)
- endif
- 
- ifeq ($(HOST_OS),Linux)
diff --git a/pkgs/development/compilers/swi-prolog/default.nix b/pkgs/development/compilers/swi-prolog/default.nix
index a17e104b5bbf..e8db962d9c4f 100644
--- a/pkgs/development/compilers/swi-prolog/default.nix
+++ b/pkgs/development/compilers/swi-prolog/default.nix
@@ -18,10 +18,6 @@ stdenv.mkDerivation {
   configureFlags = "--with-world --enable-gmp --enable-shared";
   makeFlags = "world";
 
-  preConfigure = ''
-    export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${freetype}/include/freetype2"
-  '';
-
   meta = {
     homepage = http://www.swi-prolog.org/;
     description = "A Prolog compiler and interpreter";