Appendix A Variables
One of the core concepts of this utility is the notion of symbols. Use of
symbols follows the makefile convention of enclosing within $(), for example
$(EDK_SOURCE)
. As the parsing utility processes files, it will often perform
parsing of variable assignments. These variables can then be referenced in
other sections of the DSC file. Variable assignments will be saved internally
in either a local or global symbol table. The local symbol table is purged
following processing of individual Platform (DSC) files. Global symbol values
persist throughout execution of the utility. Local symbol values take precedent
over global symbols. The following table describes the symbols generated
internally by the utility. They can be overridden either on the command line,
in the DSC file, or in individual INF files. The symbols in the table below are
typically global.
For a pure EDK II build, two environment variables are required to be set prior
to executing any build, WORKSPACE
and EDK_TOOLS_PATH must be set. point to
the Location of the BaseTools directory tree. When EDK II Packages are in
directories that are not under a single directory, then the PACKAGES_PATH and
EDK_TOOLS_BIN (Windows builds only) directories must also be set.
For a build using EDK components in the EDK II DSC file, the EDK_SOURCE
directory must point to the root of the EDK (either a directory containing an
EDK tree or the location of the EdkCompatibilityPkg directory) tree.
Table 10 Standard Variables
Variable Name | Description |
---|---|
WORKSPACE |
Defines the root directory of the local development tree, for example C:\work. If not defined as an environmental variable when an EDK II tool is invoked, the utility will give an error message and exit. If the development tree contains sub-directories that contain EDK II Packages, then this variable must be set prior to running edksetup.bat. |
EDK_TOOLS_PATH |
Defines the root directory of the local EDK II BaseTools directory. |
PACKAGES_PATH |
This variable is not permitted in EDK II meta-data files. |
This variable contains an ordered list of directories that contain EDK | |
II Package directories. This is NOT required if the development tree (defined by the WORKSPACE) contains all EDK II Packages used for development. If the development tree contains sub-directories that contain EDK II Packages (i.e., C:\work\edk2\MdePkg, | |
C:\work\edk2\MdeModulePkg, C:\work\myplatform\MyPlatformPkg) then this variable must list all directories that contain EDK II Packages (i.e., PACKAGES_PATH=C:\work\edk2;C:\work\myplatform); this variable must be set prior to running edksetup.bat | |
EDK_TOOLS_BIN |
This variable is not permitted in EDK II meta-data files. This a Windows only variable that points to the EDK II BaseTools binary directory. If the WORKSPACE directory contains a |
BaseTools\Bin\Win32 directory and the directory is populated with the build tools, then this variable is not required. If the binaries are located in a different directory, i.e., C:\work\edk2-BaseTools-win32, then this variable must be set prior to running edksetup.bat | |
EDK_SOURCE |
Defines the directory of an original EDK directory tree, for example C:\EFI2.0\EdkCompatibilityPkg. If not defined as an environmental variable when an EDK II tool is invoked, the utility will give an error message and exit. |
EFI_SOURCE |
Defines the root directory of a local original EDK source tree, for example C:\EFI2.0\MyEdkDriver. |
EFI_TOOLS_PATH |
Defines the root directory containing the original EDK Tools directory tree, for example C:\Tools. |
EFI_TOOLS_BIN |
Defines the directory containing the original EDK Tools executable files. Default: $(EFI_TOOLS_PATH)/Bin |
PROCESSOR |
Defines the EDK target processor for which the code is to be built. This symbol will typically be used only in EDK INF files, and is ignored for pure EDK II builds. |
TARGET_ARCH |
This defines which of the supported architectures will be built - this value is set in the file: $(WORKSPACE)/Conf/target.txt or it may be specified on a command-line. |
BUILD_DIR |
Defines the build tip directory for the current platform. For example, this may be $(OUTPUT_DIR)\Platform\Nt32 . |
SOURCE_DIR |
For a component, defines the directory of the component source files. |
DEST_DIR |
For a component, defines the directory (typically under BUILD_DIR) where the component object files are to be built. |
LIB_DIR |
Specifies the directory where EFI libraries are deposited after building. Default: $(BUILD_DIR)\$(TARGET)_$(TAGNAME)\$(ARCH)\LIB |
BIN_DIR |
Specifies the directory where final component binaries (.efi) are deposited during build. Default: $(BUILD_DIR)\$(TARGET)_$(TAGNAME)\$(ARCH) |
FV_DIR |
Specifies a WORKSPACE relative or absolute directory where the final image files will be placed at the conclusion of a successful build. If the directory does not exist, the tools must create this directory. If not defined, tools must create an FV directory underneath the BIN_DIR. |
DSC_FILENAME |
Name of the DSC file as specified on the command line. Can be used for dependencies in the makefiles. |
INF_FILENAME |
Name of the INF file for a given EDK component or EDK II Module. Can be used for dependencies in the makefiles. |
MAKEFILE_NAME |
Name of the output makefile for the platform. Default is "makefile". The default value can be overridden to support keeping multiple variations of a makefile in the same DEST_DIR directory. |