## @file
#  
#  Performance library instance used in PEI phase.
#  
#  This library provides the performance measurement interfaces in PEI phase, it creates
#  and consumes GUIDed HOB for performance logging. The GUIDed HOB is passed to DXE phase
#  so that it can be taken over by DxeCorePerformanceLib.  
#  
#  Copyright (c) 2006 - 2012, 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                      = PeiPerformanceLib
  FILE_GUID                      = F72DE735-B24F-4ef6-897F-70A85D01A047
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = PerformanceLib|PEIM PEI_CORE SEC

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC (EBC is for build only)
#

[Sources]
  PeiPerformanceLib.c


[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec


[LibraryClasses]
  BaseMemoryLib
  PcdLib
  TimerLib
  BaseLib
  HobLib
  DebugLib


[Guids]
  gPerformanceProtocolGuid     ## PRODUCES ## HOB
  gPerformanceExProtocolGuid   ## PRODUCES ## HOB

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxPeiPerformanceLogEntries
  gEfiMdePkgTokenSpaceGuid.PcdPerformanceLibraryPropertyMask
