## @file
# The DXE driver produces FORM BROWSER protocols defined in UEFI HII 2.1 specificatin.
#
# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.
#
#  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                      = SetupBrowser
  FILE_GUID                      = EBf342FE-B1D3-4EF8-957C-8048606FF671
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = InitializeSetup

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  SetupBrowserStr.uni
  Setup.c
  Setup.h
  IfrParse.c
  Expression.c
  InputHandler.c
  Print.c
  Presentation.c
  ProcessOptions.c
  Ui.c
  Ui.h
  Colors.h


[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  MemoryAllocationLib
  BaseLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  UefiRuntimeServicesTableLib
  BaseMemoryLib
  DebugLib
  PrintLib
  HiiLib
  DevicePathLib

[Guids]
  gEfiIfrTianoGuid                              ## CONSUMES  ## GUID
  gEfiIfrFrameworkGuid                          ## CONSUMES  ## GUID
  gEfiHiiPlatformSetupFormsetGuid
  gEfiHiiStandardFormGuid                       ## SOMETIMES_CONSUMES ## GUID

[Protocols]
  gEfiHiiConfigAccessProtocolGuid               ## CONSUMES
  gEfiHiiStringProtocolGuid                     ## CONSUMES
  gEfiFormBrowser2ProtocolGuid                  ## PRODUCES
  gEfiHiiConfigRoutingProtocolGuid              ## CONSUMES
  gEfiHiiDatabaseProtocolGuid                   ## CONSUMES
  gEfiUnicodeCollation2ProtocolGuid             ## CONSUMES
  gEfiUserManagerProtocolGuid                   ## SOMETIMES_CONSUMES

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport

[Depex]
  gEfiHiiDatabaseProtocolGuid AND gEfiHiiConfigRoutingProtocolGuid


