# 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.4.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} lto-pgo.diff arm.patch) sha256sums=('1978eedd975b1cf95bd4a04b2381560d1ad9a4223032717f23fac26e3458a760' 'SKIP' '7b3d631c20a8de8d0bfd4de77e8ebeffa0bd0aa536abed713c36931ea4810926' '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 ../lto-pgo.diff } 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: