diff options
author | S. Nordin Abouzahra <abouzahra.9@wright.edu> | 2020-10-08 23:29:13 -0400 |
---|---|---|
committer | S. Nordin Abouzahra <abouzahra.9@wright.edu> | 2020-10-08 23:29:13 -0400 |
commit | aecd9ab1e474d99fc32eb7298fe02ebd2e03f99d (patch) | |
tree | ab67ffda65b1785a390e5694148401c276427ca3 /pkgs/applications/networking/browsers/firefox | |
parent | 214c8335897bd42c0cd9289b42db2c3f685eb112 (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.nix | 13 |
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" |