## @file
#  Provides variable service.
#
#  This module installs variable arch protocol and variable write arch protocol to provide
#  variable services: SetVariable, GetVariable, GetNextVariableName and QueryVariableInfo.
#
#  Caution: This module requires additional review when modified.
#  This driver will have external input - variable data.
#  This external input must be validated carefully to avoid security issues such as
#  buffer overflow or integer overflow.
#
# Copyright (c) 2006 - 2017, 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                      = VariableRuntimeDxe
  MODULE_UNI_FILE                = VariableRuntimeDxe.uni
  FILE_GUID                      = CBD2E4D5-7068-4FF5-B462-9822B4AD8D60
  MODULE_TYPE                    = DXE_RUNTIME_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = VariableServiceInitialize

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#
#  VIRTUAL_ADDRESS_MAP_CALLBACK  =  VariableClassAddressChangeEvent
#

[Sources]
  Variable.c
  VariableDxe.c
  Variable.h
  Measurement.c
  TcgMorLockDxe.c
  VarCheck.c
  VariableExLib.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

  GeminilakeSiliconPkg/GeminilakeSiliconPkg.dec
  # For:
  #  - Protocol: gEdkiiVariableStorageProtocolGuid
  #  - Protocol: gEdkiiVariableStorageSelectorProtocolGuid
  #  - Protocol: gEdkiiVariableStorageSupportProtocolGuid

[LibraryClasses]
  MemoryAllocationLib
  BaseLib
  SynchronizationLib
  UefiLib
  UefiBootServicesTableLib
  BaseMemoryLib
  DebugLib
  UefiRuntimeLib
  DxeServicesTableLib
  UefiDriverEntryPoint
  PcdLib
  HobLib
  TpmMeasurementLib
  AuthVariableLib
  VarCheckLib

[Protocols]
  gEdkiiVariableStorageProtocolGuid             ## CONSUMES
  gEdkiiVariableStorageSelectorProtocolGuid     ## CONSUMES
  gEfiVariableWriteArchProtocolGuid             ## PRODUCES
  gEfiVariableArchProtocolGuid                  ## PRODUCES
  gEdkiiVariableLockProtocolGuid                ## PRODUCES
  gEdkiiVarCheckProtocolGuid                    ## PRODUCES
  gEdkiiVariableStorageSupportProtocolGuid      ## PRODUCES

[Guids]
  ## PRODUCES             ## GUID # Signature of Variable store header
  ## CONSUMES             ## GUID # Signature of Variable store header
  ## SOMETIMES_CONSUMES   ## HOB
  ## SOMETIMES_PRODUCES   ## SystemTable
  gEfiAuthenticatedVariableGuid

  ## PRODUCES             ## GUID # Signature of Variable store header
  ## CONSUMES             ## GUID # Signature of Variable store header
  ## SOMETIMES_CONSUMES   ## HOB
  ## SOMETIMES_PRODUCES   ## SystemTable
  gEfiVariableGuid

  ## SOMETIMES_CONSUMES   ## Variable:L"PlatformLang"
  ## SOMETIMES_PRODUCES   ## Variable:L"PlatformLang"
  ## SOMETIMES_CONSUMES   ## Variable:L"Lang"
  ## SOMETIMES_PRODUCES   ## Variable:L"Lang"
  gEfiGlobalVariableGuid

  gEfiMemoryOverwriteControlDataGuid            ## CONSUMES   ## Variable:L"MemoryOverwriteRequestControl"
  gEfiMemoryOverwriteRequestControlLockGuid     ## PRODUCES   ## Variable:L"MemoryOverwriteRequestControlLock"

  gEfiEventVirtualAddressChangeGuid             ## CONSUMES             ## Event
  gEfiEndOfDxeEventGroupGuid                    ## CONSUMES             ## Event
  gEdkiiVarErrorFlagGuid                        ## CONSUMES             ## GUID

  ## SOMETIMES_CONSUMES   ## Variable:L"DB"
  ## SOMETIMES_CONSUMES   ## Variable:L"DBX"
  gEfiImageSecurityDatabaseGuid

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize                      ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxAuthVariableSize                  ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize         ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize                    ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize                     ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxUserNvVariableSpaceSize           ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdBoottimeReservedNvVariableSpaceSize  ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdReclaimVariableSpaceAtEndOfDxe       ## CONSUMES
  gSiPkgTokenSpaceGuid.PcdNvVariableEmulationMode                        ## CONSUMES

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics  ## CONSUMES # Variable statistic information
  gEfiMdePkgTokenSpaceGuid.PcdUefiVariableDefaultLangDeprecate ## CONSUMES # Auto update PlatformLang/Lang

[Depex]
  TRUE

[UserExtensions.TianoCore."ExtraFiles"]
  VariableRuntimeDxeExtra.uni
