## @file
#
# Caution: This file is used for Duet platform only, do not use them in real platform.
# All variable code, variable metadata, and variable data used by Duet platform are on 
# disk. They can be changed by user. BIOS is not able to protoect those.
# Duet trusts all meta data from disk. If variable code, variable metadata and variable
# data is modified in inproper way, the behavior is undefined.
#
# Copyright (c) 2006 - 2010, 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.             
# 
#  Module Name:
#
#   FSVariable.inf
#
#  Abstract:
#
#    Component description file for variable module
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = FSVariable
  FILE_GUID                      = A36495C1-C205-414e-B71F-4BE3476D699C
  MODULE_TYPE                    = DXE_RUNTIME_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = VariableServiceInitialize
  
[Packages]
  MdePkg/MdePkg.dec
  DuetPkg/DuetPkg.dec
  MdeModulePkg/MdeModulePkg.dec

[Sources]
  FSVariable.h
  VariableStorage.h
  FSVariable.c
  FileStorage.c
  MemStorage.c

[LibraryClasses]
  PcdLib
  BaseMemoryLib
  BaseLib
  UefiBootServicesTableLib
  UefiRuntimeLib
  DebugLib
  UefiLib
  HobLib
  DxeServicesTableLib
  DevicePathLib
  UefiDriverEntryPoint
  MemoryAllocationLib

[Guids]
  gEfiFlashMapHobGuid
  gEfiVariableGuid
  gEfiGlobalVariableGuid                        ## PRODUCES ## Variable Guid
  
[Protocols]
  gEfiVariableArchProtocolGuid
  gEfiVariableWriteArchProtocolGuid
  gEfiSimpleFileSystemProtocolGuid
  gEfiBlockIoProtocolGuid

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxVariableSize
  gEfiMdeModulePkgTokenSpaceGuid.PcdMaxHardwareErrorVariableSize
  gEfiMdeModulePkgTokenSpaceGuid.PcdVariableStoreSize
  gEfiMdeModulePkgTokenSpaceGuid.PcdHwErrStorageSize

[Depex]
  TRUE
