public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/x11:opencl commit in: sys-devel/clang/, sys-devel/clang/files/cl-patches/, sys-devel/clang/files/
@ 2012-06-02 15:42 Michał Górny
  0 siblings, 0 replies; 2+ messages in thread
From: Michał Górny @ 2012-06-02 15:42 UTC (permalink / raw
  To: gentoo-commits

commit:     42104d4521488464d34875597f39e6cda3f1d074
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jun  2 16:41:54 2012 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jun  2 16:41:54 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/x11.git;a=commit;h=42104d45

sys-devel/clang: Add a patched version of clang-3.1 for r600 OpenCL.

(Portage version: 2.2.0_alpha108_p12/git/Linux x86_64, unsigned Manifest commit)

---
 sys-devel/clang/clang-3.1-r2.ebuild                |  204 ++++++++++++++++++++
 .../cl-patches/0001-Add-r600-TargetInfo.patch      |  100 ++++++++++
 .../0002-r600-Add-some-target-builtins.patch       |  111 +++++++++++
 ...ad_global_size-and-read_local_size-builti.patch |   31 +++
 sys-devel/clang/files/clang-2.7-fixdoc.patch       |   53 +++++
 .../files/clang-3.1-fix_cxx_include_root.patch     |   21 ++
 .../clang-3.1-gentoo-freebsd-fix-cxx-paths.patch   |  187 ++++++++++++++++++
 .../clang-3.1-gentoo-freebsd-fix-lib-path.patch    |   12 ++
 .../clang-3.1-gentoo-linux-fix-cxx-include.patch   |   13 ++
 .../clang-3.1-gentoo-runtime-gcc-detection.patch   |   26 +++
 ...clang-3.1-increase-parser-recursion-limit.patch |   15 ++
 sys-devel/clang/metadata.xml                       |   39 ++++
 12 files changed, 812 insertions(+), 0 deletions(-)

diff --git a/sys-devel/clang/clang-3.1-r2.ebuild b/sys-devel/clang/clang-3.1-r2.ebuild
new file mode 100644
index 0000000..673aec7
--- /dev/null
+++ b/sys-devel/clang/clang-3.1-r2.ebuild
@@ -0,0 +1,204 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/clang/clang-3.1-r2.ebuild,v 1.3 2012/05/26 17:44:24 aballier Exp $
+
+EAPI=4
+
+RESTRICT_PYTHON_ABIS="3.*"
+SUPPORT_PYTHON_ABIS="1"
+
+inherit eutils multilib python
+
+DESCRIPTION="C language family frontend for LLVM"
+HOMEPAGE="http://clang.llvm.org/"
+# Fetching LLVM as well: see http://llvm.org/bugs/show_bug.cgi?id=4840
+SRC_URI="http://llvm.org/releases/${PV}/llvm-${PV}.src.tar.gz
+	http://llvm.org/releases/${PV}/compiler-rt-${PV}.src.tar.gz
+	http://llvm.org/releases/${PV}/${P}.src.tar.gz"
+
+LICENSE="UoI-NCSA"
+SLOT="0"
+KEYWORDS="~amd64 ~x86 ~amd64-fbsd ~amd64-linux ~x86-linux ~ppc-macos"
+IUSE="debug kernel_FreeBSD multitarget +static-analyzer test"
+
+DEPEND="static-analyzer? ( dev-lang/perl )"
+RDEPEND="~sys-devel/llvm-${PV}[multitarget=]"
+
+S=${WORKDIR}/llvm-${PV}.src
+
+src_prepare() {
+	mv "${WORKDIR}"/clang-${PV}.src "${S}"/tools/clang \
+		|| die "clang source directory move failed"
+	mv "${WORKDIR}"/compiler-rt-${PV}.src "${S}"/projects/compiler-rt \
+		|| die "compiler-rt source directory move failed"
+
+	# Same as llvm doc patches
+	epatch "${FILESDIR}"/${PN}-2.7-fixdoc.patch
+
+	# multilib-strict
+	sed -e "/PROJ_headers/s#lib/clang#$(get_libdir)/clang#" \
+		-i tools/clang/lib/Headers/Makefile \
+		|| die "clang Makefile failed"
+	sed -e "/PROJ_resources/s#lib/clang#$(get_libdir)/clang#" \
+		-i tools/clang/runtime/compiler-rt/Makefile \
+		|| die "compiler-rt Makefile failed"
+	# fix the static analyzer for in-tree install
+	sed -e 's/import ScanView/from clang \0/'  \
+		-i tools/clang/tools/scan-view/scan-view \
+		|| die "scan-view sed failed"
+	sed -e "/scanview.css\|sorttable.js/s#\$RealBin#${EPREFIX}/usr/share/${PN}#" \
+		-i tools/clang/tools/scan-build/scan-build \
+		|| die "scan-build sed failed"
+	# Set correct path for gold plugin
+	sed -e "/LLVMgold.so/s#lib/#$(get_libdir)/llvm/#" \
+		-i  tools/clang/lib/Driver/Tools.cpp \
+		|| die "gold plugin path sed failed"
+	# Specify python version
+	python_convert_shebangs 2 tools/clang/tools/scan-view/scan-view
+	python_convert_shebangs -r 2 test/Scripts
+	python_convert_shebangs 2 projects/compiler-rt/lib/asan/scripts/asan_symbolize.py
+
+	# From llvm src_prepare
+	einfo "Fixing install dirs"
+	sed -e 's,^PROJ_docsdir.*,PROJ_docsdir := $(PROJ_prefix)/share/doc/'${PF}, \
+		-e 's,^PROJ_etcdir.*,PROJ_etcdir := '"${EPREFIX}"'/etc/llvm,' \
+		-e 's,^PROJ_libdir.*,PROJ_libdir := $(PROJ_prefix)/'$(get_libdir)/llvm, \
+		-i Makefile.config.in || die "Makefile.config sed failed"
+
+	einfo "Fixing rpath and CFLAGS"
+	sed -e 's,\$(RPATH) -Wl\,\$(\(ToolDir\|LibDir\)),$(RPATH) -Wl\,'"${EPREFIX}"/usr/$(get_libdir)/llvm, \
+		-e '/OmitFramePointer/s/-fomit-frame-pointer//' \
+		-i Makefile.rules || die "rpath sed failed"
+
+	# Use system llc (from llvm ebuild) for tests
+	sed -e "/^llc_props =/s/os.path.join(llvm_tools_dir, 'llc')/'llc'/" \
+		-i tools/clang/test/lit.cfg  || die "test path sed failed"
+
+	# Automatically select active system GCC's libraries, bug #406163
+	epatch "${FILESDIR}"/${P}-gentoo-runtime-gcc-detection.patch
+
+	# Fix search paths on FreeBSD, bug #409269
+	epatch "${FILESDIR}"/${P}-gentoo-freebsd-fix-lib-path.patch
+
+	# Fix regression caused by removal of USE=system-cxx-headers, bug #417541
+	epatch "${FILESDIR}"/${P}-gentoo-freebsd-fix-cxx-paths.patch
+
+	# Fix regression that prevents Clang from building itself on Linux, bug #417537
+	epatch "${FILESDIR}"/${P}-gentoo-linux-fix-cxx-include.patch
+
+	# Increase recursion limit, bug #417545, upstream r155737
+	epatch "${FILESDIR}"/${P}-increase-parser-recursion-limit.patch
+
+	# Apply r600 OpenCL-related patches
+	pushd tools/clang &>/dev/null || die
+	epatch "${FILESDIR}"/cl-patches/*.patch
+	popd &>/dev/null || die
+
+	# User patches
+	epatch_user
+}
+
+src_configure() {
+	local CONF_FLAGS="--enable-shared
+		--with-optimize-option=
+		$(use_enable !debug optimized)
+		$(use_enable debug assertions)
+		$(use_enable debug expensive-checks)"
+
+	# Setup the search path to include the Prefix includes
+	if use prefix ; then
+		CONF_FLAGS="${CONF_FLAGS} \
+			--with-c-include-dirs=${EPREFIX}/usr/include:/usr/include"
+	fi
+
+	if use multitarget; then
+		CONF_FLAGS="${CONF_FLAGS} --enable-targets=all"
+	else
+		CONF_FLAGS="${CONF_FLAGS} --enable-targets=host-only"
+	fi
+
+	if use amd64; then
+		CONF_FLAGS="${CONF_FLAGS} --enable-pic"
+	fi
+
+	econf ${CONF_FLAGS}
+}
+
+src_compile() {
+	emake VERBOSE=1 KEEP_SYMBOLS=1 REQUIRES_RTTI=1 clang-only
+}
+
+src_test() {
+	cd "${S}"/test || die "cd failed"
+	emake site.exp
+
+	cd "${S}"/tools/clang || die "cd clang failed"
+
+	echo ">>> Test phase [test]: ${CATEGORY}/${PF}"
+
+	testing() {
+		if ! emake -j1 VERBOSE=1 test; then
+			has test $FEATURES && die "Make test failed. See above for details."
+			has test $FEATURES || eerror "Make test failed. See above for details."
+		fi
+	}
+	python_execute_function testing
+}
+
+src_install() {
+	cd "${S}"/tools/clang || die "cd clang failed"
+	emake KEEP_SYMBOLS=1 DESTDIR="${D}" install
+
+	if use static-analyzer ; then
+		dobin tools/scan-build/ccc-analyzer
+		dosym ccc-analyzer /usr/bin/c++-analyzer
+		dobin tools/scan-build/scan-build
+
+		insinto /usr/share/${PN}
+		doins tools/scan-build/scanview.css
+		doins tools/scan-build/sorttable.js
+
+		cd tools/scan-view || die "cd scan-view failed"
+		dobin scan-view
+		install-scan-view() {
+			insinto "$(python_get_sitedir)"/clang
+			doins Reporter.py Resources ScanView.py startfile.py
+			touch "${ED}"/"$(python_get_sitedir)"/clang/__init__.py
+		}
+		python_execute_function install-scan-view
+	fi
+
+	# Fix install_names on Darwin.  The build system is too complicated
+	# to just fix this, so we correct it post-install
+	if [[ ${CHOST} == *-darwin* ]] ; then
+		for lib in libclang.dylib ; do
+			ebegin "fixing install_name of $lib"
+			install_name_tool -id "${EPREFIX}"/usr/lib/llvm/${lib} \
+				"${ED}"/usr/lib/llvm/${lib}
+			eend $?
+		done
+		for f in usr/bin/{c-index-test,clang} usr/lib/llvm/libclang.dylib ; do
+			ebegin "fixing references in ${f##*/}"
+			install_name_tool \
+				-change "@rpath/libclang.dylib" \
+					"${EPREFIX}"/usr/lib/llvm/libclang.dylib \
+				-change "@executable_path/../lib/libLLVM-${PV}.dylib" \
+					"${EPREFIX}"/usr/lib/llvm/libLLVM-${PV}.dylib \
+				-change "${S}"/Release/lib/libclang.dylib \
+					"${EPREFIX}"/usr/lib/llvm/libclang.dylib \
+				"${ED}"/$f
+			eend $?
+		done
+	fi
+
+	# Remove unnecessary headers on FreeBSD, bug #417171
+	use kernel_FreeBSD && rm "${ED}"usr/$(get_libdir)/clang/${PV}/include/{arm_neon,std,float,iso,limits,tgmath,varargs}*.h
+}
+
+pkg_postinst() {
+	python_mod_optimize clang
+}
+
+pkg_postrm() {
+	python_mod_cleanup clang
+}

