## @file
#  Component Description File for FAT module.
#
#  This UEFI driver detects the FAT file system in the disk.
#  It also produces the Simple File System protocol for the consumer to
#  perform file and directory operations on the disk.
#  Copyright (c) 2007 - 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 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                    = 0x00010005
  BASE_NAME                      = Fat
  MODULE_UNI_FILE                = Fat.uni
  FILE_GUID                      = 961578FE-B6B7-44c3-AF35-6BC705CD2B1F
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = FatEntryPoint
  UNLOAD_IMAGE                   = FatUnload

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#
#  DRIVER_BINDING                =  gFatDriverBinding
#  COMPONENT_NAME                =  gFatComponentName
#  COMPONENT_NAME2               =  gFatComponentName2
#

[Sources]
  DirectoryCache.c
  DiskCache.c
  FileName.c
  Hash.c
  DirectoryManage.c
  ComponentName.c
  FatFileSystem.h
  Fat.h
  ReadWrite.c
  OpenVolume.c
  Open.c
  Misc.c
  Init.c
  Info.c
  FileSpace.c
  Flush.c
  Fat.c
  Delete.c
  Data.c
  UnicodeCollation.c

[Packages]
  MdePkg/MdePkg.dec

[LibraryClasses]
  UefiRuntimeServicesTableLib
  UefiBootServicesTableLib
  MemoryAllocationLib
  BaseMemoryLib
  BaseLib
  UefiLib
  UefiDriverEntryPoint
  DebugLib
  PcdLib

[Guids]
  gEfiFileInfoGuid                      ## SOMETIMES_CONSUMES   ## UNDEFINED
  gEfiFileSystemInfoGuid                ## SOMETIMES_CONSUMES   ## UNDEFINED
  gEfiFileSystemVolumeLabelInfoIdGuid   ## SOMETIMES_CONSUMES   ## UNDEFINED

[Protocols]
  gEfiDiskIoProtocolGuid                ## TO_START
  gEfiDiskIo2ProtocolGuid               ## TO_START
  gEfiBlockIoProtocolGuid               ## TO_START
  gEfiSimpleFileSystemProtocolGuid      ## BY_START
  gEfiUnicodeCollationProtocolGuid      ## TO_START
  gEfiUnicodeCollation2ProtocolGuid     ## TO_START

[Pcd]
  gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLang           ## SOMETIMES_CONSUMES
  gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultPlatformLang   ## SOMETIMES_CONSUMES
[UserExtensions.TianoCore."ExtraFiles"]
  FatExtra.uni
