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