diff --git a/sys-devel/clang/files/cl-patches/0001-Add-r600-TargetInfo.patch b/sys-devel/clang/files/cl-patches/0001-Add-r600-TargetInfo.patch
new file mode 100644
index 0000000..929b5d3
--- /dev/null
+++ b/sys-devel/clang/files/cl-patches/0001-Add-r600-TargetInfo.patch
@@ -0,0 +1,100 @@
+From 70cae83ffd093f183dec07c464db3c0bb6b92c10 Mon Sep 17 00:00:00 2001
+From: Tom Stellard <thomas.stellard@amd.com>
+Date: Fri, 2 Mar 2012 10:54:52 -0500
+Subject: [PATCH 1/3] Add r600 TargetInfo
+
+---
+ lib/Basic/Targets.cpp |   70 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 70 insertions(+), 0 deletions(-)
+
+diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
+index 85dfd78..64dc01c 100644
+--- a/lib/Basic/Targets.cpp
++++ b/lib/Basic/Targets.cpp
+@@ -1068,6 +1068,73 @@ namespace {
+ }
+ 
+ namespace {
++
++class AMDGPUTargetInfo : public TargetInfo {
++public:
++
++  AMDGPUTargetInfo(const std::string& triple) : TargetInfo(triple) { }
++
++  virtual const char * getClobbers() const {
++    return "";
++  }
++
++  virtual void getGCCRegNames(const char * const *&Names,
++                              unsigned &numNames) const  {
++    Names = NULL;
++    numNames = 0;
++  }
++
++  virtual void getGCCRegAliases(const GCCRegAlias *&Aliases,
++                                unsigned &NumAliases) const {
++    Aliases = NULL;
++    NumAliases = 0;
++  }
++
++  virtual bool validateAsmConstraint(const char *&Name,
++                                     TargetInfo::ConstraintInfo &info) const {
++    return true;
++  }
++
++  virtual void getTargetBuiltins(const Builtin::Info *&Records,
++                                 unsigned &NumRecords) const {
++    Records = NULL;
++    NumRecords = 0;
++  }
++};
++
++
++static const unsigned R600AddrSpaceMap[] = {
++  1,    // opencl_global
++  3,    // opencl_local
++  2     // opencl_constant
++};
++
++class R600TargetInfo : public AMDGPUTargetInfo {
++public:
++  R600TargetInfo(const std::string& triple) : AMDGPUTargetInfo(triple) {
++    DescriptionString = 
++          "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16"
++          "-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f80:32:32"
++          "-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64"
++          "-v96:128:128-v128:128:128-v192:256:256-v256:256:256"
++          "-v512:512:512-v1024:1024:1024-v2048:2048:2048"
++          "-n8:16:32:64";
++    AddrSpaceMap = &R600AddrSpaceMap;
++  }
++
++  virtual void getTargetDefines(const LangOptions &Opts,
++                                MacroBuilder &Builder) const {
++    Builder.defineMacro("__R600__");
++  }
++
++  virtual const char * getVAListDeclaration() const {
++    return "";
++  }
++};
++
++} // end anonymous namespace
++
++namespace {
+ // MBlaze abstract base class
+ class MBlazeTargetInfo : public TargetInfo {
+   static const char * const GCCRegNames[];
+@@ -3963,6 +4030,9 @@ static TargetInfo *AllocateTarget(const std::string &T) {
+   case llvm::Triple::mblaze:
+     return new MBlazeTargetInfo(T);
+ 
++  case llvm::Triple::r600:
++    return new R600TargetInfo(T);
++
+   case llvm::Triple::sparc:
+     switch (os) {
+     case llvm::Triple::Linux:
+-- 
+1.7.7.6
+

diff --git a/sys-devel/clang/files/cl-patches/0002-r600-Add-some-target-builtins.patch b/sys-devel/clang/files/cl-patches/0002-r600-Add-some-target-builtins.patch
new file mode 100644
index 0000000..0003a8d
--- /dev/null
+++ b/sys-devel/clang/files/cl-patches/0002-r600-Add-some-target-builtins.patch
@@ -0,0 +1,111 @@
+From a014573ad193775b2301e39275a1ca0ac3bb5847 Mon Sep 17 00:00:00 2001
+From: Tom Stellard <thomas.stellard@amd.com>
+Date: Tue, 13 Mar 2012 13:54:51 -0400
+Subject: [PATCH 2/3] r600: Add some target builtins
+
+---
+ include/clang/Basic/BuiltinsR600.def |   32 ++++++++++++++++++++++++++++++++
+ include/clang/Basic/TargetBuiltins.h |   10 ++++++++++
+ lib/Basic/Targets.cpp                |   12 ++++++++++--
+ 3 files changed, 52 insertions(+), 2 deletions(-)
+ create mode 100644 include/clang/Basic/BuiltinsR600.def
+
+diff --git a/include/clang/Basic/BuiltinsR600.def b/include/clang/Basic/BuiltinsR600.def
+new file mode 100644
+index 0000000..ce1f30e
+--- /dev/null
++++ b/include/clang/Basic/BuiltinsR600.def
+@@ -0,0 +1,32 @@
++//===--- BuiltinsR600.def - R600 Builtin function database --  --*- C++ -*-===//
++//
++//                     The LLVM Compiler Infrastructure
++//
++// This file is distributed under the University of Illinois Open Source
++// License. See LICENSE.TXT for details.
++//
++//===----------------------------------------------------------------------===//
++//
++// This file defines the R600-specific builtin function database.  Users of
++// this file must define the BUILTIN macro to make use of this information.
++//
++//===----------------------------------------------------------------------===//
++//
++// Authors: Tom Stellard <thomas.stellard@amd.com>
++//
++
++// The format of this database matches clang/Basic/Builtins.def.
++
++BUILTIN(__builtin_r600_read_ngroups_x, "z", "nc")
++BUILTIN(__builtin_r600_read_ngroups_y, "z", "nc")
++BUILTIN(__builtin_r600_read_ngroups_z, "z", "nc")
++
++BUILTIN(__builtin_r600_read_tidig_x, "z", "nc")
++BUILTIN(__builtin_r600_read_tidig_y, "z", "nc")
++BUILTIN(__builtin_r600_read_tidig_z, "z", "nc")
++
++BUILTIN(__builtin_r600_read_tgid_x, "z", "nc")
++BUILTIN(__builtin_r600_read_tgid_y, "z", "nc")
++BUILTIN(__builtin_r600_read_tgid_z, "z", "nc")
++
++#undef BUILTIN
+diff --git a/include/clang/Basic/TargetBuiltins.h b/include/clang/Basic/TargetBuiltins.h
+index 7c04bf7..3460cd5 100644
+--- a/include/clang/Basic/TargetBuiltins.h
++++ b/include/clang/Basic/TargetBuiltins.h
+@@ -45,6 +45,16 @@ namespace clang {
+     };
+   }
+ 
++  /// R600 builtins
++  namespace R600 {
++    enum {
++        LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
++#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
++#include "clang/Basic/BuiltinsR600.def"
++        LastTSBuiltin
++    };
++  }
++
+ 
+   /// X86 builtins
+   namespace X86 {
+diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
+index 64dc01c..03f1a18 100644
+--- a/lib/Basic/Targets.cpp
++++ b/lib/Basic/Targets.cpp
+@@ -1070,6 +1070,7 @@ namespace {
+ namespace {
+ 
+ class AMDGPUTargetInfo : public TargetInfo {
++  static const Builtin::Info BuiltinInfo[];
+ public:
+ 
+   AMDGPUTargetInfo(const std::string& triple) : TargetInfo(triple) { }
+@@ -1097,8 +1098,8 @@ public:
+ 
+   virtual void getTargetBuiltins(const Builtin::Info *&Records,
+                                  unsigned &NumRecords) const {
+-    Records = NULL;
+-    NumRecords = 0;
++    Records = BuiltinInfo;
++    NumRecords = clang::R600::LastTSBuiltin-Builtin::FirstTSBuiltin;
+   }
+ };
+ 
+@@ -1132,6 +1133,13 @@ public:
+   }
+ };
+ 
++const Builtin::Info AMDGPUTargetInfo::BuiltinInfo[] = {
++#define BUILTIN(ID, TYPE, ATTRS) { #ID, TYPE, ATTRS, 0, ALL_LANGUAGES },
++#define LIBBUILTIN(ID, TYPE, ATTRS, HEADER) { #ID, TYPE, ATTRS, HEADER,\
++                                              ALL_LANGUAGES },
++#include "clang/Basic/BuiltinsR600.def"
++};
++
+ } // end anonymous namespace
+ 
+ namespace {
+-- 
+1.7.7.6
+

diff --git a/sys-devel/clang/files/cl-patches/0003-r600-Add-read_global_size-and-read_local_size-builti.patch b/sys-devel/clang/files/cl-patches/0003-r600-Add-read_global_size-and-read_local_size-builti.patch
new file mode 100644
index 0000000..e0c2d3b
--- /dev/null
+++ b/sys-devel/clang/files/cl-patches/0003-r600-Add-read_global_size-and-read_local_size-builti.patch
@@ -0,0 +1,31 @@
+From 2881b8189dcacc8ab6a336f0e107d72752c8c47e Mon Sep 17 00:00:00 2001
+From: Tom Stellard <thomas.stellard@amd.com>
+Date: Wed, 14 Mar 2012 11:20:08 -0400
+Subject: [PATCH 3/3] r600: Add read_global_size and read_local_size builtins
+
+---
+ include/clang/Basic/BuiltinsR600.def |    8 ++++++++
+ 1 files changed, 8 insertions(+), 0 deletions(-)
+
+diff --git a/include/clang/Basic/BuiltinsR600.def b/include/clang/Basic/BuiltinsR600.def
+index ce1f30e..c81758e 100644
+--- a/include/clang/Basic/BuiltinsR600.def
++++ b/include/clang/Basic/BuiltinsR600.def
+@@ -17,6 +17,14 @@
+ 
+ // The format of this database matches clang/Basic/Builtins.def.
+ 
++BUILTIN(__builtin_r600_read_global_size_x, "z", "nc")
++BUILTIN(__builtin_r600_read_global_size_y, "z", "nc")
++BUILTIN(__builtin_r600_read_global_size_z, "z", "nc")
++
++BUILTIN(__builtin_r600_read_local_size_x, "z", "nc")
++BUILTIN(__builtin_r600_read_local_size_y, "z", "nc")
++BUILTIN(__builtin_r600_read_local_size_z, "z", "nc")
++
+ BUILTIN(__builtin_r600_read_ngroups_x, "z", "nc")
+ BUILTIN(__builtin_r600_read_ngroups_y, "z", "nc")
+ BUILTIN(__builtin_r600_read_ngroups_z, "z", "nc")
+-- 
+1.7.7.6
+

diff --git a/sys-devel/clang/files/clang-2.7-fixdoc.patch b/sys-devel/clang/files/clang-2.7-fixdoc.patch
new file mode 100644
index 0000000..8058ec4
--- /dev/null
+++ b/sys-devel/clang/files/clang-2.7-fixdoc.patch
@@ -0,0 +1,53 @@
+diff -Naur llvm-2.7.orig//tools/clang/docs/Makefile llvm-2.7/tools/clang/docs/Makefile
+--- llvm-2.7.orig//tools/clang/docs/Makefile	2010-04-26 18:38:45.000000000 +0200
++++ llvm-2.7/tools/clang/docs/Makefile	2010-04-26 18:41:08.000000000 +0200
+@@ -46,13 +46,12 @@
+ # 'make generated BUILD_FOR_WEBSITE=1'
+ generated:: doxygen
+ 
+-install-html: $(PROJ_OBJ_DIR)/html.tar.gz
++install-html:
+ 	$(Echo) Installing HTML documentation
+ 	$(Verb) $(MKDIR) $(DESTDIR)$(PROJ_docsdir)/html
+ 	$(Verb) $(MKDIR) $(DESTDIR)$(PROJ_docsdir)/html/img
+ 	$(Verb) $(DataInstall) $(HTML) $(DESTDIR)$(PROJ_docsdir)/html
+ #	$(Verb) $(DataInstall) $(IMAGES) $(DESTDIR)$(PROJ_docsdir)/html/img
+-	$(Verb) $(DataInstall) $(PROJ_OBJ_DIR)/html.tar.gz $(DESTDIR)$(PROJ_docsdir)
+ 
+ $(PROJ_OBJ_DIR)/html.tar.gz: $(HTML)
+ 	$(Echo) Packaging HTML documentation
+@@ -64,12 +63,11 @@
+ install-doxygen: doxygen
+ 	$(Echo) Installing doxygen documentation
+ 	$(Verb) $(MKDIR) $(DESTDIR)$(PROJ_docsdir)/html/doxygen
+-	$(Verb) $(DataInstall) $(PROJ_OBJ_DIR)/doxygen.tar.gz $(DESTDIR)$(PROJ_docsdir)
+ 	$(Verb) cd $(PROJ_OBJ_DIR)/doxygen && \
+ 	  $(FIND) . -type f -exec \
+ 	    $(DataInstall) {} $(DESTDIR)$(PROJ_docsdir)/html/doxygen \;
+ 
+-doxygen: regendoc $(PROJ_OBJ_DIR)/doxygen.tar.gz
++doxygen: regendoc
+ 
+ regendoc:
+ 	$(Echo) Building doxygen documentation
+diff -Naur llvm-2.7.orig//tools/clang/docs/tools/Makefile llvm-2.7/tools/clang/docs/tools/Makefile
+--- llvm-2.7.orig//tools/clang/docs/tools/Makefile	2010-04-26 18:38:45.000000000 +0200
++++ llvm-2.7/tools/clang/docs/tools/Makefile	2010-04-26 18:41:29.000000000 +0200
+@@ -24,7 +24,7 @@
+ CLANG_VERSION := trunk
+ 
+ # If we are in BUILD_FOR_WEBSITE mode, default to the all target.
+-all:: html man ps
++all:: html man
+ 
+ clean:
+ 	rm -f pod2htm*.*~~ $(HTML) $(MAN) $(PS)
+@@ -58,7 +58,7 @@
+ ifdef ONLY_MAN_DOCS
+ INSTALL_TARGETS := install-man
+ else
+-INSTALL_TARGETS := install-html install-man install-ps
++INSTALL_TARGETS := install-html install-man
+ endif
+ 
+ .SUFFIXES:

diff --git a/sys-devel/clang/files/clang-3.1-fix_cxx_include_root.patch b/sys-devel/clang/files/clang-3.1-fix_cxx_include_root.patch
new file mode 100644
index 0000000..e7c5251
--- /dev/null
+++ b/sys-devel/clang/files/clang-3.1-fix_cxx_include_root.patch
@@ -0,0 +1,21 @@
+Bug #387309
+
+--- llvm/tools/clang/lib/Driver/ToolChains.cpp.orig	2011-11-09 23:10:04.000000000 +0100
++++ llvm/tools/clang/lib/Driver/ToolChains.cpp	2011-11-09 23:11:04.000000000 +0100
+@@ -1586,12 +1586,13 @@
+     // This is of the form /foo/bar/include/c++/4.5.2/
+     if (CxxIncludeRoot.back() == '/')
+       llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the /
++    llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the g++-v4
++    llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the include
+     StringRef Version = llvm::sys::path::filename(CxxIncludeRoot);
+     llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the version
+-    llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the c++
+-    llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the include
++    llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the ARCH
+     GCCInstallPath = CxxIncludeRoot.str();
+-    GCCInstallPath.append("/lib/gcc/");
++    GCCInstallPath.append("/");
+     GCCInstallPath.append(CXX_INCLUDE_ARCH);
+     GCCInstallPath.append("/");
+     GCCInstallPath.append(Version);

diff --git a/sys-devel/clang/files/clang-3.1-gentoo-freebsd-fix-cxx-paths.patch b/sys-devel/clang/files/clang-3.1-gentoo-freebsd-fix-cxx-paths.patch
new file mode 100644
index 0000000..987aa22
--- /dev/null
+++ b/sys-devel/clang/files/clang-3.1-gentoo-freebsd-fix-cxx-paths.patch
@@ -0,0 +1,187 @@
+diff --git a/a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp b/b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp
+index 1e282f2..1d6835b 100644
+--- a/a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp
++++ b/b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp
+@@ -2305,6 +2305,161 @@ void Linux::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
+   }
+ }
+ 
++void FreeBSD::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
++                                      ArgStringList &CC1Args) const {
++  const Driver &D = getDriver();
++
++  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");
++    addSystemInclude(DriverArgs, CC1Args, P.str());
++  }
++
++  if (DriverArgs.hasArg(options::OPT_nostdlibinc))
++    return;
++
++  // Check for configure-time C include directories.
++  StringRef CIncludeDirs(C_INCLUDE_DIRS);
++  if (CIncludeDirs != "") {
++    SmallVector<StringRef, 5> dirs;
++    CIncludeDirs.split(dirs, ":");
++    for (SmallVectorImpl<StringRef>::iterator I = dirs.begin(), E = dirs.end();
++         I != E; ++I) {
++      StringRef Prefix = llvm::sys::path::is_absolute(*I) ? D.SysRoot : "";
++      addExternCSystemInclude(DriverArgs, CC1Args, Prefix + *I);
++    }
++    return;
++  }
++
++  // Lacking those, try to detect the correct set of system includes for the
++  // target triple.
++
++  // Implement generic Debian multiarch support.
++  const StringRef X86_64MultiarchIncludeDirs[] = {
++    "/usr/include/x86_64-linux-gnu",
++
++    // FIXME: These are older forms of multiarch. It's not clear that they're
++    // in use in any released version of Debian, so we should consider
++    // removing them.
++    "/usr/include/i686-linux-gnu/64",
++    "/usr/include/i486-linux-gnu/64"
++  };
++  const StringRef X86MultiarchIncludeDirs[] = {
++    "/usr/include/i386-linux-gnu",
++
++    // FIXME: These are older forms of multiarch. It's not clear that they're
++    // in use in any released version of Debian, so we should consider
++    // removing them.
++    "/usr/include/x86_64-linux-gnu/32",
++    "/usr/include/i686-linux-gnu",
++    "/usr/include/i486-linux-gnu"
++  };
++  const StringRef ARMMultiarchIncludeDirs[] = {
++    "/usr/include/arm-linux-gnueabi"
++  };
++  const StringRef MIPSMultiarchIncludeDirs[] = {
++    "/usr/include/mips-linux-gnu"
++  };
++  const StringRef MIPSELMultiarchIncludeDirs[] = {
++    "/usr/include/mipsel-linux-gnu"
++  };
++  const StringRef PPCMultiarchIncludeDirs[] = {
++    "/usr/include/powerpc-linux-gnu"
++  };
++  const StringRef PPC64MultiarchIncludeDirs[] = {
++    "/usr/include/powerpc64-linux-gnu"
++  };
++  ArrayRef<StringRef> 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) {
++    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<StringRef>::iterator I = MultiarchIncludeDirs.begin(),
++                                     E = MultiarchIncludeDirs.end();
++       I != E; ++I) {
++    if (llvm::sys::fs::exists(D.SysRoot + *I)) {
++      addExternCSystemInclude(DriverArgs, CC1Args, D.SysRoot + *I);
++      break;
++    }
++  }
++
++  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.
++/*static*/ bool FreeBSD::addLibStdCXXIncludePaths(Twine Base, Twine TargetArchDir,
++                                                const ArgList &DriverArgs,
++                                                ArgStringList &CC1Args) {
++  if (!llvm::sys::fs::exists(Base))
++    return false;
++  addSystemInclude(DriverArgs, CC1Args, Base);
++  addSystemInclude(DriverArgs, CC1Args, Base + "/" + TargetArchDir);
++  addSystemInclude(DriverArgs, CC1Args, Base + "/backward");
++  return true;
++}
++
++void FreeBSD::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
++                                         ArgStringList &CC1Args) const {
++  if (DriverArgs.hasArg(options::OPT_nostdlibinc) ||
++      DriverArgs.hasArg(options::OPT_nostdincxx))
++    return;
++
++  // Check if libc++ has been enabled and provide its include paths if so.
++  if (GetCXXStdlibType(DriverArgs) == ToolChain::CST_Libcxx) {
++    // libc++ is always installed at a fixed path on Linux currently.
++    addSystemInclude(DriverArgs, CC1Args,
++                     getDriver().SysRoot + "/usr/include/c++/v1");
++    return;
++  }
++
++  // We need a detected GCC installation on Linux to provide libstdc++'s
++  // headers. We handled the libc++ case above.
++  if (!GCCInstallation.isValid())
++    return;
++
++  // By default, look for the C++ headers in an include directory adjacent to
++  // the lib directory of the GCC installation. Note that this is expect to be
++  // equivalent to '/usr/include/c++/X.Y' in almost all cases.
++  StringRef LibDir = GCCInstallation.getParentLibPath();
++  StringRef InstallDir = GCCInstallation.getInstallPath();
++  StringRef Version = GCCInstallation.getVersion();
++  if (!addLibStdCXXIncludePaths(LibDir + "/../include/c++/" + Version,
++                                (GCCInstallation.getTriple().str() +
++                                 GCCInstallation.getMultiarchSuffix()),
++                                DriverArgs, CC1Args)) {
++    // Gentoo is weird and places its headers inside the GCC install, so if the
++    // first attempt to find the headers fails, try this pattern.
++    addLibStdCXXIncludePaths(InstallDir + "/include/g++-v4",
++                             getDriver().DefaultTargetTriple,
++                             DriverArgs, CC1Args);
++  }
++}
++
+ /// DragonFly - DragonFly tool chain which can call as(1) and ld(1) directly.
+ 
+ DragonFly::DragonFly(const Driver &D, const llvm::Triple& Triple, const ArgList &Args)
+diff --git a/a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.h b/b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.h
+index eaa6be1..bba891e 100644
+--- a/a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.h
++++ b/b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.h
+@@ -489,6 +489,16 @@ public:
+ 
+   virtual Tool &SelectTool(const Compilation &C, const JobAction &JA,
+                            const ActionList &Inputs) const;
++
++  virtual void AddClangSystemIncludeArgs(const ArgList &DriverArgs,
++                                         ArgStringList &CC1Args) const;
++  virtual void AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
++                                            ArgStringList &CC1Args) const;
++
++private:
++  static bool addLibStdCXXIncludePaths(Twine Base, Twine TargetArchDir,
++                                       const ArgList &DriverArgs,
++                                       ArgStringList &CC1Args);
+ };
+ 
+ class LLVM_LIBRARY_VISIBILITY NetBSD : public Generic_ELF {

diff --git a/sys-devel/clang/files/clang-3.1-gentoo-freebsd-fix-lib-path.patch b/sys-devel/clang/files/clang-3.1-gentoo-freebsd-fix-lib-path.patch
new file mode 100644
index 0000000..69ce782
--- /dev/null
+++ b/sys-devel/clang/files/clang-3.1-gentoo-freebsd-fix-lib-path.patch
@@ -0,0 +1,12 @@
+diff -upNr a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp
+--- a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp	2012-05-24 04:08:48.393073000 -0400
++++ b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp	2012-05-24 04:11:38.113153421 -0400
+@@ -1635,6 +1635,8 @@ FreeBSD::FreeBSD(const Driver &D, const
+     getFilePaths().push_back(getDriver().SysRoot + "/usr/lib32");
+   else
+     getFilePaths().push_back(getDriver().SysRoot + "/usr/lib");
++
++   getFilePaths().push_back(GCCInstallation.getInstallPath());
+ }
+ 
+ Tool &FreeBSD::SelectTool(const Compilation &C, const JobAction &JA,

diff --git a/sys-devel/clang/files/clang-3.1-gentoo-linux-fix-cxx-include.patch b/sys-devel/clang/files/clang-3.1-gentoo-linux-fix-cxx-include.patch
new file mode 100644
index 0000000..0a8beef
--- /dev/null
+++ b/sys-devel/clang/files/clang-3.1-gentoo-linux-fix-cxx-include.patch
@@ -0,0 +1,13 @@
+diff -upNr a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp
+--- a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp	2012-05-25 20:32:28.859469000 -0400
++++ b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp	2012-05-25 20:33:15.988680000 -0400
+@@ -2305,8 +2305,7 @@ void Linux::AddClangCXXStdlibIncludeArgs
+     // Gentoo is weird and places its headers inside the GCC install, so if the
+     // first attempt to find the headers fails, try this pattern.
+     addLibStdCXXIncludePaths(InstallDir + "/include/g++-v4",
+-                             (GCCInstallation.getTriple().str() +
+-                              GCCInstallation.getMultiarchSuffix()),
++                             getDriver().DefaultTargetTriple,
+                              DriverArgs, CC1Args);
+   }
+ }

