## @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                      = DxeUnixOemHookStatusCodeLib
  FILE_GUID                      = 0BB6F68A-2FC5-4394-9375-2B43F1C34B59
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = OemHookStatusCodeLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER 


#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32
#

[Sources]
  UnixOemHookStatusCodeLib.c


[Packages]
  UnixPkg/UnixPkg.dec
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec


[LibraryClasses]
  ReportStatusCodeLib
  BaseMemoryLib
  PrintLib
  HobLib
  DebugLib

[Protocols]
  gEfiUnixThunkProtocolGuid                     # PROTOCOL ALWAYS_CONSUMED

