## @file
# Memory Status Code Library for UEFI drivers
#
# Lib to provide memory journal status code reporting Routines
# Copyright (c) 2009 - 2010, Intel Corporation
# 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                      = PeiUnixOemHookStatusCodeLib
  FILE_GUID                      = 23E378C1-B199-49ad-9F14-DAF5D3C7EC28
  MODULE_TYPE                    = PEIM
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = OemHookStatusCodeLib|PEIM 


#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32
#

[Sources]
  UnixOemHookStatusCodeLib.c


[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  UnixPkg/UnixPkg.dec


[LibraryClasses]
  PeiServicesLib
  ReportStatusCodeLib
  BaseMemoryLib
  PrintLib
  DebugLib

[Ppis]
  gPeiUnixThunkPpiGuid                          # PPI ALWAYS_CONSUMED

