#/** @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 - 2008, Intel Corporation
#
#  All rights reserved. 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
  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_SAL_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER


#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources.common]
  UefiLibPrint.c
  UefiNotTiano.c
  UefiDriverModel.c
  Console.c
  UefiLib.c
  UefiLibInternal.h


[Packages]
  MdePkg/MdePkg.dec


[LibraryClasses]
  PrintLib
  PcdLib
  MemoryAllocationLib
  DebugLib
  BaseMemoryLib
  BaseLib
  UefiBootServicesTableLib
  DevicePathLib
  UefiRuntimeServicesTableLib
  
[Guids]
  gEfiEventReadyToBootGuid                      ## CONSUMES  ## Event
  gEfiEventLegacyBootGuid                       ## CONSUMES  ## Event
  gEfiGlobalVariableGuid                        ## CONSUMES  ## Variable

[Protocols]
  gEfiDriverBindingProtocolGuid                   ## PRODUCES
  gEfiSimpleTextOutProtocolGuid                   ## CONSUMES
  gEfiGraphicsOutputProtocolGuid                  ## CONSUMES
  gEfiHiiFontProtocolGuid                         ## CONSUMES
  gEfiUgaDrawProtocolGuid | PcdUgaConsumeSupport                 ## SOMETIMES_CONSUMES (Consumes if gEfiGraphicsOutputProtocolGuid uninstalled)
  gEfiComponentNameProtocolGuid  | NOT PcdComponentNameDisable   ## SOMETIMES_PRODUCES (User chooses to produce it)
  gEfiComponentName2ProtocolGuid | NOT PcdComponentName2Disable  ## SOMETIMES_PRODUCES (User chooses to produce it)
  gEfiDriverConfigurationProtocolGuid                            ## SOMETIMES_CONSUMES (User chooses to produce it)
  gEfiDriverConfiguration2ProtocolGuid                           ## SOMETIMES_CONSUMES (User chooses to produce it)
  gEfiDriverDiagnosticsProtocolGuid | NOT PcdDriverDiagnosticsDisable  ## SOMETIMES_CONSUMES (User chooses to produce it)
  gEfiDriverDiagnostics2ProtocolGuid| NOT PcdDriverDiagnostics2Disable ## SOMETIMES_CONSUMES (User chooses to produce it)


[Pcd.common]
  gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize   ## CONSUMES

[FeaturePcd.common]
  gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnosticsDisable    ## CONSUMES
  gEfiMdePkgTokenSpaceGuid.PcdComponentNameDisable        ## CONSUMES
  gEfiMdePkgTokenSpaceGuid.PcdDriverDiagnostics2Disable   ## CONSUMES
  gEfiMdePkgTokenSpaceGuid.PcdComponentName2Disable       ## CONSUMES
  gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport           ## CONSUMES


