## @file
#  NULL instance of Timer Library as a template.
#
#  A non-functional instance of the Timer Library that can be used as a template
#  for the implementation of a functional timer library instance. This library instance can
#  also be used to test build DXE, Runtime, DXE SAL, and DXE SMM modules that require timer
#  services as well as EBC modules that require timer services.
#
#  Copyright (c) 2007 - 2010, 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                      = EmuDxeTimerLib
  FILE_GUID                      = 74B62391-AD0D-1B4D-8784-151404F9D538
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = TimerLib|DXE_DRIVER DXE_RUNTIME_DRIVER UEFI_DRIVER UEFI_APPLICATION

  CONSTRUCTOR                    = DxeTimerLibConstructor

#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  DxeTimerLib.c


[Packages]
  MdePkg/MdePkg.dec
  EmulatorPkg/EmulatorPkg.dec

[LibraryClasses]
  BaseLib
  DebugLib
  EmuThunkLib
  UefiLib
  UefiBootServicesTableLib

[Protocols]
  gEfiTimerArchProtocolGuid
