## @file
# PeiMain module is core module in PEI phase.
#
# It takes responsibilities of:
# 1) Initialize memory, PPI, image services etc, to establish PEIM runtime environment.
# 2) Dispatch PEIM from discovered FV.
# 3) Handoff control to DxeIpl to load DXE core and enter DXE phase.
#
# Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
#
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = PeiCore
  MODULE_UNI_FILE                = PeiCore.uni
  FILE_GUID                      = 52C05B14-0B98-496c-BC3B-04B50211D680
  MODULE_TYPE                    = PEI_CORE
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = PeiCore

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC (EBC is for build only)
#

[Sources]
  StatusCode/StatusCode.c
  Security/Security.c
  Reset/Reset.c
  Ppi/Ppi.c
  PeiMain/PeiMain.c
  Memory/MemoryServices.c
  Image/Image.c
  Hob/Hob.c
  FwVol/FwVol.c
  FwVol/FwVol.h
  Dispatcher/Dispatcher.c
  Dependency/Dependency.c
  Dependency/Dependency.h
  BootMode/BootMode.c
  CpuIo/CpuIo.c
  PciCfg2/PciCfg2.c
  PeiMain.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  BaseMemoryLib
  PeCoffGetEntryPointLib
  ReportStatusCodeLib
  PeiServicesLib
  PerformanceLib
  HobLib
  BaseLib
  PeiCoreEntryPoint
  DebugLib
  MemoryAllocationLib
  CacheMaintenanceLib
  PeCoffLib
  PeiServicesTablePointerLib
  PcdLib

[Guids]
  gPeiAprioriFileNameGuid       ## SOMETIMES_CONSUMES   ## File
  ## PRODUCES   ## UNDEFINED # Install PPI
  ## CONSUMES   ## UNDEFINED # Locate PPI
  gEfiFirmwareFileSystem2Guid
  ## PRODUCES   ## UNDEFINED # Install PPI
  ## CONSUMES   ## UNDEFINED # Locate PPI
  ## CONSUMES   ## GUID      # Used to compare with FV's file system GUID and get the FV's file system format
  gEfiFirmwareFileSystem3Guid
  gStatusCodeCallbackGuid
  gEdkiiMigratedFvInfoGuid                      ## SOMETIMES_PRODUCES     ## HOB

[Ppis]
  gEfiPeiStatusCodePpiGuid                      ## SOMETIMES_CONSUMES # PeiReportStatusService is not ready if this PPI doesn't exist
  gEfiPeiResetPpiGuid                           ## SOMETIMES_CONSUMES # PeiResetService is not ready if this PPI doesn't exist
  gEfiDxeIplPpiGuid                             ## CONSUMES
  gEfiPeiMemoryDiscoveredPpiGuid                ## PRODUCES
  gEfiPeiDecompressPpiGuid                      ## SOMETIMES_CONSUMES
  ## NOTIFY
  ## SOMETIMES_PRODUCES # Produce FvInfoPpi if the encapsulated FvImage is found
  gEfiPeiFirmwareVolumeInfoPpiGuid
  ## NOTIFY
  ## SOMETIMES_PRODUCES # Produce FvInfoPpi2 if the encapsulated FvImage is found
  gEfiPeiFirmwareVolumeInfo2PpiGuid
  ## PRODUCES
  ## CONSUMES
  gEfiPeiLoadFilePpiGuid
  gEfiPeiSecurity2PpiGuid                       ## NOTIFY
  gEfiTemporaryRamSupportPpiGuid                ## SOMETIMES_CONSUMES
  gEfiTemporaryRamDonePpiGuid                   ## SOMETIMES_CONSUMES
  gEfiPeiReset2PpiGuid                          ## SOMETIMES_CONSUMES
  gEfiSecHobDataPpiGuid                         ## SOMETIMES_CONSUMES
  gEfiPeiCoreFvLocationPpiGuid                  ## SOMETIMES_CONSUMES

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdPeiCoreMaxPeiStackSize                  ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdPeiCoreImageLoaderSearchTeSectionFirst  ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressPeiCodePageNumber         ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressBootTimeCodePageNumber    ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdLoadFixAddressRuntimeCodePageNumber     ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdLoadModuleAtFixAddressEnable            ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdShadowPeimOnS3Boot                      ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdShadowPeimOnBoot                        ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdInitValueInTempStack                    ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMigrateTemporaryRamFirmwareVolumes      ## CONSUMES

# [BootMode]
# S3_RESUME             ## SOMETIMES_CONSUMES

# [Hob]
# PHIT                  ## PRODUCES
# RESOURCE_DESCRIPTOR   ## SOMETIMES_PRODUCES
# RESOURCE_DESCRIPTOR   ## SOMETIMES_CONSUMES
# MEMORY_ALLOCATION     ## SOMETIMES_CONSUMES
# FIRMWARE_VOLUME       ## SOMETIMES_PRODUCES
# FIRMWARE_VOLUME       ## SOMETIMES_CONSUMES
# MEMORY_ALLOCATION     ## SOMETIMES_PRODUCES
# MEMORY_ALLOCATION     ## PRODUCES # MEMORY_ALLOCATION_STACK
# UNDEFINED             ## PRODUCES # MEMORY_POOL

[UserExtensions.TianoCore."ExtraFiles"]
  PeiCoreExtra.uni
