## @file
#  library defines a set of interfaces for how to do file explorer.
#  
#  Copyright (c) 2011 - 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 that 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                      = FileExplorerLib
  MODULE_UNI_FILE                = FileExplorerLib.uni
  FILE_GUID                      = 4FC9C630-0F90-4053-8F13-264CBD22FC58
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = FileExplorerLib|DXE_DRIVER UEFI_APPLICATION
  CONSTRUCTOR                    = FileExplorerLibConstructor
  DESTRUCTOR                     = FileExplorerLibDestructor

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  FileExplorer.h
  FileExplorerVfr.vfr
  FileExplorerString.uni
  FileExplorer.c
  FormGuid.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  DevicePathLib
  BaseLib
  MemoryAllocationLib
  UefiBootServicesTableLib
  BaseMemoryLib
  DebugLib
  HiiLib
  UefiHiiServicesLib

[Guids]
  gEfiFileSystemVolumeLabelInfoIdGuid           ## CONSUMES ## GUID (Indicate the information type is volume)
  gEfiIfrTianoGuid                              ## CONSUMES ## GUID (Extended IFR Guid Opcode)
 
[Protocols]
  gEfiSimpleFileSystemProtocolGuid              ## CONSUMES
  gEfiHiiConfigAccessProtocolGuid               ## CONSUMES
  gEfiFormBrowser2ProtocolGuid                  ## CONSUMES
  gEfiDevicePathToTextProtocolGuid              ## CONSUMES

[Depex.common.DXE_DRIVER]
  gEfiFormBrowser2ProtocolGuid AND gEfiHiiDatabaseProtocolGuid