blob: eda14528ff5495d3c1902665c0908bda8fd86a67 (
plain)
1 # Description: The Mozilla Firefox browser with Alsa support
2 # URL: https://www.mozilla.com/firefox/
3 # Maintainer: Danny Rawlins, crux at romster dot me
4 # Depends on: alsa-lib autoconf-2.13 brotli cbindgen dbus-glib ffmpeg4 libevent libidl libnotify libvpx libwebp libxkbcommon lld nodejs nss unzip wasi-libc++ xorg-libxcomposite xorg-libxcursor xorg-libxinerama xorg-libxt zip
5 # Optional: sccache jack
6
7 name=firefox
8 version=98.0.1
9 release=1
10 source=(https://archive.mozilla.org/pub/firefox/releases/$version/source/$name-$version.source.tar.xz
11 firefox.desktop)
12
13 build() {
14 cd $name-$version
15
16 if [ "$(/usr/bin/python3 -c "import sys; print(sys.stdout.encoding)")" != 'utf-8' ]; then
17 printf "\e[031mError: set an UTF-8 locale to compile this!\033[0m\n"
18 exit 1
19 fi
20
21 if [ -e '/usr/bin/ccache' ]; then
22 export OS_CCACHE_COMPILERCHECK="$(/usr/bin/clang -dumpversion | sed -z 's/\n/ /g'; crux | cut -d' ' -f3)"
23 export CCACHE_COMPILERCHECK="string:$OS_CCACHE_COMPILERCHECK"
24 PATH=$(echo ${PATH} | awk -v RS=: -v ORS=: '/ccache/ {next} {print}' | sed 's/:*$//')
25 fi
26
27 prt-get isinst sccache && export RUSTC_WRAPPER='/usr/bin/sccache'
28 mkdir "$PKGMK_SOURCE_DIR/rust" || true
29 export CARGO_HOME="$PKGMK_SOURCE_DIR/rust"
30
31 cat <<- EOF > .mozconfig
32 mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-shared
33 unset MOZ_TELEMETRY_REPORTING
34 ac_add_options --prefix=/usr
35 ac_add_options --enable-application=browser
36 ac_add_options --with-system-jpeg
37 ac_add_options --with-system-zlib
38 ac_add_options --with-system-png
39 ac_add_options --with-system-nspr
40 ac_add_options --with-system-nss
41 ac_add_options --with-system-libevent
42 ac_add_options --with-system-libvpx
43 ac_add_options --with-system-webp
44 ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot
45 ac_add_options --enable-av1
46 ac_add_options --enable-system-ffi
47 ac_add_options --enable-system-pixman
48 ac_add_options --enable-optimize
49 ac_add_options --enable-release
50 ac_add_options --enable-rust-simd
51 ac_add_options --disable-debug-symbols
52 ac_add_options --enable-official-branding
53 ac_add_options --with-distribution-id=nu.crux
54 ac_add_options --enable-linker=lld
55 ac_add_options --enable-lto=thin
56 ac_add_options --disable-tests
57 ac_add_options --disable-debug
58 ac_add_options --disable-updater
59 ac_add_options --disable-crashreporter
60 ac_add_options --disable-necko-wifi
61 ac_add_options --disable-elf-hack
62 EOF
63
64 # audio
65 prt-get isinst alsa-lib && echo 'ac_add_options --enable-alsa' >> .mozconfig || echo 'ac_add_options --disable-alsa' >> .mozconfig
66 prt-get isinst jack && echo 'ac_add_options --enable-jack' >> .mozconfig || echo 'ac_add_options --disable-jack' >> .mozconfig
67 prt-get isinst pulseaudio && echo 'ac_add_options --enable-pulseaudio' >> .mozconfig || echo 'ac_add_options --disable-pulseaudio' >> .mozconfig
68
69 prt-get isinst wayland-protocols && \
70 echo 'ac_add_options --enable-default-toolkit=cairo-gtk3-wayland' >> .mozconfig || \
71 echo 'ac_add_options --enable-default-toolkit=cairo-gtk3' >> .mozconfig
72
73 [[ -e '/usr/bin/ccache' ]] && echo 'ac_add_options --enable-ccache' >> .mozconfig
74
75 export CC=clang CXX=clang++ AR=llvm-ar NM=llvm-nm RANLIB=llvm-ranlib
76 export MOZ_MAKE_FLAGS="-j ${JOBS-1}"
77 export MOZBUILD_STATE_PATH="$PKGMK_SOURCE_DIR/.mozbuild"
78
79 # Disable notification when build system has finished
80 export MOZ_NOSPAM=1
81
82 # Use system's Python environment
83 export MACH_USE_SYSTEM_PYTHON=1
84
85 # Show flags set at the beginning
86 echo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}"
87 echo "Current CFLAGS:\t\t${CFLAGS:-no value set}"
88 echo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}"
89 echo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}"
90 echo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}"
91
92 # python/mach/mach/mixin/process.py fails to detect SHELL
93 export SHELL='/usr/bin/bash'
94
95 ./mach build
96 #./mach build toolkit/library/rust
97 DESTDIR=$PKG ./mach install
98
99 install -d $PKG/usr/share/pixmaps
100 ln -s /usr/lib/firefox/browser/chrome/icons/default/default48.png $PKG/usr/share/pixmaps/firefox_default48.png
101 install -D -m 0644 $SRC/firefox.desktop $PKG/usr/share/applications/firefox.desktop
102 # Remove crap
103 rm -r $PKG/usr/lib/firefox/browser/features
104 rm $PKG/usr/lib/firefox/removed-files
105
106 install -d $PKG/etc/revdep.d
107 echo "/usr/lib/firefox" > $PKG/etc/revdep.d/firefox
108 }
|