## @file
#  Module that produces EFI runtime virtual switch over services.
#
#  This runtime module installs Runtime Architectural Protocol and registers
#  CalculateCrc32 boot services table, SetVirtualAddressMap & ConvertPointer
#  runtime services table.
#
#  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                      = RuntimeDxe
  MODULE_UNI_FILE                = RuntimeDxe.uni
  FILE_GUID                      = B601F8C4-43B7-4784-95B1-F4226CB40CEE
  MODULE_TYPE                    = DXE_RUNTIME_DRIVER
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = RuntimeDriverInitialize

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#

[Sources]
  Crc32.c
  Runtime.h
  Runtime.c


[Packages]
  MdePkg/MdePkg.dec

[LibraryClasses]
  PeCoffLib
  CacheMaintenanceLib
  UefiBootServicesTableLib
  UefiLib
  UefiRuntimeServicesTableLib
  ReportStatusCodeLib
  DebugLib
  UefiDriverEntryPoint
  BaseLib

[Protocols]
  gEfiRuntimeArchProtocolGuid                   ## PRODUCES
  gEfiLoadedImageProtocolGuid                   ## CONSUMES

[depex]
  TRUE

[UserExtensions.TianoCore."ExtraFiles"]
  RuntimeDxeExtra.uni
