mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
dev-lang/spidermonkey: add 140.0
Had to drop our custom patch (0007-bgo-821091-dont-depend-on-llvm-objdump.patch) that got rid of hardcoded llvm-objdump dependency, but that logic is now split to at least two files (might be more) and I'm not sure if it even works with the way rust.eclass handles llvm dependency in Gentoo now. Hence needs more investigation and testing before I'll spend time updating the patch. Signed-off-by: Joonas Niilola <juippis@gentoo.org>
This commit is contained in:
@@ -7,5 +7,8 @@ DIST firefox-128.12.0esr.source.tar.xz 560934320 BLAKE2B ba87d758e9f0d6803db2090
|
||||
DIST firefox-128.8.0esr.source.tar.xz 563554116 BLAKE2B 3fdfa2539b42a6a659d05ef9ad60d3dd7a0097abf3c5038150316d775e3eb864056a56edc58ae4e49ca36b3ccf2f05d68a07f8493a7649388e340cd81640e584 SHA512 7c0ef22bc14d4fa248cbae14d629174c9c967f891f4525f609760595f5a108aedf7dd804d1b63b97ec268613fa98378f4742a9b6ab562454351cf21175fdb802
|
||||
DIST firefox-128esr-patches-09.tar.xz 17976 BLAKE2B 78f64f5086951f7bf2b304c1148154647aef5c4e699257cba5e94a83d8d8c159a591d0b2a7a5f8bc0f8ec28d5eae66a0783b45f94b4ef713282a6f88e46c75be SHA512 159d8c94af0f90c10baf7446e573a37397b3be7103e7001fb6b38845a28a41793c21ad24c23e0b3cfc4daa2c3a6040ef701f612693c9f4dfff8534f82e7b18a1
|
||||
DIST firefox-128esr-patches-11.tar.xz 18696 BLAKE2B 0f35eaa29f1daf9beb09c7303b3e92676eea84337683b8f7393e8b52e36ec1f37683a050e1e8d7939ebb1bdc190acaac887bebe88812c1b64785e38980f18be3 SHA512 04bf8bbf3c4e7901a6681fec66f179f797615613be838cf35a4b03cd9a347656b1264524ac7355f0c3978a5e740ddc5dc438610e5cae6ffcad73a8988cf0e572
|
||||
DIST firefox-139-patches-03.tar.xz 11536 BLAKE2B a7610d1348a2a4d02305c8d694a1648997040c69cb1445b901fe456045d0b1a73f28b0102ed03d34f70d8cc1ea9ab0245599a104b0063c7fb0dcb5a8fdd6f60b SHA512 4733d34a842d525824fbcf6ef5d8f33e26b4f37a16aa87043427eaaf1e0665aa257cb8487bd692e4fd095c2a78553ab3f0213208124c3455e534394576fb5614
|
||||
DIST firefox-140.0esr.source.tar.xz 628567364 BLAKE2B c53de3ef536acbd72813ba4a8087f3cb363e380f16570ad2840db60235d55c7b2706ce9d694d029e8a2304bfb47a50cf8fa7a169a9c0631b9e7533ea4af6ad09 SHA512 12e40b81627ac4b44d43edb94aa1cd2a6c50bb49503e3b1b6f80259eed197ecb5847a0f0520ad204340dfe0ab7b5a4aa1ced2bc21ee0258471e8fdb121f6aaf4
|
||||
DIST spidermonkey-115-patches-02.tar.xz 4896 BLAKE2B f78d9804c1427b45d6fda496b4991ec6f672dec9ce031ed57a2920fa1968c942a235f46e40166c8ab8d731a1963f322d34bb2f6984133179175e6f7376d27d13 SHA512 11fd01152d1e7b8ca89bf628076e1f4fb4f1ba6c9dc0f9dd544252495c580c04e4d5ffc238d5587f9e993aa91a47828333564ca55f60e008bd370089cd07d2e6
|
||||
DIST spidermonkey-128-patches-03.tar.xz 3636 BLAKE2B 99517642e255762c57a9e65f4c4c4107b8d6a1630dd2e68dea4527ac0e5d70fc435122e6b4068a8223c9b2a6e06503c242659d1895b9a2ff6d75212e9c917498 SHA512 71e059861318073f09f7892094e6d44ec04385385086b2e126de8e4f80cff99410bbfd352a10f325e950441c398f7ba0ac82c861ce417c10a37ab5ea063c6be2
|
||||
DIST spidermonkey-140-patches-01.tar.xz 3324 BLAKE2B 551566e4e150dbe5cbe5400e27751a0da878e3cefab2cdb38d72f99b19b2403b3786ea2230b4477fba8d3e6799743a51652de5c0136811b0213134ce506e5534 SHA512 63327436c51b82c307a883a46c147ad8f3b9ea5b2d4c18b8c8cb475fe1c2c25e4d00af1e6c6c83899089df88794962725125c8572dbb31e201c2298bb3ad30c9
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
non262/Date/15.9.5.7.js
|
||||
non262/Intl/Collator/big5han-gb2312han.js
|
||||
non262/Intl/Collator/implicithan.js
|
||||
non262/Intl/DateTimeFormat/day-period-hour-cycle.js
|
||||
non262/Intl/DateTimeFormat/formatRange-timeZone-offset.js
|
||||
non262/Intl/DateTimeFormat/formatRange-timeZoneName-matches-format.js
|
||||
non262/Intl/DateTimeFormat/formatRange-timeZoneName.js
|
||||
non262/Intl/DateTimeFormat/fractional-second-digits-append-item.js
|
||||
non262/Intl/DateTimeFormat/timeZone_links.js
|
||||
non262/Intl/DateTimeFormat/timeZone_version.js
|
||||
non262/Intl/available-locales-resolved.js
|
||||
non262/Intl/available-locales-supported.js
|
||||
non262/Intl/supportedValuesOf-timeZones-canonical.js
|
||||
non262/Temporal/Intl/consistent-dates.js
|
||||
non262/Temporal/ZonedDateTime/zones-and-links.js
|
||||
test262/intl402/Temporal/ZonedDateTime/prototype/getTimeZoneTransition/nanoseconds-subtracted-or-added-at-dst-transition.js
|
||||
test262/intl402/Temporal/ZonedDateTime/prototype/getTimeZoneTransition/result-type.js
|
||||
test262/intl402/Temporal/ZonedDateTime/prototype/getTimeZoneTransition/specific-tzdb-values.js
|
||||
test262/intl402/Temporal/ZonedDateTime/prototype/getTimeZoneTransition/transition-at-instant-boundaries.js
|
||||
test262/intl402/Temporal/ZonedDateTime/prototype/getTimeZoneTransition/transitions-close-together.js
|
||||
test262/staging/Intl402/Temporal/old/zoneddatetime-dst-corner-cases.js
|
||||
test262/staging/sm/Temporal/ZonedDateTime/zones-and-links.js
|
||||
467
dev-lang/spidermonkey/spidermonkey-140.0.ebuild
Normal file
467
dev-lang/spidermonkey/spidermonkey-140.0.ebuild
Normal file
@@ -0,0 +1,467 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI="8"
|
||||
|
||||
FIREFOX_PATCHSET="firefox-139-patches-03.tar.xz"
|
||||
SPIDERMONKEY_PATCHSET="spidermonkey-140-patches-01.tar.xz"
|
||||
|
||||
LLVM_COMPAT=( 19 20 )
|
||||
RUST_NEEDS_LLVM=1
|
||||
RUST_MIN_VER=1.82.0
|
||||
|
||||
PYTHON_COMPAT=( python3_{11..13} )
|
||||
PYTHON_REQ_USE="ncurses,ssl,xml(+)"
|
||||
|
||||
WANT_AUTOCONF="2.1"
|
||||
|
||||
inherit check-reqs flag-o-matic llvm-r1 multiprocessing python-any-r1 rust toolchain-funcs
|
||||
|
||||
MY_PN="mozjs"
|
||||
MY_PV="${PV/_pre*}"
|
||||
|
||||
MY_MAJOR=$(ver_cut 1)
|
||||
|
||||
MOZ_ESR=yes
|
||||
|
||||
MOZ_PV=${PV}
|
||||
MOZ_PV_SUFFIX=
|
||||
if [[ ${PV} =~ (_(alpha|beta|rc).*)$ ]] ; then
|
||||
MOZ_PV_SUFFIX=${BASH_REMATCH[1]}
|
||||
|
||||
# Convert the ebuild version to the upstream Mozilla version
|
||||
MOZ_PV="${MOZ_PV/_alpha/a}" # Handle alpha for SRC_URI
|
||||
MOZ_PV="${MOZ_PV/_beta/b}" # Handle beta for SRC_URI
|
||||
MOZ_PV="${MOZ_PV%%_rc*}" # Handle rc for SRC_URI
|
||||
fi
|
||||
|
||||
if [[ -n ${MOZ_ESR} ]] ; then
|
||||
# ESR releases have slightly different version numbers
|
||||
MOZ_PV="${MOZ_PV}esr"
|
||||
fi
|
||||
|
||||
MOZ_PN="firefox"
|
||||
MOZ_P="${MOZ_PN}-${MOZ_PV}"
|
||||
MOZ_PV_DISTFILES="${MOZ_PV}${MOZ_PV_SUFFIX}"
|
||||
MOZ_P_DISTFILES="${MOZ_PN}-${MOZ_PV_DISTFILES}"
|
||||
|
||||
MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/releases/${MOZ_PV}"
|
||||
|
||||
if [[ ${PV} == *_rc* ]] ; then
|
||||
MOZ_SRC_BASE_URI="https://archive.mozilla.org/pub/${MOZ_PN}/candidates/${MOZ_PV}-candidates/build${PV##*_rc}"
|
||||
fi
|
||||
|
||||
PATCH_URIS=(
|
||||
https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET}
|
||||
https://dev.gentoo.org/~juippis/mozilla/patchsets/${SPIDERMONKEY_PATCHSET}
|
||||
)
|
||||
|
||||
DESCRIPTION="Mozilla's JavaScript engine written in C and C++"
|
||||
HOMEPAGE="https://spidermonkey.dev https://firefox-source-docs.mozilla.org/js/index.html"
|
||||
SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz
|
||||
${PATCH_URIS[@]}"
|
||||
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
|
||||
|
||||
LICENSE="MPL-2.0"
|
||||
SLOT="$(ver_cut 1)"
|
||||
IUSE="clang cpu_flags_arm_neon debug +jit test"
|
||||
|
||||
#RESTRICT="test"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
BDEPEND="${PYTHON_DEPS}
|
||||
$(llvm_gen_dep '
|
||||
clang? (
|
||||
llvm-core/clang:${LLVM_SLOT}
|
||||
llvm-core/lld:${LLVM_SLOT}
|
||||
llvm-core/llvm:${LLVM_SLOT}
|
||||
)
|
||||
')
|
||||
>=dev-util/cbindgen-0.27.0
|
||||
virtual/pkgconfig
|
||||
test? (
|
||||
$(python_gen_any_dep 'dev-python/six[${PYTHON_USEDEP}]')
|
||||
)"
|
||||
DEPEND=">=dev-libs/icu-76.1:=
|
||||
>=dev-libs/nspr-4.35
|
||||
sys-libs/readline:0=
|
||||
sys-libs/zlib"
|
||||
RDEPEND="${DEPEND}"
|
||||
|
||||
S="${WORKDIR}/firefox-${PV%_*}"
|
||||
|
||||
llvm_check_deps() {
|
||||
if use clang ; then
|
||||
if ! has_version -b "llvm-core/clang:${LLVM_SLOT}" ; then
|
||||
einfo "llvm-core/clang:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if ! has_version -b "llvm-core/llvm:${LLVM_SLOT}" ; then
|
||||
einfo "llvm-core/llvm:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
|
||||
return 1
|
||||
fi
|
||||
|
||||
if ! tc-ld-is-mold ; then
|
||||
if ! has_version -b "llvm-core/lld:${LLVM_SLOT}" ; then
|
||||
einfo "llvm-core/lld:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
einfo "Using LLVM slot ${LLVM_SLOT} to build" >&2
|
||||
}
|
||||
|
||||
mozconfig_add_options_ac() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
if [[ ${#} -lt 2 ]] ; then
|
||||
die "${FUNCNAME} requires at least two arguments"
|
||||
fi
|
||||
|
||||
local reason=${1}
|
||||
shift
|
||||
|
||||
local option
|
||||
for option in ${@} ; do
|
||||
echo "ac_add_options ${option} # ${reason}" >>${MOZCONFIG}
|
||||
done
|
||||
}
|
||||
|
||||
mozconfig_add_options_mk() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
if [[ ${#} -lt 2 ]] ; then
|
||||
die "${FUNCNAME} requires at least two arguments"
|
||||
fi
|
||||
|
||||
local reason=${1}
|
||||
shift
|
||||
|
||||
local option
|
||||
for option in ${@} ; do
|
||||
echo "mk_add_options ${option} # ${reason}" >>${MOZCONFIG}
|
||||
done
|
||||
}
|
||||
|
||||
mozconfig_use_enable() {
|
||||
debug-print-function ${FUNCNAME} "$@"
|
||||
|
||||
if [[ ${#} -lt 1 ]] ; then
|
||||
die "${FUNCNAME} requires at least one arguments"
|
||||
fi
|
||||
|
||||
local flag=$(use_enable "${@}")
|
||||
mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}"
|
||||
}
|
||||
|
||||
python_check_deps() {
|
||||
if use test ; then
|
||||
python_has_version "dev-python/six[${PYTHON_USEDEP}]"
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_pretend() {
|
||||
if use test ; then
|
||||
CHECKREQS_DISK_BUILD="4400M"
|
||||
else
|
||||
CHECKREQS_DISK_BUILD="4300M"
|
||||
fi
|
||||
|
||||
check-reqs_pkg_pretend
|
||||
}
|
||||
|
||||
pkg_setup() {
|
||||
# Get LTO from environment; export after this phase for use in src_configure (etc)
|
||||
use_lto=no
|
||||
|
||||
if [[ ${MERGE_TYPE} != binary ]] ; then
|
||||
if tc-is-lto; then
|
||||
use_lto=yes
|
||||
# LTO is handled via configure
|
||||
filter-lto
|
||||
fi
|
||||
|
||||
if [[ ${use_lto} = yes ]]; then
|
||||
# -Werror=lto-type-mismatch -Werror=odr are going to fail with GCC,
|
||||
# bmo#1516758, bgo#942288
|
||||
filter-flags -Werror=lto-type-mismatch -Werror=odr
|
||||
fi
|
||||
|
||||
if use test ; then
|
||||
CHECKREQS_DISK_BUILD="4400M"
|
||||
else
|
||||
CHECKREQS_DISK_BUILD="4300M"
|
||||
fi
|
||||
|
||||
check-reqs_pkg_setup
|
||||
llvm-r1_pkg_setup
|
||||
rust_pkg_setup
|
||||
python-any-r1_pkg_setup
|
||||
|
||||
# Build system is using /proc/self/oom_score_adj, bug #604394
|
||||
addpredict /proc/self/oom_score_adj
|
||||
|
||||
if ! mountpoint -q /dev/shm ; then
|
||||
# If /dev/shm is not available, configure is known to fail with
|
||||
# a traceback report referencing /usr/lib/pythonN.N/multiprocessing/synchronize.py
|
||||
ewarn "/dev/shm is not mounted -- expect build failures!"
|
||||
fi
|
||||
|
||||
# Ensure we use C locale when building, bug #746215
|
||||
export LC_ALL=C
|
||||
fi
|
||||
|
||||
export use_lto
|
||||
}
|
||||
|
||||
src_prepare() {
|
||||
if [[ ${use_lto} == "yes" ]]; then
|
||||
rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die
|
||||
fi
|
||||
|
||||
# Workaround for bgo #915651,915651,929013 on musl
|
||||
if use elibc_glibc ; then
|
||||
rm -v "${WORKDIR}"/firefox-patches/*bgo-748849-RUST_TARGET_override.patch || die
|
||||
fi
|
||||
|
||||
eapply "${WORKDIR}"/firefox-patches
|
||||
eapply "${WORKDIR}"/spidermonkey-patches
|
||||
|
||||
default
|
||||
|
||||
# Make cargo respect MAKEOPTS
|
||||
export CARGO_BUILD_JOBS="$(makeopts_jobs)"
|
||||
|
||||
# Workaround for bgo #915651,915651,929013 on musl
|
||||
if ! use elibc_glibc ; then
|
||||
if use amd64 ; then
|
||||
export RUST_TARGET="x86_64-unknown-linux-musl"
|
||||
elif use x86 ; then
|
||||
export RUST_TARGET="i686-unknown-linux-musl"
|
||||
elif use arm64 ; then
|
||||
export RUST_TARGET="aarch64-unknown-linux-musl"
|
||||
elif use ppc64 ; then
|
||||
export RUST_TARGET="powerpc64le-unknown-linux-musl"
|
||||
else
|
||||
die "Unknown musl chost, please post your rustc -vV along with emerge --info on Gentoo's bug #915651"
|
||||
fi
|
||||
fi
|
||||
|
||||
# sed-in toolchain prefix
|
||||
sed -i \
|
||||
-e "s/objdump/${CHOST}-objdump/" \
|
||||
python/mozbuild/mozbuild/configure/check_debug_ranges.py ||
|
||||
die "sed failed to set toolchain prefix"
|
||||
|
||||
einfo "Removing pre-built binaries ..."
|
||||
find third_party -type f \( -name '*.so' -o -name '*.o' \) -print -delete || die
|
||||
|
||||
# Create build dir
|
||||
BUILD_DIR="${WORKDIR}/${PN}_build"
|
||||
mkdir -p "${BUILD_DIR}" || die
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
# Show flags set at the beginning
|
||||
einfo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
|
||||
einfo "Current CFLAGS: ${CFLAGS}"
|
||||
einfo "Current CXXFLAGS: ${CXXFLAGS}"
|
||||
einfo "Current LDFLAGS: ${LDFLAGS}"
|
||||
einfo "Current RUSTFLAGS: ${RUSTFLAGS}"
|
||||
|
||||
local have_switched_compiler=
|
||||
if use clang ; then
|
||||
# Force clang
|
||||
einfo "Enforcing the use of clang due to USE=clang ..."
|
||||
|
||||
local version_clang=$(clang --version 2>/dev/null | grep -F -- 'clang version' | awk '{ print $3 }')
|
||||
[[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 "${version_clang}")
|
||||
[[ -z ${version_clang} ]] && die "Failed to read clang version!"
|
||||
|
||||
if tc-is-gcc; then
|
||||
have_switched_compiler=yes
|
||||
fi
|
||||
|
||||
AR=llvm-ar
|
||||
CC=${CHOST}-clang-${version_clang}
|
||||
CXX=${CHOST}-clang++-${version_clang}
|
||||
NM=llvm-nm
|
||||
RANLIB=llvm-ranlib
|
||||
READELF=llvm-readelf
|
||||
OBJDUMP=llvm-objdump
|
||||
|
||||
elif ! use clang && ! tc-is-gcc ; then
|
||||
# Force gcc
|
||||
have_switched_compiler=yes
|
||||
einfo "Enforcing the use of gcc due to USE=-clang ..."
|
||||
AR=gcc-ar
|
||||
CC=${CHOST}-gcc
|
||||
CXX=${CHOST}-g++
|
||||
NM=gcc-nm
|
||||
RANLIB=gcc-ranlib
|
||||
READELF=readelf
|
||||
OBJDUMP=objdump
|
||||
fi
|
||||
|
||||
if [[ -n "${have_switched_compiler}" ]] ; then
|
||||
# Because we switched active compiler we have to ensure
|
||||
# that no unsupported flags are set
|
||||
strip-unsupported-flags
|
||||
fi
|
||||
|
||||
# Ensure we use correct toolchain,
|
||||
# AS is used in a non-standard way by upstream, #bmo1654031
|
||||
export HOST_CC="$(tc-getBUILD_CC)"
|
||||
export HOST_CXX="$(tc-getBUILD_CXX)"
|
||||
export AS="$(tc-getCC) -c"
|
||||
|
||||
tc-export CC CXX LD AR AS NM OBJDUMP RANLIB READELF PKG_CONFIG
|
||||
|
||||
# Pass the correct toolchain paths through cbindgen
|
||||
if tc-is-cross-compiler ; then
|
||||
export BINDGEN_CFLAGS="${SYSROOT:+--sysroot=${ESYSROOT}} --target=${CHOST} ${BINDGEN_CFLAGS-}"
|
||||
fi
|
||||
|
||||
# ../python/mach/mach/mixin/process.py fails to detect SHELL
|
||||
export SHELL="${EPREFIX}/bin/bash"
|
||||
|
||||
# Set state path
|
||||
export MOZBUILD_STATE_PATH="${BUILD_DIR}"
|
||||
|
||||
# Set MOZCONFIG
|
||||
export MOZCONFIG="${S}/.mozconfig"
|
||||
|
||||
# Initialize MOZCONFIG
|
||||
mozconfig_add_options_ac '' --enable-project=js
|
||||
|
||||
mozconfig_add_options_ac 'Gentoo default' \
|
||||
--host="${CBUILD:-${CHOST}}" \
|
||||
--target="${CHOST}" \
|
||||
--disable-ctype \
|
||||
--disable-jemalloc \
|
||||
--disable-smoosh \
|
||||
--disable-strip \
|
||||
--enable-packed-relative-relocs \
|
||||
--enable-readline \
|
||||
--enable-release \
|
||||
--enable-shared-js \
|
||||
--libdir="${EPREFIX}/usr/$(get_libdir)" \
|
||||
--prefix="${EPREFIX}/usr" \
|
||||
--with-intl-api \
|
||||
--with-system-icu \
|
||||
--with-system-nspr \
|
||||
--with-system-zlib \
|
||||
--with-toolchain-prefix="${CHOST}-"
|
||||
|
||||
mozconfig_use_enable debug
|
||||
mozconfig_use_enable jit
|
||||
mozconfig_use_enable test tests
|
||||
|
||||
if use debug ; then
|
||||
mozconfig_add_options_ac '+debug' --disable-optimize
|
||||
mozconfig_add_options_ac '+debug' --enable-debug-symbols
|
||||
mozconfig_add_options_ac '+debug' --enable-real-time-tracing
|
||||
else
|
||||
mozconfig_add_options_ac '-debug' --enable-optimize
|
||||
mozconfig_add_options_ac '-debug' --disable-debug-symbols
|
||||
mozconfig_add_options_ac '-debug' --disable-real-time-tracing
|
||||
fi
|
||||
|
||||
# We always end up disabling this at some point due to newer rust versions. bgo#933372
|
||||
mozconfig_add_options_ac '--disable-rust-simd' --disable-rust-simd
|
||||
|
||||
# Modifications to better support ARM, bug 717344
|
||||
if use cpu_flags_arm_neon ; then
|
||||
mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-fpu=neon
|
||||
|
||||
if ! tc-is-clang ; then
|
||||
# thumb options aren't supported when using clang, bug 666966
|
||||
mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-thumb=yes
|
||||
mozconfig_add_options_ac '+cpu_flags_arm_neon' --with-thumb-interwork=no
|
||||
fi
|
||||
fi
|
||||
|
||||
# Tell build system that we want to use LTO
|
||||
if [[ ${use_lto} == "yes" ]] ; then
|
||||
if use clang ; then
|
||||
if tc-ld-is-mold ; then
|
||||
mozconfig_add_options_ac '+lto' --enable-linker=mold
|
||||
else
|
||||
mozconfig_add_options_ac '+lto' --enable-linker=lld
|
||||
fi
|
||||
mozconfig_add_options_ac '+lto' --enable-lto=cross
|
||||
|
||||
else
|
||||
mozconfig_add_options_ac '+lto' --enable-linker=bfd
|
||||
mozconfig_add_options_ac '+lto' --enable-lto=full
|
||||
fi
|
||||
fi
|
||||
|
||||
# LTO flag was handled via configure
|
||||
filter-lto
|
||||
|
||||
# Pass MAKEOPTS to build system
|
||||
export MOZ_MAKE_FLAGS="${MAKEOPTS}"
|
||||
|
||||
# Use system's Python environment
|
||||
export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE="none"
|
||||
export PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach
|
||||
|
||||
# Disable notification when build system has finished
|
||||
export MOZ_NOSPAM=1
|
||||
|
||||
# Portage sets XARGS environment variable to "xargs -r" by default which
|
||||
# breaks build system's check_prog() function which doesn't support arguments
|
||||
mozconfig_add_options_ac 'Gentoo default' "XARGS=${EPREFIX}/usr/bin/xargs"
|
||||
|
||||
# Set build dir
|
||||
mozconfig_add_options_mk 'Gentoo default' "MOZ_OBJDIR=${BUILD_DIR}"
|
||||
|
||||
# Show flags we will use
|
||||
einfo "Build BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
|
||||
einfo "Build CFLAGS: ${CFLAGS}"
|
||||
einfo "Build CXXFLAGS: ${CXXFLAGS}"
|
||||
einfo "Build LDFLAGS: ${LDFLAGS}"
|
||||
einfo "Build RUSTFLAGS: ${RUSTFLAGS}"
|
||||
|
||||
./mach configure || die
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
./mach build --verbose || die
|
||||
}
|
||||
|
||||
src_test() {
|
||||
if "${BUILD_DIR}/js/src/js" -e 'print("Hello world!")'; then
|
||||
einfo "Smoke-test successful, continuing with full test suite"
|
||||
else
|
||||
die "Smoke-test failed: did interpreter initialization fail?"
|
||||
fi
|
||||
|
||||
cp "${FILESDIR}"/spidermonkey-${SLOT}-known-test-failures.txt "${T}"/known_test_failures.list || die
|
||||
./mach jstests --exclude-file="${T}"/known_test_failures.list || die
|
||||
}
|
||||
|
||||
src_install() {
|
||||
cd "${BUILD_DIR}" || die
|
||||
default
|
||||
|
||||
# fix soname links
|
||||
pushd "${ED}"/usr/$(get_libdir) &>/dev/null || die
|
||||
mv lib${MY_PN}-${MY_MAJOR}.so lib${MY_PN}-${MY_MAJOR}.so.0.0.0 || die
|
||||
ln -s lib${MY_PN}-${MY_MAJOR}.so.0.0.0 lib${MY_PN}-${MY_MAJOR}.so.0 || die
|
||||
ln -s lib${MY_PN}-${MY_MAJOR}.so.0 lib${MY_PN}-${MY_MAJOR}.so || die
|
||||
popd &>/dev/null || die
|
||||
|
||||
# remove unneeded files
|
||||
rm \
|
||||
"${ED}"/usr/bin/js${MY_MAJOR}-config \
|
||||
"${ED}"/usr/$(get_libdir)/libjs_static.ajs || die
|
||||
|
||||
# fix permissions
|
||||
chmod -x \
|
||||
"${ED}"/usr/$(get_libdir)/pkgconfig/*.pc \
|
||||
"${ED}"/usr/include/mozjs-${MY_MAJOR}/js-config.h || die
|
||||
}
|
||||
Reference in New Issue
Block a user