blob: ee2a207314d90b1a304ea89cdffe8e1a476484e7 (
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
|
# 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-3.19.18.19.ebuild,v 1.4 2013/08/21 21:39:44 ago Exp $
EAPI="5"
PYTHON_COMPAT=( python2_{6,7} )
inherit chromium eutils multilib multiprocessing pax-utils python-any-r1 \
toolchain-funcs versionator
DESCRIPTION="Google's open source JavaScript engine"
HOMEPAGE="http://code.google.com/p/v8"
SRC_URI="https://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.bz2"
LICENSE="BSD"
soname_version="${PV}"
SLOT="0/${soname_version}"
KEYWORDS="amd64 ~arm x86 ~x86-fbsd ~x64-macos ~x86-macos"
IUSE="neon readline"
RDEPEND="readline? ( sys-libs/readline:0 )"
DEPEND="${PYTHON_DEPS}
${RDEPEND}"
src_configure() {
tc-export AR CC CXX RANLIB
export LINK=${CXX}
local myconf=""
# 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 readline console readline dumb)"
# 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="
# gyp does this only for linux, but we always want to use "out" dir, or
# all else below fails due to not finding "out" dir
myconf+=" --generator-output=out"
# gyp defaults to whatever makes the most sense on the platform at hand,
# but we want to build using Makefiles, so force that
myconf+=" -f make"
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
}
|