#!/bin/sh -e for p in *.patch; do patch -p1 < "$p" done # Build yasm for Firefox's sole use. Firefox is the only package which needs it # and upstream is kinda dead. ( cd yasm ./configure \ --prefix=/ make make DESTDIR="$PWD/../junk" install ) # Build zip/unzip for Firefox's sole use. for f in zip unzip; do ( cd "$f" make \ CC="$CC $CFLAGS $CXXFLAGS" \ -f unix/Makefile generic make \ prefix="$PWD/../junk" \ -f unix/Makefile install ) done export PATH="$PWD/junk/bin:$PATH" export CC=clang export CXX=clang++ export CFLAGS="--target=x86_64-pc-linux-musl $CFLAGS" export CXXFLAGS="--target=x86_64-pc-linux-musl $CXXFLAGS" # If using libc++, CXXSTDLIB needs to be set manually. case $("$CC" -print-file-name=libc++.so) in */*) export CXXSTDLIB=c++ esac # Instruct the compiler to trim absolute paths in resulting binaries and instead # change them to relative paths ($PWD/... ./...). export RUSTFLAGS="$RUSTFLAGS --remap-path-prefix=$PWD=." export LDFLAGS="$LDFLAGS -Wl,-rpath=/usr/lib/firefox,--enable-new-dtags" export RUSTFLAGS="$RUSTFLAGS -Cdebuginfo=0" export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system export MOZ_DEBUG_FLAGS=-g0 export MOZBUILD_STATE_PATH="$PWD/state" export MOZ_NOSPAM=1 cat > .mozconfig << EOF ac_add_options --prefix=/usr ac_add_options --libdir=/usr/lib ac_add_options --enable-default-toolkit=cairo-gtk3-wayland-only ac_add_options --enable-strip ac_add_options --enable-release ac_add_options --enable-rust-simd ac_add_options --enable-audio-backends=alsa ac_add_options --enable-install-strip ac_add_options --enable-official-branding ac_add_options --enable-application=browser ac_add_options --enable-optimize ac_add_options --with-system-libvpx ac_add_options --with-system-ffi ac_add_options --with-system-png ac_add_options --with-system-jpeg ac_add_options --with-system-zlib ac_add_options --with-system-pixman ac_add_options --without-system-nss ac_add_options --without-system-nspr ac_add_options --without-wasm-sandboxed-libraries ac_add_options --disable-eme ac_add_options --disable-dbus ac_add_options --disable-tests ac_add_options --disable-vtune ac_add_options --disable-updater ac_add_options --disable-jemalloc ac_add_options --disable-elf-hack ac_add_options --disable-callgrind ac_add_options --disable-profiling ac_add_options --disable-necko-wifi ac_add_options --disable-crashreporter ac_add_options --disable-accessibility ac_add_options --disable-debug ac_add_options --disable-debug-symbols ac_add_options --disable-parental-controls ac_add_options --disable-system-extension-dirs EOF ./mach build ./mach install # Remove a lot of uneeded "stuff". rm -rf \ "$1/usr/include" \ "$1/usr/lib/firefox-devel" \ "$1/usr/share/idl" \ "$1/usr/lib/firefox/browser/features/fxmonitor@mozilla.org.xpi" \ "$1/usr/lib/firefox/browser/features/screenshots@mozilla.org.xpi" \ "$1/usr/lib/firefox/browser/features/webcompat-reporter@mozilla.org.xpi" \ "$1/usr/lib/firefox/browser/features/webcompat@mozilla.org.xpi" \ "$1/usr/lib/firefox/browser/features/doh-rollout@mozilla.org.xpi"