# 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.15.0 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 arm.patch) sha256sums=('a4438d84d95171a6d4fea9c9f02c2edbf0475a9c614d968ebe2eedc25a672151' 'SKIP' '926a573eabe3b6177363b795ed5e5641b4a4ebc6d7cfa093f11e1779ac0f897c' '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 } 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' export CXX='clang++' 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: