| 1 |
# Copyright 1999-2010 Gentoo Foundation |
| 2 |
# Distributed under the terms of the GNU General Public License v2 |
| 3 |
# $Header: /var/cvsroot/gentoo-x86/sys-devel/clang/clang-2.6-r3.ebuild,v 1.2 2010/04/28 08:40:06 voyageur Exp $ |
| 4 |
|
| 5 |
EAPI=2 |
| 6 |
|
| 7 |
RESTRICT_PYTHON_ABIS="3.*" |
| 8 |
SUPPORT_PYTHON_ABIS="1" |
| 9 |
|
| 10 |
inherit eutils python |
| 11 |
|
| 12 |
DESCRIPTION="C language family frontend for LLVM" |
| 13 |
HOMEPAGE="http://clang.llvm.org/" |
| 14 |
# Fetching LLVM as well: see http://llvm.org/bugs/show_bug.cgi?id=4840 |
| 15 |
SRC_URI="http://llvm.org/releases/${PV}/llvm-${PV}.tar.gz |
| 16 |
http://llvm.org/releases/${PV}/${P}.tar.gz" |
| 17 |
|
| 18 |
LICENSE="UoI-NCSA" |
| 19 |
SLOT="0" |
| 20 |
KEYWORDS="~amd64 ~x86" |
| 21 |
IUSE="debug +static-analyzer test" |
| 22 |
|
| 23 |
# Note: for LTO support, clang will depend on binutils with gold plugins, and LLVM built after that - http://llvm.org/docs/GoldPlugin.html |
| 24 |
DEPEND="static-analyzer? ( dev-lang/perl ) |
| 25 |
test? ( dev-util/dejagnu )" |
| 26 |
RDEPEND="~sys-devel/llvm-${PV}" |
| 27 |
|
| 28 |
S="${WORKDIR}/llvm-2.6" |
| 29 |
|
| 30 |
src_prepare() { |
| 31 |
mv "${WORKDIR}"/clang-2.6 "${S}"/tools/clang || die "clang source directory not found" |
| 32 |
|
| 33 |
# Same as llvm doc patches |
| 34 |
epatch "${FILESDIR}"/${PN}-2.6-fixdoc.patch |
| 35 |
|
| 36 |
# multilib-strict |
| 37 |
sed -e "/PROJ_headers/s#lib/clang/1.0#$(get_libdir)/clang/1.0#" \ |
| 38 |
-i tools/clang/lib/Headers/Makefile \ |
| 39 |
|| die "clang Makefile failed" |
| 40 |
# fix the static analyzer for in-tree install |
| 41 |
sed -e 's/import ScanView/from clang \0/' \ |
| 42 |
-i tools/clang/tools/scan-view/scan-view \ |
| 43 |
|| die "scan-view sed failed" |
| 44 |
sed -e "/scanview.css\|sorttable.js/s#\$RealBin#/usr/share/${PN}#" \ |
| 45 |
-i tools/clang/utils/scan-build \ |
| 46 |
|| die "scan-build sed failed" |
| 47 |
# Specify python version |
| 48 |
python_convert_shebangs 2 tools/clang/tools/scan-view/scan-view |
| 49 |
# Broken test in 2.6, http://llvm.org/bugs/show_bug.cgi?id=5111 |
| 50 |
rm tools/clang/test/Analysis/retain-release.m |
| 51 |
|
| 52 |
# From llvm src_prepare |
| 53 |
einfo "Fixing install dirs" |
| 54 |
sed -e 's,^PROJ_docsdir.*,PROJ_docsdir := $(DESTDIR)$(PROJ_prefix)/share/doc/'${PF}, \ |
| 55 |
-e 's,^PROJ_etcdir.*,PROJ_etcdir := $(DESTDIR)/etc/llvm,' \ |
| 56 |
-e 's,^PROJ_libdir.*,PROJ_libdir := $(DESTDIR)/usr/'$(get_libdir), \ |
| 57 |
-i Makefile.config.in || die "Makefile.config sed failed" |
| 58 |
|
| 59 |
einfo "Fixing rpath" |
| 60 |
sed -e 's/\$(RPATH) -Wl,\$(\(ToolDir\|LibDir\))//g' -i Makefile.rules \ |
| 61 |
|| die "rpath sed failed" |
| 62 |
|
| 63 |
# Do not force -O3 -fomit-frame-pointer on users, from llvm ebuild |
| 64 |
epatch "${FILESDIR}"/llvm-2.6-cflags.patch |
| 65 |
# GCC 4.5 support, bug #317467 |
| 66 |
epatch "${FILESDIR}"/${P}-gcc45.patch |
| 67 |
} |
| 68 |
|
| 69 |
src_configure() { |
| 70 |
local CONF_FLAGS="" |
| 71 |
|
| 72 |
if use debug; then |
| 73 |
CONF_FLAGS="${CONF_FLAGS} --disable-optimized" |
| 74 |
einfo "Note: Compiling LLVM in debug mode will create huge and slow binaries" |
| 75 |
# ...and you probably shouldn't use tmpfs, unless it can hold 900MB |
| 76 |
else |
| 77 |
CONF_FLAGS="${CONF_FLAGS} \ |
| 78 |
--enable-optimized \ |
| 79 |
--disable-assertions \ |
| 80 |
--disable-expensive-checks" |
| 81 |
fi |
| 82 |
|
| 83 |
if use amd64; then |
| 84 |
CONF_FLAGS="${CONF_FLAGS} --enable-pic" |
| 85 |
fi |
| 86 |
|
| 87 |
# Skip llvm-gcc parts even if installed |
| 88 |
CONF_FLAGS="${CONF_FLAGS} --with-llvmgccdir=/dev/null" |
| 89 |
|
| 90 |
econf ${CONF_FLAGS} || die "econf failed" |
| 91 |
} |
| 92 |
|
| 93 |
src_compile() { |
| 94 |
emake VERBOSE=1 KEEP_SYMBOLS=1 clang-only || die "emake failed" |
| 95 |
} |
| 96 |
|
| 97 |
src_test() { |
| 98 |
cd "${S}"/tools/clang || die "cd clang failed" |
| 99 |
|
| 100 |
echo ">>> Test phase [test]: ${CATEGORY}/${PF}" |
| 101 |
if ! emake -j1 VERBOSE=1 test; then |
| 102 |
hasq test $FEATURES && die "Make test failed. See above for details." |
| 103 |
hasq test $FEATURES || eerror "Make test failed. See above for details." |
| 104 |
fi |
| 105 |
} |
| 106 |
|
| 107 |
src_install() { |
| 108 |
cd "${S}"/tools/clang || die "cd clang failed" |
| 109 |
emake KEEP_SYMBOLS=1 DESTDIR="${D}" install || die "install failed" |
| 110 |
|
| 111 |
if use static-analyzer ; then |
| 112 |
dobin utils/ccc-analyzer |
| 113 |
dobin utils/scan-build |
| 114 |
|
| 115 |
insinto /usr/share/${PN} |
| 116 |
doins utils/scanview.css |
| 117 |
doins utils/sorttable.js |
| 118 |
|
| 119 |
cd tools/scan-view || die "cd scan-view failed" |
| 120 |
dobin scan-view |
| 121 |
install-scan-view() { |
| 122 |
insinto "$(python_get_sitedir)"/clang |
| 123 |
doins Reporter.py Resources ScanView.py startfile.py |
| 124 |
touch "${D}"/"$(python_get_sitedir)"/clang/__init__.py |
| 125 |
} |
| 126 |
python_execute_function install-scan-view |
| 127 |
fi |
| 128 |
} |
| 129 |
|
| 130 |
pkg_postinst() { |
| 131 |
python_mod_optimize clang |
| 132 |
} |
| 133 |
|
| 134 |
pkg_postrm() { |
| 135 |
python_mod_cleanup clang |
| 136 |
} |