diff --git a/sys-devel/clang/files/clang-3.1-gentoo-runtime-gcc-detection.patch b/sys-devel/clang/files/clang-3.1-gentoo-runtime-gcc-detection.patch
new file mode 100644
index 0000000..6f0fca0
--- /dev/null
+++ b/sys-devel/clang/files/clang-3.1-gentoo-runtime-gcc-detection.patch
@@ -0,0 +1,26 @@
+diff -upNr a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp
+--- a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp	2012-05-24 03:32:31.593191000 -0400
++++ b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp	2012-05-24 03:38:31.733163513 -0400
+@@ -1145,6 +1145,22 @@ Generic_GCC::GCCInstallationDetector::GC
+     Prefixes.push_back(D.InstalledDir + "/..");
+   }
+ 
++  llvm::OwningPtr<llvm::MemoryBuffer> File;
++  if (!llvm::MemoryBuffer::getFile(D.SysRoot + "/etc/env.d/gcc/config-" + D.DefaultTargetTriple, File))
++  {
++    bool Exists;
++    const std::string VersionText = File.get()->getBuffer().rsplit('-').second.substr(0,5).str();
++    const std::string GentooPath = D.SysRoot + "/usr/lib/gcc/" + D.DefaultTargetTriple + "/" + VersionText;
++    if (!llvm::sys::fs::exists(GentooPath + "/crtbegin.o", Exists) && Exists)
++    {
++      Version = GCCVersion::Parse(VersionText);
++      GCCInstallPath = GentooPath;
++      GCCParentLibPath = GCCInstallPath + "/../../..";
++      IsValid = true;
++      return;
++    }
++  }
++
+   // Loop over the various components which exist and select the best GCC
+   // installation available. GCC installs are ranked by version number.
+   Version = GCCVersion::Parse("0.0.0");

