blob: 974f6d0650224ffa1a455f758b69711d1a1962a7 (
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
|
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-lang/v8/v8-3.13.7.5.ebuild,v 1.4 2012/12/20 17:07:15 phajdan.jr Exp $
EAPI="4"
PYTHON_DEPEND="2:2.6"
inherit eutils multilib pax-utils python toolchain-funcs versionator
DESCRIPTION="Google's open source JavaScript engine"
HOMEPAGE="http://code.google.com/p/v8"
SRC_URI="http://commondatastorage.googleapis.com/chromium-browser-official/${P}.tar.bz2"
LICENSE="BSD"
SLOT="0"
KEYWORDS="amd64 ~arm x86 ~x86-fbsd ~x64-macos ~x86-macos"
IUSE=""
pkg_setup() {
python_set_active_version 2
python_pkg_setup
}
src_prepare() {
epatch "${FILESDIR}"/${PN}-3.10.8.10-freebsd9.patch
epatch "${FILESDIR}"/${PN}-vfp2-r0.patch
}
src_compile() {
tc-export AR CC CXX RANLIB
export LINK=${CXX}
local hardfp=off
# Use target arch detection logic from bug #354601.
case ${CHOST} in
i?86-*) myarch=ia32 ;;
x86_64-*)
if [[ $ABI = x86 ]] ; then
myarch=ia32
else
myarch=x64
fi ;;
arm*-hardfloat-*)
hardfp=on
myarch=arm ;;
arm*-*) myarch=arm ;;
*) die "Unrecognized CHOST: ${CHOST}"
esac
mytarget=${myarch}.release
soname_version="$(get_version_component_range 1-3)"
local snapshot=on
host-is-pax && snapshot=off
# TODO: Add console=readline option once implemented upstream
# http://code.google.com/p/v8/issues/detail?id=1781
emake V=1 \
library=shared \
werror=no \
soname_version=${soname_version} \
snapshot=${snapshot} \
hardfp=${hardfp} \
${mytarget} || die
pax-mark m out/${mytarget}/{cctest,d8,shell} || die
}
src_test() {
local arg testjobs
for arg in ${MAKEOPTS}; do
case ${arg} in
-j*) testjobs=${arg#-j} ;;
--jobs=*) testjobs=${arg#--jobs=} ;;
esac
done
tools/test-wrapper-gypbuild.py \
-j${testjobs:-1} \
--arch-and-mode=${mytarget} \
--no-presubmit \
--progress=dots || die
}
src_install() {
insinto /usr
doins -r include || die
if [[ ${CHOST} == *-darwin* ]] ; then
# buildsystem is too horrific to get this built correctly
mkdir -p out/${mytarget}/lib.target
mv out/${mytarget}/libv8.so.${soname_version} \
out/${mytarget}/lib.target/libv8$(get_libname ${soname_version}) || die
install_name_tool \
-id "${EPREFIX}"/usr/$(get_libdir)/libv8$(get_libname) \
out/${mytarget}/lib.target/libv8$(get_libname ${soname_version}) \
|| die
install_name_tool \
-change \
"${S}"/out/${mytarget}/libv8.so.${soname_version} \
"${EPREFIX}"/usr/$(get_libdir)/libv8$(get_libname) \
out/${mytarget}/d8 || die
fi
dobin out/${mytarget}/d8 || die
dolib out/${mytarget}/lib.target/libv8$(get_libname ${soname_version}) || die
dosym libv8$(get_libname ${soname_version}) /usr/$(get_libdir)/libv8$(get_libname) || die
dodoc AUTHORS ChangeLog || die
}
pkg_preinst() {
preserved_libs=()
local baselib candidate
eshopts_push -s nullglob
for candidate in "${EROOT}usr/$(get_libdir)"/libv8$(get_libname).*; do
baselib=${candidate##*/}
if [[ ! -e "${ED}usr/$(get_libdir)/${baselib}" ]]; then
preserved_libs+=( "${EPREFIX}/usr/$(get_libdir)/${baselib}" )
fi
done
eshopts_pop
if [[ ${#preserved_libs[@]} -gt 0 ]]; then
preserve_old_lib "${preserved_libs[@]}"
fi
}
pkg_postinst() {
if [[ ${#preserved_libs[@]} -gt 0 ]]; then
preserve_old_lib_notify "${preserved_libs[@]}"
fi
}
|