* [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-12-05 14:15 [gentoo-commits] proj/x11:opencl commit in: sys-devel/clang/, sys-devel/clang/files/cl-patches/, sys-devel/clang/files/ Alexey Shvetsov
-- strict thread matches above, loose matches on Subject: below --
2012-06-02 15:42 Michał Górny
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox