## @file
#  PeCoffExtraAction Library to support source level debug.
#
#  Copyright (c) 2010 - 2015, 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                      = PeCoffExtraActionLib
  MODULE_UNI_FILE                = PeCoffExtraActionLib.uni
  FILE_GUID                      = 8F01CBD5-E069-44d7-90C9-35F0318603AD
  MODULE_TYPE                    = BASE
  VERSION_STRING                 = 0.8
  LIBRARY_CLASS                  = PeCoffExtraActionLib

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources.common]
  PeCoffExtraActionLib.h
  PeCoffExtraActionLib.c

[Sources.IA32]
  Ia32/IntHandlerFuncs.c
  Ia32/IntHandler.asm
  Ia32/IntHandler.S       | GCC

[Sources.X64]
  X64/IntHandlerFuncs.c
  X64/IntHandler.asm
  X64/IntHandler.S        | GCC

[Packages]
  MdePkg/MdePkg.dec
  SourceLevelDebugPkg/SourceLevelDebugPkg.dec

[LibraryClasses]
  BaseLib
  DebugLib
  IoLib
  PcdLib

[Pcd]
  gEfiSourceLevelDebugPkgTokenSpaceGuid.PcdDebugLoadImageMethod    ## CONSUMES

