#/** @file
# Component description file for HiiDatabase module which produce a Framework HII Protocol instance
# based on the avaliable UEFI HII protocol found in the platform. This modules enables modules complying
# to Framework HII specification to able to run on a UEFI HII platform with only a rebuild. This is
# to ensure that all HII packages are generated by UEFI HII package generation tools (UEFI VfrCompiler and
# String Gather Tools). This thunk layer only produces the Frameowork HII protocol interface. The binary package
# data format complying to UEFI HII specification.
#
# This module inits HII database and installs HII protocol based on the avaliable UEFI HII protocol found in the platform..
# Copyright (c) 2006 - 2008, Intel Corporation
#
#  All rights reserved. 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                      = FrameworkHiiToUefiHiiThunk
  FILE_GUID                      = AC3435BB-B1D3-4EF8-957C-8048606FF671
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  EDK_RELEASE_VERSION            = 0x00020000
  EFI_SPECIFICATION_VERSION      = 0x00020000

  ENTRY_POINT                    = InitializeHiiDatabase

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources.common]
  SetupBrowser.c
  HiiHandle.c
  HiiHandle.h
  ConfigAccess.c
  ConfigAccess.h
  OpcodeCreation.c
  UefiIfrParser.c
  UefiIfrParser.h
  UefiIfrParserExpression.c
  UefiIfrParserExpression.h
  UefiIfrDefault.c
  UefiIfrDefault.h
  Keyboard.c
  Fonts.c
  Package.c
  Strings.c
  Forms.c
  HiiDatabase.h
  HiiDatabase.c
  Utility.c
  Utility.h
  Strings.uni
 

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  IntelFrameworkPkg/IntelFrameworkPkg.dec

[LibraryClasses]
  UefiRuntimeServicesTableLib
  UefiBootServicesTableLib
  BaseMemoryLib
  MemoryAllocationLib
  UefiDriverEntryPoint
  DebugLib
  BaseLib
  HiiLib
  ExtendedHiiLib
  IfrSupportLib
  ExtendedIfrSupportLib
  PrintLib
  UefiLib
  PcdLib

[Protocols]
  gEfiHiiImageProtocolGuid
  gEfiHiiDatabaseProtocolGuid
  gEfiHiiStringProtocolGuid
  gEfiHiiFontProtocolGuid
  gEfiHiiConfigRoutingProtocolGuid
  gEfiHiiConfigAccessProtocolGuid
  gEfiFormCallbackProtocolGuid
  gEfiUnicodeCollation2ProtocolGuid
  gEfiHiiCompatibilityProtocolGuid
  gEfiFormBrowserCompatibilityProtocolGuid

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdPlatformBootTimeOutDefault

[Depex]
  gEfiHiiDatabaseProtocolGuid AND
  gEfiHiiStringProtocolGuid AND
  gEfiHiiConfigRoutingProtocolGuid AND
  gEfiHiiFontProtocolGuid AND
  gEfiFormBrowser2ProtocolGuid



