## @file
# This driver installs Debug Support protocol for the selected processor.
#
# This driver provides the capabilities for debug-agent to gain control of the machine
# when certain types of events occur, i.e. breakpoint, processor execptions, etc. It also
# provides debug-agent to periodically gain control during operation of the machine to
# check for asynchronous commands form the host.
#
# Copyright (c) 2006 - 2018, 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                      = DebugSupportDxe
  MODULE_UNI_FILE                = DebugSupportDxe.uni
  FILE_GUID                      = 911D584C-35F7-4955-BEF9-B452769DDC3A
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = InitializeDebugSupportDriver

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64
#

[Sources]
  DebugSupport.c

[Sources.Ia32]
  Ia32/DebugSupport.h
  Ia32/PlDebugSupport.c
  Ia32/PlDebugSupport.h
  Ia32/PlDebugSupportIa32.c
  Ia32/AsmFuncs.nasm

[Sources.X64]
  Ia32/DebugSupport.h
  Ia32/PlDebugSupport.c
  X64/PlDebugSupport.h
  X64/PlDebugSupportX64.c
  X64/AsmFuncs.nasm

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec


[LibraryClasses]
  UefiBootServicesTableLib
  MemoryAllocationLib
  BaseMemoryLib
  UefiDriverEntryPoint
  DebugLib

[LibraryClasses.IA32, LibraryClasses.X64]
  BaseLib

[Protocols]
  gEfiLoadedImageProtocolGuid                   ## CONSUMES
  gEfiDebugSupportProtocolGuid                  ## PRODUCES


[Depex]
  TRUE

[UserExtensions.TianoCore."ExtraFiles"]
  DebugSupportDxeExtra.uni
