## @file
#  This module produces EFI DHCPv4 Protocol and EFI DHCPv4 Service Binding Protocol.
#
#  This module produces EFI DHCPv4 Protocol upon EFI UDPv4 Protocol, to provide the
#  capability to collect configuration information for the EFI IPv4 Protocol drivers
#  and to provide DHCPv4 server and PXE boot server discovery services.
#
#  Copyright (c) 2007 - 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                      = Dhcp4Dxe
  MODULE_UNI_FILE                = Dhcp4Dxe.uni
  FILE_GUID                      = 94734718-0BBC-47fb-96A5-EE7A5AE6A2AD
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = Dhcp4DriverEntryPoint
  UNLOAD_IMAGE                   = NetLibDefaultUnload
#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#
#  DRIVER_BINDING                =  gDhcp4DriverBinding
#  COMPONENT_NAME                =  gDhcp4ComponentName
#  COMPONENT_NAME2               =  gDhcp4ComponentName2
#

[Sources]
  Dhcp4Impl.c
  Dhcp4Io.c
  Dhcp4Io.h
  ComponentName.c
  Dhcp4Driver.h
  Dhcp4Driver.c
  Dhcp4Option.c
  Dhcp4Option.h
  Dhcp4Impl.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec


[LibraryClasses]
  BaseLib
  UefiLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  DebugLib
  NetLib
  UdpIoLib


[Protocols]
  gEfiDhcp4ServiceBindingProtocolGuid           ## BY_START
  gEfiUdp4ServiceBindingProtocolGuid            ## TO_START
  gEfiDhcp4ProtocolGuid                         ## BY_START
  gEfiUdp4ProtocolGuid                          ## TO_START

[UserExtensions.TianoCore."ExtraFiles"]
  Dhcp4DxeExtra.uni
