6.1 Environment Variables
There are two required system level environment variables that must be set, and several optional environment variables.
6.1.1 Required Environment Variables
The first of the two required variables is WORKSPACE
. This variable points to
a directory that will contain a Conf directory (containing the text files that
are used to control build options) and the typical Build output directory tree.
The following two lines are an example of setting this variable, the first in a
Microsoft Windows* Command Prompt Window, while the second represents setting
the variable in a UNIX terminal bash shell.
set WORKSPACE=C:\MyWork\Proj1\edk2
export WORKSPACE=/usr/local/src/proj1/edk2
The second required environment variable, EDK_TOOLS_PATH
, required points to
the directory containing the Conf directory for the BaseTools directory. The
EDK II project contains a BaseTools directory,that contains setup scripts,
template files and XML Schema files. Only one copy of the BaseTools
directories needs to be installed on a workstation (although multiple copies
are permitted, such as having one in each workspace). The EDK_TOOLS_PATH
variable must point to the directory containing the BaseTools/Conf
directory.
The following lines are an example of setting this variable in a Microsoft
Windows* Command Prompt window. The first line sets an absolute path to single
location, outside of the workspace, while the second line uses tools located
within the workspace.
set EDK_TOOLS_PATH=C:\Tools
set EDK_TOOLS_PATH=%WORKSPACE%\BaseTools
If assembly code is used by the modules and the NASM assembler is used, the
system environment variable, NASM_PREFIX
must be set as shown below and must
include the trailing backslash character:
set NASM_PREFIX=C:\nasm\
6.1.2 Optional Environment Variables
When EDK II Packages are distributed within different directory trees on a
developer's workstation, the PACKAGES_PATH
environment variable is used to list
directories (prioritized from left to right) that contain EDK II Package
directories. The operating system delimiter, such as the semi-colon character
for Microsoft operating systems, is used to separate the directory names. If
all development is performed under the root of the edk2 source tree, this
variable is not required. The edk2 reference build system will look for EDK II
packages in the directory specified in the WORKSPACE
, then search for the
package directory in the directories listed in the PACKAGES_PATH
; the first
occurrence of an EDK II package found will be used.
For Microsoft windows environments, the EDK_TOOLS_BIN environment variable can
be used to point to the directory that contains the Win32 BaseTools binaries.
If these Win32 binaries are located in edk2 directory tree under the
BaseTools\Bin\Win32
directory; this variable is not required. Since developers
using *NIX operating systems must build the 'C'-based tools prior to using them
and run the Python based tools from source, this environment variable is not
required. The edksetup script is used to add the path to the binaries to the
system PATH environment variable.
The final optional environment variable, ECP_SOURCE
, is used to define the
location of the EDK Compatibility Package content for building EDK modules. If
these values are not set, the build system will automatically set the value to
the EdkCompatibilityPkg
directory in the WORKSPACE
.
6.1.3 Configuring the Environment Variables
If all development will be done within the root of the edk2 directory tree, and
the Win32 BaseTools binaries are in the BaseTools\Bin\Win32 directory, then the
edksetup script may be used to setup the development workspace by setting
system environment variables, WORKSPACE
and EDK_TOOLS_PATH
.
If a more complex development environment is used (multiple directories
containing EDK II Packages), then the WORKSPACE
, PACKAGES_PATH
and
EDK_TOOLS_BIN
environment variables must be set before running the edksetup
script.
The script must be executed prior to building in a new command prompt window or new terminal shell.
Another feature of the script is that it adds the path of the build system
tools into the OS environment variable, PATH
.