##  @file
# Provides Shell 'dp' standalone application.
#
# Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
#  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                      = 1831A379-2D48-45BD-9744-D4059D93815D
  MODULE_TYPE                    = UEFI_APPLICATION
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = DpAppInitialize
#
#  This flag specifies whether HII resource section is generated into PE image.
#
  UEFI_HII_RESOURCE_SECTION      = TRUE

[Sources.common]
  PerformanceTokens.h
  Dp.uni
  Dp.c
  Dp.h
  Literals.h
  Literals.c
  DpInternal.h
  DpUtilities.c
  DpTrace.c
  DpProfile.c
  DpApp.c

[Packages]
  MdePkg/MdePkg.dec
  ShellPkg/ShellPkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  MemoryAllocationLib
  BaseLib
  BaseMemoryLib
  DebugLib
  ShellLib
  UefiLib
  UefiRuntimeServicesTableLib
  UefiBootServicesTableLib
  UefiApplicationEntryPoint
  SortLib
  PrintLib
  DevicePathLib
  PerformanceLib
  DxeServicesLib
  PeCoffGetEntryPointLib

[Guids]
  gPerformanceProtocolGuid                                ## CONSUMES ## SystemTable

[Protocols]
  gEfiLoadedImageProtocolGuid                             ## CONSUMES
  gEfiDriverBindingProtocolGuid                           ## SOMETIMES_CONSUMES
  gEfiComponentName2ProtocolGuid                          ## SOMETIMES_CONSUMES
  gEfiLoadedImageDevicePathProtocolGuid                   ## SOMETIMES_CONSUMES
  gEfiHiiPackageListProtocolGuid                          ## CONSUMES

[Pcd]
  gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize   ## CONSUMES
