Merge pull request #85603 from parthy/edk2-macos
edk2: Support build on macOS
This commit is contained in:
commit
2b08905cae
@ -57,6 +57,6 @@ edk2.mkDerivation projectDscPath {
|
|||||||
description = "Sample UEFI firmware for QEMU and KVM";
|
description = "Sample UEFI firmware for QEMU and KVM";
|
||||||
homepage = "https://github.com/tianocore/tianocore.github.io/wiki/OVMF";
|
homepage = "https://github.com/tianocore/tianocore.github.io/wiki/OVMF";
|
||||||
license = stdenv.lib.licenses.bsd2;
|
license = stdenv.lib.licenses.bsd2;
|
||||||
platforms = ["x86_64-linux" "i686-linux" "aarch64-linux"];
|
platforms = ["x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin"];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,17 @@
|
|||||||
{ stdenv, fetchgit, fetchpatch, libuuid, python3, iasl, bc }:
|
{
|
||||||
|
stdenv,
|
||||||
|
clangStdenv,
|
||||||
|
fetchgit,
|
||||||
|
fetchpatch,
|
||||||
|
libuuid,
|
||||||
|
python3,
|
||||||
|
iasl,
|
||||||
|
bc,
|
||||||
|
clang_9,
|
||||||
|
llvmPackages_9,
|
||||||
|
overrideCC,
|
||||||
|
lib,
|
||||||
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
pythonEnv = python3.withPackages (ps: [ps.tkinter]);
|
pythonEnv = python3.withPackages (ps: [ps.tkinter]);
|
||||||
@ -12,7 +25,17 @@ else if stdenv.isAarch64 then
|
|||||||
else
|
else
|
||||||
throw "Unsupported architecture";
|
throw "Unsupported architecture";
|
||||||
|
|
||||||
edk2 = stdenv.mkDerivation {
|
buildStdenv = if stdenv.isDarwin then
|
||||||
|
overrideCC clangStdenv [ clang_9 llvmPackages_9.llvm llvmPackages_9.lld ]
|
||||||
|
else
|
||||||
|
stdenv;
|
||||||
|
|
||||||
|
buildType = if stdenv.isDarwin then
|
||||||
|
"CLANGPDB"
|
||||||
|
else
|
||||||
|
"GCC5";
|
||||||
|
|
||||||
|
edk2 = buildStdenv.mkDerivation {
|
||||||
pname = "edk2";
|
pname = "edk2";
|
||||||
version = "201911";
|
version = "201911";
|
||||||
|
|
||||||
@ -25,8 +48,10 @@ edk2 = stdenv.mkDerivation {
|
|||||||
|
|
||||||
buildInputs = [ libuuid pythonEnv ];
|
buildInputs = [ libuuid pythonEnv ];
|
||||||
|
|
||||||
makeFlags = [ "-C BaseTools" ];
|
makeFlags = [ "-C BaseTools" ]
|
||||||
NIX_CFLAGS_COMPILE = "-Wno-return-type -Wno-error=stringop-truncation";
|
++ lib.optional (stdenv.cc.isClang) [ "BUILD_CC=clang BUILD_CXX=clang++ BUILD_AS=clang" ];
|
||||||
|
|
||||||
|
NIX_CFLAGS_COMPILE = "-Wno-return-type" + lib.optionalString (stdenv.cc.isGNU) " -Wno-error=stringop-truncation";
|
||||||
|
|
||||||
hardeningDisable = [ "format" "fortify" ];
|
hardeningDisable = [ "format" "fortify" ];
|
||||||
|
|
||||||
@ -38,15 +63,15 @@ edk2 = stdenv.mkDerivation {
|
|||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with lib; {
|
||||||
description = "Intel EFI development kit";
|
description = "Intel EFI development kit";
|
||||||
homepage = "https://sourceforge.net/projects/edk2/";
|
homepage = "https://sourceforge.net/projects/edk2/";
|
||||||
license = licenses.bsd2;
|
license = licenses.bsd2;
|
||||||
platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" ];
|
platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
mkDerivation = projectDscPath: attrs: stdenv.mkDerivation ({
|
mkDerivation = projectDscPath: attrs: buildStdenv.mkDerivation ({
|
||||||
inherit (edk2) src;
|
inherit (edk2) src;
|
||||||
|
|
||||||
buildInputs = [ bc pythonEnv ] ++ attrs.buildInputs or [];
|
buildInputs = [ bc pythonEnv ] ++ attrs.buildInputs or [];
|
||||||
@ -65,7 +90,7 @@ edk2 = stdenv.mkDerivation {
|
|||||||
|
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
runHook preBuild
|
runHook preBuild
|
||||||
build -a ${targetArch} -b RELEASE -t GCC5 -p ${projectDscPath} -n $NIX_BUILD_CORES $buildFlags
|
build -a ${targetArch} -b RELEASE -t ${buildType} -p ${projectDscPath} -n $NIX_BUILD_CORES $buildFlags
|
||||||
runHook postBuild
|
runHook postBuild
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user