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