## @file
# Instance of UEFI Library.
#
# The UEFI Library provides functions and macros that simplify the development of
#  UEFI Drivers and UEFI Applications.  These functions and macros help manage EFI
#  events, build simple locks utilizing EFI Task Priority Levels (TPLs), install
#  EFI Driver Model related protocols, manage Unicode string tables for UEFI Drivers,
#  and print messages on the console output and standard error devices.
#
# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
#
#  SPDX-License-Identifier: BSD-2-Clause-Patent
#
#
##

[Defines]
  INF_VERSION                    = 0x00010005
  BASE_NAME                      = UefiLib
  MODULE_UNI_FILE                = UefiLib.uni
  FILE_GUID                      = 3a004ba5-efe0-4a61-9f1a-267a46ae5ba9
  MODULE_TYPE                    = UEFI_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = UefiLib|DXE_CORE DXE_DRIVER DXE_RUNTIME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER SMM_CORE
  CONSTRUCTOR                    = UefiLibConstructor


#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#

[Sources]
  UefiLibPrint.c
  UefiNotTiano.c
  UefiDriverModel.c
  Console.c
  UefiLib.c
  UefiLibInternal.h
  Acpi.c


[Packages]
  MdePkg/MdePkg.dec


[LibraryClasses]
  PrintLib
  PcdLib
  MemoryAllocationLib
  DebugLib
  BaseMemoryLib
  BaseLib
  UefiBootServicesTableLib
  DevicePathLib
  UefiRuntimeServicesTableLib

[Guids]
  gEfiEventReadyToBootGuid                      ## SOMETIMES_CONSUMES  ## Event
  gEfiEventLegacyBootGuid                       ## SOMETIMES_CONSUMES  ## Event
  gEfiGlobalVariableGuid                        ## SOMETIMES_CONSUMES  ## Variable
  gEfiAcpi20TableGuid                           ## SOMETIMES_CONSUMES  ## SystemTable
  gEfiAcpi10TableGuid                           ## SOMETIMES_CONSUMES  ## SystemTable

[Protocols]
  gEfiDriverBindingProtocolGuid                   ## SOMETIMES_PRODUCES
  gEfiSimpleTextOutProtocolGuid                   ## SOMETIMES_CONSUMES
  gEfiGraphicsOutputProtocolGuid                  ## SOMETIMES_CONSUMES
  gEfiHiiFontProtocolGuid                         ## SOMETIMES_CONSUMES
  gEfiSimpleFileSystemProtocolGuid                ## SOMETIMES_CONSUMES
  gEfiUgaDrawProtocolGuid | gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport                 ## SOMETIMES_CONSUMES # Consumes if gEfiGraphicsOutputProtocolGuid uninstalled
  gEfiComponentNameProtocolGuid  | NOT gEfiMdePkgTokenSpaceGuid.PcdComponentNameDisable   ## SOMETIMES_PRODUCES # User chooses to produce it
  gEfiComponentName2ProtocolGuid | NOT gEfiMdePkgTokenSpaceGuid.PcdComponentName2Disable  ## SOMETIMES_PRODUCES # User chooses to produce it
  gEfiDriverConfigurationProtocolGuid                            ## SOMETIMES_PRODUCES # User chooses to produce it
  gEfiDriverConfiguration2ProtocolGuid                           ## SOMETIMES_PRODUCES # User chooses to produce it
  gEfiDriverDiagnosticsProtocolGuid | NOT gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnosticsDisable  ## SOMETIMES_PRODUCES # User chooses to produce it
  gEfiDriverDiagnostics2ProtocolGuid| NOT gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnostics2Disable ## SOMETIMES_PRODUCES # User chooses to produce it


[Pcd]
  gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize   ## SOMETIMES_CONSUMES

[FeaturePcd]
  gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnosticsDisable    ## CONSUMES
  gEfiMdePkgTokenSpaceGuid.PcdComponentNameDisable        ## CONSUMES
  gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnostics2Disable   ## CONSUMES
  gEfiMdePkgTokenSpaceGuid.PcdComponentName2Disable       ## CONSUMES
  gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport           ## CONSUMES

