blob: cc6119371517ad0a61a21b2409753c9f2a4a711c (
plain)
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
|
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/v8/v8-9999.ebuild,v 1.48 2013/08/18 03:12:49 steev Exp $
EAPI="5"
PYTHON_COMPAT=( python2_{6,7} )
inherit chromium eutils multilib multiprocessing pax-utils python-any-r1 \
subversion toolchain-funcs
DESCRIPTION="Google's open source JavaScript engine"
HOMEPAGE="http://code.google.com/p/v8"
ESVN_REPO_URI="http://v8.googlecode.com/svn/trunk"
LICENSE="BSD"
SLOT="0"
KEYWORDS=""
IUSE="icu readline neon"
RDEPEND="icu? ( dev-libs/icu:= )
readline? ( sys-libs/readline:0 )"
DEPEND="${PYTHON_DEPS}
${RDEPEND}"
src_unpack() {
subversion_src_unpack
cd "${S}"
make dependencies || die
}
src_prepare() {
# Make sure no bundled libraries are used.
find third_party -type f \! -iname '*.gyp*' -delete || die
}
src_configure() {
tc-export AR CC CXX RANLIB
export LINK=${CXX}
local myconf=""
subversion_wc_info
soname_version="${PV}.${ESVN_WC_REVISION}"
# Always build v8 as a shared library with proper SONAME.
myconf+=" -Dcomponent=shared_library -Dsoname_version=${soname_version}"
# Use target arch detection logic from bug #354601.
case ${CHOST} in
i?86-*)
myarch="ia32"
myconf+=" -Dv8_target_arch=ia32" ;;
x86_64-*)
if [[ $ABI = x86 ]] ; then
myarch="ia32"
myconf+=" -Dv8_target_arch=ia32"
else
myarch="x64"
myconf+=" -Dv8_target_arch=x64"
fi ;;
arm*-*)
myarch="arm"
myconf+=" -Dv8_target_arch=arm -Darm_fpu=default"
if [[ ${CHOST} == *-hardfloat-* ]] ; then
myconf+=" -Dv8_use_arm_eabi_hardfloat=true"
else
myconf+=" -Dv8_use_arm_eabi_hardfloat=false"
fi
if [[ ${CHOST} == armv7*-* ]] ; then
myconf+=" -Darmv7=1"
else
myconf+=" -Darmv7=0"
fi
myconf+=" $(gyp_use neon arm_neon)" ;;
mips*)
if [[ ${CHOST} == mips*el* ]] ; then
myarch="mipsel"
myconf+=" -Dv8_target_arch=mipsel"
else
die "big-endian MIPS is not yet supported"
fi
if [[ ${CHOST} == *softfloat* ]] ; then
myconf+=" -Dv8_use_mips_abi_hardfloat=false"
else
myconf+=" -Dv8_use_mips_abi_hardfloat=true"
fi
if [[ ${CHOST} == *loongson* ]] ; then
myconf+=" -Dmips_arch_variant=loongson"
elif [[ ${CHOST} == mips*64* ]] ; then
die "generic MIPS 64bit is not yet supported"
elif [[ ${CHOST} == mips*r2* ]] ; then
myconf+=" -Dmips_arch_variant=mips32r2"
else
myconf+=" -Dmips_arch_variant=mips32"
fi
;;
*) die "Unrecognized CHOST: ${CHOST}"
esac
myconf+="
$(gyp_use icu v8_enable_i18n_support)
$(gyp_use readline console readline dumb)"
myconf+="
-Duse_system_icu=1"
# Make sure that -Werror doesn't get added to CFLAGS by the build system.
# Depending on GCC version the warnings are different and we don't
# want the build to fail because of that.
myconf+=" -Dwerror="
EGYP_CHROMIUM_COMMAND=build/gyp_v8 egyp_chromium ${myconf} || die
}
src_compile() {
local makeargs=(
-C out
builddir="${S}/out/Release"
V=1
BUILDTYPE=Release
)
# Build mksnapshot so we can pax-mark it.
emake "${makeargs[@]}" mksnapshot.${myarch}
pax-mark m out/Release/mksnapshot.${myarch}
# Build everything else.
emake "${makeargs[@]}"
pax-mark m out/Release/{cctest,d8,preparser}
}
src_test() {
LD_LIBRARY_PATH=out/Release/lib.target tools/run-tests.py \
-j$(makeopts_jobs) \
--no-presubmit \
--outdir=out \
--buildbot \
--arch=native \
--mode=Release \
--progress=dots || die
}
src_install() {
insinto /usr
doins -r include
if [[ ${CHOST} == *-darwin* ]] ; then
# buildsystem is too horrific to get this built correctly
mkdir -p out/Release/lib.target || die
mv out/Release/libv8.so.${soname_version} \
out/Release/lib.target/libv8$(get_libname ${soname_version}) || die
install_name_tool \
-id "${EPREFIX}"/usr/$(get_libdir)/libv8$(get_libname) \
out/Release/lib.target/libv8$(get_libname ${soname_version}) \
|| die
install_name_tool \
-change \
/usr/local/lib/libv8.so.${soname_version} \
"${EPREFIX}"/usr/$(get_libdir)/libv8$(get_libname) \
out/Release/d8 || die
fi
dobin out/Release/d8
pax-mark m "${ED}usr/bin/d8"
dolib out/Release/lib.target/libv8$(get_libname ${soname_version})
dosym libv8$(get_libname ${soname_version}) /usr/$(get_libdir)/libv8$(get_libname)
dodoc AUTHORS ChangeLog
}
# TODO: remove functions below after they are removed from chromium.eclass'
# EXPORT_FUNCTIONS .
pkg_preinst() {
return
}
pkg_postinst() {
return
}
pkg_postrm() {
return
}
|