## @file
#  Performance library instance used in DXE phase to dump SMM performance data.
#
#  This library instance allows a DXE driver or UEFI application to dump both PEI/DXE and SMM performance data.
#  StartPerformanceMeasurement(), EndPerformanceMeasurement(), StartPerformanceMeasurementEx()
#  and EndPerformanceMeasurementEx() are not implemented.
#
#  Copyright (c) 2011 - 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                      = DxeSmmPerformanceLib
  MODULE_UNI_FILE                = DxeSmmPerformanceLib.uni
  FILE_GUID                      = DA80C15C-0B4D-4e75-8946-4043DE559B0C
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = PerformanceLib|DXE_DRIVER DXE_RUNTIME_DRIVER UEFI_APPLICATION

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources]
  DxeSmmPerformanceLib.c


[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec


[LibraryClasses]
  BaseLib
  UefiBootServicesTableLib
  PcdLib
  DebugLib
  BaseMemoryLib
  UefiRuntimeServicesTableLib
  MemoryAllocationLib
  UefiLib

[Guids]
  gPerformanceProtocolGuid              ## SOMETIMES_CONSUMES   ## UNDEFINED # Locate protocol
  gPerformanceExProtocolGuid            ## SOMETIMES_CONSUMES   ## UNDEFINED # Locate protocol
  gSmmPerformanceProtocolGuid           ## SOMETIMES_PRODUCES   ## UNDEFINED # Used to do smm communication
  gSmmPerformanceExProtocolGuid         ## SOMETIMES_PRODUCES   ## UNDEFINED # Used to do smm communication
  gEdkiiPiSmmCommunicationRegionTableGuid    ## CONSUMES ## SystemTable

[Protocols]
  gEfiSmmCommunicationProtocolGuid      ## CONSUMES


[Pcd]
  gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask    ## CONSUMES

[Depex.common.DXE_DRIVER, Depex.common.DXE_RUNTIME_DRIVER]
  gEfiSmmCommunicationProtocolGuid