diff --git a/sys-devel/clang/files/clang-3.1-increase-parser-recursion-limit.patch b/sys-devel/clang/files/clang-3.1-increase-parser-recursion-limit.patch
new file mode 100644
index 0000000..91606d1
--- /dev/null
+++ b/sys-devel/clang/files/clang-3.1-increase-parser-recursion-limit.patch
@@ -0,0 +1,15 @@
+Backported from r155737.
+
+diff --git a/llvm-3.1.src/tools/clang/include/clang/Parse/Parser.h b/llvm-3.1.src/tools/clang/include/clang/Parse/Parser.h
+index 0ae5dc8..2a7464f 100644
+--- a/llvm-3.1.src/tools/clang/include/clang/Parse/Parser.h
++++ b/llvm-3.1.src/tools/clang/include/clang/Parse/Parser.h
+@@ -451,7 +451,7 @@ private:
+       }
+     }
+     
+-    enum { MaxDepth = 256 };
++    enum { MaxDepth = 512 };
+     
+     bool diagnoseOverflow();
+     bool diagnoseMissingClose();

diff --git a/sys-devel/clang/metadata.xml b/sys-devel/clang/metadata.xml
new file mode 100644
index 0000000..8357105
--- /dev/null
+++ b/sys-devel/clang/metadata.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+	<maintainer>
+		<email>voyageur@gentoo.org</email>
+		<name>Bernard Cafarelli</name>
+	</maintainer>
+	<maintainer>
+		<email>mgorny@gentoo.org</email>
+		<name>Michał Górny</name>
+	</maintainer>
+	<longdescription>The goal of the Clang project is to create a new C, C++, Objective C and Objective C++ front-end for the LLVM compiler.
+
+Features and Goals
+
+Some of the goals for the project include the following:
+
+End-User Features:
+Fast compiles and low memory use
+Expressive diagnostics
+GCC compatibility
+Utility and Applications:
+
+Modular library based architecture
+Support diverse clients (refactoring, static analysis, code generation, etc)
+Allow tight integration with IDEs
+Use the LLVM BSD License
+Internal Design and Implementation:
+
+A real-world, production quality compiler
+A simple and hackable code base
+A single unified parser for C, Objective C, C++, and Objective C++
+Conformance with C/C++/ObjC and their variants</longdescription>
+	<use>
+		<flag name='multitarget'>Build all host targets (default: host only)</flag>
+		<flag name='static-analyzer'>Install the Clang static analyzer</flag>
+		<flag name='system-cxx-headers'>By default, clang++ searchs for C++ headers in a series of hardcoded paths. Enabling this flag will force it to use the active gcc profile ones</flag>
+	</use>
+</pkgmetadata>



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [gentoo-commits] proj/x11:opencl commit in: sys-devel/clang/, sys-devel/clang/files/cl-patches/, sys-devel/clang/files/
@ 2012-12-05 14:15 Alexey Shvetsov
  0 siblings, 0 replies; 2+ messages in thread
