#/** @file
#
#  Implement ReadOnly Variable Services required by PEIM and install
#  PEI ReadOnly Varaiable2 PPI. These services operates the non-volatile storage space.
#
#  Copyright (c) 2006 - 2008, Intel Corporation<BR>
#  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                      = PeiVariable
  FILE_GUID                      = 34C8C28F-B61C-45a2-8F2E-89E46BECC63B
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = PeimInitializeVariableServices

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources.common]
  Variable.c
  Variable.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  BaseMemoryLib
  PcdLib
  HobLib
  PeimEntryPoint
  DebugLib
  PeiServicesTablePointerLib
  PeiServicesLib

[Guids]
  gEfiVariableGuid

[Ppis]
  gEfiPeiReadOnlyVariable2PpiGuid                ## SOMETIMES_PRODUCES (Not for boot mode RECOVERY)

[Pcd.common]
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase  ## CONSUMES

[Depex]
  TRUE

#
#  [BootMode]
#    RECOVERY          ## CONSUMES
#

