Michael Kubacki 3b0de44759 EmulatorPkg: Use windows-2019 VM image | 2 lat temu | |
---|---|---|
.. | ||
.azurepipelines | 2 lat temu | |
PlatformBuild.py | 4 lat temu | |
ReadMe.md | 3 lat temu |
This ReadMe.md describes the Azure DevOps based Platform CI for EmulatorPkg and how to use the same Pytools based build infrastructure locally.
This solution for building and running EmulatorPkg has only been validated with Windows 10 with VS2019 and Ubuntu 18.04 with GCC5 toolchain. Four different firmware builds are supported and are described below.
Configuration name | Architectures | DSC File | Additional Flags |
---|---|---|---|
IA32 | IA32 | EmulatorPkg.dsc | None |
X64 | X64 | EmulatorPkg.dsc | None |
IA32 Full | IA32 | EmulatorPkg.dsc | SECURE_BOOT_ENABLE=TRUE |
X64 Full | X64 | EmulatorPkg.dsc | SECURE_BOOT_ENABLE=TRUE |
sudo apt-get update
sudo apt-get install gcc g++ make uuid-dev
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6-dev:i386 libx11-dev:i386 libxext-dev:i386 lib32gcc-7-dev
Note: edksetup, Submodule initialization and manual installation of NASM, iASL, or the required cross-compiler toolchains are not required, this is handled by the Pytools build system.
[Optional] Create a Python Virtual Environment - generally once per workspace
python -m venv <name of virtual environment>
source <name of virtual environment>/bin/activate
<name of virtual environment>/Scripts/activate.bat
pip install --upgrade -r pip-requirements.txt
Initialize & Update Submodules - only when submodules updated
stuart_setup -c EmulatorPkg/PlatformCI/PlatformBuild.py TOOL_CHAIN_TAG=<TOOL_CHAIN_TAG> -a <TARGET_ARCH>
stuart_update -c EmulatorPkg/PlatformCI/PlatformBuild.py TOOL_CHAIN_TAG=<TOOL_CHAIN_TAG> -a <TARGET_ARCH>
Compile the basetools if necessary - only when basetools C source files change
python BaseTools/Edk2ToolsBuild.py -t <ToolChainTag>
stuart_build -c EmulatorPkg/PlatformCI/PlatformBuild.py TOOL_CHAIN_TAG=<TOOL_CHAIN_TAG> -a <TARGET_ARCH>
stuart_build -c EmulatorPkg/PlatformCI/PlatformBuild.py -h
option to see additional
options like --clean
Running Emulator
--FlashRom
to the end of your build command and the emulator will run after the
build is complete.--FlashOnly
feature to just run the emulator. stuart_build -c EmulatorPkg/PlatformCI/PlatformBuild.py TOOL_CHAIN_TAG=<TOOL_CHAIN_TAG> -a <TARGET_ARCH> --FlashOnly
[-a <TARGET_ARCH>]
parameter.NOTE: Logging the execution output will be in the normal stuart log as well as to your console.
MAKE_STARTUP_NSH=TRUE will output a startup.nsh file to the location mapped as fs0. This is
used in CI in combination with the --FlashOnly
feature to run the Emulator to the UEFI shell and then execute
the contents of startup.nsh.
To pass build defines through _stuartbuild, prepend BLD_*_
to the define name and pass it on the
command-line. _stuartbuild currently requires values to be assigned, so add an=1
suffix for bare defines.
For example, to enable the IP6 Network Stack, the stuart_build command-line would be:
stuart_build -c EmulatorPkg/PlatformCI/PlatformBuild.py BLD_*_NETWORK_IP6_ENABLE=1