From: Alexey Shvetsov @ 2012-12-05 14:15 UTC (permalink / raw
  To: gentoo-commits

commit:     232416887ba4b7b5ea9cf991f1d4703402fb8676
Author:     Alexey Shvetsov <alexxy <AT> gentoo <DOT> org>
AuthorDate: Wed Dec  5 14:08:58 2012 +0000
Commit:     Alexey Shvetsov <alexxy <AT> gentoo <DOT> org>
CommitDate: Wed Dec  5 14:08:58 2012 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/x11.git;a=commit;h=23241688

We dont use patches clang anymore

Signed-off-by: Alexey Shvetsov <alexxy <AT> gentoo.org>

---
 sys-devel/clang/clang-3.1-r2.ebuild                |  204 --------------------
 .../cl-patches/0001-Add-r600-TargetInfo.patch      |  100 ----------
 .../0002-r600-Add-some-target-builtins.patch       |  111 -----------
 ...ad_global_size-and-read_local_size-builti.patch |   31 ---
 sys-devel/clang/files/clang-2.7-fixdoc.patch       |   53 -----
 .../files/clang-3.1-fix_cxx_include_root.patch     |   21 --
 .../clang-3.1-gentoo-freebsd-fix-cxx-paths.patch   |  187 ------------------
 .../clang-3.1-gentoo-freebsd-fix-lib-path.patch    |   12 --
 .../clang-3.1-gentoo-linux-fix-cxx-include.patch   |   13 --
 .../clang-3.1-gentoo-runtime-gcc-detection.patch   |   26 ---
 ...clang-3.1-increase-parser-recursion-limit.patch |   15 --
 sys-devel/clang/metadata.xml                       |   39 ----
 12 files changed, 0 insertions(+), 812 deletions(-)

diff --git a/sys-devel/clang/clang-3.1-r2.ebuild b/sys-devel/clang/clang-3.1-r2.ebuild
deleted file mode 100644
index 673aec7..0000000
--- a/sys-devel/clang/clang-3.1-r2.ebuild
+++ /dev/null
@@ -1,204 +0,0 @@
-# Copyright 1999-2012 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/clang/clang-3.1-r2.ebuild,v 1.3 2012/05/26 17:44:24 aballier Exp $
-
-EAPI=4
-
-RESTRICT_PYTHON_ABIS="3.*"
-SUPPORT_PYTHON_ABIS="1"
-
-inherit eutils multilib python
-
-DESCRIPTION="C language family frontend for LLVM"
-HOMEPAGE="http://clang.llvm.org/"
-# Fetching LLVM as well: see http://llvm.org/bugs/show_bug.cgi?id=4840
-SRC_URI="http://llvm.org/releases/${PV}/llvm-${PV}.src.tar.gz
-	http://llvm.org/releases/${PV}/compiler-rt-${PV}.src.tar.gz
-	http://llvm.org/releases/${PV}/${P}.src.tar.gz"
-
-LICENSE="UoI-NCSA"
-SLOT="0"
-KEYWORDS="~amd64 ~x86 ~amd64-fbsd ~amd64-linux ~x86-linux ~ppc-macos"
-IUSE="debug kernel_FreeBSD multitarget +static-analyzer test"
-
-DEPEND="static-analyzer? ( dev-lang/perl )"
-RDEPEND="~sys-devel/llvm-${PV}[multitarget=]"
-
-S=${WORKDIR}/llvm-${PV}.src
-
-src_prepare() {
-	mv "${WORKDIR}"/clang-${PV}.src "${S}"/tools/clang \
-		|| die "clang source directory move failed"
-	mv "${WORKDIR}"/compiler-rt-${PV}.src "${S}"/projects/compiler-rt \
-		|| die "compiler-rt source directory move failed"
-
-	# Same as llvm doc patches
-	epatch "${FILESDIR}"/${PN}-2.7-fixdoc.patch
-
-	# multilib-strict
-	sed -e "/PROJ_headers/s#lib/clang#$(get_libdir)/clang#" \
-		-i tools/clang/lib/Headers/Makefile \
-		|| die "clang Makefile failed"
-	sed -e "/PROJ_resources/s#lib/clang#$(get_libdir)/clang#" \
-		-i tools/clang/runtime/compiler-rt/Makefile \
-		|| die "compiler-rt Makefile failed"
-	# fix the static analyzer for in-tree install
-	sed -e 's/import ScanView/from clang \0/'  \
-		-i tools/clang/tools/scan-view/scan-view \
-		|| die "scan-view sed failed"
-	sed -e "/scanview.css\|sorttable.js/s#\$RealBin#${EPREFIX}/usr/share/${PN}#" \
-		-i tools/clang/tools/scan-build/scan-build \
-		|| die "scan-build sed failed"
-	# Set correct path for gold plugin
-	sed -e "/LLVMgold.so/s#lib/#$(get_libdir)/llvm/#" \
-		-i  tools/clang/lib/Driver/Tools.cpp \
-		|| die "gold plugin path sed failed"
-	# Specify python version
-	python_convert_shebangs 2 tools/clang/tools/scan-view/scan-view
-	python_convert_shebangs -r 2 test/Scripts
-	python_convert_shebangs 2 projects/compiler-rt/lib/asan/scripts/asan_symbolize.py
-
-	# From llvm src_prepare
-	einfo "Fixing install dirs"
-	sed -e 's,^PROJ_docsdir.*,PROJ_docsdir := $(PROJ_prefix)/share/doc/'${PF}, \
-		-e 's,^PROJ_etcdir.*,PROJ_etcdir := '"${EPREFIX}"'/etc/llvm,' \
-		-e 's,^PROJ_libdir.*,PROJ_libdir := $(PROJ_prefix)/'$(get_libdir)/llvm, \
-		-i Makefile.config.in || die "Makefile.config sed failed"
-
-	einfo "Fixing rpath and CFLAGS"
-	sed -e 's,\$(RPATH) -Wl\,\$(\(ToolDir\|LibDir\)),$(RPATH) -Wl\,'"${EPREFIX}"/usr/$(get_libdir)/llvm, \
-		-e '/OmitFramePointer/s/-fomit-frame-pointer//' \
-		-i Makefile.rules || die "rpath sed failed"
-
-	# Use system llc (from llvm ebuild) for tests
-	sed -e "/^llc_props =/s/os.path.join(llvm_tools_dir, 'llc')/'llc'/" \
-		-i tools/clang/test/lit.cfg  || die "test path sed failed"
-
-	# Automatically select active system GCC's libraries, bug #406163
-	epatch "${FILESDIR}"/${P}-gentoo-runtime-gcc-detection.patch
-
-	# Fix search paths on FreeBSD, bug #409269
-	epatch "${FILESDIR}"/${P}-gentoo-freebsd-fix-lib-path.patch
-
-	# Fix regression caused by removal of USE=system-cxx-headers, bug #417541
-	epatch "${FILESDIR}"/${P}-gentoo-freebsd-fix-cxx-paths.patch
-
-	# Fix regression that prevents Clang from building itself on Linux, bug #417537
-	epatch "${FILESDIR}"/${P}-gentoo-linux-fix-cxx-include.patch
-
-	# Increase recursion limit, bug #417545, upstream r155737
-	epatch "${FILESDIR}"/${P}-increase-parser-recursion-limit.patch
-
-	# Apply r600 OpenCL-related patches
-	pushd tools/clang &>/dev/null || die
-	epatch "${FILESDIR}"/cl-patches/*.patch
-	popd &>/dev/null || die
-
-	# User patches
-	epatch_user
-}
-
-src_configure() {
-	local CONF_FLAGS="--enable-shared
-		--with-optimize-option=
-		$(use_enable !debug optimized)
-		$(use_enable debug assertions)
-		$(use_enable debug expensive-checks)"
-
-	# Setup the search path to include the Prefix includes
-	if use prefix ; then
-		CONF_FLAGS="${CONF_FLAGS} \
-			--with-c-include-dirs=${EPREFIX}/usr/include:/usr/include"
-	fi
-
-	if use multitarget; then
-		CONF_FLAGS="${CONF_FLAGS} --enable-targets=all"
-	else
-		CONF_FLAGS="${CONF_FLAGS} --enable-targets=host-only"
-	fi
-
-	if use amd64; then
-		CONF_FLAGS="${CONF_FLAGS} --enable-pic"
-	fi
-
-	econf ${CONF_FLAGS}
-}
-
-src_compile() {
-	emake VERBOSE=1 KEEP_SYMBOLS=1 REQUIRES_RTTI=1 clang-only
-}
-
-src_test() {
-	cd "${S}"/test || die "cd failed"
-	emake site.exp
-
-	cd "${S}"/tools/clang || die "cd clang failed"
-
-	echo ">>> Test phase [test]: ${CATEGORY}/${PF}"
-
-	testing() {
-		if ! emake -j1 VERBOSE=1 test; then
-			has test $FEATURES && die "Make test failed. See above for details."
-			has test $FEATURES || eerror "Make test failed. See above for details."
-		fi
-	}
-	python_execute_function testing
-}
-
-src_install() {
-	cd "${S}"/tools/clang || die "cd clang failed"
-	emake KEEP_SYMBOLS=1 DESTDIR="${D}" install
-
-	if use static-analyzer ; then
-		dobin tools/scan-build/ccc-analyzer
-		dosym ccc-analyzer /usr/bin/c++-analyzer
-		dobin tools/scan-build/scan-build
-
-		insinto /usr/share/${PN}
-		doins tools/scan-build/scanview.css
-		doins tools/scan-build/sorttable.js
-
-		cd tools/scan-view || die "cd scan-view failed"
-		dobin scan-view
-		install-scan-view() {
-			insinto "$(python_get_sitedir)"/clang
-			doins Reporter.py Resources ScanView.py startfile.py
-			touch "${ED}"/"$(python_get_sitedir)"/clang/__init__.py
-		}
-		python_execute_function install-scan-view
-	fi
-
-	# Fix install_names on Darwin.  The build system is too complicated
-	# to just fix this, so we correct it post-install
-	if [[ ${CHOST} == *-darwin* ]] ; then
-		for lib in libclang.dylib ; do
-			ebegin "fixing install_name of $lib"
-			install_name_tool -id "${EPREFIX}"/usr/lib/llvm/${lib} \
-				"${ED}"/usr/lib/llvm/${lib}
-			eend $?
-		done
-		for f in usr/bin/{c-index-test,clang} usr/lib/llvm/libclang.dylib ; do
-			ebegin "fixing references in ${f##*/}"
-			install_name_tool \
-				-change "@rpath/libclang.dylib" \
-					"${EPREFIX}"/usr/lib/llvm/libclang.dylib \
-				-change "@executable_path/../lib/libLLVM-${PV}.dylib" \
-					"${EPREFIX}"/usr/lib/llvm/libLLVM-${PV}.dylib \
-				-change "${S}"/Release/lib/libclang.dylib \
-					"${EPREFIX}"/usr/lib/llvm/libclang.dylib \
-				"${ED}"/$f
-			eend $?
-		done
-	fi
-
-	# Remove unnecessary headers on FreeBSD, bug #417171
-	use kernel_FreeBSD && rm "${ED}"usr/$(get_libdir)/clang/${PV}/include/{arm_neon,std,float,iso,limits,tgmath,varargs}*.h
-}
-
-pkg_postinst() {
-	python_mod_optimize clang
-}
-
-pkg_postrm() {
-	python_mod_cleanup clang
-}

