## @file
#  NULL class library to register var check HII handler.
#
#  Copyright (c) 2015, 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                      = VarCheckHiiLib
  MODULE_UNI_FILE                = VarCheckHiiLib.uni
  FILE_GUID                      = A34FBDD0-05D3-4AF7-A720-560E91AC8CDF
  MODULE_TYPE                    = DXE_RUNTIME_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = NULL|DXE_RUNTIME_DRIVER DXE_SMM_DRIVER
  CONSTRUCTOR                    = VarCheckHiiLibNullClassConstructor

[Sources]
  VarCheckHiiLibNullClass.c
  VarCheckHii.h
  VarCheckHiiGenFromFv.c
  VarCheckHiiGenFromHii.c
  VarCheckHiiGen.c
  VarCheckHiiGen.h
  InternalVarCheckStructure.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  BaseLib
  DebugLib
  BaseMemoryLib
  UefiBootServicesTableLib
  MemoryAllocationLib
  PcdLib
  VarCheckLib

[Protocols]
  gEfiFirmwareVolume2ProtocolGuid           ## SOMETIMES_CONSUMES
  gEfiFirmwareVolumeBlock2ProtocolGuid      ## SOMETIMES_CONSUMES
  gEfiHiiDatabaseProtocolGuid               ## SOMETIMES_CONSUMES

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdVarCheckVfrDriverGuidArray   ## SOMETIMES_CONSUMES
