dev-lang/spidermonkey: stable 17.0.0-r5 for ia64, bug #633382
[gentoo.git] / dev-lang / spidermonkey / spidermonkey-17.0.0-r5.ebuild
1 # Copyright 1999-2017 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI="6"
5 WANT_AUTOCONF="2.1"
6 PYTHON_COMPAT=( python2_7 )
7 PYTHON_REQ_USE="threads"
8 inherit toolchain-funcs multilib python-any-r1 versionator pax-utils
9
10 MY_PN="mozjs"
11 MY_P="${MY_PN}${PV}"
12 DESCRIPTION="Stand-alone JavaScript C library"
13 HOMEPAGE="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey"
14 SRC_URI="http://ftp.mozilla.org/pub/mozilla.org/js/${MY_PN}${PV}.tar.gz"
15
16 LICENSE="NPL-1.1"
17 SLOT="17"
18 # "MIPS, MacroAssembler is not supported" wrt #491294 for -mips
19 KEYWORDS="~alpha ~amd64 ~arm -hppa ia64 -mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd"
20 IUSE="debug jit minimal static-libs test"
21
22 REQUIRED_USE="debug? ( jit )"
23 RESTRICT="ia64? ( test )"
24
25 S="${WORKDIR}/${MY_P}"
26 BUILDDIR="${S}/js/src"
27
28 RDEPEND=">=dev-libs/nspr-4.9.4
29         virtual/libffi
30         sys-libs/readline:0=
31         >=sys-libs/zlib-1.1.4"
32 DEPEND="${RDEPEND}
33         ${PYTHON_DEPS}
34         app-arch/zip
35         virtual/pkgconfig"
36
37 pkg_setup(){
38         if [[ ${MERGE_TYPE} != "binary" ]]; then
39                 python-any-r1_pkg_setup
40                 export LC_ALL="C"
41         fi
42 }
43
44 PATCHES=(
45         "${FILESDIR}"/${PN}-${SLOT}-js-config-shebang.patch
46         "${FILESDIR}"/${PN}-${SLOT}-ia64-mmap.patch
47         "${FILESDIR}"/${PN}-17.0.0-fix-file-permissions.patch
48         "${FILESDIR}"/${PN}-17-clang.patch
49         "${FILESDIR}"/${PN}-perl-defined-array-check.patch
50         "${FILESDIR}"/${PN}-17-fix_pointer_dereference.patch
51 )
52
53 src_prepare() {
54         default
55
56         # Remove obsolete jsuword bug #506160
57         sed -i -e '/jsuword/d' "${BUILDDIR}"/jsval.h || die "sed failed"
58
59         if [[ ${CHOST} == *-freebsd* ]]; then
60                 # Don't try to be smart, this does not work in cross-compile anyway
61                 ln -sfn "${BUILDDIR}/config/Linux_All.mk" "${S}/config/$(uname -s)$(uname -r).mk" || die
62         fi
63 }
64
65 src_configure() {
66         cd "${BUILDDIR}" || die
67
68         CC="$(tc-getCC)" CXX="$(tc-getCXX)" \
69         AR="$(tc-getAR)" RANLIB="$(tc-getRANLIB)" \
70         LD="$(tc-getLD)" \
71         econf \
72                 ${myopts} \
73                 --enable-jemalloc \
74                 --enable-readline \
75                 --enable-threadsafe \
76                 --with-system-nspr \
77                 --enable-system-ffi \
78                 --enable-jemalloc \
79                 $(use_enable debug) \
80                 $(use_enable jit tracejit) \
81                 $(use_enable jit methodjit) \
82                 $(use_enable static-libs static) \
83                 $(use_enable test tests)
84 }
85
86 cross_make() {
87         emake \
88                 CFLAGS="${BUILD_CFLAGS}" \
89                 CXXFLAGS="${BUILD_CXXFLAGS}" \
90                 AR="${BUILD_AR}" \
91                 CC="${BUILD_CC}" \
92                 CXX="${BUILD_CXX}" \
93                 RANLIB="${BUILD_RANLIB}" \
94                 "$@"
95 }
96 src_compile() {
97         cd "${BUILDDIR}" || die
98         if tc-is-cross-compiler; then
99                 tc-export_build_env BUILD_{AR,CC,CXX,RANLIB}
100                 cross_make host_jsoplengen host_jskwgen
101                 cross_make -C config nsinstall
102                 mv {,native-}host_jskwgen || die
103                 mv {,native-}host_jsoplengen || die
104                 mv config/{,native-}nsinstall || die
105                 sed -i \
106                         -e 's@./host_jskwgen@./native-host_jskwgen@' \
107                         -e 's@./host_jsoplengen@./native-host_jsoplengen@' \
108                         Makefile || die
109                 sed -i -e 's@/nsinstall@/native-nsinstall@' config/config.mk || die
110                 rm -f config/host_nsinstall.o \
111                         config/host_pathsub.o \
112                         host_jskwgen.o \
113                         host_jsoplengen.o || die
114         fi
115         emake
116 }
117
118 src_test() {
119         cd "${BUILDDIR}/jsapi-tests" || die
120         emake check
121 }
122
123 src_install() {
124         cd "${BUILDDIR}" || die
125         default
126
127         if ! use minimal; then
128                 if use jit; then
129                         pax-mark m "${ED}/usr/bin/js${SLOT}" || die
130                 fi
131         else
132                 rm -f "${ED}/usr/bin/js${SLOT}" || die
133         fi
134
135         if ! use static-libs; then
136                 # We can't actually disable building of static libraries
137                 # They're used by the tests and in a few other places
138                 find "${D}" -iname '*.a' -delete || die
139         fi
140 }