##  @file
# Provides interface to shell functionality for shell commands and applications.
#
# (C) Copyright 2016 Hewlett Packard Enterprise Development LP<BR>
# Copyright (c) 2006 - 2015, 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                      = UefiShellLib
  FILE_GUID                      = 449D0F00-2148-4a43-9836-F10B3980ECF5
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.1
  LIBRARY_CLASS                  = ShellLib|UEFI_APPLICATION UEFI_DRIVER DXE_RUNTIME_DRIVER DXE_DRIVER
  CONSTRUCTOR                    = ShellLibConstructor
  DESTRUCTOR                     = ShellLibDestructor

#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources.common]
  UefiShellLib.c
  UefiShellLib.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  ShellPkg/ShellPkg.dec

[LibraryClasses]
  UefiBootServicesTableLib
  MemoryAllocationLib
  DevicePathLib
  BaseLib
  BaseMemoryLib
  DebugLib
  FileHandleLib
  PrintLib
  UefiLib
  HiiLib
  SortLib

[Protocols]
  gEfiSimpleFileSystemProtocolGuid              ## SOMETIMES_CONSUMES
  gEfiUnicodeCollation2ProtocolGuid             ## CONSUMES

  # shell 2.0
  gEfiShellProtocolGuid                         ## SOMETIMES_CONSUMES
  gEfiShellParametersProtocolGuid               ## SOMETIMES_CONSUMES

  # 'old' shell
  gEfiShellEnvironment2Guid                     ## SOMETIMES_CONSUMES
  gEfiShellInterfaceGuid                        ## SOMETIMES_CONSUMES

[Guids]
  gEfiFileInfoGuid                              ## SOMETIMES_CONSUMES ## GUID
  gEfiShellEnvironment2ExtGuid                  ## SOMETIMES_CONSUMES ## GUID

[Pcd.common]
  gEfiShellPkgTokenSpaceGuid.PcdShellLibAutoInitialize     ## CONSUMES
  gEfiShellPkgTokenSpaceGuid.PcdShellPrintBufferSize       ## CONSUMES