diff --git a/sys-devel/clang/files/cl-patches/0001-Add-r600-TargetInfo.patch b/sys-devel/clang/files/cl-patches/0001-Add-r600-TargetInfo.patch
deleted file mode 100644
index 929b5d3..0000000
--- a/sys-devel/clang/files/cl-patches/0001-Add-r600-TargetInfo.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 70cae83ffd093f183dec07c464db3c0bb6b92c10 Mon Sep 17 00:00:00 2001
-From: Tom Stellard <thomas.stellard@amd.com>
-Date: Fri, 2 Mar 2012 10:54:52 -0500
-Subject: [PATCH 1/3] Add r600 TargetInfo
-
----
- lib/Basic/Targets.cpp |   70 +++++++++++++++++++++++++++++++++++++++++++++++++
- 1 files changed, 70 insertions(+), 0 deletions(-)
-
-diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
-index 85dfd78..64dc01c 100644
---- a/lib/Basic/Targets.cpp
-+++ b/lib/Basic/Targets.cpp
-@@ -1068,6 +1068,73 @@ namespace {
- }
- 
- namespace {
-+
-+class AMDGPUTargetInfo : public TargetInfo {
-+public:
-+
-+  AMDGPUTargetInfo(const std::string& triple) : TargetInfo(triple) { }
-+
-+  virtual const char * getClobbers() const {
-+    return "";
-+  }
-+
-+  virtual void getGCCRegNames(const char * const *&Names,
-+                              unsigned &numNames) const  {
-+    Names = NULL;
-+    numNames = 0;
-+  }
-+
-+  virtual void getGCCRegAliases(const GCCRegAlias *&Aliases,
-+                                unsigned &NumAliases) const {
-+    Aliases = NULL;
-+    NumAliases = 0;
-+  }
-+
-+  virtual bool validateAsmConstraint(const char *&Name,
-+                                     TargetInfo::ConstraintInfo &info) const {
-+    return true;
-+  }
-+
-+  virtual void getTargetBuiltins(const Builtin::Info *&Records,
-+                                 unsigned &NumRecords) const {
-+    Records = NULL;
-+    NumRecords = 0;
-+  }
-+};
-+
-+
-+static const unsigned R600AddrSpaceMap[] = {
-+  1,    // opencl_global
-+  3,    // opencl_local
-+  2     // opencl_constant
-+};
-+
-+class R600TargetInfo : public AMDGPUTargetInfo {
-+public:
-+  R600TargetInfo(const std::string& triple) : AMDGPUTargetInfo(triple) {
-+    DescriptionString = 
-+          "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16"
-+          "-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f80:32:32"
-+          "-v16:16:16-v24:32:32-v32:32:32-v48:64:64-v64:64:64"
-+          "-v96:128:128-v128:128:128-v192:256:256-v256:256:256"
-+          "-v512:512:512-v1024:1024:1024-v2048:2048:2048"
-+          "-n8:16:32:64";
-+    AddrSpaceMap = &R600AddrSpaceMap;
-+  }
-+
-+  virtual void getTargetDefines(const LangOptions &Opts,
-+                                MacroBuilder &Builder) const {
-+    Builder.defineMacro("__R600__");
-+  }
-+
-+  virtual const char * getVAListDeclaration() const {
-+    return "";
-+  }
-+};
-+
-+} // end anonymous namespace
-+
-+namespace {
- // MBlaze abstract base class
- class MBlazeTargetInfo : public TargetInfo {
-   static const char * const GCCRegNames[];
-@@ -3963,6 +4030,9 @@ static TargetInfo *AllocateTarget(const std::string &T) {
-   case llvm::Triple::mblaze:
-     return new MBlazeTargetInfo(T);
- 
-+  case llvm::Triple::r600:
-+    return new R600TargetInfo(T);
-+
-   case llvm::Triple::sparc:
-     switch (os) {
-     case llvm::Triple::Linux:
--- 
-1.7.7.6
-

diff --git a/sys-devel/clang/files/cl-patches/0002-r600-Add-some-target-builtins.patch b/sys-devel/clang/files/cl-patches/0002-r600-Add-some-target-builtins.patch
deleted file mode 100644
index 0003a8d..0000000
--- a/sys-devel/clang/files/cl-patches/0002-r600-Add-some-target-builtins.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From a014573ad193775b2301e39275a1ca0ac3bb5847 Mon Sep 17 00:00:00 2001
-From: Tom Stellard <thomas.stellard@amd.com>
-Date: Tue, 13 Mar 2012 13:54:51 -0400
-Subject: [PATCH 2/3] r600: Add some target builtins
-
----
- include/clang/Basic/BuiltinsR600.def |   32 ++++++++++++++++++++++++++++++++
- include/clang/Basic/TargetBuiltins.h |   10 ++++++++++
- lib/Basic/Targets.cpp                |   12 ++++++++++--
- 3 files changed, 52 insertions(+), 2 deletions(-)
- create mode 100644 include/clang/Basic/BuiltinsR600.def
-
-diff --git a/include/clang/Basic/BuiltinsR600.def b/include/clang/Basic/BuiltinsR600.def
-new file mode 100644
-index 0000000..ce1f30e
---- /dev/null
-+++ b/include/clang/Basic/BuiltinsR600.def
-@@ -0,0 +1,32 @@
-+//===--- BuiltinsR600.def - R600 Builtin function database --  --*- C++ -*-===//
-+//
-+//                     The LLVM Compiler Infrastructure
-+//
-+// This file is distributed under the University of Illinois Open Source
-+// License. See LICENSE.TXT for details.
-+//
-+//===----------------------------------------------------------------------===//
-+//
-+// This file defines the R600-specific builtin function database.  Users of
-+// this file must define the BUILTIN macro to make use of this information.
-+//
-+//===----------------------------------------------------------------------===//
-+//
-+// Authors: Tom Stellard <thomas.stellard@amd.com>
-+//
-+
-+// The format of this database matches clang/Basic/Builtins.def.
-+
-+BUILTIN(__builtin_r600_read_ngroups_x, "z", "nc")
-+BUILTIN(__builtin_r600_read_ngroups_y, "z", "nc")
-+BUILTIN(__builtin_r600_read_ngroups_z, "z", "nc")
-+
-+BUILTIN(__builtin_r600_read_tidig_x, "z", "nc")
-+BUILTIN(__builtin_r600_read_tidig_y, "z", "nc")
-+BUILTIN(__builtin_r600_read_tidig_z, "z", "nc")
-+
-+BUILTIN(__builtin_r600_read_tgid_x, "z", "nc")
-+BUILTIN(__builtin_r600_read_tgid_y, "z", "nc")
-+BUILTIN(__builtin_r600_read_tgid_z, "z", "nc")
-+
-+#undef BUILTIN
-diff --git a/include/clang/Basic/TargetBuiltins.h b/include/clang/Basic/TargetBuiltins.h
-index 7c04bf7..3460cd5 100644
---- a/include/clang/Basic/TargetBuiltins.h
-+++ b/include/clang/Basic/TargetBuiltins.h
-@@ -45,6 +45,16 @@ namespace clang {
-     };
-   }
- 
-+  /// R600 builtins
-+  namespace R600 {
-+    enum {
-+        LastTIBuiltin = clang::Builtin::FirstTSBuiltin-1,
-+#define BUILTIN(ID, TYPE, ATTRS) BI##ID,
-+#include "clang/Basic/BuiltinsR600.def"
-+        LastTSBuiltin
-+    };
-+  }
-+
- 
-   /// X86 builtins
-   namespace X86 {
-diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
-index 64dc01c..03f1a18 100644
---- a/lib/Basic/Targets.cpp
-+++ b/lib/Basic/Targets.cpp
-@@ -1070,6 +1070,7 @@ namespace {
- namespace {
- 
- class AMDGPUTargetInfo : public TargetInfo {
-+  static const Builtin::Info BuiltinInfo[];
- public:
- 
-   AMDGPUTargetInfo(const std::string& triple) : TargetInfo(triple) { }
-@@ -1097,8 +1098,8 @@ public:
- 
-   virtual void getTargetBuiltins(const Builtin::Info *&Records,
-                                  unsigned &NumRecords) const {
--    Records = NULL;
--    NumRecords = 0;
-+    Records = BuiltinInfo;
-+    NumRecords = clang::R600::LastTSBuiltin-Builtin::FirstTSBuiltin;
-   }
- };
- 
-@@ -1132,6 +1133,13 @@ public:
-   }
- };
- 
-+const Builtin::Info AMDGPUTargetInfo::BuiltinInfo[] = {
-+#define BUILTIN(ID, TYPE, ATTRS) { #ID, TYPE, ATTRS, 0, ALL_LANGUAGES },
-+#define LIBBUILTIN(ID, TYPE, ATTRS, HEADER) { #ID, TYPE, ATTRS, HEADER,\
-+                                              ALL_LANGUAGES },
-+#include "clang/Basic/BuiltinsR600.def"
-+};
-+
- } // end anonymous namespace
- 
- namespace {
--- 
-1.7.7.6
-

diff --git a/sys-devel/clang/files/cl-patches/0003-r600-Add-read_global_size-and-read_local_size-builti.patch b/sys-devel/clang/files/cl-patches/0003-r600-Add-read_global_size-and-read_local_size-builti.patch
deleted file mode 100644
index e0c2d3b..0000000
--- a/sys-devel/clang/files/cl-patches/0003-r600-Add-read_global_size-and-read_local_size-builti.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 2881b8189dcacc8ab6a336f0e107d72752c8c47e Mon Sep 17 00:00:00 2001
-From: Tom Stellard <thomas.stellard@amd.com>
-Date: Wed, 14 Mar 2012 11:20:08 -0400
-Subject: [PATCH 3/3] r600: Add read_global_size and read_local_size builtins
-
----
- include/clang/Basic/BuiltinsR600.def |    8 ++++++++
- 1 files changed, 8 insertions(+), 0 deletions(-)
-
-diff --git a/include/clang/Basic/BuiltinsR600.def b/include/clang/Basic/BuiltinsR600.def
-index ce1f30e..c81758e 100644
---- a/include/clang/Basic/BuiltinsR600.def
-+++ b/include/clang/Basic/BuiltinsR600.def
-@@ -17,6 +17,14 @@
- 
- // The format of this database matches clang/Basic/Builtins.def.
- 
-+BUILTIN(__builtin_r600_read_global_size_x, "z", "nc")
-+BUILTIN(__builtin_r600_read_global_size_y, "z", "nc")
-+BUILTIN(__builtin_r600_read_global_size_z, "z", "nc")
-+
-+BUILTIN(__builtin_r600_read_local_size_x, "z", "nc")
-+BUILTIN(__builtin_r600_read_local_size_y, "z", "nc")
-+BUILTIN(__builtin_r600_read_local_size_z, "z", "nc")
-+
- BUILTIN(__builtin_r600_read_ngroups_x, "z", "nc")
- BUILTIN(__builtin_r600_read_ngroups_y, "z", "nc")
- BUILTIN(__builtin_r600_read_ngroups_z, "z", "nc")
--- 
-1.7.7.6
-

diff --git a/sys-devel/clang/files/clang-2.7-fixdoc.patch b/sys-devel/clang/files/clang-2.7-fixdoc.patch
deleted file mode 100644
index 8058ec4..0000000
--- a/sys-devel/clang/files/clang-2.7-fixdoc.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-diff -Naur llvm-2.7.orig//tools/clang/docs/Makefile llvm-2.7/tools/clang/docs/Makefile
---- llvm-2.7.orig//tools/clang/docs/Makefile	2010-04-26 18:38:45.000000000 +0200
-+++ llvm-2.7/tools/clang/docs/Makefile	2010-04-26 18:41:08.000000000 +0200
-@@ -46,13 +46,12 @@
- # 'make generated BUILD_FOR_WEBSITE=1'
- generated:: doxygen
- 
--install-html: $(PROJ_OBJ_DIR)/html.tar.gz
-+install-html:
- 	$(Echo) Installing HTML documentation
- 	$(Verb) $(MKDIR) $(DESTDIR)$(PROJ_docsdir)/html
- 	$(Verb) $(MKDIR) $(DESTDIR)$(PROJ_docsdir)/html/img
- 	$(Verb) $(DataInstall) $(HTML) $(DESTDIR)$(PROJ_docsdir)/html
- #	$(Verb) $(DataInstall) $(IMAGES) $(DESTDIR)$(PROJ_docsdir)/html/img
--	$(Verb) $(DataInstall) $(PROJ_OBJ_DIR)/html.tar.gz $(DESTDIR)$(PROJ_docsdir)
- 
- $(PROJ_OBJ_DIR)/html.tar.gz: $(HTML)
- 	$(Echo) Packaging HTML documentation
-@@ -64,12 +63,11 @@
- install-doxygen: doxygen
- 	$(Echo) Installing doxygen documentation
- 	$(Verb) $(MKDIR) $(DESTDIR)$(PROJ_docsdir)/html/doxygen
--	$(Verb) $(DataInstall) $(PROJ_OBJ_DIR)/doxygen.tar.gz $(DESTDIR)$(PROJ_docsdir)
- 	$(Verb) cd $(PROJ_OBJ_DIR)/doxygen && \
- 	  $(FIND) . -type f -exec \
- 	    $(DataInstall) {} $(DESTDIR)$(PROJ_docsdir)/html/doxygen \;
- 
--doxygen: regendoc $(PROJ_OBJ_DIR)/doxygen.tar.gz
-+doxygen: regendoc
- 
- regendoc:
- 	$(Echo) Building doxygen documentation
-diff -Naur llvm-2.7.orig//tools/clang/docs/tools/Makefile llvm-2.7/tools/clang/docs/tools/Makefile
---- llvm-2.7.orig//tools/clang/docs/tools/Makefile	2010-04-26 18:38:45.000000000 +0200
-+++ llvm-2.7/tools/clang/docs/tools/Makefile	2010-04-26 18:41:29.000000000 +0200
-@@ -24,7 +24,7 @@
- CLANG_VERSION := trunk
- 
- # If we are in BUILD_FOR_WEBSITE mode, default to the all target.
--all:: html man ps
-+all:: html man
- 
- clean:
- 	rm -f pod2htm*.*~~ $(HTML) $(MAN) $(PS)
-@@ -58,7 +58,7 @@
- ifdef ONLY_MAN_DOCS
- INSTALL_TARGETS := install-man
- else
--INSTALL_TARGETS := install-html install-man install-ps
-+INSTALL_TARGETS := install-html install-man
- endif
- 
- .SUFFIXES:

diff --git a/sys-devel/clang/files/clang-3.1-fix_cxx_include_root.patch b/sys-devel/clang/files/clang-3.1-fix_cxx_include_root.patch
deleted file mode 100644
index e7c5251..0000000
--- a/sys-devel/clang/files/clang-3.1-fix_cxx_include_root.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Bug #387309
-
---- llvm/tools/clang/lib/Driver/ToolChains.cpp.orig	2011-11-09 23:10:04.000000000 +0100
-+++ llvm/tools/clang/lib/Driver/ToolChains.cpp	2011-11-09 23:11:04.000000000 +0100
-@@ -1586,12 +1586,13 @@
-     // This is of the form /foo/bar/include/c++/4.5.2/
-     if (CxxIncludeRoot.back() == '/')
-       llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the /
-+    llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the g++-v4
-+    llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the include
-     StringRef Version = llvm::sys::path::filename(CxxIncludeRoot);
-     llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the version
--    llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the c++
--    llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the include
-+    llvm::sys::path::remove_filename(CxxIncludeRoot); // remove the ARCH
-     GCCInstallPath = CxxIncludeRoot.str();
--    GCCInstallPath.append("/lib/gcc/");
-+    GCCInstallPath.append("/");
-     GCCInstallPath.append(CXX_INCLUDE_ARCH);
-     GCCInstallPath.append("/");
-     GCCInstallPath.append(Version);

diff --git a/sys-devel/clang/files/clang-3.1-gentoo-freebsd-fix-cxx-paths.patch b/sys-devel/clang/files/clang-3.1-gentoo-freebsd-fix-cxx-paths.patch
deleted file mode 100644
index 987aa22..0000000
--- a/sys-devel/clang/files/clang-3.1-gentoo-freebsd-fix-cxx-paths.patch
+++ /dev/null
@@ -1,187 +0,0 @@
-diff --git a/a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp b/b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp
-index 1e282f2..1d6835b 100644
---- a/a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp
-+++ b/b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp
-@@ -2305,6 +2305,161 @@ void Linux::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
-   }
- }
- 
-+void FreeBSD::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
-+                                      ArgStringList &CC1Args) const {
-+  const Driver &D = getDriver();
-+
-+  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");
-+    addSystemInclude(DriverArgs, CC1Args, P.str());
-+  }
-+
-+  if (DriverArgs.hasArg(options::OPT_nostdlibinc))
-+    return;
-+
-+  // Check for configure-time C include directories.
-+  StringRef CIncludeDirs(C_INCLUDE_DIRS);
-+  if (CIncludeDirs != "") {
-+    SmallVector<StringRef, 5> dirs;
-+    CIncludeDirs.split(dirs, ":");
-+    for (SmallVectorImpl<StringRef>::iterator I = dirs.begin(), E = dirs.end();
-+         I != E; ++I) {
-+      StringRef Prefix = llvm::sys::path::is_absolute(*I) ? D.SysRoot : "";
-+      addExternCSystemInclude(DriverArgs, CC1Args, Prefix + *I);
-+    }
-+    return;
-+  }
-+
-+  // Lacking those, try to detect the correct set of system includes for the
-+  // target triple.
-+
-+  // Implement generic Debian multiarch support.
-+  const StringRef X86_64MultiarchIncludeDirs[] = {
-+    "/usr/include/x86_64-linux-gnu",
-+
-+    // FIXME: These are older forms of multiarch. It's not clear that they're
-+    // in use in any released version of Debian, so we should consider
-+    // removing them.
-+    "/usr/include/i686-linux-gnu/64",
-+    "/usr/include/i486-linux-gnu/64"
-+  };
-+  const StringRef X86MultiarchIncludeDirs[] = {
-+    "/usr/include/i386-linux-gnu",
-+
-+    // FIXME: These are older forms of multiarch. It's not clear that they're
-+    // in use in any released version of Debian, so we should consider
-+    // removing them.
-+    "/usr/include/x86_64-linux-gnu/32",
-+    "/usr/include/i686-linux-gnu",
-+    "/usr/include/i486-linux-gnu"
-+  };
-+  const StringRef ARMMultiarchIncludeDirs[] = {
-+    "/usr/include/arm-linux-gnueabi"
-+  };
-+  const StringRef MIPSMultiarchIncludeDirs[] = {
-+    "/usr/include/mips-linux-gnu"
-+  };
-+  const StringRef MIPSELMultiarchIncludeDirs[] = {
-+    "/usr/include/mipsel-linux-gnu"
-+  };
-+  const StringRef PPCMultiarchIncludeDirs[] = {
-+    "/usr/include/powerpc-linux-gnu"
-+  };
-+  const StringRef PPC64MultiarchIncludeDirs[] = {
-+    "/usr/include/powerpc64-linux-gnu"
-+  };
-+  ArrayRef<StringRef> 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) {
-+    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<StringRef>::iterator I = MultiarchIncludeDirs.begin(),
-+                                     E = MultiarchIncludeDirs.end();
-+       I != E; ++I) {
-+    if (llvm::sys::fs::exists(D.SysRoot + *I)) {
-+      addExternCSystemInclude(DriverArgs, CC1Args, D.SysRoot + *I);
-+      break;
-+    }
-+  }
-+
-+  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.
-+/*static*/ bool FreeBSD::addLibStdCXXIncludePaths(Twine Base, Twine TargetArchDir,
-+                                                const ArgList &DriverArgs,
-+                                                ArgStringList &CC1Args) {
-+  if (!llvm::sys::fs::exists(Base))
-+    return false;
-+  addSystemInclude(DriverArgs, CC1Args, Base);
-+  addSystemInclude(DriverArgs, CC1Args, Base + "/" + TargetArchDir);
-+  addSystemInclude(DriverArgs, CC1Args, Base + "/backward");
-+  return true;
-+}
-+
-+void FreeBSD::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
-+                                         ArgStringList &CC1Args) const {
-+  if (DriverArgs.hasArg(options::OPT_nostdlibinc) ||
-+      DriverArgs.hasArg(options::OPT_nostdincxx))
-+    return;
-+
-+  // Check if libc++ has been enabled and provide its include paths if so.
-+  if (GetCXXStdlibType(DriverArgs) == ToolChain::CST_Libcxx) {
-+    // libc++ is always installed at a fixed path on Linux currently.
-+    addSystemInclude(DriverArgs, CC1Args,
-+                     getDriver().SysRoot + "/usr/include/c++/v1");
-+    return;
-+  }
-+
-+  // We need a detected GCC installation on Linux to provide libstdc++'s
-+  // headers. We handled the libc++ case above.
-+  if (!GCCInstallation.isValid())
-+    return;
-+
-+  // By default, look for the C++ headers in an include directory adjacent to
-+  // the lib directory of the GCC installation. Note that this is expect to be
-+  // equivalent to '/usr/include/c++/X.Y' in almost all cases.
-+  StringRef LibDir = GCCInstallation.getParentLibPath();
-+  StringRef InstallDir = GCCInstallation.getInstallPath();
-+  StringRef Version = GCCInstallation.getVersion();
-+  if (!addLibStdCXXIncludePaths(LibDir + "/../include/c++/" + Version,
-+                                (GCCInstallation.getTriple().str() +
-+                                 GCCInstallation.getMultiarchSuffix()),
-+                                DriverArgs, CC1Args)) {
-+    // Gentoo is weird and places its headers inside the GCC install, so if the
-+    // first attempt to find the headers fails, try this pattern.
-+    addLibStdCXXIncludePaths(InstallDir + "/include/g++-v4",
-+                             getDriver().DefaultTargetTriple,
-+                             DriverArgs, CC1Args);
-+  }
-+}
-+
- /// DragonFly - DragonFly tool chain which can call as(1) and ld(1) directly.
- 
- DragonFly::DragonFly(const Driver &D, const llvm::Triple& Triple, const ArgList &Args)
-diff --git a/a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.h b/b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.h
-index eaa6be1..bba891e 100644
---- a/a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.h
-+++ b/b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.h
-@@ -489,6 +489,16 @@ public:
- 
-   virtual Tool &SelectTool(const Compilation &C, const JobAction &JA,
-                            const ActionList &Inputs) const;
-+
-+  virtual void AddClangSystemIncludeArgs(const ArgList &DriverArgs,
-+                                         ArgStringList &CC1Args) const;
-+  virtual void AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
-+                                            ArgStringList &CC1Args) const;
-+
-+private:
-+  static bool addLibStdCXXIncludePaths(Twine Base, Twine TargetArchDir,
-+                                       const ArgList &DriverArgs,
-+                                       ArgStringList &CC1Args);
- };
- 
- class LLVM_LIBRARY_VISIBILITY NetBSD : public Generic_ELF {

diff --git a/sys-devel/clang/files/clang-3.1-gentoo-freebsd-fix-lib-path.patch b/sys-devel/clang/files/clang-3.1-gentoo-freebsd-fix-lib-path.patch
deleted file mode 100644
index 69ce782..0000000
--- a/sys-devel/clang/files/clang-3.1-gentoo-freebsd-fix-lib-path.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -upNr a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp
---- a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp	2012-05-24 04:08:48.393073000 -0400
-+++ b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp	2012-05-24 04:11:38.113153421 -0400
-@@ -1635,6 +1635,8 @@ FreeBSD::FreeBSD(const Driver &D, const
-     getFilePaths().push_back(getDriver().SysRoot + "/usr/lib32");
-   else
-     getFilePaths().push_back(getDriver().SysRoot + "/usr/lib");
-+
-+   getFilePaths().push_back(GCCInstallation.getInstallPath());
- }
- 
- Tool &FreeBSD::SelectTool(const Compilation &C, const JobAction &JA,

diff --git a/sys-devel/clang/files/clang-3.1-gentoo-linux-fix-cxx-include.patch b/sys-devel/clang/files/clang-3.1-gentoo-linux-fix-cxx-include.patch
deleted file mode 100644
index 0a8beef..0000000
--- a/sys-devel/clang/files/clang-3.1-gentoo-linux-fix-cxx-include.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -upNr a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp
---- a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp	2012-05-25 20:32:28.859469000 -0400
-+++ b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp	2012-05-25 20:33:15.988680000 -0400
-@@ -2305,8 +2305,7 @@ void Linux::AddClangCXXStdlibIncludeArgs
-     // Gentoo is weird and places its headers inside the GCC install, so if the
-     // first attempt to find the headers fails, try this pattern.
-     addLibStdCXXIncludePaths(InstallDir + "/include/g++-v4",
--                             (GCCInstallation.getTriple().str() +
--                              GCCInstallation.getMultiarchSuffix()),
-+                             getDriver().DefaultTargetTriple,
-                              DriverArgs, CC1Args);
-   }
- }

