## @file
#  This is a sample HII resource driver.
#
#  This driver show how a HII driver retrieve HII data using HII Package List protocol
#  and publish the HII data.
#
#  Copyright (c) 2009 - 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                      = HiiResourcesSample
  MODULE_UNI_FILE                = HiiResourcesSample.uni
  FILE_GUID                      = D49D2EB0-44D5-4621-9FD6-1A92C9109B99
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0
  ENTRY_POINT                    = HiiResourcesSampleInit
  UNLOAD_IMAGE                   = HiiResourcesSampleUnload
#
#  This flag specifies whether HII resource section is generated into PE image.
#
  UEFI_HII_RESOURCE_SECTION      = TRUE

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  HiiResourcesSample.c
  SampleStrings.uni
  Sample.vfr

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec

[LibraryClasses]
  UefiBootServicesTableLib
  UefiDriverEntryPoint
  UefiHiiServicesLib
  HiiLib

[Protocols]
  gEfiHiiPackageListProtocolGuid    ## CONSUMES
  gEfiDevicePathProtocolGuid        ## PRODUCES

[UserExtensions.TianoCore."ExtraFiles"]
  HiiResourcesSampleExtra.uni
