Author: shlevy
Date: Mon Dec 19 12:48:09 2011
New Revision: 30956
URL: https://nixos.org/websvn/nix/?rev=30956&sc=1

Log:
clang-3.0

This required moving to the cmake build for llvm in order to build clang
separately from llvm.

Deleted:
   nixpkgs/trunk/pkgs/development/compilers/llvm/clang-system-llvm-libs.patch
   nixpkgs/trunk/pkgs/development/compilers/llvm/clang-tblgen.patch
Modified:
   nixpkgs/trunk/pkgs/development/compilers/llvm/clang-include-paths.patch
   nixpkgs/trunk/pkgs/development/compilers/llvm/clang-ld-flags.patch
   nixpkgs/trunk/pkgs/development/compilers/llvm/clang.nix
   nixpkgs/trunk/pkgs/development/compilers/llvm/default.nix
   nixpkgs/trunk/pkgs/top-level/all-packages.nix

Modified: 
nixpkgs/trunk/pkgs/development/compilers/llvm/clang-include-paths.patch
==============================================================================
--- nixpkgs/trunk/pkgs/development/compilers/llvm/clang-include-paths.patch     
Mon Dec 19 12:28:58 2011        (r30955)
+++ nixpkgs/trunk/pkgs/development/compilers/llvm/clang-include-paths.patch     
Mon Dec 19 12:48:09 2011        (r30956)
@@ -1,39 +1,49 @@
-diff -ru -x '*~' a/tools/clang/lib/Frontend/InitHeaderSearch.cpp 
b/tools/clang/lib/Frontend/InitHeaderSearch.cpp
---- a/tools/clang/lib/Frontend/InitHeaderSearch.cpp    2011-03-21 
20:24:04.000000000 -0400
-+++ b/tools/clang/lib/Frontend/InitHeaderSearch.cpp    2011-10-18 
12:09:50.624355551 -0400
-@@ -438,6 +438,7 @@
+diff -Naur clang-3.0.src-orig/lib/Driver/ToolChains.cpp 
clang-3.0.src/lib/Driver/ToolChains.cpp
+--- clang-3.0.src-orig/lib/Driver/ToolChains.cpp       2011-11-17 
02:40:32.000000000 -0500
++++ clang-3.0.src/lib/Driver/ToolChains.cpp    2011-12-19 06:29:27.562428830 
-0500
+@@ -1926,14 +1926,17 @@
+   if (DriverArgs.hasArg(options::OPT_nostdinc))
+     return;
  
- void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple,
-                                             const HeaderSearchOptions 
&HSOpts) {
 +#if 0
-   llvm::Triple::OSType os = triple.getOS();
+   if (!DriverArgs.hasArg(options::OPT_nostdlibinc))
+     addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/usr/local/include");
  
-   switch (os) {
-@@ -559,6 +560,8 @@
++#endif
+   if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) {
+     llvm::sys::Path P(D.ResourceDir);
+     P.appendComponent("include");
+     addSystemInclude(DriverArgs, CC1Args, P.str());
    }
++#if 0
+ 
+   if (DriverArgs.hasArg(options::OPT_nostdlibinc))
+     return;
+@@ -1998,6 +2001,8 @@
+     return;
  
-   AddPath("/usr/include", System, false, false, false);
+   addExternCSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/usr/include");
 +#endif
-+  AddPath(C_INCLUDE_PATH, System, false, false, false);
++  addExternCSystemInclude(DriverArgs, CC1Args, D.SysRoot + C_INCLUDE_PATH);
  }
  
