## @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 - 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                      = 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 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
  NetLib
  BmpSupportLib

[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
  gEfiAcpiS3SaveProtocolGuid                    ## SOMETIMES_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
  gEfiMdeModulePkgTokenSpaceGuid.PcdTestKeyUsed                       ## CONSUMES

#
# [BootMode] 
#   RECOVERY_FULL    ## SOMETIMES_CONSUMES # Memory Type Information variable
#

