## @file
#  Debug Print Error Level library instance based on PcdDebugPrintErrorLevel.
#  It retrieves the current error level from PcdDebugPrintErrorLevel.  
#
#  Copyright (c) 2011 - 2014, 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                      = BaseDebugPrintErrorLevelLib
  MODULE_UNI_FILE                = BaseDebugPrintErrorLevelLib.uni
  FILE_GUID                      = A2C09E18-E4D2-407e-AFCC-628B79113F72
  MODULE_TYPE                    = BASE
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = DebugPrintErrorLevelLib

#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  BaseDebugPrintErrorLevelLib.c

[Packages]
  MdePkg/MdePkg.dec

[LibraryClasses]
  PcdLib
  
[Pcd]
  gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel  ## CONSUMES

