##  @file
#  Display Performance Application, Module information file.
#
# Copyright (c) 2009 - 2017, 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                    = 0x00010006
  BASE_NAME                      = DP
  FILE_GUID                      = 7d5ff0e3-2fb7-4e19-8419-44266cb60000
  MODULE_TYPE                    = UEFI_APPLICATION
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = InitializeDp
  
#
#  This flag specifies whether HII resource section is generated into PE image.
#
  UEFI_HII_RESOURCE_SECTION      = TRUE

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  DpStrings.uni
  Dp.c
  Dp.h
  Literals.h
  Literals.c
  DpInternal.h
  DpUtilities.c
  DpTrace.c
  DpProfile.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  ShellPkg/ShellPkg.dec
  PerformancePkg/PerformancePkg.dec

[LibraryClasses]
  UefiApplicationEntryPoint
  ShellLib
  BaseMemoryLib
  BaseLib
  MemoryAllocationLib
  DebugLib
  UefiBootServicesTableLib
  PeCoffGetEntryPointLib
  PerformanceLib
  PrintLib
  UefiLib
  HiiLib
  UefiHiiServicesLib
  PcdLib
  DevicePathLib
  DxeServicesLib

[Guids]
  gPerformanceProtocolGuid                                ## CONSUMES ## SystemTable

[Protocols]
  gEfiLoadedImageProtocolGuid                             ## CONSUMES
  gEfiHiiPackageListProtocolGuid                          ## CONSUMES
  gEfiDriverBindingProtocolGuid                           ## SOMETIMES_CONSUMES
  gEfiComponentName2ProtocolGuid                          ## SOMETIMES_CONSUMES
  gEfiLoadedImageDevicePathProtocolGuid                   ## SOMETIMES_CONSUMES

[Pcd]
  gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize   ## CONSUMES
