## @file
#  Standalone MM report status code library.
#
#  Retrieve status code and report status code in MM phase.
#
#  Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.<BR>
#  Copyright (c) Microsoft Corporation.
#
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = StandaloneMmReportStatusCodeLib
  FILE_GUID                      = 17C7FC8C-8C5D-497E-9C0E-C21255B30E04
  MODULE_TYPE                    = MM_STANDALONE
  VERSION_STRING                 = 1.0
  PI_SPECIFICATION_VERSION       = 0x00010032
  LIBRARY_CLASS                  = ReportStatusCodeLib|MM_STANDALONE MM_CORE_STANDALONE

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources]
  ReportStatusCodeLib.c
  ReportStatusCodeLib.h
  ReportStatusCodeLibStandaloneMm.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  PcdLib
  BaseMemoryLib
  MmServicesTableLib
  DebugLib
  MemoryAllocationLib

[Guids]
  gEfiStatusCodeSpecificDataGuid                ## SOMETIMES_CONSUMES   ## UNDEFINED
  gEfiStatusCodeDataTypeDebugGuid               ## SOMETIMES_CONSUMES   ## UNDEFINED

[Protocols]
  gEfiMmStatusCodeProtocolGuid                  ## CONSUMES

[Pcd]
  gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask  ## CONSUMES
