##  @file
# Provides Shell 'dp' dynamic command.
#
# Copyright (c) 2009 - 2018, 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                      = dpDynamicCommand
  FILE_GUID                      = 0253F9FA-129A-4A8D-B12E-7DC2B6376302
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = DpCommandInitialize
  UNLOAD_IMAGE                   = DpUnload
#
#  This flag specifies whether HII resource section is generated into PE image.
#
  UEFI_HII_RESOURCE_SECTION      = TRUE

[Sources.common]
  Dp.uni
  Dp.c
  Dp.h
  Literals.h
  Literals.c
  DpInternal.h
  DpUtilities.c
  DpTrace.c
  DpDynamicCommand.c

[Packages]
  MdePkg/MdePkg.dec
  ShellPkg/ShellPkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  MemoryAllocationLib
  BaseLib
  BaseMemoryLib
  DebugLib
  ShellLib
  UefiLib
  UefiRuntimeServicesTableLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  SortLib
  PrintLib
  DevicePathLib
  PerformanceLib
  DxeServicesLib
  PeCoffGetEntryPointLib

[Guids]
  gPerformanceProtocolGuid                                ## CONSUMES ## SystemTable
  gEfiAcpi20TableGuid                                     ## CONSUMES
  gEfiAcpi10TableGuid                                     ## CONSUMES

[Protocols]
  gEfiLoadedImageProtocolGuid                             ## CONSUMES
  gEfiDriverBindingProtocolGuid                           ## SOMETIMES_CONSUMES
  gEfiComponentName2ProtocolGuid                          ## SOMETIMES_CONSUMES
  gEfiLoadedImageDevicePathProtocolGuid                   ## SOMETIMES_CONSUMES
  gEfiHiiPackageListProtocolGuid                          ## CONSUMES
  gEfiShellDynamicCommandProtocolGuid                     ## PRODUCES

[Pcd]
  gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize   ## CONSUMES

[DEPEX]
  TRUE
