aboutsummaryrefslogtreecommitdiff
path: root/pkgs/applications/networking/browsers/firefox
diff options
context:
space:
mode:
authorS. Nordin Abouzahra <abouzahra.9@wright.edu>2020-10-08 23:29:13 -0400
committerS. Nordin Abouzahra <abouzahra.9@wright.edu>2020-10-08 23:29:13 -0400
commitaecd9ab1e474d99fc32eb7298fe02ebd2e03f99d (patch)
treeab67ffda65b1785a390e5694148401c276427ca3 /pkgs/applications/networking/browsers/firefox
parent214c8335897bd42c0cd9289b42db2c3f685eb112 (diff)
firefox: disable LTO on Darwin
LTO in general is broken on Darwin (see #19312).
Diffstat (limited to 'pkgs/applications/networking/browsers/firefox')
-rw-r--r--pkgs/applications/networking/browsers/firefox/common.nix13
1 files changed, 10 insertions, 3 deletions
diff --git a/pkgs/applications/networking/browsers/firefox/common.nix b/pkgs/applications/networking/browsers/firefox/common.nix
index 67f8657739cf..85b43b387023 100644
--- a/pkgs/applications/networking/browsers/firefox/common.nix
+++ b/pkgs/applications/networking/browsers/firefox/common.nix
@@ -22,7 +22,7 @@
, ffmpegSupport ? true
, gtk3Support ? true, gtk2, gtk3, wrapGAppsHook
, waylandSupport ? true, libxkbcommon
-, ltoSupport ? true, overrideCC, buildPackages
+, ltoSupport ? stdenv.isLinux, overrideCC, buildPackages
, gssSupport ? true, kerberos
, pipewireSupport ? waylandSupport && webrtcSupport, pipewire
@@ -72,6 +72,7 @@
assert stdenv.cc.libc or null != null;
assert pipewireSupport -> !waylandSupport || !webrtcSupport -> throw "pipewireSupport requires both wayland and webrtc support.";
+assert ltoSupport -> stdenv.isDarwin -> throw "LTO is broken on Darwin (see PR#19312).";
let
flag = tf: x: [(if tf then "--enable-${x}" else "--disable-${x}")];
@@ -88,8 +89,14 @@ let
then "/Applications/${binaryNameCapitalized}.app/Contents/MacOS"
else "/bin";
- llvmPackages = buildPackages.llvmPackages_10;
+ # Darwin's stdenv provides the default llvmPackages version, match that since
+ # clang LTO on Darwin is broken so the stdenv is not being changed.
+ llvmPackages = if stdenv.isDarwin
+ then buildPackages.llvmPackages
+ else buildPackages.llvmPackages_10;
+ # When LTO for Darwin is fixed, the following will need updating as lld
+ # doesn't work on it. For now it is fine since ltoSupport implies no Darwin.
buildStdenv = if ltoSupport
then overrideCC stdenv llvmPackages.lldClang
else stdenv;
@@ -256,7 +263,7 @@ buildStdenv.mkDerivation ({
# LTO is done using clang and lld on Linux.
# Darwin needs to use the default linker as lld is not supported (yet?):
# https://bugzilla.mozilla.org/show_bug.cgi?id=1538724
- # elf-hack is broken when using clang:
+ # elf-hack is broken when using clang+lld:
# https://bugzilla.mozilla.org/show_bug.cgi?id=1482204
++ lib.optionals ltoSupport [
"--enable-lto"