## @file
#  Esrt DXE driver that manages cached ESRT repository & publishes ESRT table
#
#  This driver produces EsrtManagement protocol to manage cache ESRT repository for FMP/Non-FMP instances.
#  ESRT table based on repository is published on gEfiEventReadyToBootGuid.
#
#  Copyright (c) 2015 - 2016, 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                      = EsrtDxe
  MODULE_UNI_FILE                = EsrtDxe.uni
  FILE_GUID                      = 999BD818-7DF7-4A9A-A502-9B75033E6A0F
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = EsrtDxeEntryPoint

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  EsrtImpl.h
  EsrtImpl.c
  EsrtDxe.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  UefiDriverEntryPoint
  BaseMemoryLib
  UefiLib
  PcdLib
  DebugLib
  MemoryAllocationLib
  DxeServicesTableLib
  UefiBootServicesTableLib
  UefiRuntimeServicesTableLib
  PrintLib

[Guids]
  gEfiSystemResourceTableGuid             ## PRODUCES             ## SystemTable
  gEfiEventReadyToBootGuid                ## CONSUMES             ## Event

[Protocols]
  gEfiFirmwareManagementProtocolGuid      ## SOMETIMES_CONSUMES
  gEsrtManagementProtocolGuid             ## PRODUCES
  gEdkiiVariableLockProtocolGuid          ## CONSUMES

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxFmpEsrtCacheNum                  ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxNonFmpEsrtCacheNum               ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdSystemRebootAfterCapsuleProcessFlag ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid     ## CONSUMES

[Depex]
  gEfiVariableArchProtocolGuid AND gEfiVariableWriteArchProtocolGuid

[UserExtensions.TianoCore."ExtraFiles"]
  EsrtDxeExtra.uni