diff --git a/sys-devel/clang/files/clang-3.1-gentoo-runtime-gcc-detection.patch b/sys-devel/clang/files/clang-3.1-gentoo-runtime-gcc-detection.patch
deleted file mode 100644
index 6f0fca0..0000000
--- a/sys-devel/clang/files/clang-3.1-gentoo-runtime-gcc-detection.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff -upNr a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp
---- a/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp	2012-05-24 03:32:31.593191000 -0400
-+++ b/llvm-3.1.src/tools/clang/lib/Driver/ToolChains.cpp	2012-05-24 03:38:31.733163513 -0400
-@@ -1145,6 +1145,22 @@ Generic_GCC::GCCInstallationDetector::GC
-     Prefixes.push_back(D.InstalledDir + "/..");
-   }
- 
-+  llvm::OwningPtr<llvm::MemoryBuffer> File;
-+  if (!llvm::MemoryBuffer::getFile(D.SysRoot + "/etc/env.d/gcc/config-" + D.DefaultTargetTriple, File))
-+  {
-+    bool Exists;
-+    const std::string VersionText = File.get()->getBuffer().rsplit('-').second.substr(0,5).str();
-+    const std::string GentooPath = D.SysRoot + "/usr/lib/gcc/" + D.DefaultTargetTriple + "/" + VersionText;
-+    if (!llvm::sys::fs::exists(GentooPath + "/crtbegin.o", Exists) && Exists)
-+    {
-+      Version = GCCVersion::Parse(VersionText);
-+      GCCInstallPath = GentooPath;
-+      GCCParentLibPath = GCCInstallPath + "/../../..";
-+      IsValid = true;
-+      return;
-+    }
-+  }
-+
-   // Loop over the various components which exist and select the best GCC
-   // installation available. GCC installs are ranked by version number.
-   Version = GCCVersion::Parse("0.0.0");