- void InitHeaderSearch::
-@@ -577,6 +580,7 @@
-                                   triple);
-     return;
-   }
-+#if 0  
-   // FIXME: temporary hack: hard-coded paths.
-   switch (os) {
-   case llvm::Triple::Cygwin:
-@@ -847,6 +851,10 @@
-   default:
-     break;
+ static bool addLibStdCXXIncludePaths(Twine Base, Twine TargetArchDir,
+@@ -2030,6 +2035,7 @@
+   bool IsTarget64Bit = (TargetArch == llvm::Triple::x86_64 ||
+                         TargetArch == llvm::Triple::ppc64);
+ 
++#if 0
+   StringRef CxxIncludeRoot(CXX_INCLUDE_ROOT);
+   if (!CxxIncludeRoot.empty()) {
+     StringRef CxxIncludeArch(CXX_INCLUDE_ARCH);
+@@ -2072,6 +2078,10 @@
+                              GCCInstallation.getTriple() + Suffix,
+                              DriverArgs, CC1Args);
    }
 +#endif
-+  AddGnuCPlusPlusIncludePaths(
-+      CPP_INCLUDE_PATH,
-+      CPP_HOST, "", "", triple);
++    addLibStdCXXIncludePaths(CPP_INCLUDE_PATH,
++                             CPP_HOST,
++                             DriverArgs, CC1Args);
  }
  
- void InitHeaderSearch::AddDefaultSystemIncludePaths(const LangOptions &Lang,
+ /// DragonFly - DragonFly tool chain which can call as(1) and ld(1) directly.

Modified: nixpkgs/trunk/pkgs/development/compilers/llvm/clang-ld-flags.patch
==============================================================================
--- nixpkgs/trunk/pkgs/development/compilers/llvm/clang-ld-flags.patch  Mon Dec 
19 12:28:58 2011        (r30955)
+++ nixpkgs/trunk/pkgs/development/compilers/llvm/clang-ld-flags.patch  Mon Dec 
19 12:48:09 2011        (r30956)
@@ -1,33 +1,26 @@
-diff -Naur a/tools/clang/lib/Driver/ToolChains.cpp 
b/tools/clang/lib/Driver/ToolChains.cpp
---- a/tools/clang/lib/Driver/ToolChains.cpp    2011-03-21 17:29:27.000000000 
-0400
-+++ b/tools/clang/lib/Driver/ToolChains.cpp    2011-10-18 19:43:48.999590771 
-0400
-@@ -1482,12 +1482,9 @@
-     Lib = Lib64;
-   }
+diff -Naur clang-3.0.src-orig/lib/Driver/ToolChains.cpp 
clang-3.0.src/lib/Driver/ToolChains.cpp
+--- clang-3.0.src-orig/lib/Driver/ToolChains.cpp       2011-11-17 
02:40:32.000000000 -0500
++++ clang-3.0.src/lib/Driver/ToolChains.cpp    2011-12-19 05:32:38.695513475 
-0500
+@@ -1800,6 +1800,7 @@
  
--  llvm::sys::Path LinkerPath(Base + "/../../../../" + GccTriple + "/bin/ld");
--  if (!llvm::sys::fs::exists(LinkerPath.str(), Exists) && Exists)
--    Linker = LinkerPath.str();
--  else
--    Linker = GetProgramPath("ld");
-+  Linker = GetProgramPath("ld");
+   Linker = GetProgramPath("ld");
  
 +#if 0
    LinuxDistro Distro = DetectLinuxDistro(Arch);
  
