## @file
# Module produce EFI_PEI_READ_ONLY_VARIABLE2_PPI on top of EFI_PEI_READ_ONLY_VARIABLE_PPI .
#
# UEFI PI Spec supersedes Intel's Framework Specs. 
# EFI_PEI_READ_ONLY_VARIABLE_PPI defined in Intel Framework Pkg is replaced by EFI_PEI_READ_ONLY_VARIABLE2_PPI
# in MdePkg.
# This module produces EFI_PEI_READ_ONLY_VARIABLE2_PPI on top of EFI_PEI_READ_ONLY_VARIABLE_PPI . 
# This module is used on platform when both of these two conditions are true:
# 1) Framework module produces EFI_PEI_READ_ONLY_VARIABLE_PPI is present.
# 2) The platform has PI modules that consumes EFI_PEI_READ_ONLY_VARIABLE2_PPI.
#
# This module can't be used together with ReadOnlyVariableOnReadOnlyVariable2Thunk module.
#
#
# Copyright (c) 2006 - 2011, 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                      = ReadOnlyVariable2OnReadOnlyVariableThunk
  FILE_GUID                      = 950216A2-A621-479c-A13D-2990617BDFE7
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = PeimInitializeReadOnlyVariable2

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  ReadOnlyVariable2OnReadOnlyVariableThunk.c

[Packages]
  MdePkg/MdePkg.dec
  EdkCompatibilityPkg/EdkCompatibilityPkg.dec
  IntelFrameworkPkg/IntelFrameworkPkg.dec

[LibraryClasses]
  PeimEntryPoint
  PeiServicesLib
  PeiServicesTablePointerLib
  DebugLib

[Ppis]
  gEfiPeiReadOnlyVariablePpiGuid                 # PPI ALWAYS_CONSUMED
  gEfiPeiReadOnlyVariable2PpiGuid                # PPI ALWAYS_PRODUCED

[Depex]
  gEfiPeiReadOnlyVariablePpiGuid
