## @file
#  This thunk driver register a filter for DataHub protocol, once a data hub record
#  is added via EFI_DATA_HUB_PROTOCOL->LogData(), this filter will be invoked to 
#  translate the datahub's record to SMBIOS record.
#
#  Copyright (c) 2009 - 2015, 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                      = Datahub2SmbiosThunk
  FILE_GUID                      = 9F8B12CF-E796-408f-9D59-3ACDDC0AFBE3
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = ThunkEntry

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  Thunk.c
  Thunk.h
  Translate.c
  ConvLib.c
  ConvTable.c
  ProcessorConv.c
  MemoryConv.c
  MiscConv.c
  
[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  IntelFrameworkPkg/IntelFrameworkPkg.dec
  EdkCompatibilityPkg/EdkCompatibilityPkg.dec
  
  
[LibraryClasses]
  UefiBootServicesTableLib
  MemoryAllocationLib
  UefiDriverEntryPoint
  BaseMemoryLib
  HiiLib
  DebugLib
  BaseLib
  PcdLib

[Protocols]
  gEfiDataHubProtocolGuid     ## CONSUMES
  gEfiSmbiosProtocolGuid      ## CONSUMES

[Guids]  
  gEfiMemorySubClassGuid      ## CONSUMES
  gEfiMiscSubClassGuid        ## CONSUMES
  gEfiCacheSubClassGuid       ## CONSUMES
  gZeroGuid                   ## SOMETIMES_CONSUMES   ## GUID
  
[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport
    
[Depex]
  gEfiDataHubProtocolGuid AND gEfiSmbiosProtocolGuid