## @file
#  Client-side iSCSI service.
#
#  The iSCSI driver provides iSCSI service in the preboot environment and supports
#  booting over iSCSI.
#                                                    
# Copyright (c) 2004 - 2014, 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                      = IScsiDxe
  FILE_GUID                      = 86CDDF93-4872-4597-8AF9-A35AE4D3725F
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = IScsiDriverEntryPoint
  UNLOAD_IMAGE                   = IScsiUnload
  MODULE_UNI_FILE                = IScsiDxe.uni

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF
#
#  DRIVER_BINDING                =  gIScsiDriverBinding
#  COMPONENT_NAME                =  gIScsiComponentName
#  COMPONENT_NAME2               =  gIScsiComponentName2
#


[Sources]
  ComponentName.c
  IScsiAuthenticationInfo.c
  IScsiCHAP.h
  IScsiCHAP.c
  IScsiConfig.c
  IScsiConfig.h
  IScsiConfigNVDataStruc.h
  IScsiConfigStrings.uni
  IScsiConfigVfr.vfr
  IScsiDhcp.c
  IScsiDhcp.h
  IScsiDhcp6.c
  IScsiDhcp6.h
  IScsiDriver.c
  IScsiDriver.h
  IScsiExtScsiPassThru.c
  IScsiIbft.c
  IScsiIbft.h
  IScsiInitiatorName.c 
  IScsiImpl.h
  IScsiMisc.c
  IScsiMisc.h
  IScsiProto.c
  IScsiProto.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  CryptoPkg/CryptoPkg.dec
  NetworkPkg/NetworkPkg.dec

[LibraryClasses]
  BaseLib
  BaseMemoryLib
  DebugLib
  DevicePathLib
  HiiLib
  MemoryAllocationLib
  NetLib
  TcpIoLib
  PrintLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  UefiLib  
  UefiRuntimeServicesTableLib
  UefiHiiServicesLib
  BaseCryptLib

[Protocols]
  gEfiAcpiTableProtocolGuid                     ## SOMETIMES_CONSUMES ## SystemTable
  gEfiDriverBindingProtocolGuid                 ## SOMETIMES_PRODUCES
  gEfiPciIoProtocolGuid                         ## SOMETIMES_CONSUMES
  gEfiDhcp4ProtocolGuid                         ## TO_START
  gEfiDhcp6ProtocolGuid                         ## TO_START  
  gEfiDhcp4ServiceBindingProtocolGuid           ## TO_START
  gEfiDhcp6ServiceBindingProtocolGuid           ## TO_START  
  gEfiTcp4ProtocolGuid                          ## TO_START
  gEfiTcp6ProtocolGuid                          ## TO_START  
  gEfiTcp4ServiceBindingProtocolGuid            ## TO_START
  gEfiTcp6ServiceBindingProtocolGuid            ## TO_START  
  gEfiExtScsiPassThruProtocolGuid               ## BY_START
  gEfiHiiConfigAccessProtocolGuid               ## PRODUCES
  ## TO_START
  ## PRODUCES
  gEfiDevicePathProtocolGuid
  ## PRODUCES
  ## UNDEFINED # Variable
  gEfiIScsiInitiatorNameProtocolGuid
  ## PRODUCES       
  gEfiAuthenticationInfoProtocolGuid            

[Guids]
  gEfiEventExitBootServicesGuid                 ## SOMETIMES_CONSUMES ## Event
  gEfiIfrTianoGuid                              ## SOMETIMES_PRODUCES ## UNDEFINED
  gEfiAcpiTableGuid                             ## SOMETIMES_CONSUMES ## SystemTable
  gEfiAcpi10TableGuid                           ## SOMETIMES_CONSUMES ## SystemTable
  gEfiAcpi20TableGuid                           ## SOMETIMES_CONSUMES ## SystemTable
  
  ## SOMETIMES_PRODUCES ## Variable:L"AttemptOrder"
  ## SOMETIMES_CONSUMES ## Variable:L"AttemptOrder"
  ## SOMETIMES_CONSUMES ## UNDEFINED # HiiIsConfigHdrMatch   mVendorStorageName
  ## SOMETIMES_PRODUCES ## UNDEFINED # HiiConstructConfigHdr mVendorStorageName
  ## SOMETIMES_PRODUCES ## UNDEFINED # HiiGetBrowserData     mVendorStorageName
  ## SOMETIMES_CONSUMES ## UNDEFINED # HiiSetBrowserData     mVendorStorageName
  ## SOMETIMES_CONSUMES ## HII
  gIScsiConfigGuid
  
[UserExtensions.TianoCore."ExtraFiles"]
  IScsiDxeExtra.uni
