Merge pull request #147986 from NickCao/rustc-llvmpackages
firefox: fix cross compilation
This commit is contained in:
commit
1f75e49103
@ -65,6 +65,7 @@
|
||||
, xorg
|
||||
, zip
|
||||
, zlib
|
||||
, pkgsBuildBuild
|
||||
|
||||
# optionals
|
||||
|
||||
@ -139,16 +140,21 @@ let
|
||||
|
||||
# Target the LLVM version that rustc is built with for LTO.
|
||||
llvmPackages0 = rustc.llvmPackages;
|
||||
llvmPackagesBuildBuild0 = pkgsBuildBuild.rustc.llvmPackages;
|
||||
|
||||
# Force the use of lld and other llvm tools for LTO
|
||||
llvmPackages = llvmPackages0.override {
|
||||
bootBintoolsNoLibc = null;
|
||||
bootBintools = null;
|
||||
};
|
||||
llvmPackagesBuildBuild = llvmPackagesBuildBuild0.override {
|
||||
bootBintoolsNoLibc = null;
|
||||
bootBintools = null;
|
||||
};
|
||||
|
||||
# LTO requires LLVM bintools including ld.lld and llvm-ar.
|
||||
buildStdenv = overrideCC llvmPackages.stdenv (llvmPackages.stdenv.cc.override {
|
||||
inherit (llvmPackages) bintools;
|
||||
bintools = if ltoSupport then buildPackages.rustc.llvmPackages.bintools else stdenv.cc.bintools;
|
||||
});
|
||||
|
||||
# Compile the wasm32 sysroot to build the RLBox Sandbox
|
||||
@ -193,10 +199,15 @@ buildStdenv.mkDerivation ({
|
||||
# two patches.
|
||||
patchFlags = [ "-p1" "-l" ];
|
||||
|
||||
# if not explicitly set, wrong cc from buildStdenv would be used
|
||||
HOST_CC = "${llvmPackagesBuildBuild.stdenv.cc}/bin/cc";
|
||||
HOST_CXX = "${llvmPackagesBuildBuild.stdenv.cc}/bin/c++";
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoconf
|
||||
cargo
|
||||
llvmPackages.llvm # llvm-objdump
|
||||
gnum4
|
||||
llvmPackagesBuildBuild.bintools
|
||||
makeWrapper
|
||||
nodejs
|
||||
perl
|
||||
@ -273,13 +284,16 @@ buildStdenv.mkDerivation ({
|
||||
export MOZILLA_OFFICIAL=1
|
||||
'';
|
||||
|
||||
# firefox has a different definition of configurePlatforms from nixpkgs, see configureFlags
|
||||
configurePlatforms = [ ];
|
||||
|
||||
configureFlags = [
|
||||
"--disable-tests"
|
||||
"--disable-updater"
|
||||
"--enable-application=${application}"
|
||||
"--enable-default-toolkit=cairo-gtk3${lib.optionalString waylandSupport "-wayland"}"
|
||||
"--enable-system-pixman"
|
||||
"--with-libclang-path=${llvmPackages.libclang.lib}/lib"
|
||||
"--with-libclang-path=${llvmPackagesBuildBuild.libclang.lib}/lib"
|
||||
"--with-system-ffi"
|
||||
"--with-system-icu"
|
||||
"--with-system-jpeg"
|
||||
@ -290,6 +304,9 @@ buildStdenv.mkDerivation ({
|
||||
"--with-system-png" # needs APNG support
|
||||
"--with-system-webp"
|
||||
"--with-system-zlib"
|
||||
# for firefox, host is buildPlatform, target is hostPlatform
|
||||
"--host=${buildStdenv.buildPlatform.config}"
|
||||
"--target=${buildStdenv.hostPlatform.config}"
|
||||
]
|
||||
# LTO is done using clang and lld on Linux.
|
||||
++ lib.optionals ltoSupport [
|
||||
@ -332,7 +349,6 @@ buildStdenv.mkDerivation ({
|
||||
fontconfig
|
||||
freetype
|
||||
glib
|
||||
gnum4
|
||||
gtk3
|
||||
icu
|
||||
libffi
|
||||
|
@ -33,7 +33,7 @@ import ./default.nix {
|
||||
llvmShared = llvm_14.override { enableSharedLibraries = true; };
|
||||
|
||||
# Expose llvmPackages used for rustc from rustc via passthru for LTO in Firefox
|
||||
llvmPackagesForBuild = pkgsBuildBuild.llvmPackages_14;
|
||||
llvmPackages = llvmPackages_14;
|
||||
|
||||
# Note: the version MUST be one version prior to the version we're
|
||||
# building
|
||||
|
@ -10,7 +10,7 @@
|
||||
, llvmSharedForBuild
|
||||
, llvmSharedForHost
|
||||
, llvmSharedForTarget
|
||||
, llvmPackagesForBuild # Exposed through rustc for LTO in Firefox
|
||||
, llvmPackages # Exposed through rustc for LTO in Firefox
|
||||
}:
|
||||
{ stdenv, lib
|
||||
, buildPackages
|
||||
@ -64,7 +64,7 @@ in
|
||||
version = rustcVersion;
|
||||
sha256 = rustcSha256;
|
||||
inherit enableRustcDev;
|
||||
inherit llvmShared llvmSharedForBuild llvmSharedForHost llvmSharedForTarget llvmPackagesForBuild;
|
||||
inherit llvmShared llvmSharedForBuild llvmSharedForHost llvmSharedForTarget llvmPackages;
|
||||
|
||||
patches = rustcPatches;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
{ lib, stdenv, removeReferencesTo, pkgsBuildBuild, pkgsBuildHost, pkgsBuildTarget
|
||||
, llvmShared, llvmSharedForBuild, llvmSharedForHost, llvmSharedForTarget, llvmPackagesForBuild
|
||||
, llvmShared, llvmSharedForBuild, llvmSharedForHost, llvmSharedForTarget, llvmPackages
|
||||
, fetchurl, file, python3
|
||||
, darwin, cmake, rust, rustPlatform
|
||||
, pkg-config, openssl
|
||||
@ -179,7 +179,7 @@ in stdenv.mkDerivation rec {
|
||||
|
||||
passthru = {
|
||||
llvm = llvmShared;
|
||||
llvmPackages = llvmPackagesForBuild;
|
||||
inherit llvmPackages;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
|
@ -11,6 +11,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
nativeBuildInputs = lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames;
|
||||
buildInputs = lib.optional stdenv.hostPlatform.isLinux alsa-lib;
|
||||
configurePlatforms = [];
|
||||
|
||||
postInstall = ''
|
||||
install -Dm644 contrib/sndiod.service $out/lib/systemd/system/sndiod.service
|
||||
|
@ -26452,11 +26452,7 @@ with pkgs;
|
||||
|
||||
filezilla = callPackage ../applications/networking/ftp/filezilla { };
|
||||
|
||||
buildMozillaMach =
|
||||
let callPackage = newScope {
|
||||
inherit (rustPackages) cargo rustc;
|
||||
};
|
||||
in opts: callPackage (import ../applications/networking/browsers/firefox/common.nix opts) {};
|
||||
buildMozillaMach = opts: callPackage (import ../applications/networking/browsers/firefox/common.nix opts) {};
|
||||
|
||||
firefoxPackages = recurseIntoAttrs (callPackage ../applications/networking/browsers/firefox/packages.nix {});
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user