Before a UEFI Driver can be built, an EDK II build environment must be established on a development system. The EDK II project is maintained by the TianoCore community on GitHub, and validated releases of the EDK II project are periodically posted. The current validated release as of June, 2017 is UDK2017. It is recommended that a validated release be used for UEFI Driver development instead of the trunk of the EDK II project, because the trunk is under active development. The validated release page includes links to documentation to help setup a build environment on a development system. Verify that one of the standard platforms builds correctly before proceeding.
In most cases, building a UEFI Driver only requires a few directories from an EDK II build environment. These include:
BaseTools - Contains EDK II build tools
Conf - Contains configuration files for EDK II build tools and supported compilers and linkers
MdePkg - Contains the include files and libraries to support industry standard specifications. This content includes all of the published UEFI Specifications and EFI Specifications as well as includes files for industry standard buses such as PCI, USB, and SCSI.
MdeModulePkg - Contains UEFI Drivers that can be used as reference. Also contains HII related libraries that may be used by UEFI Drivers that produce HII packages.
OptionRomPkg - Sample package with three UEFI Drivers and a UEFI Application that can be used as a template for a device manufactures own package for UEFI Driver development.
MyDriverPkg - Example EDK II package that contains the UEFI Drivers implemented by a device manufacturer. This directory name is only used for discussion purposes. Device manufacturers may generate their own directory name for their own package and may generate more than one package for their UEFI Driver content if required.