-   if (IsUbuntu(Distro)) {
-@@ -1531,6 +1528,7 @@
-   Paths.push_back(Base + "/../../..");
-   if (Arch == getArch() && IsUbuntu(Distro))
-     Paths.push_back("/usr/lib/" + GccTriple);
+   if (IsOpenSuse(Distro) || IsUbuntu(Distro)) {
+@@ -1882,6 +1883,7 @@
+   addPathIfExists(SysRoot + "/lib", Paths);
+   addPathIfExists(SysRoot + "/usr/lib/" + MultiarchTriple, Paths);
+   addPathIfExists(SysRoot + "/usr/lib", Paths);
 +#endif
  }
  
  bool Linux::HasNativeLLVMSupport() const {
-diff -Naur a/tools/clang/lib/Driver/Tools.cpp 
b/tools/clang/lib/Driver/Tools.cpp
---- a/tools/clang/lib/Driver/Tools.cpp 2011-03-06 18:31:01.000000000 -0500
-+++ b/tools/clang/lib/Driver/Tools.cpp 2011-10-18 18:44:00.799604267 -0400
-@@ -3619,6 +3619,7 @@
+diff -Naur clang-3.0.src-orig/lib/Driver/Tools.cpp 
clang-3.0.src/lib/Driver/Tools.cpp
+--- clang-3.0.src-orig/lib/Driver/Tools.cpp    2011-11-07 05:27:39.000000000 
-0500
++++ clang-3.0.src/lib/Driver/Tools.cpp 2011-12-19 05:34:44.075325534 -0500
+@@ -4306,6 +4306,7 @@
        ToolChain.getArch() == llvm::Triple::thumb ||
        (!Args.hasArg(options::OPT_static) &&
         !Args.hasArg(options::OPT_shared))) {
@@ -35,8 +28,8 @@
      CmdArgs.push_back("-dynamic-linker");
      if (ToolChain.getArch() == llvm::Triple::x86)
        CmdArgs.push_back("/lib/ld-linux.so.2");
-@@ -3627,6 +3628,7 @@
-       CmdArgs.push_back("/lib/ld-linux.so.3");
+@@ -4318,6 +4319,7 @@
+       CmdArgs.push_back("/lib64/ld64.so.1");
      else
        CmdArgs.push_back("/lib64/ld-linux-x86-64.so.2");
 +#endif

Modified: nixpkgs/trunk/pkgs/development/compilers/llvm/clang.nix
==============================================================================
--- nixpkgs/trunk/pkgs/development/compilers/llvm/clang.nix     Mon Dec 19 
12:28:58 2011        (r30955)
+++ nixpkgs/trunk/pkgs/development/compilers/llvm/clang.nix     Mon Dec 19 
12:48:09 2011        (r30956)
@@ -1,50 +1,30 @@
-{ stdenv, fetchurl, perl, groff, llvm }:
+{ stdenv, fetchurl, perl, groff, llvm, cmake }:
 
-assert stdenv.isLinux && stdenv.gcc.gcc != null;
-
-let version = "2.9"; in
+let version = "3.0"; in
 
 stdenv.mkDerivation {
   name = "clang-${version}";
 
-  src = llvm.src;
-
-  buildInputs = [ perl llvm groff ];
+  buildInputs = [ perl llvm groff cmake ];
 
-  configureFlags = [ "--enable-optimized" "--enable-shared" "--disable-static" 
]
-    ++ stdenv.lib.optionals (stdenv.gcc ? clang) [
-      "--with-built-clang=yes"
-      "CXX=clang++"
-    ];
-
-  srcClang = fetchurl {
-      url = "http://llvm.org/releases/${version}/clang-${version}.tgz";;
-      sha256 = "1pq9g7qxw761dp6gx3amx39kl9p4zhlymmn8gfmcnw9ag0zizi3h";
-  };
+  patches = stdenv.lib.optionals stdenv.isLinux
+    [ ./clang-include-paths.patch ./clang-ld-flags.patch ];
 
-  prePatch = ''
-    pushd tools
-    unpackFile $srcClang
-    mv clang-${version} clang
-    popd
-    find
+  postPatch = stdenv.lib.optionalString stdenv.isLinux ''
+    sed -i -e 's,C_INCLUDE_PATH,"${stdenv.gcc.libc}/include/",' \
+      -e 's,CPP_HOST,"'$(${stdenv.gcc}/bin/cc -dumpmachine)'",' \
+      -e 
's,CPP_INCLUDE_PATH,"${stdenv.gcc.gcc}/include/c++/${stdenv.gcc.gcc.version}",' 
\
+      lib/Driver/ToolChains.cpp
   '';
 
-  patches = [ ./clang-include-paths.patch ./clang-ld-flags.patch 
./clang-tblgen.patch ./clang-system-llvm-libs.patch ];
+  cmakeFlags = [ "-DCLANG_PATH_TO_LLVM_BUILD=${llvm}" 
"-DCMAKE_BUILD_TYPE=Release" ];
 
-  buildFlags = [ "TableGen=tblgen" "LLVM_CONFIG=llvm-config" ];
+  enableParallelBuilding = true;
 
-  preBuild = ''
-    sed -i -e 's,C_INCLUDE_PATH,"${stdenv.gcc.libc}/include/",' \
-      -e 's,CPP_HOST,"'$(${stdenv.gcc.gcc}/bin/gcc -dumpmachine)'",' \
-      -e 
's,CPP_INCLUDE_PATH,"${stdenv.gcc.gcc}/include/c++/${stdenv.gcc.gcc.version}",' 
\
-      tools/clang/lib/Frontend/InitHeaderSearch.cpp
-
-    pushd utils/unittest
-    make
-    popd
-    cd tools/clang
-  '';
+  src = fetchurl {
+      url = "http://llvm.org/releases/${version}/clang-${version}.tar.gz";;
+      sha256 = "0v8j9rgmb7w74ihc44zfxa22q17c946n5b6prwl38z3d6pd74kmn";
+  };
 
   passthru = { gcc = stdenv.gcc.gcc; };
 
@@ -53,6 +33,7 @@
     description = "A C language family frontend for LLVM";
     license = "BSD";
     maintainers = with stdenv.lib.maintainers; [viric shlevy];
-    platforms = with stdenv.lib.platforms; linux;
+    platforms = with stdenv.lib.platforms; all;
   };
 }
+

Modified: nixpkgs/trunk/pkgs/development/compilers/llvm/default.nix
==============================================================================
--- nixpkgs/trunk/pkgs/development/compilers/llvm/default.nix   Mon Dec 19 
12:28:58 2011        (r30955)
+++ nixpkgs/trunk/pkgs/development/compilers/llvm/default.nix   Mon Dec 19 
12:48:09 2011        (r30956)
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, perl, groff, darwinSwVersUtility }:
+{ stdenv, fetchurl, perl, groff, darwinSwVersUtility, cmake }:
 
 let version = "3.0"; in
 
