#/*++
#
#  Copyright (c)  1999  - 2014, 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 that 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.    
#                     
#
#
#
#  Module Name:
#
#   SaveMemoryConfig.inf
#
#  Abstract:
#
#
--*/

[defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = SaveMemoryConfig
  FILE_GUID                      = E0ECBEC9-B193-4351-A488-36A655F22F9F
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = SaveMemoryConfigEntryPoint

[sources.common]
  SaveMemoryConfig.c

[Packages]
  MdePkg/MdePkg.dec
  Vlv2TbltDevicePkg/PlatformPkg.dec
  Vlv2DeviceRefCodePkg/Vlv2DeviceRefCodePkg.dec

[LibraryClasses]
  UefiDriverEntryPoint
  UefiBootServicesTableLib
  HobLib
  DebugLib
  UefiRuntimeServicesTableLib
  UefiLib
  BaseLib

[Protocols]
  gMemInfoProtocolGuid

[Guids]
  gEfiMemoryConfigDataGuid
  gEfiPlatformInfoGuid
  gEfiPlatformBootModeGuid
  gEfiVlv2VariableGuid
  #gEfiHobListGuid
  #gEfiPlatformInfoGuid
  #gEfiPlatformBootModeGuid
  #gEfiGlobalVariableGuid
  #gEfiMemoryConfigDataGuid

[Depex]
  gEfiVariableArchProtocolGuid AND
  gEfiVariableWriteArchProtocolGuid
