## @file
#  Sample platform variable cleanup library instance.
#
#  Copyright (c) 2015 - 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                     = PlatformVarCleanupLib
  MODULE_UNI_FILE               = PlatformVarCleanupLib.uni
  FILE_GUID                     = 9C9623EB-4EF3-44e0-A931-F3A340D1A0F9
  MODULE_TYPE                   = DXE_DRIVER
  VERSION_STRING                = 1.0
  LIBRARY_CLASS                 = PlatformVarCleanupLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER
  CONSTRUCTOR                   = PlatformVarCleanupLibConstructor
  DESTRUCTOR                    = PlatformVarCleanupLibDestructor

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES          = IA32 X64
#

[Sources.common]
  PlatVarCleanupLib.c
  PlatVarCleanup.h
  PlatVarCleanupHii.h
  PlatVarCleanup.vfr
  VfrStrings.uni

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  UefiBootServicesTableLib
  UefiRuntimeServicesTableLib
  BaseLib
  DebugLib
  BaseMemoryLib
  PrintLib
  MemoryAllocationLib
  HiiLib

[Guids]
  gEfiIfrTianoGuid                  ## SOMETIMES_PRODUCES   ## GUID
  gEdkiiVarErrorFlagGuid            ## CONSUMES             ## Variable:L"VarErrorFlag"
  gEfiEndOfDxeEventGroupGuid        ## CONSUMES             ## Event
  gEfiCertPkcs7Guid                 ## SOMETIMES_CONSUMES   ## GUID
  gEfiCertTypeRsa2048Sha256Guid     ## SOMETIMES_CONSUMES   ## GUID

[Protocols]
  gEfiVariableArchProtocolGuid      ## CONSUMES
  gEdkiiVarCheckProtocolGuid        ## CONSUMES
  gEfiDevicePathProtocolGuid        ## SOMETIMES_PRODUCES
  gEfiFormBrowser2ProtocolGuid      ## SOMETIMES_CONSUMES
  gEfiHiiConfigAccessProtocolGuid   ## SOMETIMES_PRODUCES
  gEfiHiiConfigRoutingProtocolGuid  ## SOMETIMES_CONSUMES

[Depex]
  gEfiVariableArchProtocolGuid

