## @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 - 2018, 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
