dev-python/pytest: arm64 stable (bug #723996)
[gentoo.git] / dev-lang / spidermonkey / spidermonkey-52.9.1_pre1.ebuild
1 # Copyright 1999-2020 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 x86"
20 IUSE="debug minimal +system-icu test"
21
22 RESTRICT="!test? ( test ) 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         eapply "${FILESDIR}"/${PN}-52.0-gcc9-overflow.patch
53
54         eapply_user
55
56         if [[ ${CHOST} == *-freebsd* ]]; then
57                 # Don't try to be smart, this does not work in cross-compile anyway
58                 ln -sfn "${BUILDDIR}/config/Linux_All.mk" "${S}/config/$(uname -s)$(uname -r).mk" || die
59         fi
60
61         cd "${S}"/js/src || die
62         eautoconf old-configure.in
63         eautoconf
64
65         # there is a default config.cache that messes everything up
66         rm -f "${S}"/js/src/config.cache || die
67
68         mkdir -p "${BUILDDIR}" || die
69 }
70
71 src_configure() {
72         cd "${BUILDDIR}" || die
73
74         ECONF_SOURCE="${S}/js/src" \
75         econf \
76                 --enable-jemalloc \
77                 --enable-readline \
78                 --with-system-nspr \
79                 --disable-optimize \
80                 --with-intl-api \
81                 --disable-gold \
82                 $(use_with system-icu) \
83                 $(use_enable debug) \
84                 $(use_enable test tests) \
85                 XARGS="/usr/bin/xargs" \
86                 SHELL="${SHELL:-${EPREFIX}/bin/bash}" \
87                 CC="${CC}" CXX="${CXX}" LD="${LD}" AR="${AR}" RANLIB="${RANLIB}"
88 }
89
90 cross_make() {
91         emake \
92                 CFLAGS="${BUILD_CFLAGS}" \
93                 CXXFLAGS="${BUILD_CXXFLAGS}" \
94                 AR="${BUILD_AR}" \
95                 CC="${BUILD_CC}" \
96                 CXX="${BUILD_CXX}" \
97                 RANLIB="${BUILD_RANLIB}" \
98                 SHELL="${SHELL:-${EPREFIX}/bin/bash}" \
99                 "$@"
100 }
101 src_compile() {
102         cd "${BUILDDIR}" || die
103         if tc-is-cross-compiler; then
104                 tc-export_build_env BUILD_{AR,CC,CXX,RANLIB}
105                 cross_make \
106                         MOZ_OPTIMIZE_FLAGS="" MOZ_DEBUG_FLAGS="" \
107                         HOST_OPTIMIZE_FLAGS="" MODULE_OPTIMIZE_FLAGS="" \
108                         MOZ_PGO_OPTIMIZE_FLAGS="" \
109                         host_jsoplengen host_jskwgen
110                 cross_make \
111                         MOZ_OPTIMIZE_FLAGS="" MOZ_DEBUG_FLAGS="" HOST_OPTIMIZE_FLAGS="" \
112                         -C config nsinstall
113                 mv {,native-}host_jskwgen || die
114                 mv {,native-}host_jsoplengen || die
115                 mv config/{,native-}nsinstall || die
116                 sed -i \
117                         -e 's@./host_jskwgen@./native-host_jskwgen@' \
118                         -e 's@./host_jsoplengen@./native-host_jsoplengen@' \
119                         Makefile || die
120                 sed -i -e 's@/nsinstall@/native-nsinstall@' config/config.mk || die
121                 rm -f config/host_nsinstall.o \
122                         config/host_pathsub.o \
123                         host_jskwgen.o \
124                         host_jsoplengen.o || die
125         fi
126
127         MOZ_MAKE_FLAGS="${MAKEOPTS}" \
128         SHELL="${SHELL:-${EPREFIX}/bin/bash}" \
129         emake \
130                 MOZ_OPTIMIZE_FLAGS="" MOZ_DEBUG_FLAGS="" \
131                 HOST_OPTIMIZE_FLAGS="" MODULE_OPTIMIZE_FLAGS="" \
132                 MOZ_PGO_OPTIMIZE_FLAGS=""
133 }
134
135 src_test() {
136         cd "${BUILDDIR}/js/src/jsapi-tests" || die
137         ./jsapi-tests || die
138 }
139
140 src_install() {
141         cd "${BUILDDIR}" || die
142         SHELL="${SHELL:-${EPREFIX}/bin/bash}" \
143         emake DESTDIR="${D}" install
144
145         if ! use minimal; then
146                 pax-mark m "${ED}"usr/bin/js${SLOT}
147         else
148                 rm -f "${ED}"usr/bin/js${SLOT}
149         fi
150
151         # We can't actually disable building of static libraries
152         # They're used by the tests and in a few other places
153         find "${D}" -iname '*.a' -o -iname '*.ajs' -delete || die
154 }