## @file
# Emu Bus driver
#
# Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
# Portions copyright (c) 2011, Apple Inc. 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                      = EmuBusDriver
  FILE_GUID                      = 9842073D-95D9-9F49-BD3F-2E29525125DF
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = InitializeEmuBusDriver

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#
#  DRIVER_BINDING                =  gEmuBusDriverBinding
#  COMPONENT_NAME                =  gEmuBusDriverComponentName
#

[Sources]
  ComponentName.c
  EmuBusDriverDxe.c


[Packages]
  MdePkg/MdePkg.dec
  EmulatorPkg/EmulatorPkg.dec


[LibraryClasses]
  DevicePathLib
  UefiBootServicesTableLib
  MemoryAllocationLib
  BaseMemoryLib
  PcdLib
  UefiLib
  UefiDriverEntryPoint
  BaseLib
  DebugLib


[Protocols]
  gEfiDevicePathProtocolGuid                    # PROTOCOL TO_START
  gEmuThunkProtocolGuid                         # PROTOCOL TO_START
  gEmuIoThunkProtocolGuid                       # PROTOCOL BY_START



