## @file
# Capsule update PEIM supports EFI and UEFI.
#
#  Caution: This module requires additional review when modified.
#  This driver will have external input - capsule image.
#  This external input must be validated carefully to avoid security issue like
#  buffer overflow, integer overflow.
#
# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
# Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
#
# This program and the accompanying materials
# are licensed and made available under the terms and conditions
# of the BSD License which accompanies this distribution.  The
# full text of the license may be found at
# http://opensource.org/licenses/bsd-license.php
#
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = CapsulePei
  MODULE_UNI_FILE                = CapsulePei.uni
  FILE_GUID                      = C779F6D8-7113-4AA1-9648-EB1633C7D53B
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = CapsuleMain

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#

[Sources]
  UefiCapsule.c
  Capsule.h
  Common/CapsuleCoalesce.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec


[LibraryClasses]
  BaseLib
  HobLib
  BaseMemoryLib
  PeiServicesLib
  PeimEntryPoint
  DebugLib
  PeiServicesTablePointerLib
  PrintLib
  ReportStatusCodeLib

[LibraryClasses.IA32]
  PeCoffGetEntryPointLib
  PcdLib
  DebugAgentLib

[Guids]
  ## SOMETIMES_CONSUMES   ## Variable:L"CapsuleUpdateData"
  ## SOMETIMES_CONSUMES   ## Variable:L"CapsuleLongModeBuffer"
  gEfiCapsuleVendorGuid

[Ppis]
  gEfiPeiReadOnlyVariable2PpiGuid               ## CONSUMES
  gEfiPeiCapsulePpiGuid                         ## PRODUCES

[Ppis.IA32]
  gEfiPeiLoadFilePpiGuid                        ## SOMETIMES_CONSUMES

[Pcd.IA32]
  gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleCoalesceFile     ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdUse1GPageTable          ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdPteMemoryEncryptionAddressOrMask    ## CONSUMES

[FeaturePcd.IA32]
  gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode  ## CONSUMES

[Depex]
  gEfiPeiReadOnlyVariable2PpiGuid

# [BootMode]
# FLASH_UPDATE              ## SOMETIMES_CONSUMES

# [Hob.IA32]
# UNDEFINED                 ## SOMETIMES_CONSUMES # CPU

# [Hob]
# UNDEFINED                 ## SOMETIMES_PRODUCES # UEFI_CAPSULE


[UserExtensions.TianoCore."ExtraFiles"]
  CapsulePeiExtra.uni
