## @file
#  HII Library implementation using UEFI HII protocols and services.
#
#  Copyright (c) 2006 - 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                      = UefiHiiLib
  MODULE_UNI_FILE                = UefiHiiLib.uni
  FILE_GUID                      = 3143687A-7C80-404e-B5FE-2D88980E1B1C
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = HiiLib|DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER

#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  HiiLib.c
  HiiString.c
  HiiLanguage.c
  InternalHiiLib.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  MemoryAllocationLib
  BaseMemoryLib
  BaseLib
  DebugLib
  UefiBootServicesTableLib
  DevicePathLib
  UefiLib
  UefiHiiServicesLib
  PrintLib

[Protocols]
  gEfiFormBrowser2ProtocolGuid ## SOMETIMES_CONSUMES
  gEfiDevicePathProtocolGuid   ## SOMETIMES_CONSUMES

[Guids]
  gEdkiiIfrBitVarstoreGuid       ## SOMETIMES_CONSUMES ## GUID
