## @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 - 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                      = FrameworkHiiOnUefiHiiThunk
  FILE_GUID                      = AC3435BB-B1D3-4EF8-957C-8048606FF671
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0

  ENTRY_POINT                    = InitializeHiiDatabase

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  SetupBrowser.c
  SetupBrowser.h
  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
  IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
  EdkCompatibilityPkg/EdkCompatibilityPkg.dec
  
[LibraryClasses]
  UefiRuntimeServicesTableLib
  UefiBootServicesTableLib
  BaseMemoryLib
  MemoryAllocationLib
  UefiDriverEntryPoint
  DebugLib
  BaseLib
  HiiLib
  PrintLib
  UefiLib
  PcdLib
  LanguageLib

[Guids]
  gEfiIfrTianoGuid
  gEfiIfrFrameworkGuid
  gEfiHiiStandardFormGuid
  gFrameworkBdsFrontPageFormsetGuid
  gZeroGuid                                     ## SOMETIMES_CONSUMES   ## GUID

[Protocols]
  gEfiHiiImageProtocolGuid
  gEfiHiiDatabaseProtocolGuid
  gEfiHiiStringProtocolGuid
  gEfiHiiFontProtocolGuid
  gEfiHiiConfigRoutingProtocolGuid
  gEfiHiiConfigAccessProtocolGuid
  gEfiFormCallbackProtocolGuid
  gEfiUnicodeCollation2ProtocolGuid
  gEfiHiiCompatibilityProtocolGuid
  gEfiFormBrowserCompatibilityProtocolGuid

[Pcd]
  gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut

[Depex]
  gEfiHiiDatabaseProtocolGuid AND
  gEfiHiiStringProtocolGuid AND
  gEfiHiiConfigRoutingProtocolGuid AND
  gEfiHiiFontProtocolGuid AND
  gEfiFormBrowser2ProtocolGuid



