## @file
#  Include all platform action which can be customized by IBV/OEM.
#
#  Copyright (c) 2012 - 2016, 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                      = PlatformBootManagerLib
  FILE_GUID                      = EC67889B-9E62-4c81-8CA0-86E6A6EEE61A
  MODULE_TYPE                    = DXE_DRIVER
  VERSION_STRING                 = 1.0
  LIBRARY_CLASS                  = PlatformBootManagerLib|DXE_DRIVER
  CONSTRUCTOR                    = InitializePlatformBootManagerLib

#
# The following information is for reference only and not required by the build tools.
#
#  VALID_ARCHITECTURES           = IA32 X64 EBC
#

[Sources]
  PlatformData.c
  PlatformBootManager.c
  PlatformBootManager.h

[Packages]
  MdePkg/MdePkg.dec
  MdeModulePkg/MdeModulePkg.dec
  IntelFrameworkPkg/IntelFrameworkPkg.dec
  IntelFrameworkModulePkg/IntelFrameworkModulePkg.dec
  SourceLevelDebugPkg/SourceLevelDebugPkg.dec
  QuarkPlatformPkg/QuarkPlatformPkg.dec
  SecurityPkg/SecurityPkg.dec
  ShellPkg/ShellPkg.dec
  SignedCapsulePkg/SignedCapsulePkg.dec

[LibraryClasses]
  BaseLib
  BaseMemoryLib
  PcdLib
  DebugLib
  DevicePathLib
  MemoryAllocationLib
  UefiBootServicesTableLib
  UefiLib
  UefiBootManagerLib
  PrintLib
  HobLib
  CapsuleLib
  DxeServicesLib

[Protocols]
  gEfiFirmwareVolume2ProtocolGuid
  gEfiAcpiS3SaveProtocolGuid
  gEfiDxeSmmReadyToLockProtocolGuid
  gEsrtManagementProtocolGuid

[Guids]
  gEfiPcAnsiGuid
  gEfiVT100Guid
  gEfiVT100PlusGuid
  gEfiVTUTF8Guid
  gEfiTtyTermGuid
  gEfiEndOfDxeEventGroupGuid
  gUefiShellFileGuid

[Pcd]
  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate
  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits
  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity
  gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits
  gEfiMdePkgTokenSpaceGuid.PcdDefaultTerminalType
  gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdBootState
  gEfiMdeModulePkgTokenSpaceGuid.PcdSupportUpdateCapsuleReset
  gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiRsa2048Sha256TestPublicKeyFileGuid
  gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiPkcs7TestPublicKeyFileGuid
  gEfiSecurityPkgTokenSpaceGuid.PcdRsa2048Sha256PublicKeyBuffer
  gEfiSecurityPkgTokenSpaceGuid.PcdPkcs7CertBuffer
  gEfiMdeModulePkgTokenSpaceGuid.PcdTestKeyUsed

