## @file
# PeCoff extra action libary for DXE phase that run Unix emulator.
#
# Lib to provide memory journal status code reporting Routines
# Copyright (c) 2007 - 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                      = DxeUnixPeCoffExtraActionLib
  FILE_GUID                      = C6F96971-39D2-49a5-93FC-5D42FB4D7DD2
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = PeCoffExtraActionLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER UEFI_DRIVER

  CONSTRUCTOR                    = DxeUnixPeCoffLibExtraActionConstructor

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32
#

[Sources]
  DxeUnixPeCoffExtraActionLib.c

[Packages]
  UnixPkg/UnixPkg.dec
  MdePkg/MdePkg.dec

[LibraryClasses]
  DebugLib
  HobLib
  BaseMemoryLib

[Protocols]
  gEfiUnixThunkProtocolGuid                     # PROTOCOL ALWAYS_CONSUMED

