## @file
#  PEIM Recovery Library supports system recovery boot.
#
#  This library instance is no longer used and module using this library
#  class should update to directly locate EFI_PEI_RECOVERY_MODULE_PPI defined
#  in PI 1.2 specification. 
#
#  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.
#
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = PeiRecoveryLib
  FILE_GUID                      = C0227547-0811-4cbb-ABEA-DECD22829122
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = RecoveryLib|PEIM

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  PeiRecoveryLib.c

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  BaseLib
  PeiServicesTablePointerLib
  DebugLib

[Ppis]
  gEfiPeiRecoveryModulePpiGuid            ## CONSUMES
  
  