## @file
#  Status Code Handler Driver which produces general handlers and hook them onto the MM status code router.
#
#  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
#  (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
#  Copyright (c) Microsoft Corporation.
#
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = StatusCodeHandlerStandaloneMm
  FILE_GUID                      = EBE7802F-5E11-4D4E-B463-22D2425D156B
  MODULE_TYPE                    = MM_STANDALONE
  PI_SPECIFICATION_VERSION       = 0x00010032
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = StatusCodeHandlerStandaloneMmEntry

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources]
  StatusCodeHandlerMm.c
  StatusCodeHandlerMm.h
  StatusCodeHandlerStandalone.c
  SerialStatusCodeWorker.c
  MemoryStatusCodeWorker.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  StandaloneMmPkg/StandaloneMmPkg.dec

[LibraryClasses]
  SerialPortLib
  MmServicesTableLib
  StandaloneMmDriverEntryPoint
  PcdLib
  PrintLib
  ReportStatusCodeLib
  DebugLib
  MemoryAllocationLib
  BaseMemoryLib
  HobLib

[Guids]
  gEfiStatusCodeDataTypeStringGuid              ## SOMETIMES_CONSUMES   ## UNDEFINED
  gMemoryStatusCodeRecordGuid                   ## SOMETIMES_PRODUCES   ## UNDEFINED # MmSystemTable
  gMmStatusCodeUseSerialHobGuid                 ## CONSUMES

[Protocols]
  gEfiMmRscHandlerProtocolGuid                  ## CONSUMES

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeMemorySize |128| gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeUseMemory   ## SOMETIMES_CONSUMES

[Depex]
  gEfiMmRscHandlerProtocolGuid
