## @file
#  Implements ReadOnly Variable Services required by PEIM and installs PEI ReadOnly Varaiable2 PPI.
#
#  This module implements ReadOnly Variable Services required by PEIM and installs PEI ReadOnly Varaiable2 PPI.
#
#  Copyright (c) 2006 - 2018, 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                      = PeiVariable
  MODULE_UNI_FILE                = PeiVariable.uni
  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 EBC
#

[Sources]
  Variable.c
  Variable.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  BaseMemoryLib
  PcdLib
  HobLib
  PeimEntryPoint
  DebugLib
  PeiServicesTablePointerLib
  PeiServicesLib

[Guids]
  ## CONSUMES             ## GUID # Variable store header
  ## SOMETIMES_CONSUMES   ## HOB
  gEfiAuthenticatedVariableGuid
  ## SOMETIMES_CONSUMES   ## GUID # Variable store header
  ## SOMETIMES_CONSUMES   ## HOB
  gEfiVariableGuid
  ## SOMETIMES_PRODUCES   ## HOB
  ## SOMETIMES_CONSUMES   ## HOB
  gEfiVariableIndexTableGuid
  gEfiSystemNvDataFvGuid            ## SOMETIMES_CONSUMES   ## GUID
  ## SOMETIMES_CONSUMES   ## HOB
  ## CONSUMES             ## GUID # Dependence
  gEdkiiFaultTolerantWriteGuid

[Ppis]
  gEfiPeiReadOnlyVariable2PpiGuid   ## PRODUCES

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase      ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableBase64    ## CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize      ## CONSUMES

[Depex]
  gEdkiiFaultTolerantWriteGuid

# [BootMode]
# RECOVERY_FULL             ## SOMETIMES_CONSUMES

[UserExtensions.TianoCore."ExtraFiles"]
  PeiVariableExtra.uni
