## @file
# Emulation Variable for EFI_RUNTIME_SERVICES.
#
# This module provides three EFI_RUNTIME_SERVICES: SetVariable, GetVariable, GetNextVariableName
# Copyright (c) 2006 - 2010, Intel Corporation
#
#  All rights reserved. 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                      = EmuVariableRuntimeDxe
  FILE_GUID                      = 02B01AD5-7E59-43e8-A6D8-238180613A5A
  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
#

[Sources]
  InitVariable.c
  EmuVariable.c
  Variable.h


[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec


[LibraryClasses]
  BaseLib
  UefiLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  UefiRuntimeLib
  DebugLib
  MemoryAllocationLib
  BaseMemoryLib


[Protocols]
  gEfiVariableArchProtocolGuid                  ## PRODUCES
  gEfiVariableWriteArchProtocolGuid             ## PRODUCES

[Guids]
  gEfiEventVirtualAddressChangeGuid             ## PRODUCES ## Event
  gEfiGlobalVariableGuid                        ## PRODUCES ## Variable Guid
  gEfiVariableGuid

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdEmuVariableNvStoreReserved
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize
  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize
  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableCollectStatistics
  gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize

[Depex]
  TRUE

# [Event]
#   ##
#   # Event will be signaled for VIRTUAL_ADDRESS_CHANGE event.
#   #
#   EVENT_TYPE_NOTIFY_SIGNAL                    ## PRODUCES
#
#