dev-lang/spidermonkey-52.9.1_pre1-r0: alpha stable
[gentoo.git] / dev-lang / spidermonkey / spidermonkey-52.9.1_pre1.ebuild
1 # Copyright 1999-2019 Gentoo Authors
2 # Distributed under the terms of the GNU General Public License v2
3
4 EAPI=6
5 WANT_AUTOCONF="2.1"
6 inherit autotools toolchain-funcs pax-utils mozcoreconf-v5
7
8 MY_PN="mozjs"
9 MY_P="${MY_PN}-${PV/_rc/.rc}"
10 MY_P="${MY_P/_pre/pre}"
11 DESCRIPTION="Stand-alone JavaScript C++ library"
12 HOMEPAGE="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey"
13 #SRC_URI="https://people.mozilla.org/~sfink/${MY_P}.tar.bz2"
14 SRC_URI="http://ftp.mozilla.org/pub/spidermonkey/prereleases/52/pre1/mozjs-52.9.1pre1.tar.bz2 -> ${MY_P}.tar.bz2
15         https://dev.gentoo.org/~axs/distfiles/${PN}-52.0-patches-0.tar.xz"
16
17 LICENSE="NPL-1.1"
18 SLOT="52"
19 KEYWORDS="alpha amd64 arm arm64 ~hppa ~ia64 ~mips ppc ppc64 s390 ~sh ~sparc x86 ~x86-fbsd"
20 IUSE="debug minimal +system-icu test"
21
22 RESTRICT="ia64? ( test )"
23
24 S="${WORKDIR}/${MY_P%.rc*}"
25 BUILDDIR="${S}/jsobj"
26
27 RDEPEND=">=dev-libs/nspr-4.13.1
28         virtual/libffi
29         sys-libs/readline:0=
30         >=sys-libs/zlib-1.2.3
31         system-icu? ( >=dev-libs/icu-58.1:= )"
32 DEPEND="${RDEPEND}"
33
34 pkg_setup(){
35         [[ ${MERGE_TYPE} == "binary" ]] || \
36                 moz_pkgsetup
37
38         export SHELL="${EPREFIX}/bin/bash"
39 }
40
41 src_prepare() {
42         # remove patches integrated by upstream
43         rm -f   "${WORKDIR}"/${PN}/0002-build-Add-major-version-to-make-parallel-installable.patch \
44                 "${WORKDIR}"/${PN}/0005-headers-Fix-symbols-visibility.patch \
45                 "${WORKDIR}"/${PN}/0007-build-Remove-unnecessary-NSPR-dependency.patch \
46                 "${WORKDIR}"/${PN}/0008-tests-Skip-on-all-64-bit-archs.patch \
47                 || die
48
49         eapply "${WORKDIR}/${PN}"
50         eapply "${FILESDIR}"/moz38-dont-hardcode-libc-soname.patch
51         eapply "${FILESDIR}"/${PN}-52.0-fix-alpha-bitness.patch
52
53         eapply_user
54
55         if [[ ${CHOST} == *-freebsd* ]]; then
56                 # Don't try to be smart, this does not work in cross-compile anyway
57                 ln -sfn "${BUILDDIR}/config/Linux_All.mk" "${S}/config/$(uname -s)$(uname -r).mk" || die
58         fi
59
60         cd "${S}"/js/src || die
61         eautoconf old-configure.in
62         eautoconf
63
64         # there is a default config.cache that messes everything up
65         rm -f "${S}"/js/src/config.cache || die
66
67         mkdir -p "${BUILDDIR}" || die
68 }
69
70 src_configure() {
71         cd "${BUILDDIR}" || die
72
73         ECONF_SOURCE="${S}/js/src" \
74         econf \
75                 --enable-jemalloc \
76                 --enable-readline \
77                 --with-system-nspr \
78                 --disable-optimize \
79                 --with-intl-api \
80                 --disable-gold \
81                 $(use_with system-icu) \
82                 $(use_enable debug) \
83                 $(use_enable test tests) \
84                 XARGS="/usr/bin/xargs" \
85                 SHELL="${SHELL:-${EPREFIX}/bin/bash}" \
86                 CC="${CC}" CXX="${CXX}" LD="${LD}" AR="${AR}" RANLIB="${RANLIB}"
87 }
88
89 cross_make() {
90         emake \
91                 CFLAGS="${BUILD_CFLAGS}" \
92                 CXXFLAGS="${BUILD_CXXFLAGS}" \
93                 AR="${BUILD_AR}" \
94                 CC="${BUILD_CC}" \
95                 CXX="${BUILD_CXX}" \
96                 RANLIB="${BUILD_RANLIB}" \
97                 SHELL="${SHELL:-${EPREFIX}/bin/bash}" \
98                 "$@"
99 }
100 src_compile() {
101         cd "${BUILDDIR}" || die
102         if tc-is-cross-compiler; then
103                 tc-export_build_env BUILD_{AR,CC,CXX,RANLIB}
104                 cross_make \
105                         MOZ_OPTIMIZE_FLAGS="" MOZ_DEBUG_FLAGS="" \
106                         HOST_OPTIMIZE_FLAGS="" MODULE_OPTIMIZE_FLAGS="" \
107                         MOZ_PGO_OPTIMIZE_FLAGS="" \
108                         host_jsoplengen host_jskwgen
109                 cross_make \
110                         MOZ_OPTIMIZE_FLAGS="" MOZ_DEBUG_FLAGS="" HOST_OPTIMIZE_FLAGS="" \
111                         -C config nsinstall
112                 mv {,native-}host_jskwgen || die
113                 mv {,native-}host_jsoplengen || die
114                 mv config/{,native-}nsinstall || die
115                 sed -i \
116                         -e 's@./host_jskwgen@./native-host_jskwgen@' \
117                         -e 's@./host_jsoplengen@./native-host_jsoplengen@' \
118                         Makefile || die
119                 sed -i -e 's@/nsinstall@/native-nsinstall@' config/config.mk || die
120                 rm -f config/host_nsinstall.o \
121                         config/host_pathsub.o \
122                         host_jskwgen.o \
123                         host_jsoplengen.o || die
124         fi
125
126         MOZ_MAKE_FLAGS="${MAKEOPTS}" \
127         SHELL="${SHELL:-${EPREFIX}/bin/bash}" \
128         emake \
129                 MOZ_OPTIMIZE_FLAGS="" MOZ_DEBUG_FLAGS="" \
130                 HOST_OPTIMIZE_FLAGS="" MODULE_OPTIMIZE_FLAGS="" \
131                 MOZ_PGO_OPTIMIZE_FLAGS=""
132 }
133
134 src_test() {
135         cd "${BUILDDIR}/js/src/jsapi-tests" || die
136         ./jsapi-tests || die
137 }
138
139 src_install() {
140         cd "${BUILDDIR}" || die
141         SHELL="${SHELL:-${EPREFIX}/bin/bash}" \
142         emake DESTDIR="${D}" install
143
144         if ! use minimal; then
145                 pax-mark m "${ED}"usr/bin/js${SLOT}
146         else
147                 rm -f "${ED}"usr/bin/js${SLOT}
148         fi
149
150         # We can't actually disable building of static libraries
151         # They're used by the tests and in a few other places
152         find "${D}" -iname '*.a' -o -iname '*.ajs' -delete || die
153 }