## @file
# The DXE driver produces FORM BROWSER2 protocol defined in UEFI specification.
#
# It also produces FormBrowserEx(2) protocol to let user register the different Hot key service. 
#
# Copyright (c) 2007 - 2017, 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                      = SetupBrowser
  MODULE_UNI_FILE                = SetupBrowser.uni
  FILE_GUID                      = EBf342FE-B1D3-4EF8-957C-8048606FF671
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 2.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]
  Setup.c
  Setup.h
  IfrParse.c
  Expression.c
  Presentation.c
  Expression.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  MemoryAllocationLib
  BaseLib
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  UefiRuntimeServicesTableLib
  BaseMemoryLib
  DebugLib
  PrintLib
  HiiLib
  DevicePathLib
  PcdLib
  UefiLib

[Guids]
  gEfiIfrFrameworkGuid                          ## SOMETIMES_CONSUMES  ## GUID
  gEfiHiiPlatformSetupFormsetGuid               ## SOMETIMES_CONSUMES  ## GUID
  gEfiHiiStandardFormGuid                       ## SOMETIMES_CONSUMES  ## GUID
  gZeroGuid                                     ## SOMETIMES_CONSUMES  ## GUID
  gEdkiiIfrBitVarstoreGuid                      ## SOMETIMES_CONSUMES  ## GUID

[Protocols]
  gEfiHiiConfigAccessProtocolGuid               ## SOMETIMES_CONSUMES
  gEfiFormBrowser2ProtocolGuid                  ## PRODUCES
  gEdkiiFormBrowserEx2ProtocolGuid              ## PRODUCES
  gEfiHiiConfigRoutingProtocolGuid              ## CONSUMES
  gEfiHiiDatabaseProtocolGuid                   ## CONSUMES
  gEfiUnicodeCollation2ProtocolGuid             ## SOMETIMES_CONSUMES
  gEfiUserManagerProtocolGuid                   ## SOMETIMES_CONSUMES
  gEfiDevicePathFromTextProtocolGuid            ## SOMETIMES_CONSUMES
  ## CONSUMES
  ## NOTIFY
  gEdkiiFormDisplayEngineProtocolGuid
  gEdkiiFormBrowserExProtocolGuid               ## PRODUCES
  gEfiRegularExpressionProtocolGuid             ## SOMETIMES_CONSUMES

[FeaturePcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdFrameworkCompatibilitySupport          ## CONSUMES

[Depex]
  gEfiHiiDatabaseProtocolGuid AND gEfiHiiConfigRoutingProtocolGuid

[UserExtensions.TianoCore."ExtraFiles"]
  SetupBrowserExtra.uni
