## @file
#  Performance library instance mainly for DxeCore usage.
#  
#  This library provides the performance measurement interfaces and initializes performance
#  logging for DXE phase. It first initializes its private global data structure for
#  performance logging and saves the performance GUIDed HOB passed from PEI phase. 
#  It initializes DXE phase performance logging by publishing the Performance and PerformanceEx Protocol,
#  which is consumed by DxePerformanceLib to logging performance data in DXE phase.
#  This library is mainly used by DxeCore to start performance logging to ensure that
#  Performance and PerformanceEx Protocol are installed at the very beginning of DXE phase.
#  
#  Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
# (C) Copyright 2016 Hewlett Packard Enterprise Development LP<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                      = DxeCorePerformanceLib
  MODULE_UNI_FILE                = DxeCorePerformanceLib.uni
  FILE_GUID                      = D0F78BBF-0A30-4c63-8A48-0F618A4AFACD
  MODULE_TYPE                    = DXE_CORE
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = PerformanceLib|DXE_CORE

  CONSTRUCTOR                    = DxeCorePerformanceLibConstructor

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  DxeCorePerformanceLib.c
  DxeCorePerformanceLibInternal.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec


[LibraryClasses]
  MemoryAllocationLib
  UefiBootServicesTableLib
  UefiRuntimeServicesTableLib
  PcdLib
  TimerLib
  BaseMemoryLib
  BaseLib
  HobLib
  DebugLib
  UefiLib
  ReportStatusCodeLib
  DxeServicesLib
  PeCoffGetEntryPointLib

[Protocols]
  gEfiSmmCommunicationProtocolGuid              ## SOMETIMES_CONSUMES


[Guids]
  ## SOMETIMES_CONSUMES   ## HOB
  ## PRODUCES             ## UNDEFINED # Install protocol
  ## PRODUCES             ## SystemTable
  gPerformanceProtocolGuid
  ## SOMETIMES_CONSUMES   ## HOB
  ## PRODUCES             ## UNDEFINED # Install protocol
  gPerformanceExProtocolGuid
  gZeroGuid                                     ## SOMETIMES_CONSUMES ## GUID
  gEfiFirmwarePerformanceGuid                   ## SOMETIMES_PRODUCES ## UNDEFINED # StatusCode Data
  gEdkiiFpdtExtendedFirmwarePerformanceGuid     ## SOMETIMES_CONSUMES ## HOB # StatusCode Data
  gEfiEventReadyToBootGuid                      ## CONSUMES           ## Event
  gEdkiiPiSmmCommunicationRegionTableGuid       ## SOMETIMES_CONSUMES    ## SystemTable

[Pcd]
  gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask         ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdEdkiiFpdtStringRecordEnableOnly  ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdExtFpdtBootRecordPadSize         ## CONSUMES