diff --git a/sys-devel/clang/files/clang-3.1-increase-parser-recursion-limit.patch b/sys-devel/clang/files/clang-3.1-increase-parser-recursion-limit.patch
deleted file mode 100644
index 91606d1..0000000
--- a/sys-devel/clang/files/clang-3.1-increase-parser-recursion-limit.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Backported from r155737.
-
-diff --git a/llvm-3.1.src/tools/clang/include/clang/Parse/Parser.h b/llvm-3.1.src/tools/clang/include/clang/Parse/Parser.h
-index 0ae5dc8..2a7464f 100644
---- a/llvm-3.1.src/tools/clang/include/clang/Parse/Parser.h
-+++ b/llvm-3.1.src/tools/clang/include/clang/Parse/Parser.h
-@@ -451,7 +451,7 @@ private:
-       }
-     }
-     
--    enum { MaxDepth = 256 };
-+    enum { MaxDepth = 512 };
-     
-     bool diagnoseOverflow();
-     bool diagnoseMissingClose();

diff --git a/sys-devel/clang/metadata.xml b/sys-devel/clang/metadata.xml
deleted file mode 100644
index 8357105..0000000
--- a/sys-devel/clang/metadata.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-	<maintainer>
-		<email>voyageur@gentoo.org</email>
-		<name>Bernard Cafarelli</name>
-	</maintainer>
-	<maintainer>
-		<email>mgorny@gentoo.org</email>
-		<name>Michał Górny</name>
-	</maintainer>
-	<longdescription>The goal of the Clang project is to create a new C, C++, Objective C and Objective C++ front-end for the LLVM compiler.
-
-Features and Goals
-
-Some of the goals for the project include the following:
-
-End-User Features:
-Fast compiles and low memory use
-Expressive diagnostics
-GCC compatibility
-Utility and Applications:
-
-Modular library based architecture
-Support diverse clients (refactoring, static analysis, code generation, etc)
-Allow tight integration with IDEs
-Use the LLVM BSD License
-Internal Design and Implementation:
-
-A real-world, production quality compiler
-A simple and hackable code base
-A single unified parser for C, Objective C, C++, and Objective C++
-Conformance with C/C++/ObjC and their variants</longdescription>
-	<use>
-		<flag name='multitarget'>Build all host targets (default: host only)</flag>
-		<flag name='static-analyzer'>Install the Clang static analyzer</flag>
-		<flag name='system-cxx-headers'>By default, clang++ searchs for C++ headers in a series of hardcoded paths. Enabling this flag will force it to use the active gcc profile ones</flag>
-	</use>
-</pkgmetadata>


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2012-12-05 14:16 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-06-02 15:42 [gentoo-commits] proj/x11:opencl commit in: sys-devel/clang/, sys-devel/clang/files/cl-patches/, sys-devel/clang/files/ Michał Górny
  -- strict thread matches above, loose matches on Subject: below --
2012-12-05 14:15 Alexey Shvetsov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox