30.5 Building a UEFI driver

Building a UEFI Driver involves the use of the build.exe command provided with the

EDK II tools. If the pre-requisites were followed at the beginning of this chapter, then the only flag that need to be passed into build.exe is the DSC file that is to be used for the build.

build -p MyDriverPkg/MyDriverPkg.dsc

If the build competes successfully, then the UEFI Driver generated can be found in the build output directory that is specified in the DSC file. In the example above, OUTPUT_DIRECTORY is set to Build/MyDriverPkg. The following example shows where MyDriver.efi is located. This specific example shows that a DEBUG build was used with a Microsoft family compiler to generate MyDriver.efi for IA32.

Example 264-Build Output Directory
Build\
MyDriverPkg\
DEBUG_VS2005x86\
IA32\
MyDriver.efi

If a UEFI Driver needs to be built as a DEBUG build or a RELEASE build, this can be specified on the command line. The following two examples show how to build for DEBUG and RELEASE. If the -b flag is not specified, then the build type is retrieved from Conf/target.txt.

  • build -b DEBUG -p MyDriverPkg/MyDriverPkg.dsc
  • build -b RELEASE -p MyDriverPkg/MyDriverPkg.dsc

If a UEFI Driver needs to be built for other CPU architectures, then those can also be specified on the command line. The following 4 examples show how to build for IA32, X64, IPF, and EBC if the compiler and linkers installed support all these architectures.

  • build -a IA32 -p MyDriverPkg/MyDriverPkg.dsc
  • build -a X64 -p MyDriverPkg/MyDriverPkg.dsc
  • build -a IPF -p MyDriverPkg/MyDriverPkg.dsc
  • build -a EBC -p MyDriverPkg/MyDriverPkg.dsc

The 4 separate commands above can also be combined into a single command:

  • build -a IA32 -a X64 -a IPF -a EBC -p MyDriverPkg/MyDriverPkg.dsc

The EDK II also supports a configuration file for builds in the file path Conf/target.txt.

This file may be updated with the specific configuration that is most commonly used. For example, the ACTIVE_PLATFORM can be set to MyDriverPkg/MyDriverPkg.dsc, and the build command can then be invoked with no parameters at all:

  • build

Please see the EDK II User's Manual and other EDK II documents for more details on how to use the build command and for details on INF files, DEC files, and DSC files.