## @file
#  This modules produce the Load File Protocol for UEFI HTTP boot.
# 
#  Copyright (c) 2015 - 2017, 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                 = HttpBootDxe
  FILE_GUID                 = ecebcb00-d9c8-11e4-af3d-8cdcd426c973
  MODULE_TYPE               = UEFI_DRIVER
  VERSION_STRING            = 1.0
  ENTRY_POINT               = HttpBootDxeDriverEntryPoint
  UNLOAD_IMAGE              = NetLibDefaultUnload
  MODULE_UNI_FILE           = HttpBootDxe.uni

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  NetworkPkg/NetworkPkg.dec

[Sources]
  HttpBootConfigNVDataStruc.h
  HttpBootDxe.h
  HttpBootDxe.c
  HttpBootConfig.h
  HttpBootConfig.c
  HttpBootComponentName.h
  HttpBootComponentName.c
  HttpBootImpl.h
  HttpBootImpl.c
  HttpBootDhcp4.h
  HttpBootDhcp4.c
  HttpBootDhcp6.h
  HttpBootDhcp6.c
  HttpBootSupport.h
  HttpBootSupport.c
  HttpBootClient.h
  HttpBootClient.c
  HttpBootConfigVfr.vfr
  HttpBootConfigStrings.uni

[LibraryClasses]
  UefiDriverEntryPoint
  UefiBootServicesTableLib
  MemoryAllocationLib
  BaseLib
  UefiLib
  DevicePathLib
  DebugLib
  NetLib
  HttpLib
  HiiLib
  PrintLib
  DpcLib
  UefiHiiServicesLib
  UefiBootManagerLib

[Protocols]
  ## TO_START
  ## BY_START
  gEfiDevicePathProtocolGuid
  
  gEfiLoadFileProtocolGuid                        ## BY_START
  gEfiHttpServiceBindingProtocolGuid              ## CONSUMES
  gEfiHttpProtocolGuid                            ## CONSUMES
  gEfiDhcp4ServiceBindingProtocolGuid             ## TO_START
  gEfiDhcp4ProtocolGuid                           ## TO_START
  gEfiIp4Config2ProtocolGuid                      ## TO_START
  gEfiDhcp6ServiceBindingProtocolGuid             ## TO_START
  gEfiDhcp6ProtocolGuid                           ## TO_START
  gEfiDns6ServiceBindingProtocolGuid              ## SOMETIMES_CONSUMES
  gEfiDns6ProtocolGuid                            ## SOMETIMES_CONSUMES
  gEfiIp6ServiceBindingProtocolGuid               ## TO_START
  gEfiIp6ProtocolGuid                             ## TO_START
  gEfiIp6ConfigProtocolGuid                       ## TO_START
  gEfiNetworkInterfaceIdentifierProtocolGuid_31   ## SOMETIMES_CONSUMES
  gEfiRamDiskProtocolGuid                         ## SOMETIMES_CONSUMES
  gEfiHiiConfigAccessProtocolGuid                 ## BY_START
  gEfiHttpBootCallbackProtocolGuid                ## SOMETIMES_PRODUCES
  gEfiAdapterInformationProtocolGuid              ## SOMETIMES_CONSUMES

[Guids]
  ## SOMETIMES_CONSUMES ## GUID # HiiIsConfigHdrMatch   mHttpBootConfigStorageName
  ## SOMETIMES_PRODUCES ## GUID # HiiConstructConfigHdr mHttpBootConfigStorageName
  ## SOMETIMES_PRODUCES ## GUID # HiiGetBrowserData     mHttpBootConfigStorageName
  ## SOMETIMES_CONSUMES ## HII
  gHttpBootConfigGuid
  gEfiVirtualCdGuid            ## SOMETIMES_CONSUMES ## GUID
  gEfiVirtualDiskGuid          ## SOMETIMES_CONSUMES ## GUID
  gEfiAdapterInfoUndiIpv6SupportGuid             ## SOMETIMES_CONSUMES ## GUID

[Pcd]
  gEfiNetworkPkgTokenSpaceGuid.PcdAllowHttpConnections       ## CONSUMES  

[UserExtensions.TianoCore."ExtraFiles"]
  HttpBootDxeExtra.uni
