## @file
#  General BDS library.
#  
#  General BDS defines and produce general interfaces for platform BDS driver including:
#  1) BDS boot policy interface;
#  2) BDS boot device connect interface;
#  3) BDS Misc interfaces for mainting boot variable, ouput string, etc.
#  
#  Copyright (c) 2007 - 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                      = GenericBdsLib
  MODULE_UNI_FILE                = GenericBdsLib.uni
  FILE_GUID                      = e405ec31-ccaa-4dd4-83e8-0aec01703f7e
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = GenericBdsLib|DXE_DRIVER DXE_RUNTIME_DRIVER UEFI_APPLICATION 
  CONSTRUCTOR                    = GenericBdsLibConstructor

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 IPF EBC
#

[Sources]
  DevicePath.c
  BdsConnect.c
  BdsMisc.c
  BdsConsole.c
  BdsBoot.c
  InternalBdsLib.h
  String.h
  String.c
  GenericBdsStrings.uni
  
[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  IntelFrameworkPkg/IntelFrameworkPkg.dec
  IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec

[LibraryClasses]
  DevicePathLib
  PeCoffGetEntryPointLib
  BaseLib
  HobLib
  UefiRuntimeServicesTableLib
  DxeServicesTableLib
  MemoryAllocationLib
  UefiLib
  UefiBootServicesTableLib
  BaseMemoryLib
  DebugLib
  PrintLib
  PcdLib
  PerformanceLib
  TimerLib
  DxeServicesLib
  HiiLib
  ReportStatusCodeLib

[Guids]
  ## SOMETIMES_CONSUMES ## HOB         # The hob holding memory type information
  ## SOMETIMES_CONSUMES ## SystemTable # The identifier of memory type information type in system table
  ## SOMETIMES_CONSUMES ## Variable:L"MemoryTypeInformation"
  ## SOMETIMES_PRODUCES ## Variable:L"MemoryTypeInformation"
  gEfiMemoryTypeInformationGuid                 
  ## SOMETIMES_CONSUMES ## Variable:L"BootXXXX"    # Boot option variable
  ## SOMETIMES_PRODUCES ## Variable:L"BootXXXX"    # Boot option variable
  ## SOMETIMES_CONSUMES ## Variable:L"DriverXXXX"  # Driver load option.
  ## SOMETIMES_PRODUCES ## Variable:L"DriverXXXX"  # Driver load option.
  ## SOMETIMES_CONSUMES ## Variable:L"BootNext"    # Next Boot Option
  ## SOMETIMES_PRODUCES ## Variable:L"BootNext"    # Next Boot Option
  ## SOMETIMES_CONSUMES ## Variable:L"BootOrder"   # The boot option array
  ## SOMETIMES_PRODUCES ## Variable:L"BootOrder"   # The boot option array
  ## SOMETIMES_CONSUMES ## Variable:L"DriverOrder" # The driver order list
  ## SOMETIMES_CONSUMES ## Variable:L"ConIn"       # The device path of console in device
  ## SOMETIMES_PRODUCES ## Variable:L"ConIn"       # The device path of console in device
  ## SOMETIMES_CONSUMES ## Variable:L"ConOut"      # The device path of console out device
  ## SOMETIMES_PRODUCES ## Variable:L"ConOut"      # The device path of console out device
  ## SOMETIMES_CONSUMES ## Variable:L"ErrOut"      # The device path of error out device
  ## SOMETIMES_PRODUCES ## Variable:L"ErrOut"      # The device path of error out device
  ## SOMETIMES_PRODUCES ## Variable:L"BootCurrent" # The boot option of current boot
  ## SOMETIMES_PRODUCES ## Variable:L"BootNext"    # The number of next boot option
  gEfiGlobalVariableGuid
  gEfiFileInfoGuid                              ## SOMETIMES_CONSUMES ## GUID
  gLastEnumLangGuid                             ## SOMETIMES_PRODUCES ## Variable:L"LastEnumLang" # Platform language at last time enumeration.
  gHdBootDevicePathVariablGuid                  ## SOMETIMES_PRODUCES ## Variable:L"HDDP" # The device path of Boot file on Hard device.
  gBdsLibStringPackageGuid                      ## CONSUMES ## HII # HII String PackageList Guid
  ## SOMETIMES_PRODUCES ## Variable:L"LegacyDevOrder"
  ## SOMETIMES_CONSUMES ## Variable:L"LegacyDevOrder"
  gEfiLegacyDevOrderVariableGuid
  gEdkiiStatusCodeDataTypeVariableGuid          ## SOMETIMES_CONSUMES ## GUID

[Protocols]
  gEfiSimpleFileSystemProtocolGuid              ## SOMETIMES_CONSUMES
  gEfiLoadFileProtocolGuid                      ## SOMETIMES_CONSUMES
  gEfiSimpleTextOutProtocolGuid                 ## CONSUMES
  gEfiPciIoProtocolGuid                         ## SOMETIMES_CONSUMES
  gEfiLoadedImageProtocolGuid                   ## SOMETIMES_CONSUMES
  gEfiSimpleNetworkProtocolGuid                 ## SOMETIMES_CONSUMES
  gEfiDebugPortProtocolGuid                     ## SOMETIMES_CONSUMES
  gEfiSimpleTextInProtocolGuid                  ## CONSUMES
  gEfiBlockIoProtocolGuid                       ## SOMETIMES_CONSUMES
  gEfiFirmwareVolume2ProtocolGuid               ## SOMETIMES_CONSUMES
  gEfiLegacyBiosProtocolGuid                    ## SOMETIMES_CONSUMES
  gEfiCpuArchProtocolGuid                       ## CONSUMES
  gEfiDevicePathProtocolGuid                    ## CONSUMES
  gEfiGraphicsOutputProtocolGuid                ## SOMETIMES_CONSUMES
  gEfiUgaDrawProtocolGuid |gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport ## SOMETIMES_CONSUMES
  gEfiOEMBadgingProtocolGuid                    ## SOMETIMES_CONSUMES
  gEfiHiiFontProtocolGuid                       ## CONSUMES
  gEfiUserManagerProtocolGuid                   ## SOMETIMES_CONSUMES
  gEfiUsbIoProtocolGuid                         ## SOMETIMES_CONSUMES
  gEfiBootLogoProtocolGuid                      ## SOMETIMES_CONSUMES

[FeaturePcd]
  gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport                   ## CONSUMES
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdBootlogoOnlyEnable ## CONSUMES

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdProgressCodeOsLoaderLoad  ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdProgressCodeOsLoaderStart ## SOMETIMES_CONSUMES
  gEfiMdeModulePkgTokenSpaceGuid.PcdErrorCodeSetVariable      ## CONSUMES
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdShellFile      ## CONSUMES

#
# [BootMode] 
#   RECOVERY_FULL    ## SOMETIMES_CONSUMES # Memory Type Information variable
#

