## @file
#  
#  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 - 2010, Intel Corporation. <BR>
#  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                      = GenericBdsLib
  FILE_GUID                      = e405ec31-ccaa-4dd4-83e8-0aec01703f7e
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = GenericBdsLib|DXE_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
  Performance.c
  BdsConnect.c
  BdsMisc.c
  BdsConsole.c
  BdsBoot.c
  InternalBdsLib.h
  Bmp.h
  String.h
  String.c
  GenericBdsStrings.uni
  
[Sources.IPF]
  Ipf/ShadowRom.c

[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
  PcdLib
  DxeServicesLib
  HiiLib

[Guids]
  gEfiVT100PlusGuid                             ## CONSUMES ## GUID (The type of terminal)
  gEfiVT100Guid                                 ## CONSUMES ## GUID (The type of terminal)
  gEfiMemoryTypeInformationGuid                 ## CONSUMES ## GUID (The identifier of memory type information type in system table)
                                                ## CONSUMES ## GUID HOB (The hob holding memory type information)
  gEfiVTUTF8Guid                                ## CONSUMES ## GUID (The type of terminal)
  gEfiGlobalVariableGuid                        ## SOMETIMES_PRODUCES ## Variable:L"BootCurrent" (The boot option of current boot)
                                                ## SOMETIMES_CONSUMES ## Variable:L"BootXX" (Boot option variable)
                                                ## CONSUMES           ## Variable:L"Timeout" (The time out value in second of showing progress bar)
                                                ## SOMETIMES_CONSUMES ## 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_CONSUMES ## Variable:L"ConOut" (The device path of console out device)
                                                ## SOMETIMES_CONSUMES ## Variable:L"ErrOut" (The device path of error out device)
  gEfiFileInfoGuid                              ## CONSUMES ## GUID
  gEfiPcAnsiGuid                                ## CONSUMES ## GUID (The type of terminal)
  gPerformanceProtocolGuid                      ## SOMETIMES_PRODUCES ## Variable:L"PerfDataMemAddr" (The ACPI address of performance data)
  gEfiUartDevicePathGuid                        ## CONSUMES ## GUID (Identify the device path for UARD device)
  gEfiSasDevicePathGuid                         ## CONSUMES ## GUID (Identify the device path for SAS device)

[Protocols]
  gEfiSimpleFileSystemProtocolGuid              # PROTOCOL CONSUMES
  gEfiLoadFileProtocolGuid                      # PROTOCOL CONSUMES
  gEfiSimpleTextOutProtocolGuid                 # PROTOCOL CONSUMES
  gEfiPciIoProtocolGuid                         # PROTOCOL CONSUMES
  gEfiLoadedImageProtocolGuid                   # PROTOCOL CONSUMES
  gEfiDevicePathToTextProtocolGuid              # PROTOCOL SOMETIMES_CONSUMES
  gEfiSimpleNetworkProtocolGuid                 # PROTOCOL CONSUMES
  gEfiDebugPortProtocolGuid                     # PROTOCOL CONSUMES
  gEfiSimpleTextInProtocolGuid                  # PROTOCOL CONSUMES
  gEfiBlockIoProtocolGuid                       # PROTOCOL CONSUMES
  gEfiFirmwareVolume2ProtocolGuid               # PROTOCOL CONSUMES
  gEfiLegacyBiosProtocolGuid                    # PROTOCOL SOMETIMES_CONSUMES
  gEfiCpuArchProtocolGuid                       # PROTOCOL CONSUMES
  gEfiDevicePathProtocolGuid                    # PROTOCOL CONSUMES
  gEfiAcpiS3SaveProtocolGuid                    # PROTOCOL CONSUMES
  gEfiGraphicsOutputProtocolGuid                # PROTOCOL SOMETIMES_CONSUMES
  gEfiUgaDrawProtocolGuid |PcdUgaConsumeSupport # PROTOCOL SOMETIMES_CONSUMES
  gEfiOEMBadgingProtocolGuid                    # PROTOCOL CONSUMES
  gEfiHiiFontProtocolGuid                       # PROTOCOL CONSUMES
  gEfiUserManagerProtocolGuid                   # PROTOCOL CONSUMES

[FeaturePcd]
  gEfiMdePkgTokenSpaceGuid.PcdUgaConsumeSupport

[Pcd]
  gEfiMdeModulePkgTokenSpaceGuid.PcdResetOnMemoryTypeInformationChange
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdShellFile
