Search code examples
firmwareuefi

TianoCore UEFI Development Kit build: how to prevent the build process to ignore MS Windows - oriented stuff on Linux


I'm trying to build UDK2018 on Ubuntu 17. The platform build process (the Build base tool) unexpectedly tries to build some MS Windows oriented stuff and fails. How this can be fixed?

Following the documented recommendations, at the first stage I build the "Base Tools":

make all -C ${EDK_TOOLS_PATH}

Then I run the setup script:

edksetup.sh BaseTools

This stages are finished with success, also the setup script runs some tests that pass.

On the next stages I try to build the platform:

build all -a X64 -t GCC5

This last stage fails with the follow error:

Nt32Pkg/Include/WinNtPeim.h:27:10: fatal error: Common/WinNtInclude.h: No such file or directory


Solution

  • You are not specifying any platform to build, so the default platform description file specified in Conf/target.txt (initialized from BaseTools/Conf/target.template by edksetup.sh) is used. That file is Nt32Pkg/Nt32Pkg.dsc which describes a Windows-specific platform.

    Try adding -p OvmfPkg/OvmfPkgX64.dsc on the build command line, or edit the config file, to build the version for the QEMU platform.

    If you are looking to build a standalone module against a generic platform, either define your own generic build description of specify -p MdeModulePkg/MdeModulePkg.dsc and have a look at how MdeModulePkg/Application/HelloWorld/ is integrated - then additionally add -m <your module .inf> on the command line.