================================================================================
Build And Integration Instructions
2020 Aug 1st
================================================================================

================================================================================
DISCLAIMER
================================================================================
This release note as well as the software described in it is furnished under license
and may only be used or copied in accordance with the terms of the license. The
information in this manual is furnished for informational use only, is subject to
change without notice, and should not be construed as a commitment by Intel Corporation.
Intel Corporation assumes no responsibility or liability for any errors or inaccuracies
that may appear in this document or any software that may be provided in association
with this document.
Except as permitted by such license, no part of this document may be reproduced,
stored in a retrieval system, or transmitted in any form or by any means without
the express written consent of Intel Corporation.

================================================================================
                                     INDEX
================================================================================
A. INTRODUCTION
B. HOW TO BUILD
C. HOW TO INTEGRATE INTO COREBOOT
D. HOW TO INTEGRATE INTO SLIM BOOTLOADER

================================================================================
A. INTRODUCTION
================================================================================
This document provides instructions on how to build UEFI Payload and how to
integrate it into coreboot or Slim Bootloader firmware.

================================================================================
B. HOW TO BUILD
================================================================================
1. Run the below two commands in windows command prompt window:
   > edksetup.bat

   For pure X64 build:
   > build -a X64 -p UefiPayloadPkg\UefiPayloadPkg.dsc -b <BuildType> -t <ToolChain>
     -D BOOTLOADER=<Bootloader>

   For X64 build with IA32 entry point:
   > build -a IA32 -a X64 -p UefiPayloadPkg\UefiPayloadPkg.dsc -b <BuildType> -t <ToolChain>
     -D BOOTLOADER=<Bootloader>

   <BuildType> support 'DEBUG', 'RELEASE' and 'NOOPT'.
   <ToolChain> is the EDK II build environment on your host. Tested with VS2015x86 toolchain.
   <Bootloader> could be "SBL" for Slim Bootloader and "COREBOOT" for coreboot.

   Refer to https://github.com/tianocore/tianocore.github.io/wiki/UDK2018-How-to-Build for
   details about EDK II build steps.

   NOTE: Pure 32bit UEFI payload support could be added if required later.

2. If build is successfully, the payload image (UEFIPAYLOAD.fd) will be generated inside the
   folder of Build\UefiPayloadPkg.

================================================================================
C. HOW TO INTEGRATE INTO COREBOOT
================================================================================
1. Copy the payload image (UEFIPAYLOAD.fd) into the top-level directory of Coreboot source tree.
2. Run "make menuconfig" in linux console to start Coreboot configuration surface.
3. In the Payload section,
   1) Choose "Tianocore Payload" for the option of "Add a payload".
   2) Update the path of payload image for the option of "Tianocore binary".
   3) Choose "UEFIPayload" for the option of "Tianocore Payload".
4. If the graphics console is required in UEFI payload, enable framebuffer initialization in coreboot.
   This could be done by enabling native graphics or using VGA BIOS option rom.
5. Build the coreboot firmware image.
6. If meet build error "E: Not a usable UEFI firmware volume.", please update Coreboot source tree
   to the latest, or refer https://review.coreboot.org/c/coreboot/+/57296

================================================================================
D. HOW TO INTEGRATE INTO SLIM BOOTLOADER
================================================================================
Please refer https://slimbootloader.github.io/how-tos/integrate-multiple-payloads.html for below steps.
1. Copy the payload image (UEFIPAYLOAD.fd) into Slim Bootloader source at PayloadPkg\PayloadBins\UefiPld.fd
2. Update config data to make UEFI payload as default payload if required.
3. Build Slim Bootloader with UEFI payload:
   BuildLoader.py build <Platform> -p "OsLoader.efi:LLDR:Lz4;UefiPld.fd:UEFI:Lzma"
