## @file
#  library defines a set of interfaces for how to do file explorer.
#
#  Copyright (c) 2011 - 2018, 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 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           ## SOMETIMES_CONSUMES ## GUID (Indicate the information type is volume)
  gEfiIfrTianoGuid                              ## SOMETIMES_CONSUMES ## GUID (Extended IFR Guid Opcode)

[Protocols]
  gEfiSimpleFileSystemProtocolGuid              ## SOMETIMES_CONSUMES
  gEfiHiiConfigAccessProtocolGuid               ## PRODUCES
  gEfiFormBrowser2ProtocolGuid                  ## CONSUMES
  gEfiDevicePathToTextProtocolGuid              ## PRODUCES

[Depex.common.DXE_DRIVER]
  gEfiFormBrowser2ProtocolGuid AND gEfiHiiDatabaseProtocolGuid
