From 857742ea22067bdb12b71af323c327e66ba32493 Mon Sep 17 00:00:00 2001 From: Shea Levy Date: Tue, 22 Jan 2013 14:33:55 -0500 Subject: [PATCH] clang/llvm: 3.2 --- .../compilers/llvm/clang-include-paths.patch | 21 --- .../compilers/llvm/clang-ld-flags.patch | 57 -------- .../compilers/llvm/clang-purity.patch | 137 ++++++++++++++++++ pkgs/development/compilers/llvm/clang.nix | 8 +- pkgs/development/compilers/llvm/default.nix | 5 +- 5 files changed, 142 insertions(+), 86 deletions(-) delete mode 100644 pkgs/development/compilers/llvm/clang-include-paths.patch delete mode 100644 pkgs/development/compilers/llvm/clang-ld-flags.patch create mode 100644 pkgs/development/compilers/llvm/clang-purity.patch diff --git a/pkgs/development/compilers/llvm/clang-include-paths.patch b/pkgs/development/compilers/llvm/clang-include-paths.patch deleted file mode 100644 index 5e7370718ab4..000000000000 --- a/pkgs/development/compilers/llvm/clang-include-paths.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -Naur clang-3.1.src-orig/lib/Driver/ToolChains.cpp clang-3.1.src/lib/Driver/ToolChains.cpp ---- clang-3.1.src-orig/lib/Driver/ToolChains.cpp 2012-05-11 20:16:02.000000000 -0400 -+++ clang-3.1.src/lib/Driver/ToolChains.cpp 2012-10-08 01:13:01.044083509 -0400 -@@ -2146,9 +2146,6 @@ - if (DriverArgs.hasArg(options::OPT_nostdinc)) - return; - -- if (!DriverArgs.hasArg(options::OPT_nostdlibinc)) -- addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/usr/local/include"); -- - if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) { - llvm::sys::Path P(D.ResourceDir); - P.appendComponent("include"); -@@ -2264,6 +2261,7 @@ - return; - - // Check if libc++ has been enabled and provide its include paths if so. -+ // !!! Will need to modify this if/when nixpkgs uses libc++ - if (GetCXXStdlibType(DriverArgs) == ToolChain::CST_Libcxx) { - // libc++ is always installed at a fixed path on Linux currently. - addSystemInclude(DriverArgs, CC1Args, diff --git a/pkgs/development/compilers/llvm/clang-ld-flags.patch b/pkgs/development/compilers/llvm/clang-ld-flags.patch deleted file mode 100644 index ffa67b464eca..000000000000 --- a/pkgs/development/compilers/llvm/clang-ld-flags.patch +++ /dev/null @@ -1,57 +0,0 @@ -diff -Naur clang-3.1.src-orig/lib/Driver/ToolChains.cpp clang-3.1.src/lib/Driver/ToolChains.cpp ---- clang-3.1.src-orig/lib/Driver/ToolChains.cpp 2012-05-11 20:16:02.000000000 -0400 -+++ clang-3.1.src/lib/Driver/ToolChains.cpp 2012-10-08 01:22:53.458850737 -0400 -@@ -2077,16 +2077,6 @@ - addPathIfExists(LibPath + "/../" + Multilib, Paths); - } - } -- addPathIfExists(SysRoot + "/lib/" + MultiarchTriple, Paths); -- addPathIfExists(SysRoot + "/lib/../" + Multilib, Paths); -- addPathIfExists(SysRoot + "/usr/lib/" + MultiarchTriple, Paths); -- addPathIfExists(SysRoot + "/usr/lib/../" + Multilib, Paths); -- -- // Try walking via the GCC triple path in case of multiarch GCC -- // installations with strange symlinks. -- if (GCCInstallation.isValid()) -- addPathIfExists(SysRoot + "/usr/lib/" + GCCInstallation.getTriple().str() + -- "/../../" + Multilib, Paths); - - // Add the non-multilib suffixed paths (if potentially different). - if (GCCInstallation.isValid()) { -@@ -2100,8 +2090,6 @@ - addPathIfExists(LibPath, Paths); - } - } -- addPathIfExists(SysRoot + "/lib", Paths); -- addPathIfExists(SysRoot + "/usr/lib", Paths); - } - - bool Linux::HasNativeLLVMSupport() const { -diff -Naur clang-3.1.src-orig/lib/Driver/Tools.cpp clang-3.1.src/lib/Driver/Tools.cpp ---- clang-3.1.src-orig/lib/Driver/Tools.cpp 2012-04-18 17:32:25.000000000 -0400 -+++ clang-3.1.src/lib/Driver/Tools.cpp 2012-10-08 01:25:23.913501995 -0400 -@@ -5210,24 +5210,6 @@ - ToolChain.getArch() == llvm::Triple::thumb || - (!Args.hasArg(options::OPT_static) && - !Args.hasArg(options::OPT_shared))) { -- CmdArgs.push_back("-dynamic-linker"); -- if (ToolChain.getArch() == llvm::Triple::x86) -- CmdArgs.push_back("/lib/ld-linux.so.2"); -- else if (ToolChain.getArch() == llvm::Triple::arm || -- ToolChain.getArch() == llvm::Triple::thumb) -- CmdArgs.push_back("/lib/ld-linux.so.3"); -- else if (ToolChain.getArch() == llvm::Triple::mips || -- ToolChain.getArch() == llvm::Triple::mipsel) -- CmdArgs.push_back("/lib/ld.so.1"); -- else if (ToolChain.getArch() == llvm::Triple::mips64 || -- ToolChain.getArch() == llvm::Triple::mips64el) -- CmdArgs.push_back("/lib64/ld.so.1"); -- else if (ToolChain.getArch() == llvm::Triple::ppc) -- CmdArgs.push_back("/lib/ld.so.1"); -- else if (ToolChain.getArch() == llvm::Triple::ppc64) -- CmdArgs.push_back("/lib64/ld64.so.1"); -- else -- CmdArgs.push_back("/lib64/ld-linux-x86-64.so.2"); - } - - CmdArgs.push_back("-o"); diff --git a/pkgs/development/compilers/llvm/clang-purity.patch b/pkgs/development/compilers/llvm/clang-purity.patch new file mode 100644 index 000000000000..18c70b56c540 --- /dev/null +++ b/pkgs/development/compilers/llvm/clang-purity.patch @@ -0,0 +1,137 @@ +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); + } + } +- addPathIfExists(SysRoot + "/lib/" + MultiarchTriple, Paths); +- addPathIfExists(SysRoot + "/lib/../" + Multilib, Paths); +- addPathIfExists(SysRoot + "/usr/lib/" + MultiarchTriple, Paths); +- addPathIfExists(SysRoot + "/usr/lib/../" + Multilib, Paths); +- +- // Try walking via the GCC triple path in case of multiarch GCC +- // installations with strange symlinks. +- 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 @@ + addPathIfExists(LibPath, Paths); + } + } +- addPathIfExists(SysRoot + "/lib", Paths); +- addPathIfExists(SysRoot + "/usr/lib", Paths); + } + + bool Linux::HasNativeLLVMSupport() const { +@@ -2228,9 +2216,6 @@ + if (DriverArgs.hasArg(options::OPT_nostdinc)) + return; + +- if (!DriverArgs.hasArg(options::OPT_nostdlibinc)) +- addSystemInclude(DriverArgs, CC1Args, D.SysRoot + "/usr/local/include"); +- + if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) { + llvm::sys::Path P(D.ResourceDir); + P.appendComponent("include"); +@@ -2295,24 +2280,6 @@ + "/usr/include/powerpc64-linux-gnu" + }; + ArrayRef MultiarchIncludeDirs; +- if (getTriple().getArch() == llvm::Triple::x86_64) { +- MultiarchIncludeDirs = X86_64MultiarchIncludeDirs; +- } else if (getTriple().getArch() == llvm::Triple::x86) { +- MultiarchIncludeDirs = X86MultiarchIncludeDirs; +- } else if (getTriple().getArch() == llvm::Triple::arm) { +- if (getTriple().getEnvironment() == llvm::Triple::GNUEABIHF) +- MultiarchIncludeDirs = ARMHFMultiarchIncludeDirs; +- else +- MultiarchIncludeDirs = ARMMultiarchIncludeDirs; +- } else if (getTriple().getArch() == llvm::Triple::mips) { +- MultiarchIncludeDirs = MIPSMultiarchIncludeDirs; +- } else if (getTriple().getArch() == llvm::Triple::mipsel) { +- MultiarchIncludeDirs = MIPSELMultiarchIncludeDirs; +- } else if (getTriple().getArch() == llvm::Triple::ppc) { +- MultiarchIncludeDirs = PPCMultiarchIncludeDirs; +- } else if (getTriple().getArch() == llvm::Triple::ppc64) { +- MultiarchIncludeDirs = PPC64MultiarchIncludeDirs; +- } + for (ArrayRef::iterator I = MultiarchIncludeDirs.begin(), + E = MultiarchIncludeDirs.end(); + I != E; ++I) { +@@ -2324,13 +2291,6 @@ + + if (getTriple().getOS() == llvm::Triple::RTEMS) + return; +- +- // 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, D.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))) { +- 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::arm || +- ToolChain.getArch() == llvm::Triple::thumb) { +- if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF) +- CmdArgs.push_back("/lib/ld-linux-armhf.so.3"); +- else +- CmdArgs.push_back("/lib/ld-linux.so.3"); +- } +- else if (ToolChain.getArch() == llvm::Triple::mips || +- ToolChain.getArch() == llvm::Triple::mipsel) +- CmdArgs.push_back("/lib/ld.so.1"); +- else if (ToolChain.getArch() == llvm::Triple::mips64 || +- ToolChain.getArch() == llvm::Triple::mips64el) { +- if (hasMipsN32ABIArg(Args)) +- CmdArgs.push_back("/lib32/ld.so.1"); +- else +- CmdArgs.push_back("/lib64/ld.so.1"); +- } +- else if (ToolChain.getArch() == llvm::Triple::ppc) +- CmdArgs.push_back("/lib/ld.so.1"); +- else if (ToolChain.getArch() == llvm::Triple::ppc64) +- 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: +- // FIXME: temporary hack: hard-coded paths. +- AddPath("/usr/local/include", System, true, false, false); + break; + } + } +@@ -330,8 +328,6 @@ + break; + } + +- if ( os != llvm::Triple::RTEMS ) +- AddPath("/usr/include", System, false, false, false); + } + + void InitHeaderSearch:: diff --git a/pkgs/development/compilers/llvm/clang.nix b/pkgs/development/compilers/llvm/clang.nix index 48e4c4946f30..39956666a07d 100644 --- a/pkgs/development/compilers/llvm/clang.nix +++ b/pkgs/development/compilers/llvm/clang.nix @@ -1,14 +1,13 @@ { stdenv, fetchurl, perl, groff, llvm, cmake }: -let version = "3.1"; in +let version = "3.2"; in stdenv.mkDerivation { name = "clang-${version}"; buildInputs = [ perl llvm groff cmake ]; - patches = stdenv.lib.optionals (stdenv.gcc.libc != null) - [ ./clang-include-paths.patch ./clang-ld-flags.patch ]; + patches = stdenv.lib.optional (stdenv.gcc.libc != null) ./clang-purity.patch; cmakeFlags = [ "-DCLANG_PATH_TO_LLVM_BUILD=${llvm}" @@ -22,7 +21,7 @@ stdenv.mkDerivation { src = fetchurl { url = "http://llvm.org/releases/${version}/clang-${version}.src.tar.gz"; - sha256 = "11m7sm9f8qcrayckfg3z91zb3fimilpm0f7azn7q7qnkvhay4qzz"; + sha256 = "0n2nzw3pw2v7fk67f2k2qyzd9wibvi3i5j7cjzz1csqgghzz1aia"; }; passthru = { gcc = stdenv.gcc.gcc; }; @@ -35,4 +34,3 @@ stdenv.mkDerivation { platforms = with stdenv.lib.platforms; all; }; } - diff --git a/pkgs/development/compilers/llvm/default.nix b/pkgs/development/compilers/llvm/default.nix index 204c080b871a..4b5bbdc52584 100644 --- a/pkgs/development/compilers/llvm/default.nix +++ b/pkgs/development/compilers/llvm/default.nix @@ -1,13 +1,13 @@ { stdenv, fetchurl, perl, groff, cmake, python }: -let version = "3.1"; in +let version = "3.2"; in stdenv.mkDerivation { name = "llvm-${version}"; src = fetchurl { url = "http://llvm.org/releases/${version}/llvm-${version}.src.tar.gz"; - sha256 = "1ea05135197b5400c1f88d00ff280d775ce778f8f9ea042e25a1e1e734a4b9ab"; + sha256 = "0hv30v5l4fkgyijs56sr1pbrlzgd674pg143x7az2h37sb290l0j"; }; buildInputs = [ perl groff cmake python ]; @@ -24,4 +24,3 @@ stdenv.mkDerivation { platforms = with stdenv.lib.platforms; all; }; } -