1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/sys-devel/clang/clang-2.6-r1.ebuild,v 1.1 2009/10/27 12:12:35 voyageur Exp $
EAPI=2
inherit eutils 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}.tar.gz
http://llvm.org/releases/${PV}/${P}.tar.gz"
LICENSE="UoI-NCSA"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="debug +static-analyzer test"
# Note: for LTO support, clang will depend on binutils with gold plugins, and LLVM built after that - http://llvm.org/docs/GoldPlugin.html
DEPEND="static-analyzer? ( dev-lang/perl )
test? ( dev-util/dejagnu )"
RDEPEND="~sys-devel/llvm-${PV}"
S="${WORKDIR}/llvm-2.6"
src_prepare() {
mv "${WORKDIR}"/clang-2.6 "${S}"/tools/clang || die "clang source directory not found"
# Same as llvm doc patches
epatch "${FILESDIR}"/${PN}-2.6-fixdoc.patch
# multilib-strict
sed -e "s#lib/clang/1.0#$(get_libdir)/clang/1.0#" \
-i "${S}"/tools/clang/lib/Headers/Makefile \
|| die "clang Makefile failed"
# fix the static analyzer for in-tree install
sed -e 's/import ScanView/from clang \0/' \
-i "${S}"/tools/clang/tools/scan-view/scan-view \
|| die "scan-view sed failed"
sed -e "/scanview.css\|sorttable.js/s#\$RealBin#/usr/share/${PN}#" \
-i "${S}"/tools/clang/utils/scan-build \
|| die "scan-build sed failed"
# From llvm src_prepare
einfo "Fixing install dirs"
sed -e 's,^PROJ_docsdir.*,PROJ_docsdir := $(DESTDIR)$(PROJ_prefix)/share/doc/'${PF}, \
-e 's,^PROJ_etcdir.*,PROJ_etcdir := $(DESTDIR)/etc/llvm,' \
-e 's,^PROJ_libdir.*,PROJ_libdir := $(DESTDIR)/usr/'$(get_libdir), \
-i Makefile.config.in || die "Makefile.config sed failed"
einfo "Fixing rpath"
sed -e 's/\$(RPATH) -Wl,\$(\(ToolDir\|LibDir\))//g' -i Makefile.rules \
|| die "rpath sed failed"
}
src_configure() {
local CONF_FLAGS=""
if use debug; then
CONF_FLAGS="${CONF_FLAGS} --disable-optimized"
einfo "Note: Compiling LLVM in debug mode will create huge and slow binaries"
# ...and you probably shouldn't use tmpfs, unless it can hold 900MB
else
CONF_FLAGS="${CONF_FLAGS} \
--enable-optimized \
--disable-assertions \
--disable-expensive-checks"
fi
if use amd64; then
CONF_FLAGS="${CONF_FLAGS} --enable-pic"
fi
econf ${CONF_FLAGS} || die "econf failed"
}
src_compile() {
emake VERBOSE=1 KEEP_SYMBOLS=1 clang-only || die "emake failed"
}
src_test() {
cd "${S}"/tools/clang || die "cd clang failed"
# 20091026: many tests fail not finding headers?
vecho ">>> Test phase [test]: ${CATEGORY}/${PF}"
if ! emake -j1 VERBOSE=1 test; then
hasq test $FEATURES && die "Make test failed. See above for details."
hasq test $FEATURES || eerror "Make test failed. See above for details."
fi
}
src_install() {
cd "${S}"/tools/clang || die "cd clang failed"
emake KEEP_SYMBOLS=1 DESTDIR="${D}" install || die "install failed"
if use static-analyzer ; then
dobin utils/ccc-analyzer
dobin utils/scan-build
insinto /usr/share/${PN}
doins utils/scanview.css
doins utils/sorttable.js
cd tools/scan-view || "die cd scan-view failed"
dobin scan-view
python_version
insinto /usr/$(get_libdir)/python${PYVER}/site-packages/clang
doins Reporter.py Resources ScanView.py startfile.py
touch "${D}"/usr/$(get_libdir)/python${PYVER}/site-packages/clang/__init__.py
fi
}
pkg_postinst() {
python_version
python_mod_optimize /usr/$(get_libdir)/python${PYVER}/site-packages/clang
}
pkg_postrm() {
python_mod_cleanup
}
|