## @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 - 2019, Intel Corporation. All rights reserved.<BR>
# Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##

[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
  Common/CommonHeader.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec


[LibraryClasses]
  BaseLib
  HobLib
  BaseMemoryLib
  MemoryAllocationLib
  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
