# Maintainer: Jan Alexander Steffens (heftig) # ALARM: Kevin Mihelich # - configure with --disable-lto, --disable-rust-simd # - patch to fix build on ARM pkgname=js78 pkgver=78.7.1 pkgrel=1 pkgdesc="JavaScript interpreter and libraries - Version 78" arch=(x86_64) url="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey" license=(MPL) depends=(gcc-libs readline zlib sh) makedepends=(zip autoconf2.13 python-setuptools python-psutil rust llvm clang lld) checkdepends=(mercurial git) _relver=${pkgver}esr source=(https://archive.mozilla.org/pub/firefox/releases/$_relver/source/firefox-$_relver.source.tar.xz{,.asc} 0001-Fixes-for-LTO-PGO-support.patch 0002-Bug-1667736-Update-packed_simd-to-compile-on-Rust-1..patch arm.patch) sha256sums=('5042783e2cf94d21dd990d2083800f05bc32f8ba65532a715c7be3cb7716b837' 'SKIP' '2c5381bd087dc04287f830d8a3ea739d0c69e43170c2240fd5db78c795d2e65a' 'ad3dd149651d76c1c3de2dc71d3fb3361181a1add75ff095df7bfba88a4e4ad6' 'bc00516032330760444939c516a60c78f868631e1b37f075f0fe71a53737b966') validpgpkeys=('14F26682D0916CDD81E37B6D61B7B526D98F0353') # Mozilla Software Releases # Make sure the duplication between bin and lib is found COMPRESSZST+=(--long) prepare() { cd firefox-$pkgver mkdir obj patch -p1 -i ../arm.patch # Post-78 fixes to fix LTO with LLVM 11 patch -Np1 -i ../0001-Fixes-for-LTO-PGO-support.patch # Fix build with Rust 1.48 patch -Np1 -i ../0002-Bug-1667736-Update-packed_simd-to-compile-on-Rust-1..patch } build() { local configure_args=( --prefix=/usr --disable-debug --disable-debug-symbols --disable-jemalloc --disable-strip --enable-hardening --disable-lto --enable-linker=lld --enable-optimize --enable-readline --enable-release --disable-rust-simd --enable-shared-js --enable-tests --with-intl-api --with-system-zlib --without-system-icu ) export CC='clang --target=x86_64-unknown-linux-gnu' export CXX='clang++ --target=x86_64-unknown-linux-gnu' export AR=llvm-ar export NM=llvm-nm export RANLIB=llvm-ranlib cd firefox-$pkgver/obj # Do 3-tier PGO echo "Building instrumented JS..." sh ../js/src/configure "${configure_args[@]}" \ --enable-profile-generate=cross make echo "Profiling instrumented JS..." ( local js="$PWD/dist/bin/js" export LLVM_PROFILE_FILE="$PWD/js-%p-%m.profraw" cd ../js/src/octane "$js" run.js cd ../../../third_party/webkit/PerformanceTests/ARES-6 "$js" cli.js cd ../SunSpider/sunspider-0.9.1 "$js" sunspider-standalone-driver.js ) llvm-profdata merge -o merged.profdata *.profraw stat -c "Profile data found (%s bytes)" merged.profdata test -s merged.profdata echo "Removing instrumented JS..." make clobber echo "Building optimized JS..." sh ../js/src/configure "${configure_args[@]}" \ --enable-profile-use=cross \ --with-pgo-profile-path="$PWD/merged.profdata" make } check() { local jstests_extra_args=( --format=none --exclude-random --wpt=disabled ) jittest_extra_args=( --format=none --timeout 300 ) jittest_test_args=( basic ) cd firefox-$pkgver/obj make -C js/src check-jstests check-jit-test \ JSTESTS_EXTRA_ARGS="${jstests_extra_args[*]}" \ JITTEST_EXTRA_ARGS="${jittest_extra_args[*]}" \ JITTEST_TEST_ARGS="${jittest_test_args[*]}" } package() { cd firefox-$pkgver/obj make DESTDIR="$pkgdir" install rm "$pkgdir"/usr/lib/*.ajs find "$pkgdir"/usr/{lib/pkgconfig,include} -type f -exec chmod -c a-x {} + } # vim:set ts=2 sw=2 et: