## @file
#  Report Status Code Handler PEIM which produces general handlers and hook them onto the PEI status code router.
#
#  Copyright (c) 2009 - 2018, Intel Corporation. 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                      = StatusCodeHandlerPei
  MODULE_UNI_FILE                = StatusCodeHandlerPei.uni
  FILE_GUID                      = 9D225237-FA01-464C-A949-BAABC02D31D0
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = StatusCodeHandlerPeiEntry

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is only for build)
#

[Sources]
  StatusCodeHandlerPei.c
  StatusCodeHandlerPei.h
  SerialStatusCodeWorker.c
  MemoryStausCodeWorker.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  PeimEntryPoint
  PeiServicesLib
  PcdLib
  HobLib
  SerialPortLib
  ReportStatusCodeLib
  PrintLib
  DebugLib
  BaseMemoryLib

[Guids]
  ## SOMETIMES_PRODUCES   ## HOB
  ## SOMETIMES_CONSUMES   ## HOB
  gMemoryStatusCodeRecordGuid
  gEfiStatusCodeDataTypeStringGuid              ## SOMETIMES_CONSUMES   ## UNDEFINED

[Ppis]
  gEfiPeiRscHandlerPpiGuid                      ## CONSUMES

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseSerial ## CONSUMES

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeMemorySize|1|gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory    ## SOMETIMES_CONSUMES

[Depex]
  gEfiPeiRscHandlerPpiGuid

[UserExtensions.TianoCore."ExtraFiles"]
  StatusCodeHandlerPeiExtra.uni
