Merge pull request #85603 from parthy/edk2-macos

edk2: Support build on macOS
This commit is contained in:
Jörg Thalheim 2020-05-04 16:41:00 +01:00 committed by GitHub
commit 2b08905cae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 9 deletions

View File

@ -57,6 +57,6 @@ edk2.mkDerivation projectDscPath {
description = "Sample UEFI firmware for QEMU and KVM";
homepage = "https://github.com/tianocore/tianocore.github.io/wiki/OVMF";
license = stdenv.lib.licenses.bsd2;
platforms = ["x86_64-linux" "i686-linux" "aarch64-linux"];
platforms = ["x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin"];
};
}

View File

@ -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
pythonEnv = python3.withPackages (ps: [ps.tkinter]);
@ -12,7 +25,17 @@ else if stdenv.isAarch64 then
else
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";
version = "201911";
@ -25,8 +48,10 @@ edk2 = stdenv.mkDerivation {
buildInputs = [ libuuid pythonEnv ];
makeFlags = [ "-C BaseTools" ];
NIX_CFLAGS_COMPILE = "-Wno-return-type -Wno-error=stringop-truncation";
makeFlags = [ "-C BaseTools" ]
++ 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" ];
@ -38,15 +63,15 @@ edk2 = stdenv.mkDerivation {
enableParallelBuilding = true;
meta = with stdenv.lib; {
meta = with lib; {
description = "Intel EFI development kit";
homepage = "https://sourceforge.net/projects/edk2/";
license = licenses.bsd2;
platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" ];
platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" ];
};
passthru = {
mkDerivation = projectDscPath: attrs: stdenv.mkDerivation ({
mkDerivation = projectDscPath: attrs: buildStdenv.mkDerivation ({
inherit (edk2) src;
buildInputs = [ bc pythonEnv ] ++ attrs.buildInputs or [];
@ -65,7 +90,7 @@ edk2 = stdenv.mkDerivation {
buildPhase = ''
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
'';