## @file
#  Driver Health Manager DXE driver.
#
#  This module produces two driver health manager forms.
#  One will be used by BDS core to configure the Configured Required
#  driver health instances, the other will be automatically included by
#  firmware setup (UI).
#
#  Copyright (c) 2013 - 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 Section - statements that will be processed to create a Makefile.
#
################################################################################
[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = DriverHealthManagerDxe
  MODULE_UNI_FILE                = DriverHealthManagerDxe.uni
  FILE_GUID                      = EBF8ED7C-0DD1-4787-84F1-F48D537DCACF
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = InitializeDriverHealthManager

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#


[Sources.common]
  DriverHealthManagerDxe.h
  DriverHealthManagerDxe.c
  DriverHealthManagerStrings.uni
  DriverHealthManagerVfr.Vfr
  DriverHealthManagerVfr.h
  DriverHealthConfigureVfr.Vfr

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  UefiBootServicesTableLib
  UefiRuntimeServicesTableLib
  MemoryAllocationLib
  BaseMemoryLib
  BaseLib
  UefiLib
  UefiDriverEntryPoint
  DebugLib
  HiiLib
  UefiBootManagerLib
  PcdLib
  DevicePathLib

[Protocols]
  gEfiHiiConfigAccessProtocolGuid               ## PRODUCES

[Guids]
  gEfiHiiDriverHealthFormsetGuid                ## CONSUMES ## GUID
  gEfiIfrTianoGuid                              ## CONSUMES ## HII

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdDriverHealthConfigureForm      ## CONSUMES

[Depex]
  gEfiHiiDatabaseProtocolGuid AND gEfiFormBrowser2ProtocolGuid

[UserExtensions.TianoCore."ExtraFiles"]
  DriverHealthManagerDxeExtra.uni
