## @file
# Component description file for Undi module.
#
# This module provides support for Universal Network Driver Interface. 
# Notes: this module is no longer regular maintained/validated.
#
# 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                      = UndiRuntimeDxe
  FILE_GUID                      = A1f436EA-A127-4EF8-957C-8048606FF670
  MODULE_TYPE                    = DXE_RUNTIME_DRIVER
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = InitializeUndi

#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#

[Sources]
  Undi32.h
  E100b.h
  E100b.c
  Decode.c
  Init.c
  ComponentName.c
  UndiAipImpl.c

[Packages]
  MdePkg/MdePkg.dec

[LibraryClasses]
  UefiLib
  UefiBootServicesTableLib
  BaseMemoryLib
  DebugLib
  UefiRuntimeLib
  UefiDriverEntryPoint
  BaseLib
  MemoryAllocationLib

[Protocols]
  gEfiNetworkInterfaceIdentifierProtocolGuid_31
  gEfiPciIoProtocolGuid
  gEfiDevicePathProtocolGuid
  gEfiAdapterInformationProtocolGuid

[Guids]
  gEfiEventExitBootServicesGuid        ## PRODUCES ## Event
  gEfiEventVirtualAddressChangeGuid    ## PRODUCES ## Event
  gEfiAdapterInfoUndiIpv6SupportGuid   ## PRODUCES

[Depex]
  gEfiBdsArchProtocolGuid AND
  gEfiCpuArchProtocolGuid AND
  gEfiMetronomeArchProtocolGuid AND
  gEfiMonotonicCounterArchProtocolGuid AND
  gEfiRealTimeClockArchProtocolGuid AND
  gEfiResetArchProtocolGuid AND
  gEfiRuntimeArchProtocolGuid AND
  gEfiSecurityArchProtocolGuid AND
  gEfiTimerArchProtocolGuid AND
  gEfiVariableWriteArchProtocolGuid AND
  gEfiVariableArchProtocolGuid AND
  gEfiWatchdogTimerArchProtocolGuid
