Unverified Commit 7056c174 authored by Martin Weinelt's avatar Martin Weinelt Committed by GitHub
Browse files

buildMozillaMach: use llvmPackages_20 on aarch64-darwin (#456351)

parents 643e4bdc 40eea21c
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -58,9 +58,7 @@ in
  pkgsCross, # wasm32 rlbox
  python3,
  runCommand,
  rustc,
  rust-cbindgen,
  rustPlatform,
  unzip,
  which,
  wrapGAppsHook3,
@@ -201,9 +199,25 @@ assert elfhackSupport -> isElfhackPlatform stdenv;
let
  inherit (lib) enableFeature;

  rustPackages =
    pkgs:
    (pkgs.rust.override (
      # aarch64-darwin firefox crashes on loading favicons due to a llvm 21 bug:
      # https://github.com/NixOS/nixpkgs/issues/453372
      # https://bugzilla.mozilla.org/show_bug.cgi?id=1995582#c16
      lib.optionalAttrs (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) {
        llvmPackages = pkgs.llvmPackages_20;
      }
    )).packages.stable;

  toRustC = pkgs: (rustPackages pkgs).rustc;

  rustc = toRustC pkgs;
  inherit (rustPackages pkgs) rustPlatform;

  # Target the LLVM version that rustc is built with for LTO.
  llvmPackages0 = rustc.llvmPackages;
  llvmPackagesBuildBuild0 = pkgsBuildBuild.rustc.llvmPackages;
  llvmPackagesBuildBuild0 = (toRustC pkgsBuildBuild).llvmPackages;

  # Force the use of lld and other llvm tools for LTO
  llvmPackages = llvmPackages0.override {
@@ -218,7 +232,7 @@ let
  # LTO requires LLVM bintools including ld.lld and llvm-ar.
  buildStdenv = overrideCC llvmPackages.stdenv (
    llvmPackages.stdenv.cc.override {
      bintools = if ltoSupport then buildPackages.rustc.llvmPackages.bintools else stdenv.cc.bintools;
      bintools = if ltoSupport then (toRustC buildPackages).llvmPackages.bintools else stdenv.cc.bintools;
    }
  );