## @file
#  Module that produces EBC Interprete and EBC Debug Support protocols.
#
#  This module implements EFI Byte Code (EBC) Virtual Machine that can provide
#  platform and processor-independent mechanisms for loading and executing EFI
#  device drivers.
#
#  Copyright (c) 2015, The Linux Foundation. All rights reserved.
#  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                      = EbcDxe
  MODULE_UNI_FILE                = EbcDxe.uni
  FILE_GUID                      = 13AC6DD0-73D0-11D4-B06B-00AA00BD6DE7
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = InitializeEbcDriver

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 AARCH64
#

[Sources]
  EbcDebuggerHook.h
  EbcDebuggerHook.c
  EbcExecute.h
  EbcExecute.c
  EbcInt.h
  EbcInt.c

[Sources.Ia32]
  Ia32/EbcSupport.c
  Ia32/EbcLowLevel.nasm

[Sources.X64]
  X64/EbcSupport.c
  X64/EbcLowLevel.nasm

[Sources.AARCH64]
  AArch64/EbcSupport.c
  AArch64/EbcLowLevel.S

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  MemoryAllocationLib
  UefiBootServicesTableLib
  BaseMemoryLib
  UefiDriverEntryPoint
  DebugLib
  BaseLib


[Protocols]
  gEfiDebugSupportProtocolGuid                  ## PRODUCES
  gEfiEbcProtocolGuid                           ## PRODUCES
  gEfiEbcVmTestProtocolGuid                     ## SOMETIMES_PRODUCES
  gEfiEbcSimpleDebuggerProtocolGuid             ## SOMETIMES_CONSUMES

[Depex]
  TRUE

# [Event]
#
# Periodic timer event to support EFI debug support protocol for EBC image.
#
# EVENT_TYPE_PERIODIC_TIMER ## CONSUMES

[UserExtensions.TianoCore."ExtraFiles"]
  EbcDxeExtra.uni
