## @file
#  This module produces EFI TCPv4 Protocol and EFI TCPv4 Service Binding Protocol.
#
#  This module produces EFI TCPv4(Transmission Control Protocol version 4) Protocol
#  upon EFI IPv4 Protocol, to provide basic TCPv4 I/O services.
#
#  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                      = Tcp4Dxe
  MODULE_UNI_FILE                = Tcp4Dxe.uni
  FILE_GUID                      = 6d6963ab-906d-4a65-a7ca-bd40e5d6af4d
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = Tcp4DriverEntryPoint
  UNLOAD_IMAGE                   = NetLibDefaultUnload
#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#
#  DRIVER_BINDING                =  mTcp4DriverBinding
#  COMPONENT_NAME                =  gTcp4ComponentName
#  COMPONENT_NAME2               =  gTcp4ComponentName2
#

[Sources]
  SockImpl.c
  SockInterface.c
  Tcp4Proto.h
  Tcp4Main.h
  SockImpl.h
  Tcp4Output.c
  Tcp4Timer.c
  Tcp4Option.h
  Tcp4Dispatcher.c
  Tcp4Input.c
  Tcp4Misc.c
  Tcp4Main.c
  Socket.h
  ComponentName.c
  Tcp4Driver.h
  Tcp4Io.c
  Tcp4Driver.c
  Tcp4Func.h
  Tcp4Option.c


[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  UefiLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  UefiRuntimeServicesTableLib
  BaseMemoryLib
  MemoryAllocationLib
  DebugLib
  NetLib
  IpIoLib
  DevicePathLib
  DpcLib

[Protocols]
  gEfiTcp4ServiceBindingProtocolGuid            ## BY_START
  gEfiIp4ServiceBindingProtocolGuid             ## TO_START
  gEfiTcp4ProtocolGuid                          ## BY_START
  gEfiIp4ProtocolGuid                           ## TO_START

[UserExtensions.TianoCore."ExtraFiles"]
  Tcp4DxeExtra.uni
