3 |
3 |
|
4 |
4 |
EAPI=8
|
5 |
5 |
|
6 |
|
FIREFOX_PATCHSET="firefox-102esr-patches-13.tar.xz"
|
|
6 |
FIREFOX_PATCHSET="firefox-115esr-patches-06.tar.xz"
|
7 |
7 |
|
8 |
8 |
LLVM_MAX_SLOT=16
|
9 |
9 |
|
... | ... | |
12 |
12 |
|
13 |
13 |
WANT_AUTOCONF="2.1"
|
14 |
14 |
|
15 |
|
VIRTUALX_REQUIRED="pgo"
|
|
15 |
VIRTUALX_REQUIRED="manual"
|
16 |
16 |
|
17 |
17 |
MOZ_ESR=yes
|
18 |
18 |
|
... | ... | |
48 |
48 |
fi
|
49 |
49 |
|
50 |
50 |
PATCH_URIS=(
|
51 |
|
https://dev.gentoo.org/~{juippis,whissi,slashbeast}/mozilla/patchsets/${FIREFOX_PATCHSET}
|
|
51 |
https://dev.gentoo.org/~juippis/mozilla/patchsets/${FIREFOX_PATCHSET}
|
52 |
52 |
)
|
53 |
53 |
|
54 |
54 |
SRC_URI="${MOZ_SRC_BASE_URI}/source/${MOZ_P}.source.tar.xz -> ${MOZ_P_DISTFILES}.source.tar.xz
|
... | ... | |
57 |
57 |
DESCRIPTION="Firefox Web Browser"
|
58 |
58 |
HOMEPAGE="https://www.mozilla.com/firefox"
|
59 |
59 |
|
60 |
|
KEYWORDS="amd64 arm64 ~ppc64 x86"
|
|
60 |
KEYWORDS="amd64 arm64 ~ppc64 ~riscv ~x86"
|
61 |
61 |
|
62 |
62 |
SLOT="esr"
|
63 |
63 |
LICENSE="MPL-2.0 GPL-2 LGPL-2.1"
|
... | ... | |
65 |
65 |
IUSE="+clang cpu_flags_arm_neon dbus debug eme-free hardened hwaccel"
|
66 |
66 |
IUSE+=" jack libproxy lto openh264 pgo pulseaudio sndio selinux"
|
67 |
67 |
IUSE+=" +system-av1 +system-harfbuzz +system-icu +system-jpeg +system-libevent +system-libvpx system-png system-python-libs +system-webp"
|
68 |
|
IUSE+=" wayland wifi"
|
|
68 |
IUSE+=" wayland wifi +X"
|
69 |
69 |
|
70 |
70 |
# Firefox-only IUSE
|
71 |
71 |
IUSE+=" geckodriver +gmp-autoupdate screencast"
|
72 |
72 |
|
73 |
|
REQUIRED_USE="debug? ( !system-av1 )
|
|
73 |
REQUIRED_USE="|| ( X wayland )
|
|
74 |
debug? ( !system-av1 )
|
74 |
75 |
pgo? ( lto )
|
75 |
|
wayland? ( dbus )
|
76 |
76 |
wifi? ( dbus )"
|
77 |
77 |
|
78 |
|
# Firefox-only REQUIRED_USE flags
|
79 |
|
REQUIRED_USE+=" screencast? ( wayland )"
|
80 |
|
|
81 |
78 |
FF_ONLY_DEPEND="!www-client/firefox:0
|
82 |
79 |
!www-client/firefox:rapid
|
83 |
80 |
screencast? ( media-video/pipewire:= )
|
84 |
81 |
selinux? ( sec-policy/selinux-mozilla )"
|
85 |
82 |
BDEPEND="${PYTHON_DEPS}
|
86 |
83 |
|| (
|
87 |
|
(
|
|
84 |
(
|
88 |
85 |
sys-devel/clang:16
|
89 |
86 |
sys-devel/llvm:16
|
90 |
87 |
clang? (
|
91 |
|
|| (
|
92 |
|
sys-devel/lld:16
|
93 |
|
sys-devel/mold
|
94 |
|
)
|
|
88 |
sys-devel/lld:16
|
95 |
89 |
virtual/rust:0/llvm-16
|
96 |
90 |
pgo? ( =sys-libs/compiler-rt-sanitizers-16*[profile] )
|
97 |
91 |
)
|
... | ... | |
105 |
99 |
pgo? ( =sys-libs/compiler-rt-sanitizers-15*[profile] )
|
106 |
100 |
)
|
107 |
101 |
)
|
108 |
|
(
|
109 |
|
sys-devel/clang:14
|
110 |
|
sys-devel/llvm:14
|
111 |
|
clang? (
|
112 |
|
sys-devel/lld:14
|
113 |
|
virtual/rust:0/llvm-14
|
114 |
|
pgo? ( =sys-libs/compiler-rt-sanitizers-14*[profile] )
|
115 |
|
)
|
116 |
|
)
|
117 |
102 |
)
|
118 |
|
!clang? ( virtual/rust )
|
|
103 |
app-alternatives/awk
|
119 |
104 |
app-arch/unzip
|
120 |
105 |
app-arch/zip
|
121 |
106 |
>=dev-util/cbindgen-0.24.3
|
122 |
107 |
net-libs/nodejs
|
123 |
108 |
virtual/pkgconfig
|
|
109 |
!clang? ( >=virtual/rust-1.65 )
|
124 |
110 |
amd64? ( >=dev-lang/nasm-2.14 )
|
125 |
|
x86? ( >=dev-lang/nasm-2.14 )"
|
126 |
|
|
|
111 |
x86? ( >=dev-lang/nasm-2.14 )
|
|
112 |
pgo? (
|
|
113 |
X? (
|
|
114 |
sys-devel/gettext
|
|
115 |
x11-base/xorg-server[xvfb]
|
|
116 |
x11-apps/xhost
|
|
117 |
)
|
|
118 |
!X? (
|
|
119 |
>=gui-libs/wlroots-0.15.1-r1[tinywl]
|
|
120 |
x11-misc/xkeyboard-config
|
|
121 |
)
|
|
122 |
)"
|
127 |
123 |
COMMON_DEPEND="${FF_ONLY_DEPEND}
|
128 |
124 |
>=app-accessibility/at-spi2-core-2.46.0:2
|
129 |
125 |
dev-libs/expat
|
130 |
126 |
dev-libs/glib:2
|
131 |
127 |
dev-libs/libffi:=
|
132 |
|
>=dev-libs/nss-3.79.2
|
133 |
|
>=dev-libs/nspr-4.34
|
|
128 |
>=dev-libs/nss-3.90
|
|
129 |
>=dev-libs/nspr-4.35
|
134 |
130 |
media-libs/alsa-lib
|
135 |
131 |
media-libs/fontconfig
|
136 |
132 |
media-libs/freetype
|
... | ... | |
138 |
134 |
media-video/ffmpeg
|
139 |
135 |
sys-libs/zlib
|
140 |
136 |
virtual/freedesktop-icon-theme
|
141 |
|
virtual/opengl
|
142 |
|
x11-libs/cairo[X]
|
|
137 |
x11-libs/cairo
|
143 |
138 |
x11-libs/gdk-pixbuf
|
144 |
|
x11-libs/gtk+:3[X]
|
145 |
|
x11-libs/libX11
|
146 |
|
x11-libs/libXcomposite
|
147 |
|
x11-libs/libXdamage
|
148 |
|
x11-libs/libXext
|
149 |
|
x11-libs/libXfixes
|
150 |
|
x11-libs/libXrandr
|
151 |
|
x11-libs/libXtst
|
152 |
|
x11-libs/libxcb:=
|
153 |
|
x11-libs/libxkbcommon[X]
|
154 |
139 |
x11-libs/pango
|
155 |
140 |
x11-libs/pixman
|
156 |
141 |
dbus? (
|
... | ... | |
158 |
143 |
sys-apps/dbus
|
159 |
144 |
)
|
160 |
145 |
jack? ( virtual/jack )
|
161 |
|
libproxy? ( net-libs/libproxy )
|
162 |
146 |
pulseaudio? (
|
163 |
147 |
|| (
|
164 |
|
media-sound/pulseaudio
|
165 |
|
>=media-sound/apulse-0.1.12-r4
|
|
148 |
media-libs/libpulse
|
|
149 |
>=media-sound/apulse-0.1.12-r4[sdk]
|
166 |
150 |
)
|
167 |
151 |
)
|
|
152 |
libproxy? ( net-libs/libproxy )
|
|
153 |
selinux? ( sec-policy/selinux-mozilla )
|
168 |
154 |
sndio? ( >=media-sound/sndio-1.8.0-r1 )
|
|
155 |
screencast? ( media-video/pipewire:= )
|
169 |
156 |
system-av1? (
|
170 |
157 |
>=media-libs/dav1d-1.0.0:=
|
171 |
158 |
>=media-libs/libaom-1.0.0:=
|
... | ... | |
174 |
161 |
>=media-gfx/graphite2-1.3.13
|
175 |
162 |
>=media-libs/harfbuzz-2.8.1:0=
|
176 |
163 |
)
|
177 |
|
system-icu? ( >=dev-libs/icu-71.1:= )
|
|
164 |
system-icu? ( >=dev-libs/icu-73.1:= )
|
178 |
165 |
system-jpeg? ( >=media-libs/libjpeg-turbo-1.2.1 )
|
179 |
166 |
system-libevent? ( >=dev-libs/libevent-2.1.12:0=[threads(+)] )
|
180 |
167 |
system-libvpx? ( >=media-libs/libvpx-1.8.2:0=[postproc] )
|
181 |
168 |
system-png? ( >=media-libs/libpng-1.6.35:0=[apng] )
|
182 |
169 |
system-webp? ( >=media-libs/libwebp-1.1.0:0= )
|
183 |
170 |
wayland? (
|
|
171 |
>=media-libs/libepoxy-1.5.10-r1
|
184 |
172 |
x11-libs/gtk+:3[wayland]
|
185 |
|
x11-libs/libdrm
|
186 |
173 |
x11-libs/libxkbcommon[wayland]
|
187 |
174 |
)
|
188 |
175 |
wifi? (
|
... | ... | |
191 |
178 |
net-misc/networkmanager
|
192 |
179 |
sys-apps/dbus
|
193 |
180 |
)
|
|
181 |
)
|
|
182 |
X? (
|
|
183 |
virtual/opengl
|
|
184 |
x11-libs/cairo[X]
|
|
185 |
x11-libs/gtk+:3[X]
|
|
186 |
x11-libs/libX11
|
|
187 |
x11-libs/libXcomposite
|
|
188 |
x11-libs/libXdamage
|
|
189 |
x11-libs/libXext
|
|
190 |
x11-libs/libXfixes
|
|
191 |
x11-libs/libxkbcommon[X]
|
|
192 |
x11-libs/libXrandr
|
|
193 |
x11-libs/libXtst
|
|
194 |
x11-libs/libxcb:=
|
194 |
195 |
)"
|
195 |
|
|
196 |
196 |
RDEPEND="${COMMON_DEPEND}
|
|
197 |
hwaccel? (
|
|
198 |
media-video/libva-utils
|
|
199 |
sys-apps/pciutils
|
|
200 |
)
|
197 |
201 |
jack? ( virtual/jack )
|
198 |
202 |
openh264? ( media-libs/openh264:*[plugin] )"
|
199 |
|
|
200 |
203 |
DEPEND="${COMMON_DEPEND}
|
201 |
|
x11-base/xorg-proto
|
202 |
|
x11-libs/libICE
|
203 |
|
x11-libs/libSM"
|
|
204 |
X? (
|
|
205 |
x11-base/xorg-proto
|
|
206 |
x11-libs/libICE
|
|
207 |
x11-libs/libSM
|
|
208 |
)"
|
204 |
209 |
|
205 |
210 |
S="${WORKDIR}/${PN}-${PV%_*}"
|
206 |
211 |
|
... | ... | |
216 |
221 |
return 1
|
217 |
222 |
fi
|
218 |
223 |
|
219 |
|
if use clang ; then
|
|
224 |
if use clang && ! tc-ld-is-mold ; then
|
220 |
225 |
if ! has_version -b "sys-devel/lld:${LLVM_SLOT}" ; then
|
221 |
226 |
einfo "sys-devel/lld:${LLVM_SLOT} is missing! Cannot use LLVM slot ${LLVM_SLOT} ..." >&2
|
222 |
227 |
return 1
|
... | ... | |
259 |
264 |
MOZ_LANGS+=( es-MX )
|
260 |
265 |
MOZ_LANGS+=( fa )
|
261 |
266 |
MOZ_LANGS+=( ff )
|
|
267 |
MOZ_LANGS+=( fur )
|
262 |
268 |
MOZ_LANGS+=( gn )
|
263 |
269 |
MOZ_LANGS+=( gu-IN )
|
264 |
270 |
MOZ_LANGS+=( hi-IN )
|
... | ... | |
272 |
278 |
MOZ_LANGS+=( my )
|
273 |
279 |
MOZ_LANGS+=( ne-NP )
|
274 |
280 |
MOZ_LANGS+=( oc )
|
|
281 |
MOZ_LANGS+=( sc )
|
275 |
282 |
MOZ_LANGS+=( sco )
|
276 |
283 |
MOZ_LANGS+=( si )
|
277 |
284 |
MOZ_LANGS+=( son )
|
... | ... | |
416 |
423 |
mozconfig_add_options_ac "$(use ${1} && echo +${1} || echo -${1})" "${flag}"
|
417 |
424 |
}
|
418 |
425 |
|
|
426 |
# This is a straight copypaste from toolchain-funcs.eclass's 'tc-ld-is-lld', and is temporarily
|
|
427 |
# placed here until toolchain-funcs.eclass gets an official support for mold linker.
|
|
428 |
# Please see:
|
|
429 |
# https://github.com/gentoo/gentoo/pull/28366 ||
|
|
430 |
# https://github.com/gentoo/gentoo/pull/28355
|
|
431 |
tc-ld-is-mold() {
|
|
432 |
local out
|
|
433 |
|
|
434 |
# Ensure ld output is in English.
|
|
435 |
local -x LC_ALL=C
|
|
436 |
|
|
437 |
# First check the linker directly.
|
|
438 |
out=$($(tc-getLD "$@") --version 2>&1)
|
|
439 |
if [[ ${out} == *"mold"* ]] ; then
|
|
440 |
return 0
|
|
441 |
fi
|
|
442 |
|
|
443 |
# Then see if they're selecting mold via compiler flags.
|
|
444 |
# Note: We're assuming they're using LDFLAGS to hold the
|
|
445 |
# options and not CFLAGS/CXXFLAGS.
|
|
446 |
local base="${T}/test-tc-linker"
|
|
447 |
cat <<-EOF > "${base}.c"
|
|
448 |
int main() { return 0; }
|
|
449 |
EOF
|
|
450 |
out=$($(tc-getCC "$@") ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} -Wl,--version "${base}.c" -o "${base}" 2>&1)
|
|
451 |
rm -f "${base}"*
|
|
452 |
if [[ ${out} == *"mold"* ]] ; then
|
|
453 |
return 0
|
|
454 |
fi
|
|
455 |
|
|
456 |
# No mold here!
|
|
457 |
return 1
|
|
458 |
}
|
|
459 |
|
|
460 |
virtwl() {
|
|
461 |
debug-print-function ${FUNCNAME} "$@"
|
|
462 |
|
|
463 |
[[ $# -lt 1 ]] && die "${FUNCNAME} needs at least one argument"
|
|
464 |
[[ -n $XDG_RUNTIME_DIR ]] || die "${FUNCNAME} needs XDG_RUNTIME_DIR to be set; try xdg_environment_reset"
|
|
465 |
tinywl -h >/dev/null || die 'tinywl -h failed'
|
|
466 |
|
|
467 |
# TODO: don't run addpredict in utility function. WLR_RENDERER=pixman doesn't work
|
|
468 |
addpredict /dev/dri
|
|
469 |
local VIRTWL VIRTWL_PID
|
|
470 |
coproc VIRTWL { WLR_BACKENDS=headless exec tinywl -s 'echo $WAYLAND_DISPLAY; read _; kill $PPID'; }
|
|
471 |
local -x WAYLAND_DISPLAY
|
|
472 |
read WAYLAND_DISPLAY <&${VIRTWL[0]}
|
|
473 |
|
|
474 |
debug-print "${FUNCNAME}: $@"
|
|
475 |
"$@"
|
|
476 |
local r=$?
|
|
477 |
|
|
478 |
[[ -n $VIRTWL_PID ]] || die "tinywl exited unexpectedly"
|
|
479 |
exec {VIRTWL[0]}<&- {VIRTWL[1]}>&-
|
|
480 |
return $r
|
|
481 |
}
|
|
482 |
|
419 |
483 |
pkg_pretend() {
|
420 |
484 |
if [[ ${MERGE_TYPE} != binary ]] ; then
|
421 |
485 |
if use pgo ; then
|
... | ... | |
454 |
518 |
|
455 |
519 |
llvm_pkg_setup
|
456 |
520 |
|
457 |
|
if use clang && use lto ; then
|
|
521 |
if use clang && use lto && tc-ld-is-lld ; then
|
458 |
522 |
local version_lld=$(ld.lld --version 2>/dev/null | awk '{ print $2 }')
|
459 |
523 |
[[ -n ${version_lld} ]] && version_lld=$(ver_cut 1 "${version_lld}")
|
460 |
524 |
[[ -z ${version_lld} ]] && die "Failed to read ld.lld version!"
|
... | ... | |
492 |
556 |
addpredict /proc/self/oom_score_adj
|
493 |
557 |
|
494 |
558 |
if use pgo ; then
|
|
559 |
# Update 105.0: "/proc/self/oom_score_adj" isn't enough anymore with pgo, but not sure
|
|
560 |
# whether that's due to better OOM handling by Firefox (bmo#1771712), or portage
|
|
561 |
# (PORTAGE_SCHEDULING_POLICY) update...
|
|
562 |
addpredict /proc
|
|
563 |
|
|
564 |
# May need a wider addpredict when using wayland+pgo.
|
|
565 |
addpredict /dev/dri
|
|
566 |
|
495 |
567 |
# Allow access to GPU during PGO run
|
496 |
568 |
local ati_cards mesa_cards nvidia_cards render_cards
|
497 |
569 |
shopt -s nullglob
|
... | ... | |
574 |
646 |
rm -v "${WORKDIR}"/firefox-patches/*-LTO-Only-enable-LTO-*.patch || die
|
575 |
647 |
fi
|
576 |
648 |
|
|
649 |
if ! use ppc64; then
|
|
650 |
rm -v "${WORKDIR}"/firefox-patches/*ppc64*.patch || die
|
|
651 |
fi
|
|
652 |
|
577 |
653 |
eapply "${WORKDIR}/firefox-patches"
|
578 |
654 |
|
579 |
655 |
# Allow user to apply any additional patches without modifing ebuild
|
... | ... | |
606 |
682 |
|| die "sed failed to disable ccache stats call"
|
607 |
683 |
|
608 |
684 |
einfo "Removing pre-built binaries ..."
|
609 |
|
find "${S}"/third_party -type f \( -name '*.so' -o -name '*.o' \) -print -delete || die
|
610 |
685 |
|
611 |
|
# Clearing crate checksums where we have applied patches
|
612 |
|
moz_clear_vendor_checksums bindgen
|
|
686 |
find "${S}"/third_party -type f \( -name '*.so' -o -name '*.o' \) -print -delete || die
|
613 |
687 |
|
614 |
688 |
# Create build dir
|
615 |
689 |
BUILD_DIR="${WORKDIR}/${PN}_build"
|
... | ... | |
635 |
709 |
if use clang; then
|
636 |
710 |
# Force clang
|
637 |
711 |
einfo "Enforcing the use of clang due to USE=clang ..."
|
|
712 |
|
|
713 |
local version_clang=$(clang --version 2>/dev/null | grep -F -- 'clang version' | awk '{ print $3 }')
|
|
714 |
[[ -n ${version_clang} ]] && version_clang=$(ver_cut 1 "${version_clang}")
|
|
715 |
[[ -z ${version_clang} ]] && die "Failed to read clang version!"
|
|
716 |
|
638 |
717 |
if tc-is-gcc; then
|
639 |
718 |
have_switched_compiler=yes
|
640 |
719 |
fi
|
|
720 |
|
641 |
721 |
AR=llvm-ar
|
642 |
|
CC=${CHOST}-clang
|
643 |
|
CXX=${CHOST}-clang++
|
|
722 |
CC=${CHOST}-clang-${version_clang}
|
|
723 |
CXX=${CHOST}-clang++-${version_clang}
|
644 |
724 |
NM=llvm-nm
|
645 |
725 |
RANLIB=llvm-ranlib
|
|
726 |
|
646 |
727 |
elif ! use clang && ! tc-is-gcc ; then
|
647 |
728 |
# Force gcc
|
648 |
729 |
have_switched_compiler=yes
|
... | ... | |
660 |
741 |
strip-unsupported-flags
|
661 |
742 |
fi
|
662 |
743 |
|
663 |
|
# Ensure we use correct toolchain
|
|
744 |
# Ensure we use correct toolchain,
|
|
745 |
# AS is used in a non-standard way by upstream, #bmo1654031
|
664 |
746 |
export HOST_CC="$(tc-getBUILD_CC)"
|
665 |
747 |
export HOST_CXX="$(tc-getBUILD_CXX)"
|
666 |
748 |
export AS="$(tc-getCC) -c"
|
... | ... | |
685 |
767 |
|
686 |
768 |
# Initialize MOZCONFIG
|
687 |
769 |
mozconfig_add_options_ac '' --enable-application=browser
|
|
770 |
mozconfig_add_options_ac '' --enable-project=browser
|
688 |
771 |
|
689 |
772 |
# Set Gentoo defaults
|
690 |
|
export MOZILLA_OFFICIAL=1
|
691 |
|
|
692 |
773 |
mozconfig_add_options_ac 'Gentoo default' \
|
693 |
774 |
--allow-addon-sideload \
|
694 |
775 |
--disable-cargo-incremental \
|
... | ... | |
697 |
778 |
--disable-install-strip \
|
698 |
779 |
--disable-parental-controls \
|
699 |
780 |
--disable-strip \
|
|
781 |
--disable-tests \
|
700 |
782 |
--disable-updater \
|
|
783 |
--disable-wmf \
|
|
784 |
--enable-legacy-profile-creation \
|
701 |
785 |
--enable-negotiateauth \
|
702 |
786 |
--enable-new-pass-manager \
|
703 |
787 |
--enable-official-branding \
|
704 |
788 |
--enable-release \
|
705 |
789 |
--enable-system-ffi \
|
706 |
790 |
--enable-system-pixman \
|
|
791 |
--enable-system-policies \
|
707 |
792 |
--host="${CBUILD:-${CHOST}}" \
|
708 |
793 |
--libdir="${EPREFIX}/usr/$(get_libdir)" \
|
709 |
794 |
--prefix="${EPREFIX}/usr" \
|
... | ... | |
732 |
817 |
# For future keywording: This is currently (97.0) only supported on:
|
733 |
818 |
# amd64, arm, arm64 & x86.
|
734 |
819 |
# Might want to flip the logic around if Firefox is to support more arches.
|
735 |
|
if use ppc64; then
|
|
820 |
# bug 833001, bug 903411#c8
|
|
821 |
if use ppc64 || use riscv; then
|
736 |
822 |
mozconfig_add_options_ac '' --disable-sandbox
|
737 |
823 |
else
|
738 |
824 |
mozconfig_add_options_ac '' --enable-sandbox
|
739 |
825 |
fi
|
740 |
826 |
|
|
827 |
# Enable JIT on riscv64 explicitly
|
|
828 |
# Can be removed once upstream enable it by default in the future.
|
|
829 |
use riscv && mozconfig_add_options_ac 'Enable JIT for RISC-V 64' --enable-jit
|
|
830 |
|
741 |
831 |
if [[ -s "${S}/api-google.key" ]] ; then
|
742 |
832 |
local key_origin="Gentoo default"
|
743 |
833 |
if [[ $(cat "${S}/api-google.key" | md5sum | awk '{ print $1 }') != 709560c02f94b41f9ad2c49207be6c54 ]] ; then
|
... | ... | |
806 |
896 |
|
807 |
897 |
mozconfig_use_enable wifi necko-wifi
|
808 |
898 |
|
809 |
|
if use wayland ; then
|
|
899 |
if use X && use wayland ; then
|
810 |
900 |
mozconfig_add_options_ac '+x11+wayland' --enable-default-toolkit=cairo-gtk3-x11-wayland
|
|
901 |
elif ! use X && use wayland ; then
|
|
902 |
mozconfig_add_options_ac '+wayland' --enable-default-toolkit=cairo-gtk3-wayland-only
|
811 |
903 |
else
|
812 |
904 |
mozconfig_add_options_ac '+x11' --enable-default-toolkit=cairo-gtk3
|
813 |
905 |
fi
|
814 |
906 |
|
815 |
907 |
if use lto ; then
|
816 |
908 |
if use clang ; then
|
817 |
|
# Upstream only supports lld when using clang
|
818 |
|
mozconfig_add_options_ac "forcing ld=lld due to USE=clang and USE=lto" --enable-linker=lld
|
|
909 |
# Upstream only supports lld or mold when using clang.
|
|
910 |
if tc-ld-is-mold ; then
|
|
911 |
mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold
|
|
912 |
else
|
|
913 |
mozconfig_add_options_ac "forcing ld=lld due to USE=clang and USE=lto" --enable-linker=lld
|
|
914 |
fi
|
819 |
915 |
|
820 |
916 |
mozconfig_add_options_ac '+lto' --enable-lto=cross
|
821 |
917 |
|
822 |
918 |
else
|
823 |
|
# ThinLTO is currently broken, see bmo#1644409
|
|
919 |
# ThinLTO is currently broken, see bmo#1644409.
|
|
920 |
# mold does not support gcc+lto combination.
|
824 |
921 |
mozconfig_add_options_ac '+lto' --enable-lto=full
|
825 |
922 |
mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd
|
826 |
923 |
fi
|
... | ... | |
836 |
933 |
else
|
837 |
934 |
# Avoid auto-magic on linker
|
838 |
935 |
if use clang ; then
|
839 |
|
# This is upstream's default
|
840 |
|
mozconfig_add_options_ac "forcing ld=lld due to USE=clang" --enable-linker=lld
|
|
936 |
# lld is upstream's default
|
|
937 |
if tc-ld-is-mold ; then
|
|
938 |
mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold
|
|
939 |
else
|
|
940 |
mozconfig_add_options_ac "forcing ld=lld due to USE=clang" --enable-linker=lld
|
|
941 |
fi
|
|
942 |
|
841 |
943 |
else
|
842 |
|
mozconfig_add_options_ac "linker is set to bfd" --enable-linker=bfd
|
|
944 |
if tc-ld-is-mold ; then
|
|
945 |
mozconfig_add_options_ac "using ld=mold due to system selection" --enable-linker=mold
|
|
946 |
else
|
|
947 |
mozconfig_add_options_ac "linker is set to bfd due to USE=-clang" --enable-linker=bfd
|
|
948 |
fi
|
843 |
949 |
fi
|
844 |
950 |
fi
|
845 |
951 |
|
... | ... | |
849 |
955 |
mozconfig_use_enable debug
|
850 |
956 |
if use debug ; then
|
851 |
957 |
mozconfig_add_options_ac '+debug' --disable-optimize
|
|
958 |
mozconfig_add_options_ac '+debug' --enable-real-time-tracing
|
852 |
959 |
else
|
|
960 |
mozconfig_add_options_ac 'Gentoo defaults' --disable-real-time-tracing
|
|
961 |
|
853 |
962 |
if is-flag '-g*' ; then
|
854 |
963 |
if use clang ; then
|
855 |
964 |
mozconfig_add_options_ac 'from CFLAGS' --enable-debug-symbols=$(get-flag '-g*')
|
... | ... | |
946 |
1055 |
;;
|
947 |
1056 |
esac
|
948 |
1057 |
|
949 |
|
if ! use elibc_glibc ; then
|
|
1058 |
if ! use elibc_glibc; then
|
950 |
1059 |
mozconfig_add_options_ac '!elibc_glibc' --disable-jemalloc
|
951 |
1060 |
fi
|
952 |
1061 |
|
... | ... | |
1014 |
1123 |
src_compile() {
|
1015 |
1124 |
local virtx_cmd=
|
1016 |
1125 |
|
1017 |
|
if use pgo ; then
|
1018 |
|
virtx_cmd=virtx
|
|
1126 |
if tc-ld-is-mold && use lto; then
|
|
1127 |
# increase ulimit with mold+lto, bugs #892641, #907485
|
|
1128 |
if ! ulimit -n 16384 1>/dev/null 2>&1 ; then
|
|
1129 |
ewarn "Unable to modify ulimits - building with mold+lto might fail due to low ulimit -n resources."
|
|
1130 |
ewarn "Please see bugs #892641 & #907485."
|
|
1131 |
else
|
|
1132 |
ulimit -n 16384
|
|
1133 |
fi
|
|
1134 |
fi
|
1019 |
1135 |
|
|
1136 |
if use pgo; then
|
1020 |
1137 |
# Reset and cleanup environment variables used by GNOME/XDG
|
1021 |
1138 |
gnome2_environment_reset
|
1022 |
1139 |
|
1023 |
1140 |
addpredict /root
|
|
1141 |
|
|
1142 |
if ! use X; then
|
|
1143 |
virtx_cmd=virtwl
|
|
1144 |
else
|
|
1145 |
virtx_cmd=virtx
|
|
1146 |
fi
|
1024 |
1147 |
fi
|
1025 |
1148 |
|
1026 |
|
local -x GDK_BACKEND=x11
|
|
1149 |
if ! use X; then
|
|
1150 |
local -x GDK_BACKEND=wayland
|
|
1151 |
else
|
|
1152 |
local -x GDK_BACKEND=x11
|
|
1153 |
fi
|
1027 |
1154 |
|
1028 |
|
${virtx_cmd} ./mach build --verbose \
|
1029 |
|
|| die
|
|
1155 |
${virtx_cmd} ./mach build --verbose || die
|
1030 |
1156 |
}
|
1031 |
1157 |
|
1032 |
1158 |
src_install() {
|
... | ... | |
1214 |
1340 |
|
1215 |
1341 |
local show_doh_information
|
1216 |
1342 |
local show_normandy_information
|
1217 |
|
local show_shortcut_information
|
1218 |
1343 |
|
1219 |
1344 |
if [[ -z "${REPLACING_VERSIONS}" ]] ; then
|
1220 |
1345 |
# New install; Tell user that DoH is disabled by default
|
1221 |
1346 |
show_doh_information=yes
|
1222 |
1347 |
show_normandy_information=yes
|
1223 |
|
show_shortcut_information=no
|
1224 |
|
else
|
1225 |
|
local replacing_version
|
1226 |
|
for replacing_version in ${REPLACING_VERSIONS} ; do
|
1227 |
|
if ver_test "${replacing_version}" -lt 91.0 ; then
|
1228 |
|
# Tell user that we no longer install a shortcut
|
1229 |
|
# per supported display protocol
|
1230 |
|
show_shortcut_information=yes
|
1231 |
|
fi
|
1232 |
|
done
|
1233 |
1348 |
fi
|
1234 |
1349 |
|
1235 |
1350 |
if [[ -n "${show_doh_information}" ]] ; then
|
... | ... | |
1259 |
1374 |
elog "in about:config."
|
1260 |
1375 |
fi
|
1261 |
1376 |
|
1262 |
|
if [[ -n "${show_shortcut_information}" ]] ; then
|
1263 |
|
elog
|
1264 |
|
elog "Since ${PN}-91.0 we no longer install multiple shortcuts for"
|
1265 |
|
elog "each supported display protocol. Instead we will only install"
|
1266 |
|
elog "one generic Mozilla ${PN^} shortcut."
|
1267 |
|
elog "If you still want to be able to select between running Mozilla ${PN^}"
|
1268 |
|
elog "on X11 or Wayland, you have to re-create these shortcuts on your own."
|
1269 |
|
fi
|
1270 |
|
|
1271 |
1377 |
# bug 835078
|
1272 |
1378 |
if use hwaccel && has_version "x11-drivers/xf86-video-nouveau"; then
|
1273 |
1379 |
ewarn "You have nouveau drivers installed in your system and 'hwaccel' "
|
... | ... | |
1287 |
1393 |
optfeature_header "Optional programs for extra features:"
|
1288 |
1394 |
optfeature "desktop notifications" x11-libs/libnotify
|
1289 |
1395 |
optfeature "fallback mouse cursor theme e.g. on WMs" gnome-base/gsettings-desktop-schemas
|
|
1396 |
|
|
1397 |
if use hwaccel && has_version "x11-drivers/nvidia-drivers"; then
|
|
1398 |
optfeature "hardware acceleration with NVIDIA cards" media-libs/nvidia-vaapi-driver
|
|
1399 |
fi
|
|
1400 |
|
|
1401 |
if ! has_version "sys-libs/glibc"; then
|
|
1402 |
elog
|
|
1403 |
elog "glibc not found! You won't be able to play DRM content."
|
|
1404 |
elog "See Gentoo bug #910309 or upstream bug #1843683."
|
|
1405 |
elog
|
|
1406 |
fi
|
1290 |
1407 |
}
|