[Buildroot] [PATCH v2 0/6] Introduce EDK2 firmware builds

Erico Nunes nunes.erico at gmail.com
Mon Jul 27 14:57:47 UTC 2020


Hello,

(sorry to reply to this cover letter, looks like some of the e-mails
from this series did not reach me...)


On Sun, Jul 26, 2020 at 12:06 PM D. Olsson <hi at senzilla.io> wrote:
>
> Hi all,
>
> Here is a more simplified and somewhat cleaner revision of the series
> introducing the ability to build EDK2 UEFI firmware in Buildroot.
>
> This series is introducing the EDK2 bootloader package which can build
> firmware for five different platforms, targeting both x86-64 and AArch64.
>
>  * QEMU x86-64 pc machine
>  * QEMU aarch64 virt machine, booting directly from flash
>  * QEMU aarch64 virt machine, booting via kernel protocol
>  * QEMU aarch64 sbsa-ref machine
>  * ARM FVP vexpress machine
>
> The EDK2 build system is very particular and includes different
> dependencies and a lot of custom scripting, which has lead to these design
> decisions when building these Buildroot packages:
>
>  * EDK2 needs to rely on Git submodules because its dependencies are not
>    easy to build separately
>  * Each platform is a specific configuration option (instead of a string)
>    because they require slightly different packages etc.
>
> To keep it simple, this series no longer introduce the concept of "SBBR"
> Although, the firmware build with ATF + EDK2 + ACPI is mostly compliant
> with SBBR.
>
> Dick Olsson (6):
>   package/edk2-platforms: new package
>   boot/edk2: new package

I tried to build edk2 with the defconfig changes on the aarch64_efi
and pc efi defconfigs, but it failed to build some host tool with:

gcc  -c  -I .. -I ../Include/Common -I ../Include/ -I
../Include/IndustryStandard -I ../Common/ -I .. -I . -I
../Include/X64/ -MD -fshort-wchar -fno-strict-aliasing -fwrapv
-fno-delete-null-pointer-checks -Wall -Werror
-Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict
-Wno-unused-result -nostdlib -g -O2  GenFv.c -o GenFv.o
gcc  -c  -I .. -I ../Include/Common -I ../Include/ -I
../Include/IndustryStandard -I ../Common/ -I .. -I . -I
../Include/X64/ -MD -fshort-wchar -fno-strict-aliasing -fwrapv
-fno-delete-null-pointer-checks -Wall -Werror
-Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict
-Wno-unused-result -nostdlib -g -O2  GenFvInternalLib.c -o
GenFvInternalLib.o
GenFvInternalLib.c:19:10: fatal error: uuid/uuid.h: No such file or directory
   19 | #include <uuid/uuid.h>

or

gcc -o ../bin/GenFw   GenFw.o ElfConvert.o Elf32Convert.o
Elf64Convert.o -L../libs -lCommon -luuid
/usr/bin/ld: cannot find -luuid


Looks like libuuid comes from util-linux and host-util-linux was even
built in Buildroot with libuuid enabled.
So apparently the edk2 host build is missing the flags from Buildroot
to build host tools?

Then I noticed that edk2 doesn't have a host package while some host
tools are built. Maybe it's not absolutely required if it adds too
much complexity, but is this intentional?


More information about the buildroot mailing list