@@ -10,14 +10,10 @@
     sha256 = "0xq4gi7lflv8ilfckslhfvnja5693xjii1yvzz39kklr6hfv37ji";
   };
 
-  buildInputs = [ perl groff ] ++
+  buildInputs = [ perl groff cmake ] ++
     stdenv.lib.optional stdenv.isDarwin darwinSwVersUtility;
 
-  configureFlags = [ "--enable-optimized" "--enable-shared" "--disable-static" 
]
-    ++ stdenv.lib.optionals (stdenv.gcc ? clang) [
-      "--with-built-clang=yes"
-      "CXX=clang++"
-    ];
+  cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" ];
 
   enableParallelBuilding = true;
 

Modified: nixpkgs/trunk/pkgs/top-level/all-packages.nix
==============================================================================
--- nixpkgs/trunk/pkgs/top-level/all-packages.nix       Mon Dec 19 12:28:58 
2011        (r30955)
+++ nixpkgs/trunk/pkgs/top-level/all-packages.nix       Mon Dec 19 12:48:09 
2011        (r30956)
@@ -1665,7 +1665,11 @@
 
   ccl = builderDefsPackage ../development/compilers/ccl {};
 
-  clangBootUnwrapped = callPackage ../development/compilers/llvm/clang.nix { };
+  clangBootUnwrapped = callPackage ../development/compilers/llvm/clang.nix {
+    # There is a bug in gcc-4.5 that prevents building a release build of
+    # clang-3.0
+    stdenv = stdenvAdapters.overrideGCC stdenv gcc46;
+  };
 
   clangBoot = wrapClang clangBootUnwrapped;
 
_______________________________________________
nix-commits mailing list
[email protected]
http://lists.science.uu.nl/mailman/listinfo/nix-commits

Reply via email to